跳到主要内容

评估集毒丸:当你的基准测试成为后门

· 阅读需 13 分钟
Tian Pan
Software Engineer

我认识的一个团队花了六个月的时间去追踪一个并不存在的回归 (regression)。每一次发布都通过了评估 (eval)。每一次发布都上线了。但每个季度,AI 服务群组的 NPS 都会下降一个点。最终,一名实习生在对黄金数据集 (gold dataset) 进行例行审计时发现,一名早已离职的合同标注员标注了 11% 的数据项,而这些项在团队一直试图修复的一个特定故障模式上,系统性地表现得更加宽松。评估结果显示模型正在变好。但模型并没有变好。评估结果被一个人的校准漂移悄悄地倾斜了,而没有人监督标注员,因为没有人认为标注员是一个威胁面。

这就是评估集毒丸 (eval-set poison pill)。大多数团队将他们的评估集视为一个值得信赖的产物:标签是由人类评分的,数据来自生产环境,而回归仪表盘是组织在发布时一致同意参考的唯一指标。但标注流水线是一个人类供应链,而人类供应链是可以被操纵的。如果不对评估集的输入应用供应链卫生管理,就将其视为真值 (ground truth),那么你就是在信任一个你无法辩护其来源 (provenance) 的数字。

破坏黄金数据集的三个向量

这种威胁并非停留在理论层面。在成熟的标注流水线中会出现三种具体的攻击模式,而其中只有一种需要真正的恶意。

带有不利动机的供应商标注员。 当标注外包给业务流程外包 (BPO)、众包平台或自由职业者池时,标注员的动力是快速完成批次并通过质量检查。如果奖金结构奖励吞吐量,且质量检查是基于抽样的,那么理性的行为就是把精力投入到被抽样的数据项上,而匆忙完成其余部分。一个有动机的坏人可能会做得更糟:系统性地误标他们预期不会被审计的切片,因为他们知道回归仪表盘会将他们的扭曲复合到未来的每一次发布中。最近关于众包数据集中标签噪声的研究将此正式定义为对抗性标注者检测——即寻找那些评分与共识始终不一致,且表现出非统计性异常的标注员的问题。

带有精心设计提交内容的“社区评估”。 开源项目和许多内部数据飞轮接受来自贡献者的评估项。能够提交评估项的贡献者可以设计一些示例,使其在当前生产环境的提示词 (prompt) 下通过,但在未来的任何更改中都会失败。下一次提示词迭代在评估中看起来就像是一个回归。于是团队回滚。贡献者偏好的提示词得以保留。这是基准测试博弈 (benchmark gaming) 的反转:你不是在训练模型来通过评估,而是在塑造评估来锁定模型。2025 年和 2026 年关于基准测试污染的研究记录了几个被事后识别出这种模式的公共基准测试,通常是由那些无法在独立生成的划分 (splits) 上重现排行榜排名的研究人员发现的。

带有强烈个人见解的内部标注员。 这是最常见且最不具对抗性的一种。如果内部标注员对礼貌、正式程度、拒绝行为或任何其他主观维度有强烈偏好,他们会将黄金数据集向其偏好的基调倾斜——这不是故意的,但在数千个数据项中表现得非常一致。如果他们是该切片的唯一标注者,这种倾斜就变成了真值。六个月后,组织的 AI 功能已经收敛到了一个人的偏好上,而没有人能说清为什么一半的用户觉得模型“感觉不对劲”。

在这三种情况下,攻击面都是一样的:评估是由人类评分的,人类本身没有被审计,而回归仪表盘继承了人类引入的所有扭曲。

为什么标准质量控制无法捕捉到这一点

大多数标注流水线都有一定的质量规范——通常是通过 Cohen's 或 Fleiss' kappa,或者 Krippendorff's alpha 衡量的标注者间一致性 (IAA)。这些指标在它们被设计的领域表现良好:检测标注者是否在任务定义上存在系统性的分歧,这意味着任务定义不足。但它们不擅长检测那些在简单项上与共识一致,但在微小但有影响力的切片上悄悄产生分歧的标注者。

问题在于统计数据。如果 89% 的数据项都很简单,三个标注员会对它们达成一致,任何单一标注员都可以在那 11% 由其担任唯一评分员的数据项上悄悄引入偏差,而不会使总体 kappa 值产生足够的波动以触发阈值。Kappa 值显示团队校准良好。但真正关键的切片却门户大开。

另一个差距是来源 (provenance)。大多数评估集存储标签和示例。它们不存储 标注的、何时 标注的、在哪个版本的指南下 标注的、针对哪个模型输出 标注的,或者 置信度是多少。没有这些元数据,分类到特定数据项群组的回归就无法追溯到其源头。团队看到“模型在礼貌切片上退化了”,并开始迭代提示词。他们看不到礼貌切片中有 70% 是由一个在九个月前离开公司的人标注的,此人的校准在最后一个季度发生了漂移,而其标注的数据项自那时起就一直在默默地影响着每一次发布。

必须落地的规范

将评估集(eval set)视为一个下游系统——其完整性取决于其输入数据的完整性——这引入了一套借鉴自供应链安全并应用于标注工作的实践规范。

标注员级别的可靠性追踪。 针对每位标注员,持续评估其标注结果与多人共同标注相同样本时达成的共识之间的一致性频率。这里的信号并不是“这位标注员总是与所有人意见一致”——这往往意味着他们只是在简单样本上表现得很有信心。真正的信号是“变化”:如果一位标注员的共识一致性在六个月内一直很稳定,突然下降了两个百分点,那么你需要的是调查原因,而不是单纯的质量投诉。一些标注平台会将此作为每位标注员的一致性统计数据展示;没有这种机制的团队在扩大标注支出之前应该先建立一套。

隐藏对照项。 在每个标注批次中埋入已知答案的项。不要告诉标注员哪些是对照项。标注员在对照项上的准确率本身就是一种测量手段,随着时间的推移,它可以作为一种校准信号。对照项集需要轮换,以防标注员死记硬背。这就是数据标注质量文献中的“蜜罐任务(honeypot task)”模式,也是杠杆率最高的一种干预手段,因为它将标注员的准确率从一个不可知项转变为一个可测量项。

对样本比例进行多标注员重叠标注。 并非每个项都需要三位标注员——那样的成本高得令人望而却步。但通过对一小部分样本(通常为 10–20%)进行多人标注,团队可以持续观察分歧,而分歧本身就是一种信号。标注员产生分歧的项要么是具有歧义的(这表明任务定义不够明确),要么是其中一位标注员出错了(这表明出现了校准漂移)。这两点都非常有参考价值,但如果每个项只有一名标注员,这两点都不会显现出来。

每个评估项的溯源元数据。 记录每一个项的以下信息:谁编写或标注的、何时标注的、针对哪个模型版本生成的、依据的是哪一版指南。这听起来像是额外的开销,直到有一天出现性能回退并被定位到特定的数据组,团队需要追问“这些数据是从哪来的?”时,它的价值就体现了。如果没有溯源,这个问题将无法回答。有了它,一旦审计发现某个数据切片可以追溯到一位即将离职的标注员,该切片就会在被发现的瞬间停止影响发布准入(release-gate)决策。

定期的对抗性审计。 每年进行一两次,由一个小团队对评估集进行红队演练(red-team),明确目标是寻找被污染的数据切片。他们会寻找标注模式异常的项、来源贡献者存在利益冲突的项、答案依赖于特定提示词(prompt)版本的项。这会让团队感到不适,因为它要求团队接受他们的黄金集(gold set)可能是错误的事实。敢于这样做的团队能发现腐朽之处。而不这样做的团队,则会继续基于一个从未测试过完整性的数字来进行产品发布。

组织层面的失效模式

在成熟组织中这种情况屡见不鲜,原因并非技术问题。上述技术修复手段都是已知的,而且并不特别困难。原因在于所有权。在大多数组织中问一句“谁负责评估集?”,你会得到以下三种答案之一:

  1. 数据团队负责标注流水线。
  2. ML 团队负责评估评分。
  3. 产品团队负责决定评估结果是否好到可以发布。

注意缺失的部分:没有人负责审计评估“本身”。没有人负责质问“这个数字值得信赖吗?”由于评估结果是三个团队唯一达成共识的数字,因此它被含蓄地假设为金标准(ground truth),一旦有人质疑它,发布准入流程就失去了锚点。所以没有人质疑它。于是评估集便产生了漂移。

修复方法是结构性的:必须有人明确负责评估的完整性,并拥有相应的预算和权限,在完整性审计失败时叫停发布。在成熟的组织中,这通常是一个小型平台团队或一名资深工程师。在较小的组织中,谁最偏执就由谁负责。职位的头衔并不重要,重要的是必须有人专门负责对黄金集保持怀疑。如果没有这个角色,评估结果就是一个每个人都信任的数字,因为没有人负责去不信任它。

无人察觉的成本框架

“审计评估者”是一项平台投入。它不会产生任何可交付的功能。它会与新功能的标注预算产生竞争——数据团队总是面临为下一次发布标注更多项的压力,而在季度规划会议上,“将周期花在隐藏对照项和对抗性审计上”总是会输掉,直到出事的那一天。

出事的那一天,是指一个版本通过了被污染的评估,并发布了一个谁也无法解释原因的性能回退。事故后的回顾是惨痛的。成本是不对称的:完整性审计的投入是小规模且持续的;而完整性失效的代价是用户信任的流失,以及长达数月的取证工作,以重建哪些过去的发布也通过了错误的评估。

对待评估完整性,应像安全团队对待供应链完整性一样:将其作为平台预算中的固定项目,其合理性来自于失败模式的不对称性,而非任何特定季度的投资回报率(ROI)。能够正确计算这笔账的团队会在需要之前资助审计。而不能正确计算的团队则会在出事后才资助,届时代价将不再是工程师的时间,而是用户的流失。

架构维度的认知

评测集(eval set)并非静态的产物。它是一个下游系统,其完整性取决于输入——标注者、贡献者、指南、源示例——而其输出则是发布决策。技术栈中的每一个其他下游系统都应用了供应链管理规范:扫描代码依赖、签署容器镜像、追踪训练数据的来源。评测集是大多数团队忘记加固的一个下游系统,因为它看起来不像一个系统,而像一张电子表格。

把评测集视为电子表格的团队,会无条件信任它产生的任何数字。而把它视为系统的团队,会审计其输入、对标签进行版本控制、追踪其来源,并定期进行红队测试。在大约一年的时间里,这两支团队交付的模型可能难分伯仲。到了第二年,第二支团队仍在持续交付经过校准的改进。第一支团队则在调试一个无法找出的性能退化,因为这种退化不在模型中——而在金准集(gold set)中,而他们对此缺乏监测手段。

评测仪表盘上的数字是精确的、有名数的、可审计的,并且承载着每一个发布决策。至于它是否真实,则是另一个问题。那些尚未建立审计自身金准集机制的团队,正在信任一个无法证明其来源的数字——而正如软件史上每一次供应链事件最终所证明的那样,当出现问题时,来源(provenance)才是最关键的部分。

References:Let's stay in touch and Follow me for more thoughts and updates