读懂 benchmark,不被榜单忽悠
Benchmark 排行榜看起来很客观,但大多数时候并不完全是这样。这样读才靠谱。
为什么这很重要
你经常会看到:“模型 X 现在是 SWE-bench 第一名”。听起来像是明确的事实,但大多数时候并不是。Benchmark 有一些很少和分数一起被提及的弱点。了解它们之后,你才能用合适的距离感去看待这些分数和排名。
最常见的几个坑
数据污染。 很多 benchmark 题目迟早会通过 Common Crawl、GitHub、Reddit 等渠道混进模型的训练数据里。这样模型能“解出”一道题,只是因为它以前见过答案,而不是因为它真的理解了这道题。
饱和。 像 HumanEval 或 MMLU 这样的老 benchmark 已经变得太简单,几乎所有顶尖模型都挤在榜首,分数十分接近。测试还在跑,但已经区分不出什么差别了。这一点不容易一眼看出来,因为表面上依然会显示一个分数。
作弊和泄题。 有些 benchmark 题目的题干本身就几乎把答案说出来了,或者自动化测试太弱,根本抓不出错误答案。这样模型可以“通过”,却没有真正解决问题。
厂商挑数据。 厂商往往只公布自己最好的结果——最佳 prompt 版本、最佳配置,那些不那么好看的尝试都不会展示出来。这会让排行榜向营销倾斜。
同一个 benchmark 有好几个“官方”分数。 用什么工具包裹模型(也就是“scaffold”),或者测的是数据集的哪一部分,同一个 benchmark 会得出不同的结果——而它们全都自称“官方”。
和真实场景的差距。 Benchmark 测的是干净、边界清晰的任务,你真实遇到的问题通常要乱得多。那些自己搭建专业领域测试(法律、医疗、金融)的团队,得到的结果往往比公开 benchmark 承诺的要差不少。
过时的排行榜。 不是每个排行榜都会随着每个新模型更新。榜首的位置可能已经挂了好几个月,只是因为还没人去测试最新的模型。
值得记住的几条经验法则
- 永远别只信一个数字,至少看两个独立来源。
- 查一下是谁测的、什么时候测的。厂商自己给出的数字,可信度不如独立机构测出来的。
- 优先选独立、最新的来源,而不是营销材料。
- 在你自己真实的任务上做一次简单测试,胜过任何 benchmark 分数。相信一个 benchmark 数字之前,先拿它在你的实际问题上试一试。
示例
“排行榜 Y 显示模型 X 是第一名。”在你决定换模型之前:是谁测的、什么时候测的——在你自己的任务上简单试一下,结果又是怎样?
小测验
为什么同一个 benchmark 会有好几个不同的“官方”结果?
来源
- Runloop:SWE-bench 深度剖析(泄题与测试太弱) ↗ runloop.ai
- UC Strategies:AI benchmark 已经变成了一场游戏 ↗ ucstrategies.com
- Digiteria Labs:模型 benchmark 的现实检验 ↗ digiterialabs.com
- SWE-bench:官方网站 ↗ www.swebench.com