LLM 评估:为什么 benchmark 都不太靠谱
LLM 评估:为什么 benchmark 都不太靠谱
前情说明:技术深度 D1。《大模型原理面试冲刺》系列第 5 篇(收官)。前四篇讲了 attention / GPT 演进 / 对齐 / 长上下文,都是"模型侧"的事。这一篇聊评估——很多面试官会问"你怎么判断一个模型好不好"、"MMLU 的问题在哪"这种开放题。 这是加分题,不是必考题——但答好了能显示"你不是只会背 benchmark 数字的人"。
为什么这一篇值得单独写
面试中你一定会遇到这类问题:
- "MMLU / GSM8K 你觉得靠谱吗?"
- "怎么评估你训练的模型?"
- "Chatbot Arena 排名可信吗?"
- "如果我给你一个新模型让你评估,你会怎么做?"
这些是开放题——没有标准答案,但有"业内人才知道的坑"。答不出这些坑,会显得你没跑过真实的模型训练/上线。
这篇给你三件事:
- 主流 benchmark 的分类地图(知道哪些在测哪些能力)
- 每类 benchmark 的核心问题(数据污染 / metric 缺陷 / 分布偏差)
- 现代的综合评估思路(LMArena、LiveBench、Vibes Eval)
一、Benchmark 地图:先分清在测什么
主流 LLM benchmark 按测试能力大致可以分五类:
| 类别 | 代表 | 测什么 |
|---|---|---|
| 知识 / 学科 | MMLU、C-Eval、CMMLU | 多选题式的常识和学科知识 |
| 推理 / 数学 | GSM8K、MATH、AIME、MMLU-Pro | 数学题、逻辑推理 |
| 代码 | HumanEval、MBPP、SWE-bench、LiveCodeBench | 代码生成 / bug 修复 |
| 指令跟随 | IFEval、MT-Bench | 能不能听懂复杂指令 |
| 综合 / 人评 | Chatbot Arena、AlpacaEval、Vibes | 用户主观打分 |
面试第一步就要说清楚:不同 benchmark 测的能力完全不同,不能一概而论"模型 A 比 B 强"。你得先明确"哪种能力"。
二、每类 benchmark 的核心问题
2.1 知识类:MMLU 和数据污染
MMLU(Massive Multitask Language Understanding,2020)是最著名的知识 benchmark:57 个学科的多选题,从高中生物到大学法律都有。GPT-3 时代它是黄金标准。
问题 1:数据污染
MMLU 的题目、选项、答案在网上到处流传(论文、gitub、blog、reddit 讨论),大概率被爬进了预训练数据。这意味着模型可能是"记住"了答案而不是"理解"了知识。
有研究测过:把 MMLU 题目稍作改写(比如换个说法、打乱选项顺序),有些模型分数会掉 5-10 分。真的理解不应该这么脆弱。
问题 2:选择题不是真实使用场景
真实使用大模型没人给你四个选项。选择题会显著低估模型能力(因为可以蒙对 25%),但也可能高估——因为选项本身就是一种提示。
问题 3:单一 metric(准确率)掩盖多样性
MMLU 有 57 个学科,最终报告一个平均准确率。平均分掩盖了子域差异——一个模型可能在数学子集 95%,在法律子集 30%,平均还挺高,但实际用起来法律部分完全不能用。
面试可以说:MMLU 现在的角色是"过滤器"——模型分不到 60 显然是垃圾,但分从 80 到 85 到 90 的差别,基本没意义。
2.2 数学 / 推理类:GSM8K 和"看似解决"
GSM8K(Grade School Math 8K)是小学数学应用题。GPT-4 之前它是重要指标,GPT-4 之后基本饱和(>95%)。
问题 1:数据污染尤其严重
GSM8K 的所有 8500 道题都是公开的,模型完全可能背答案。有 paper 做过对照——把 GSM8K 的题目换成"结构相同、数字不同"的 GSM-1k(Zhang 2024),发现某些开源模型掉 30 分以上。这说明它们没学会解题,只学会了这些题。
问题 2:解决了不代表会数学
GSM8K 是小学题,本质是"能不能读懂问题 + 简单四则运算"。MATH(大学竞赛级别)和 AIME(美国数学奥林匹克)才是真硬骨头。GPT-4 时代 GSM8K 已经饱和,但 MATH 只有 50 分,AIME 直到 o1 时代才有像样的成绩。
Q:现在数学面看哪个 benchmark?
AIME、Putnam、FrontierMath——GPT-4o 在 FrontierMath 上只有 2%,o3 到了 25%。这才是没被污染、真的难、能区分模型的数学 benchmark。
2.3 代码类:从 HumanEval 到 SWE-bench
HumanEval(2021)是 164 道 Python 函数补全题,早期是代码能力的标准。现在完全饱和——大部分现代模型 90%+,无区分度。
LiveCodeBench(2024)是改进版:动态更新题目,只用最近几个月的新题(LeetCode 之类),最大程度避免污染。
SWE-bench(2023)是真正的硬骨头:从 GitHub 真实项目里挑 bug,让模型给 PR。要在真实 repo 里定位问题、写 patch、通过 CI 测试。这是最接近"程序员实际工作"的 benchmark。2024 初 GPT-4 分只有 2%,2025 后 Claude/GPT-5 到 40-60%。
面试可以说:代码 benchmark 的演进就是"从 toy problem 到 real-world"的演进。HumanEval 已经死了(饱和 + 污染),LiveCodeBench 是过渡,SWE-bench 系列才是未来。
2.4 指令跟随类:IFEval 和 MT-Bench
IFEval(2023):一堆结构化指令,比如"回答不超过 200 字"、"不要出现字母 e"、"用 JSON 格式"、"列出 5 个不能超过 3 个"。可以程序化验证——不需要 LLM 打分。
MT-Bench(2023):多轮对话,第一轮问技术问题,第二轮追问改写,让 GPT-4 打分。
问题:LLM-as-Judge 的偏见
MT-Bench 让 GPT-4 当评委,这引入一堆问题:
- 位置偏见:先出现的答案更容易被选
- 长度偏见:更长的答案更容易被选(更"详细")
- 风格偏见:GPT-4 更喜欢 GPT-4 风格的答案(自己人)——同族模型评自己会打高分
学界最近的共识:LLM judge 至少要用 2-3 个不同家族的模型集成,且交换位置消除偏见。
2.5 综合 / 人评:Chatbot Arena 及其争议
Chatbot Arena(LMArena,UCB 团队)是 2023 年之后最有影响力的 leaderboard。核心方法:
- 用户随机拿到两个匿名模型的输出
- 用户选哪个好
- 用 Elo 系统给模型排名
优点:真实用户 + 真实场景 + 匿名去除品牌偏见。
问题 1:用户偏好 ≠ 客观质量
用户偏好的答案往往:长、有 markdown、有 emoji、开头礼貌。这些是"看起来好"的信号,不一定是"实际对"。有研究显示 Arena 上 style 因素占分数差距的 30%+。
问题 2:分布偏差
Arena 用户高度集中在技术圈 + 英语母语 + 20-40 岁。他们的偏好和"普通用户"甚至"中文用户"可能天差地别。
问题 3:可能被 game
厂商可以针对 Arena 优化——训练数据里塞更多 Arena 风格的答案。事实上 Meta、xAI 都被抓到过这种情况。
面试可以说:Chatbot Arena 是最好的综合参考,但不是客观真相。看排名要看 top 20 的相对位置(比如"GPT-5 和 Claude 5 谁强"),不要迷信具体分数。
2.6 LiveBench:动态更新的救赎
2024 年 Meta+NYU 联合发的 LiveBench,专门针对污染问题:
- 每月新题:从最新的 arxiv 论文、新闻、数学竞赛提取题目
- 多领域:数学、推理、代码、语言、指令跟随
- 客观评分:所有题都能程序化验证,不需要 LLM judge
因为题目每月更新,模型没机会背答案。这可能是目前最"干净"的 benchmark。
面试锚点:如果对方问"你信哪个 benchmark",回答"LiveBench 是我最愿意看的动态 benchmark,Chatbot Arena 是最好的用户偏好参考,其他基本只用来滤除垃圾模型",会显得很有主见。
三、数据污染:所有 benchmark 的原罪
上面反复提到"数据污染"。这里系统讲一下面试可以聊的深度。
3.1 三种污染程度
- 直接污染:benchmark 的原题被爬进训练数据(最严重)
- 答案污染:题目改写过,但答案模式在预训练里
- 格式污染:模型见过大量"同类题"的解题格式,泛化不算 real
如何检测:
- Contamination detection tools(如 Lm-contamination-index)通过 log-probability 判断题目是否"熟悉"
- 改写测试(GSM-1k 那种)——重新出结构一样的题,看分掉多少
- 时间戳测试——用发布时间晚于模型 knowledge cutoff 的新题
3.2 为什么污染很难完全避免
- 预训练数据几十 T tokens,去重再仔细也可能漏
- 合成数据放大污染——很多合成数据本身就是"模仿 benchmark 风格"生成的
- RLAIF/CAI 阶段的 preference 数据里也可能藏 benchmark 题目
- 有些团队会故意训练在 benchmark 上(学界不齿但业界有)
面试可以说:污染是结构性问题,动态 benchmark(LiveBench)+ 私有 held-out(自己 build 的评估集)+ 定期做 contamination check 是唯一的应对方案。
四、工程视角:怎么评估你训的模型
面试常问"如果让你从头评估一个新模型,你会怎么做?"
我推荐的答法(分四层):
Layer 1:过滤器 benchmark(快速筛垃圾)
- MMLU:分不到 60 直接淘汰
- HumanEval:分不到 70 说明基础代码能力差
- IFEval:低于 60% 说明指令跟随有问题
这一层花几小时用现成 harness(lm-eval-harness)跑完。
Layer 2:动态和硬 benchmark(真正的能力)
- LiveBench:最防污染的综合评估
- SWE-bench Verified:真实代码能力(不是玩具题)
- AIME/FrontierMath:真实数学能力(不是小学题)
跑起来慢(SWE-bench 一次几小时),但结果最能反映真实水平。
Layer 3:私有 held-out(针对你的场景)
没有公开 benchmark 能替代——你的业务场景决定了模型好不好。
- 自己 build 500-2000 条 (prompt, ideal answer) 对
- 用 LLM judge + 人评双轨评估
- 绝对不放到网上,只作为内部 gold standard
这一层是真正决定"能不能上线"的。
Layer 4:Vibes / 用户 feedback
- 让几个不同背景的人聊 30 分钟随便问
- 收集"感觉哪里怪"的反馈
- 上线后 A/B 测试真实用户
这一层没有数字,但最接近产品价值。"Vibes eval" 是 Andrej Karpathy 推广的概念,业界越来越接受它作为最终判断。
面试标准答法:四层评估——过滤器 benchmark 筛垃圾 → 动态/硬 benchmark 测真实能力 → 私有 held-out 对齐业务 → Vibes 兜底体验。少一层都不算完整。
面试锚点
Q1: 你觉得 MMLU 可信吗?
A: MMLU 是"过滤器"不是"排行榜"——分数低于 60 显然是垃圾模型,但分数从 80 到 90 的差别基本没意义。核心问题是数据污染(题目答案早就在网上到处流传),以及选择题格式不代表真实使用场景,加上平均分掩盖子域差异。现在 MMLU 主要用来快速淘汰弱模型,不用来精细排名。
Q2: GSM8K 分数高就代表数学好吗?
A: 不代表。GSM8K 是小学数学题,2024 之后主流模型都 95%+,饱和了。而且严重污染——把 GSM8K 换成结构相同、数字不同的 GSM-1k,很多开源模型掉 30 分。看数学能力现在应该看 AIME / Putnam / FrontierMath,这些没被污染且真的难。
Q3: Chatbot Arena 排名可信吗?
A: 是最好的综合参考,但不是客观真相。三个问题:(1) 用户偏好受 style 影响大(长、markdown、emoji 加分),未必等于质量;(2) 用户分布偏差(技术圈+英语母语居多);(3) 可以被针对性优化(Meta、xAI 都被抓到过)。用法:看 top 20 的相对位置,不迷信具体分数。
Q4: LLM-as-Judge 有什么问题?
A: 三大偏见:(1) 位置偏见——先出现的答案更容易被选;(2) 长度偏见——长答案更容易被选;(3) 风格偏见——GPT-4 更喜欢 GPT-4 风格的答案(同族偏袒)。解决:至少用 2-3 个不同家族的 judge 集成,且交换答案位置消除偏见,加人评校准。
Q5: 什么叫"数据污染"?怎么检测?
A: benchmark 的题目/答案出现在模型训练数据里,导致模型是"背下来"而不是"理解"。检测方法:(1) contamination detection 工具(用 log-probability 判断题目是否熟悉);(2) 改写测试(重新出结构一样的题,看分掉多少,比如 GSM-1k);(3) 时间戳测试(用发布时间晚于 knowledge cutoff 的题)。
Q6: 你会怎么评估一个新训练的模型?
A: 四层评估。Layer 1 过滤器 benchmark(MMLU/HumanEval/IFEval)快速筛垃圾;Layer 2 动态和硬 benchmark(LiveBench/SWE-bench/AIME)测真实能力;Layer 3 私有 held-out 数据(自己 build 的 500-2000 条业务对齐评估集)对齐真实场景;Layer 4 Vibes eval(几个人聊 30 分钟找体验问题)+ 上线 A/B 测试。少一层都不算完整。
Q7(进阶): 为什么 SWE-bench 比 HumanEval 更能反映代码能力?
A: HumanEval 是玩具题(164 道 Python 函数补全),完全饱和且严重污染。SWE-bench 是从 GitHub 真实项目里挑 bug 让模型给 PR,涉及:(1) 在真实 repo 里定位问题;(2) 理解跨文件的调用关系;(3) 写 patch;(4) 通过原始 CI 测试。这才是"程序员实际工作",也是为什么直到 2025 年顶级模型才做到 40-60%。它测的是代理能力,不只是代码生成。
Q8(进阶): LiveBench 为什么比其他 benchmark 靠谱?
A: 两个核心设计:(1) 每月更新题目——从最新论文、新闻、数学竞赛提取新题,模型没机会背;(2) 全部程序化评分——不用 LLM judge 避免偏见。缺点是题目风格集中在"结构化推理"上,覆盖面不如 MMLU 广。用法:LiveBench 看"防污染的真实推理能力",Chatbot Arena 看"用户偏好",两个是互补的最佳组合。
一句话记住这一篇
没有一个 benchmark 是完美的。MMLU/HumanEval/GSM8K 是过滤器(筛垃圾用),LiveBench 是最防污染的动态评估,Chatbot Arena 是最真实的用户偏好(但受 style 影响),SWE-bench/AIME 是真实能力的硬骨头,私有 held-out + Vibes eval 才是最终判断。面试聊 eval 有主见比背分数更值钱。
系列完结。这五篇覆盖了大模型面试的"通用地基"——Transformer / GPT 演进 / 对齐 / 长上下文 / 评估。推理 Infra 的深度内容我在这个博客的其他文章里已经写得比较系统(MoE 推理、Continuous Batching、vLLM 三年演进史、FlashAttention 三代、RadixAttention),可以直接当延展阅读。祝面试顺利。

Written by
Zoe
AI Infra Engineer · LLM Serving · GPU/RDMA · 造工具的偏执狂