评估集作为模拟器的偏移:当离线指标提升而生产表现恶化时
LLM 产品中最昂贵的失败模式并不是一次糟糕的发布。而是连续六次好的发布——从内部所有计分板来看都是如此——而与此同时,用户的信任却在悄悄流失。离线评估分数在每个周五的演示中稳步上升。每周业务回顾中的 CSAT 曲线先是持平,然后下降,接着没人知道它是什么时候开始下降的,因为没人在交叉分析这两张图表。等到复盘总结(postmortem)点出问题时,团队已经花了两个季度的时间,针对一个在第三个月左右就不再符合现实的数据集来调优提示词(prompt)。
这就是“评估集即模拟器漂移”(eval-set-as-simulator drift),也是我所知道的一个最典型的例子:一群跳过了必读清单的 LLM 团队,正以极其惨痛的代价重新发现一个古老的机器学习教训。评估套件(eval suite)并不是一个固定的基准。它是一个模拟器,而一个从未根据它声称要预测的系统进行重新校准的模拟器,最终预测的将是另一个不同的系统。
样本如何变成固 定基准
每个评估集的生命都始于生产流量的一个样本。有人导出了最近的一千次对话,根据他们关心的失败模式进行了过滤,人工标注了值得评分的部分,并将结果提交到了仓库。在第一天,评估集是对用户实际提问以及理想答案是什么样子的忠实反映——尽管范围很窄。
然后,评估集有了名字、CI 任务和计分板。它产生的数字变成了提示词变更能否发布的关卡(gate)。负责提示词的团队现在有了强烈的动力——以及许多日常的小动力——去研究其特定的边界情况(edge cases)。他们注意到第 47 号示例因为某种特定的措辞而失败,于是他们修复了提示词以处理这种措辞。他们注意到套件中的 LLM 评委(LLM-as-judge)偏好列举要点(bullet points),于是下一次提示词修订就会使用更多的要点。这都不是不诚实的行为。每一个单独的改变都是对真实信号的合理反应。但累积起来,团队现在是在针对评估集优化系统,而不是针对用户——这就是 Goodhart 定律的强力版本:当你过度优化一个代理指标时,你真正关心的事物往往会变得更糟,而不仅仅是脱节。
与此同时,有三种力量正在悄悄使生产环境偏离那个冻结的样本:
- 用户行为漂移。 客户学会了智能体擅长什么、不擅长什么。第一个月的查询分布主要由探索性问题占据;到第六个月,它被简单问题无法覆盖的长尾边界情况所主导。在第一个月采样的评估集,现在测试的是错误的分布。
- 模型升级漂移。 每一次模型更换都会改变“用户发送的内容”与“系统响应方式”的联合分布。一个能更优雅地处理模糊提示词的模型会引来更多模糊的提示词。下一版本的评估集却在根据上一版本的流量模式进行评分。
- 概念漂移。 “我们的退款政策是什么?”的正确答案在政策变更的那天起就变了。那些基准真相(ground-truth)已经失效的评估项现在正积极地误导评分——学习了新政策的模型在针对旧政策编写的评估中失败了。这是推荐系统文献十年来经典的概念漂移问题,LLM 也没有特权豁免。
到第四个月,评估集只是一个移动目标的快照。到第六个月,快照和目标已成为统计学上不同的群体。到第八个月,支撑整个测试套件合理性的离线与在线相关性已经消失,而且没人费心去测量它。
三种失败模式的叠加
这三种力量中的任何一种单独存在都很糟糕。当它们叠加在一起时,就会产生复盘总结中出现的特定病态:一个离线指标完全是谎言的系统。这不仅仅是噪声——而是负相关。在套件中得分最高的发布版本,正是那些针对其边界情况调优最卖力的版本,而针对陈旧的固定基准进行过度调优,正是你向当前用户发布回归错误(regression)的捷径。
在基准测试领域你也能看到同样的模式。公共基准测试达到饱和并不是因为模型变得完美了,而是因为实验室学会了如何应对考试 。MMLU 在模型停止进步的数年前就已经无法区分前沿模型了。同样的动态也在内部上演:每个团队最终都会发布自己的 MMLU,每个团队最终都会在不知不觉中使其饱和——区别在于,公共基准至少会轰轰烈烈地退役,而内部评估套件只会默默地腐烂。
那些及早发现这一问题的团队都有一个共同习惯:他们测量差距,而不仅仅是分数。他们保留一个数值来表示离线评估分布与本周生产分布的差异程度——无论多么粗略,这是一个发散度指标(divergence metric)——并将其放在同一个仪表盘的分数旁边。差距才是承重的信号;分数只是其下游产物。如果分数上升的同时差距也在上升,这没有任何意义,仪表盘应该让这一点变得清晰可见。
“模拟器纪律”的具体表现
修复方案并不罕见。它正是推荐系统和广告排名社区在二十年前达成的共识,如今几乎原封不动地移植到了 LLM 工作流中。共有四个动作,且它们会产生复利效应。
定期刷新,并进行差异分析 (diff)。 以固定的频率从当前的生产环境中重新抽取评估集样本——根据流量波动情况,频率通常在每两周到每季度之间。Hamel Husain 的经验数值是针对活跃系统,每 2-4 周抽取 100 多个新鲜追踪 (traces),期间每周对异常值进行抽检。刷新的频率次于差异分析:每次刷新都应附带一份与前一个样本的明确对比——意图分布、长度分布、语言构成、错误类别比例— —这样你观测到的是实际的偏移,而非臆想。
预留一个没人针对其进行调优的新分区。 将刷新的样本分为“调优部分”(团队可以查看、调整 prompt、修复评判器)和“新鲜预留部分”(封存,仅在发布时查看一次,之后永不查看)。新鲜预留部分的得分是衡量是否发布的唯一标准;而调优部分的得分只是开发辅助工具,从团队看到它的那一刻起,它就已经开始“撒谎”了。这与统计学中真正的预留集 (holdout) 逻辑一致,只是应用于每次发布,而非每个项目。
将离线与在线分布之间的散度作为一等指标进行追踪。 用一个单一数字——例如嵌入向量聚类之间的 KL 散度,或者更粗粒度的分片覆盖度差异——来提问:“我的评估集在今天有多大代表性?”将这个数字与得分并列发布。当散度超过阈值时,评估集从定义上来说已经过时,在刷新之前,该得分应被视为存疑。一些在 2026 年交付的 LLM 可观测性平台现在已将此作为内置原语提供;没有使用这些平台的团队也可以利用嵌入向量和聚类库,在一个下午内构建出一个可用的版本。
像处理不稳定测试 (flaky tests) 一样淘汰评估项。 每个评估项都应有一个新鲜度有效期——超过该日期后,除非重新验证,否则其标注答案 (ground-truth) 将被推定为过时。验证失败的项不仅是不准确的;每次运行 CI 时,它们都在误导模型,因为任何更契合旧答案的 prompt 更改看起来都像是一次进步。每月进行一次淘汰清理只需花费一小时,却能防止一类没有任何其他手段能捕捉到的慢性中毒。
这四个动作共同构成了我所说的“模拟器纪律”。就单个动作而言,它们都是每个资深团队口头上信奉的操作卫生。但就整体而言,我见过的团队中几乎没有一个能真正执行全部四项。而这种“相信”与“执行”之间的差距,恰恰产生了那长达两个季度的离线与在线表现差异。
为什么没人负责刷新
了解纪律比执行纪律成本更低。评估集腐烂的主要原因不是技术性的,而是组织和预算层面的,这一点值得诚实面对。
刷新评估套件需要标注。标注需要钱——有时是供应商的费用,更多时候是昂贵的工程师或领域专家工时,而团队更愿意把这些时间花在下一个功能上。每个季度的规划会议流程都如出一辙:一边是新功能、客户需求和交付期限的队列,另一边是名为“刷新评估集”的维护任务,它没有发布产物,也没有可演示的结果。维护任务每次都会落败,直到某次复盘显示维护任务已不再是可选项。
此外还存在权责缺失。Prompt 团队负责得分。评估团队(如果有的话)负责测试框架。没人负责评估分布与当前生产环境分布之间的差距,因为在构建出揭示该差距的指标之前,它是不可见的。没有图表和仪表盘的信号就没有负责人,而没有负责人的问题会线性累积,直到演变成危机。
我见过的最清晰的强制机制 (forcing function) 是将散度指标设为发布阻断因素。不是评估得分,而是差距。如果评估集过时超过 N 周,或者其嵌入向量分布与本周生产流量的散度超过阈值,发布就会被阻断,必须进行刷新,就像安全扫描会因 CVE 而 阻断发布一样。这听起来很激进,直到你将其与替代成本——持续两个季度的测试通过却产生了功能回退——进行比较,你会发现激进的策略实际上才是廉价的。这也为评估刷新提供了规划会议无法忽视的预算项,因为它现在处于发布路径之上。
LLM 时代跳过的机器学习教训
推荐系统在 2010 年代以痛苦的方式汲取了离线与在线差异问题的教训。文献中充斥着这样的案例:团队的离线 NDCG 指标攀升了数月,而 A/B 测试的点击率却持平或下降。该领域最终围绕离线指标何时能预测在线影响、何时不能预测建立了一个完整的子学科。结论是明确的:离线评估是观测性的,在线行为是干预性的,而连接两者的唯一诚实桥梁是不断的重新采样、影子流量 (shadow traffic) 以及周期性的 A/B 测试作为真值。
大多数 LLM 团队加入这场派对时并没有推荐系统背景,没有影子流量基础设施,并且深信存入仓库的千行 JSON 文件对于由行为每周都在变化的人类所使用的开放式语言接口来说,是一个足够的模拟器。这种信念从一开始就是错位的。清算只是来得慢一些,因为与排名系统相比,LLM 产品单次交互价值更高,用户反馈噪音更大,因此差异需要更长时间才能浮现,且在浮现时更容易归因于其他原因。
疗法并不新颖,甚至不难。它就是枯燥、昂贵、乏味的工作:将评估集视为一种操作基础设施,拥有刷新频率、负责人、仪表盘上的新鲜度指标和预算项。做到这一点的团队并不会发布得更快;他们的发布带有校准后的信心。而没做到的团队,最终会在两个季度和一个客户信任危机之后,从头开始撰写包含上述清单的复盘报告。
评估集是一个模拟器。不根据现实重新校准的模拟器预测的是另一个现实。你要么定期支付校准成本,要么在差距变成你的产品副总裁必须向 CEO 解释的事件时一次性结清。账单总额是一样的;唯一的区别在于你支付的是维护费用还是事故损失。
- https://hamel.dev/blog/posts/evals-faq/
- https://hamel.dev/blog/posts/evals/
- https://sohl-dickstein.github.io/2022/11/06/strong-Goodhart.html
- https://arxiv.org/pdf/2205.05256
- https://www.shaped.ai/blog/evaluating-recommender-models-offline-vs-online-evaluation
- https://en.wikipedia.org/wiki/Concept_drift
- https://gradientscience.org/platinum-benchmarks/
- https://www.latent.space/p/benchmarks-201
- https://venturebeat.com/infrastructure/monitoring-llm-behavior-drift-retries-and-refusal-patterns
- https://atalupadhyay.wordpress.com/2026/03/28/llm-observability-in-production-tracing-evals-cost-tracking-and-drift-detection/
- https://orq.ai/blog/model-vs-data-drift
- https://newsletter.pragmaticengineer.com/p/evals
- https://galileo.ai/blog/best-llm-output-drift-monitoring-platforms
