跳到主要内容

即使你发誓绝不分享,你的评估集仍需要的水印

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的私有评估集(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)研究社区的原则可以直接转化。在这种语境下,水印意味着在你的评估案例中嵌入信号,这些信号是团队永远不会自然写出的,且在评估数据上训练的模型很可能会复现它们,而你可以在不相关输入的模型输出中检测到这些信号。

水印不是案例上的标签。它是案例内部的指纹,其形状经过专门设计,使得记忆案例的行为会迫使模型也记住这个指纹。

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates