你的私有评估集(eval set)是你的 AI 团队拥有的最重要的知识产权之一。它定义了你的产品什么是“好”,它把关每一次模型升级,它告诉你上周的提示词(prompt)修改是改进还是退化。从你写下第一个案例的那一刻起,泄露的倒计时就开始了。
并不是因为你会公开发布它,也不是因为你会在会议上演示它。它会像所有事物泄露的方式一样泄露:支持工程师把一个失败的案例粘贴到 Bug 工单里,产品经理把评估细则(rubric)截图发到某个被索引的 Slack 频道,调试日志将样本载荷上传到第三方错误追踪器,供应商评估人员将你的基准测试跑在他们的微调管线上,因为合同某种程度上允许这样做。在足够长的时间轴上,泄露的概率趋近于 1,而最糟糕的泄露版本是团队中没人察觉到的:供应商发布的下一个模型悄悄记住了你的评估集,由于测试集变成了训练集,你的得分跃升了,而不是因为模型变得更好了。
如果你无法区分真实的能力提升和污染伪影(contamination artifact),你的评估集就不再能衡量它本该衡量的东西。解决办法不是“更小心地对待文件”——小心只是底线,而非上限。解决办法是假设泄露已经发生,并设计评估集来检测它。
污染并非假设
公开基准测试(benchmarks)已经处于你的私有评估集正在走向的被污染世界。最近的调查显示,在常用的基准测试套件中,污染率高达 45%,一些多语言基准测试在主流模型中显示出 91.8% 的污染信号。MMLU 在领先模型的发布版本中也出现了两位数的污染。HumanEval 约有四分之一的内容被发现存在于 GPT-4 的训练数据中,且 8–18% 的 HumanEval 内容与 RedPajama 和 StarCoder-Data 等公开预训练语料库重叠。行业多年来依赖的四个基准测试——MMLU、HumanEval、HellaSwag 和原始的 GSM8K——现在被广泛认为已不再适用于前沿模型评估,因为它们的高分不再能区分擅长任务的模型和见过任务的模型。
那些是公开数据集。尽管采用了 BIG-bench 风格的纪律——嵌入金丝雀 GUID 并要求训练者对其进行过滤——它们还是被污染了。研究人员对 GPT-4-base 进行了金丝雀检查,发现它仍然记住了几个 BIG-bench 任务,因为只有当数据抓取者选择过滤金丝雀时,金丝雀才起作用,而相当一部分抓取者并不会这么做。你的私有评估集没有金丝雀,没有过滤列表,没有上游协议。从结构上讲,它的防御能力比那些已经在溃败的基准测试还要弱。
需要记住的心智模型是,评估集是一份合同,其价值在暴露的那一刻就开始贬值,而暴露是一个连续变量,而非二元变量。有些泄露路径你可以关闭,而那些你无法关闭的,正是水印的用途所在。
评估集究竟是如何泄露的
工程师倾向于将泄露想象成一个戏剧性的单一事件——仓库被公开、有凭证的数据集被下载——但在实践中,它是无数个当时看来合理的微小决策的累积,每个决策都让几个案例跨越了它们本不该跨越的边界。
以下是生产团队中经常出现的泄露路径:
- 失败的评估案例被逐字粘贴到 Jira 或 Linear 工单中,以便 Bug 提交者描述错误。工单追踪器有一个集成,会将描述镜像到具有第三方爬虫访问权限的搜索索引中。
- 在校准讨论期间,评估细则被粘贴到 Slack 频道。该频道被导出到某个没人读过保留政策的工具管线中。数月后,通过一条最初参与者无法预测的路径,该导出内容出现在了某个供应商的训练语料库中。
- 包含金标准参考(golden references)的 LLM-judge 提示词被上传到托管评估平台,而在服务条款的深处,写着保留提示词用于“服务改进”。
- 捕获完整请求载荷的调试日志被发送到错误追踪器,并分发到几个下游分析工具。其中一个工具在一年后被出售,买家的数据使用政策比卖家的更宽松。
- 供应商评估人员受聘“针对你的内部基准测试进行校准”。合同规定他们只能以只读方式使用评估集。但合同中没有任何内容能阻止由于他们构建评分管线的方式,导致评估集作为意外副作用被采样到他们自己的训练混合数据中。
- 团队成员通过聊天机器人运行评估案例,以调试模型为什么拒绝它,而聊天机器人的提供商默认保留用户输入,除非有人在六个月前关闭了该设置。
每条路径在局部看来都是合理的决策。它们都不像是“发布评估集”。但加在一起,它们确保了任何足够旧、使用足够频繁的私有评估集都已经跨越了其中至少一个边界。你无法抓住所有的泄露。你也不需要。你需要的是检测到泄露已经发生。
水印对私有评估意味着什么
来自基准测试污染(benchmark-contamination)研究社区的原则可以直接转化。在这种语境下,水印意味着在你的评估案例中嵌入信号,这些信号是团队永远不会自然写出的,且在评估数据上训练的模型很可能会复现它们,而你可以在不相关输入的模型输出中检测到这些信号。
水印不是案例上的标签。它是案例内部的指纹,其形状经过专门设计,使得记忆案例的行为会迫使模型也记住这个指纹。
具体来说,私有评估的水印有几种形式:
- 具有结构化特征的合成实体。 虚构一些遵循只有你的团队知道的生成规则的命名实体(人名、公司、产品名、虚构城市)。一个关于客户投诉升级的测试案例提到了 "Ardenne Holdings, Inc.",一家不存在的公司;这个名称遵循你的生成器所拥有的模式。看过该案例的模型能够通过部分前缀补全名称,而干净的模型则无法做到。
- 风格化的常量。 嵌入数字常量,其位编码了一个特征——例如不在 NANP 分配范围内的电话号码、校验和不符合标准的 SKU、长度和字符类别符合结构化规则的 ID。这些比长句子更容易在改写中幸存,因为它们被视为“案例事实”,并且在案例被重写时往往会被保留。
- 独特的措辞。 使用在你的领域中不常见但在上下文中合理的措辞。如果一个响应评分标准(rubric)写道“代理必须在没有提示的情况下展示取消窗口”,这种短语是模型在面对任何类似“这个代理应该做什么?”的提示时,都有可能产生的。如果你的私有评分标准在特定模式中使用了“without prompting”这一精确结构,那么记住它的模型将会过度产生这种模式。
- 非评估关键位置的 Canary token。 编码在注释字段中的 UUID、元数据块中的十六进制字符串,或是一致地引入到评估案例填充文本中的风格化错别字。这些是纯粹的检测负载——它们不会改变案例的语义,但摄取了该案例的模型在相关语境下被提示时,发出这些内容的可能性要高得多。
检测端是一个独立的工作流。评估流水线定期对每个候选模型运行污染探测:提供永远不会自然诱导水印的提示词,并检查模型输出和对数概率(log-probabilities)中的水印迹象。干净的模型在合理的补全内容上产生近乎均匀的分布;受污染的模型则产生异常陡峭的分布,并在带有水印的答案处达到峰值。
最近的污染检测研究更进一步——例如基于重写的水印方法可以产生可辩护的 p 值,即模型未在带水印的基准测试上进行训练的概率上限。你不需要在第一天就追求统计学上的严谨性。一个能为你提供二进制结果“该模型知道金丝雀 (canary)”的检测器,就已经足以改变你对分数跃升的解读方式。
将污染视为维护事件,而非死刑
当你发现案例受污染时,本能反应往往是丢弃整个评估并重新开始。这是浪费的,而且会让团队觉得污染是一场灾难,而不是常规的维护事件。能够规模化的原则是将每个受污染的案例视为需要刷新,而非退役——保留其能力目标,并重新生成其表层形式。
一旦你能证明模型记住了某个案例,该案例就已被污染。这就是可执行的定义。无论该案例是否离开过你的笔记本电脑,或者是否通过你能识别的路径泄露,这都不重要。水印告诉你模型知道这个案例;这个案例就废弃了。
刷新案例意味着生成一个针对相同能力、触达相同失败模式、应用相同评分标准的新案例,但其文本内容是模型从未见过的新内容。关于鲁棒基准测试的文献称之为“动态扰动 (dynamic perturbation)”——改变变量、改写表层、重新生成填充内容——其生产形式是由评估团队拥有的再生流水线:
- 每个评估案例都带有描述其衡量内容的元数据(能力、失败模式、评分标准准则)。
- 当水印检测器在某个案例上触发时,再生流水线会生成 N 个满足元数据的候选替代方案。
- 团队进行人工审核和筛选,并在选定的替代方案中嵌入新的水印。
- 退役的案例保留在密封存档中——这对于事后分析很有用(“模型是否仍能正确回答已作废的版本?”),但不再用于支撑核心指标。
这种 architectural 假设你的评估集是一个带有案例级元数据的结构化产物,而不是一个由(提示词,预期输出)对组成的扁平列表。如果你现在的评估只是一个包含两列的 CSV 文件,你就无法执行再生原则;因为用于再生的元数据并不存在。首要工作不是制作水印,而是给每个案例一个关于其存在意义的描述,这样它就可以被替换而不会丢失。
这改变了你进行模型升级的方式
最深远的改变不在于水印本身,而在于你不再孤立地解读评估分数 (eval score)。每当你评估一个新模型时,你会并行执行两项任务:评估的核心分数,以及针对该模型的水印检测。你据此采取行动的结果是这两者的结合。
一个分数大幅提升且水印检测器显示干净的模型,才代表真实的进步。一个分数大幅提升但水印检测器报警的模型,则属于数据污染事件,你在发布前需要进行调查;这种提升是值得怀疑的,正确的做法通常是刷新受影响的评估分片 (slice),并在刷新后的分片上重新打分,然后再决定这种提升实际价值几何。一个分数没有变化且水印检测器显示干净的模型,是迭代未见成效时的预期情况。而分数没有变化但水印检测器报警的模型则是最有趣的情况 —— 模型已经见过你的评估数据,但仍然没有提升,这向你揭示了关于模型训练混合数据或评估信号密度的某些信息,而你技术栈中的其他任何东西都无法显露这些信息。
这个四象限矩阵才是水印技术真正的产出。它将你在模型升级后提出的问题从“数字上升了吗?”转变为“数字上升的原因是否如我所想?” 这是唯一一个其答案值得让你据此发布模型变更的问题。
从第一天起就加入水印的团队,将需要维护一小套额外的规范,保持重新生成流水线 (regeneration pipeline) 的健康运行;当领导层询问为什么内部基准测试中 6 分的增长没有转化为生产环境的提升时,他们能给出一个清晰的交代。而没有这样做的团队最终会发现,自己在盯着一个持续上升了六个月的数字发呆,却无法判断是模型在进步,还是基准测试 (benchmark) 已经变成了“参考答案”。当你确信是后者时,你花了两年时间构建的评估体系已经贬值殆尽,重建工作将从零开始 —— 只不过这一次,你会加入水印。
会员专享
余下内容仅对会员开放。
会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。
- —完整文章,包含未公开存档的部分
- —可落地的工作框架,附带权衡与决策依据
- —新文章抢先看,先于公开发布
随时取消 · 一次订阅,畅读全部