离线评测
先说结论
离线评测是在标准化 benchmark 数据集上,通过自动化指标(准确率、pass@k、LLM 打分等)量化评估模型能力,是模型选型和迭代过程中成本最低、效率最高的评测方式。
自动评测基准
通用知识评测
| 基准 | 说明 | 覆盖领域 | 特点 |
|---|---|---|---|
| MMLU | 多任务语言理解 | 57 个学科 | 已趋于饱和,顶级模型 90%+ |
| MMLU-Pro | 更难的知识评测 | 14 个学科 | 10 选项(而非 4 个),更难 |
| HellaSwag | 常识推理 | 日常场景 | 句子完形填空 |
| ARC | 科学推理 | 多选科学题 | Challenge/Easy 两级 |
| WinoGrande | 共指消解 | 常识推理 | 需要世界知识 |
| GPQA | 研究生级专家问答 | 物理/化学/生物 | 专家验证,极难 |
编程能力评测
| 基准 | 说明 | 评估方式 |
|---|---|---|
| HumanEval | Python 函数补全(164 题) | pass@k |
| HumanEval+ | 80x 测试用量的增强版 | pass@k(更可靠) |
| MBPP | 基础 Python 编程(974 题) | pass@k |
| LiveCodeBench | 从竞赛平台持续抓取新题 | 动态更新,防泄露 |
| SWE-bench | 真实 GitHub issue 修复 | 解决率 |
| MultiPL-E | 多语言代码生成 | pass@k |
数学与推理评测
| 基准 | 说明 | 难度 |
|---|---|---|
| GSM8K | 小学数学应用题(8,500 题) | 中等 |
| MATH / MATH-500 | 竞赛数学 | 高 |
| AIME | 美国数学邀请赛 | 极高 |
| BBH | Big-Bench Hard,难题子集 | 高 |
| DROP | 离散推理 | 中高 |
指令遵循评测
| 基准 | 说明 | 评估方式 |
|---|---|---|
| MT-Bench | 多轮对话质量(80 题) | GPT-4 打分 1-10 |
| AlpacaEval 2.0 | 指令遵循自动评测 | 胜率 |
| IFEval | 指令格式遵循 | 规则匹配(严格) |
| Arena Hard | Chatbot Arena 难题子集 | GPT-4 打分 |
多模态评测
| 基准 | 说明 |
|---|---|
| MMMU | 多模态多学科理解 |
| MathVista | 视觉数学推理 |
| MMBench | 多模态综合评测 |
| DocVQA | 文档视觉问答 |
HumanEval pass@k
QUESTION 面试高频:pass@k 的含义和计算公式?
pass@k 衡量模型在 k 次采样中至少一次通过所有单元测试的概率:
其中 为总采样次数, 为通过次数。
- pass@1:一次性通过率,反映实际部署体验(用户通常只看一次生成)
- pass@10:10 次中至少一次通过,反映模型潜力上限
- pass@100:100 次中至少一次通过,理论上限
HumanEval+ 的改进:原始 HumanEval 平均仅几个测试用例,模型可能通过巧合而非正确实现通过。HumanEval+ 增加了约 80 倍的测试用例,大幅减少假阳性。
LLM-as-a-Judge
核心思路
使用更强的模型(如 GPT-4、Claude)作为评委,评估模型输出质量。
评估方式
| 方式 | 说明 | 适用场景 |
|---|---|---|
| 成对比较 | 给评委两个输出,选择更好的 | 排名、模型对比 |
| 单点评分 | 给评委一个输出,打 1-10 分 | 绝对质量评估 |
| 参考评分 | 与参考答案对比打分 | 有标准答案的场景 |
评估维度
| 维度 | 说明 |
|---|---|
| Helpfulness | 回答是否解决了用户问题 |
| Relevance | 回答是否与问题相关 |
| Accuracy | 事实是否正确 |
| Completeness | 是否全面回答了问题 |
| Fluency | 语言是否自然流畅 |
LLM-as-a-Judge 的偏差
QUESTION 面试高频:LLM-as-a-Judge 有什么偏差?
| 偏差类型 | 说明 |
|---|---|
| 长度偏差 | 偏好更长的回答 |
| 格式偏差 | 偏好 Markdown 格式、列表结构 |
| 自偏好 | 偏好自己的输出风格 |
| 位置偏差 | 成对比较中偏好排在前面的回答 |
| 冗余偏差 | 偏好"先肯定后补充"的模式 |
研究表明 GPT-4 作为裁判与人类判断的一致率约为 80%,虽不完美但已具备实用价值。
SFT 前后对比评测
回归检测
- 确保 SFT 没有退化基座模型的能力
- 在通用基准上比较 SFT 前后的得分
- 特别关注微调领域外的能力退化(灾难性遗忘)
目标领域验证
- 在微调目标领域的测试集上验证提升
- 使用领域专家评估
- 检查是否过拟合训练数据
评测工具
| 工具 | 用途 | 特点 |
|---|---|---|
| Open LLM Leaderboard | 标准化评测排名 | HuggingFace 维护 |
| HELM | 多维度全面评测 | Stanford CRFM |
| lm-eval-harness | 灵活的评测框架 | EleutherAI 开源 |
| Promptfoo | 回归测试 CLI | 支持自定义评测 |
| DeepEval | 多维度 LLM 评估 | 支持 LLM-as-a-Judge |
前沿趋势
- 更难的基准:MMLU-Pro、GPQA 取代趋于饱和的旧基准
- 动态更新基准:LiveCodeBench 等持续引入新题
- 真实任务基准:SWE-bench 评估工程能力而非竞赛能力
- 多模态评测:MMMU、MathVista 覆盖视觉理解
- Agent 评测:BFCL、ToolBench 评估工具调用能力
如果要对外讲,可以怎么概括
"离线评测是模型选型和迭代的基础。我会按维度选择基准:知识广度看 MMLU/MMLU-Pro,代码能力看 HumanEval+/LiveCodeBench,对话质量看 MT-Bench/Chatbot Arena。关键是要理解每个基准的局限:MMLU 已饱和且有数据泄露风险,MT-Bench 的 LLM-as-a-Judge 有长度偏差,HumanEval 测试用例不足导致假阳性。我的做法是多基准交叉验证,同时构建与业务场景匹配的私有评测集。评测结果必须注明设置(few-shot 数、prompt 模板、温度),确保可复现。"
最后记几条
- 多基准交叉验证——不依赖单一基准
- pass@1 反映部署体验,pass@10 反映潜力上限
- HumanEval+ 优于 HumanEval——80x 测试用例减少假阳性
- LLM-as-a-Judge 约与 80% 人类一致性——有偏差但实用
- SFT 必须做回归检测——确保不退化基础能力
参考资料
- Hendrycks, D. et al. "Measuring Massive Multitask Language Understanding" (2021)
- Chen, M. et al. "Evaluating Large Language Models Trained on Code" (2021)
- Zheng, L. et al. "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena" (2023)
- Wang, Y. et al. "MMLU-Pro" (2024)
- LiveCodeBench: https://livecodebench.github.io/