深度分析benchmark scores只反映均值而生产风险在尾部失败分布,两个分数相同的模型可能有完全不同的错误模式,榜单数字差一分可能是统计噪声。
基准测试得分是对采样分布平均值的评估,但生产环境风险取决于错误如何分布,而不是平均值本身。两个模型可能发布相同的基准测试得分,却有完全相反的失败几何特征——一个随机失败,另一个在你关心的某个子群体上系统性失败。追求榜单上 1.5 分的收益而忽视错误相关性结构,就是在优化错误的统计量。
每个模型卡片都附带一个标量。某个推理套件上是 78.3 分。某个编码基准上是 91 分。团队像体育迷比较打击率一样比较这些数字,然后基于相差 1.5 分的差距做出采购决策。这个差距往往就是统计噪声。更糟的是,即使差距是真实的,这个标量本身也在回答一个你没问过的问题。
基准测试得分是对一个分布平均值的估计。它是在基准测试作者决定采样的分布中,从一个提示符样本中得出的平均正确率。这是完全可以计算的。但把它当作"这个模型是否会在我这里失败"的代理,就太不合适了。生产风险不是关于平均值的陈述。它是关于尾部的陈述,关于你的流量中哪部分落在那个尾部。
把一个模型在一万个提示符上的表现压缩成一个数字,你就丢弃了关于其错误形状的所有信息。两个模型可能发布完全相同的总体准确率,却有完全不同的失败几何特征。
模型 A 错过了 5% 的提示符,这些错误大致均匀分布在各个类别、各种语言、各个难度等级。它的错误接近于来自同一个噪声过程的独立采样。模型 B 也错过了 5%,但几乎所有这些错误都聚集在一个子群体中——包含否定的问题、某种特定语言、多跳算术,无论是什么。相同的得分。截然不同的风险概况。
如果你的生产流量恰好针对模型 B 不擅长的东西,你会不断遭遇失败,而你的基准测试仪表板告诉你一切都很好。如果你的流量根本不涉及那个子群体,模型 B 实际上可能是更安全的选择,在榜单上无法区分,但对你来说严格更好。基准测试无法告诉你你在哪种情况中,因为它从来不报告错误的相关性结构。它报告平均值,然后就完事了。
这个区别很重要,因为相关失败以随机失败不会的方式复合。如果一个模型在某个基准率上独立失败,你的系统级错误率会随着使用规模扩大而优雅且可预测地降级——你可以用统计方法推理它,构建重试和降级方案,失败不会集中在任何一个用户、工作流或客户群体。
系统性地在某个子群体上失败就是相反的情况。这意味着特定类别的用户每次都经历到模型是坏的,而你的总体指标看起来很健康。这意味着整个产品表面——比如任何涉及日期算术的东西,或任何特定语言环境中的东西——可能默默不可靠,而榜单数字却版本接版本地上升,因为基准测试对那个子群体的采样样本足够稀疏,使得总体几乎不动。
这是出现在经典 ML 公平性和鲁棒性文献中的相同失败模式,只不过针对 LLM 重新命名了。一个具有强大总体准确率的分类器,如果某个少数族裔群体在评估样本中代表不足,对那个群体来说仍然可能是灾难性的。生成模型的基准测试有相同的结构性弱点。它们只是把它包装成推理能力而不是子群体准确率,这使得更容易忘记问题是同一个。
基准测试得分是一个具有采样方差的点估计,几乎没有人报告它周围的区间。如果一个基准测试有几千个项目,一个模型的得分在竞争对手的一到两分以内,这个差距经常在你从重新采样测试集中得到的置信区间内。把那个差距当作有意义的能力差异,就是把测量噪声当作信号。
讽刺的是,这是一个已解决的统计问题——对测试集进行 bootstrap,报告区间,停止假装榜单排名是一个全序关系,而实际上它更接近一组重叠的分布。很少有公开的榜单这样做,因为单个可排序列对于榜单网站来说是比误差条更好的产品。这对于榜单网站来说是一个合理的 UX 决策。对于选择哪个模型要放在付费用户面前的工程团队来说,这是一个糟糕的决策。
如果平均值是错误的统计量,修复方案不是找到一个更好的单一数字。而是停止要求单一数字。几个具体的转变:
在平均前进行切片。把你的评估集分解成映射到真实产品表面的子群体——意图类型、语言、输入长度、领域——并报告每个切片的准确率,而不仅仅是总体。总体数字是你应该单独查看的切片的加权平均。
在平均前进行切片。把你的评估集分解成映射到真实产品表面的子群体——意图类型、语言、输入长度、领域——并报告每个切片的准确率,而不仅仅是总体。总体数字是你应该单独查看的切片的加权平均。
报告最差的切片,而不仅仅是平均切片。一个模型的底线告诉你关于生产风险的信息比它的平均值更多,因为生产不经历平均值,它经历的是给定用户流量碰巧落在的任何切片。
报告最差的切片,而不仅仅是平均切片。一个模型的底线告诉你关于生产风险的信息比它的平均值更多,因为生产不经历平均值,它经历的是给定用户流量碰巧落在的任何切片。
查看错误相关性,而不仅仅是错误率。两个错误率相等的模型可能有完全不同的联合失败模式。如果你在集合、降级链或路由器中有两个模型,它们之间的相关错误即使每个单独看起来都很好,也提供零冗余。
查看错误相关性,而不仅仅是错误率。两个错误率相等的模型可能有完全不同的联合失败模式。如果你在集合、降级链或路由器中有两个模型,它们之间的相关错误即使每个单独看起来都很好,也提供零冗余。
让评估分布与你的生产分布匹配,而不是基准测试作者的。为了排名一般推理能力而构建的基准测试从某个人对什么重要的概念进行采样。如果你的生产流量看起来完全不像那个样本,基准测试的平均值在估计一个你不在其中运营的分布。
让评估分布与你的生产分布匹配,而不是基准测试作者的。为了排名一般推理能力而构建的基准测试从某个人对什么重要的概念进行采样。如果你的生产流量看起来完全不像那个样本,基准测试的平均值在估计一个你不在其中运营的分布。
在被证明是真实的之前,把小的榜单差距当作噪声对待。在基于小于你从重新采样中得到的区间的差距做出交换决策之前,bootstrap 你自己的评估集。
在被证明是真实的之前,把小的榜单差距当作噪声对待。在基于小于你从重新采样中得到的区间的差距做出交换决策之前,bootstrap 你自己的评估集。
以上这些都不是奇特的统计。当该领域转向具有更漂亮榜单的生成模型基准测试时,它是在经典 ML 评估中完全标准的严谨性。标量之所以诱人,是因为它容易放在幻灯片中,容易在会议中争论。但这个数字从来就不是在衡量生产中什么会出现故障。它在衡量一个分布上的平均值。