大模型修炼秘籍 第十五章:武功评比——基准测试
第十五章:武功评比——基准测试
武功评比验功力,基准测试知高低。

【本章导读】
模型修炼完成,如何评估其真实能力?基准测试如同武林大会,让各路模型同台竞技,一较高下。本章将介绍主流评估基准和评估方法。
一、评估的重要性
【评估心法】
没有评估,就没有改进的方向。基准测试帮助我们发现模型的优缺点,指导后续优化。
【评估维度】
┌─────────────────────────────────────────────────────────────┐
│ 模型评估维度 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 能力评估 │
│ ├─ 知识能力:世界知识、专业知识 │
│ ├─ 推理能力:数学、逻辑、因果 │
│ ├─ 语言能力:理解、生成、翻译 │
│ └─ 代码能力:编程、调试、解释 │
│ │
│ 安全评估 │
│ ├─ 有害性:是否产生有害内容 │
│ ├─ 偏见:是否存在歧视性输出 │
│ └─ 幻觉:是否编造虚假信息 │
│ │
│ 效率评估 │
│ ├─ 推理速度:延迟、吞吐量 │
│ └─ 资源消耗:内存、计算 │
│ │
└─────────────────────────────────────────────────────────────┘
二、主流基准测试
1. 综合能力基准
【MMLU(Massive Multitask Language Understanding)】
最权威的综合能力测试,涵盖57个学科:
| 学科类别 | 示例 |
|---|---|
| STEM | 物理、化学、生物、计算机 |
| 人文 | 历史、哲学、文学 |
| 社会科学 | 经济、政治、心理学 |
| 其他 | 法律、医学、商业 |
测试方式: 多项选择题,4选1
问题: 以下哪个是Python中的不可变数据类型?
A. list
B. dict
C. tuple
D. set
答案: C
【主流模型MMLU成绩】
| 模型 | MMLU分数 |
|---|---|
| GPT-3.5 | 70.0% |
| GPT-4 | 86.4% |
| Claude 3 Opus | 86.8% |
| LLaMA 3 70B | 82.0% |
| DeepSeek-V3 | 88.5% |
2. 推理能力基准
【GSM8K(小学数学应用题)】
测试数学推理能力:
问题: 小明有5个苹果,给了小红2个,又买了3个,现在有几个?
模型回答:
小明最初有5个苹果。
给了小红2个,剩下 5 - 2 = 3个。
又买了3个,现在有 3 + 3 = 6个。
答案是6。
【MATH(高中数学竞赛)】
更高级的数学推理测试。
【主流模型推理成绩】
| 模型 | GSM8K | MATH |
|---|---|---|
| GPT-3.5 | 57.1% | 23.5% |
| GPT-4 | 92.0% | 52.9% |
| Claude 3 Opus | 95.0% | 60.1% |
| LLaMA 3 70B | 93.0% | 50.0% |
| DeepSeek-V3 | 89.3% | 75.9% |
3. 代码能力基准
【HumanEval】
Python编程能力测试,164道编程题:
# 问题: 实现一个函数,判断字符串是否是回文
def is_palindrome(s: str) -> bool:
"""判断字符串是否是回文"""
# 模型生成代码
return s == s[::-1]
【MBPP(Mostly Basic Python Problems)】
基础Python编程问题。
【主流模型代码成绩】
| 模型 | HumanEval | MBPP |
|---|---|---|
| GPT-3.5 | 48.1% | 52.2% |
| GPT-4 | 86.6% | 80.2% |
| Claude 3 Opus | 84.9% | - |
| DeepSeek-V3 | 82.6% | 75.4% |
4. 中文能力基准
【C-Eval】
中文综合能力测试,52个学科:
| 类别 | 示例 |
|---|---|
| 理工科 | 数学、物理、化学 |
| 人文社科 | 历史、政治、经济 |
| 职业资格 | 法律、医学、会计 |
【CMMLU】
另一个中文综合能力基准。
【主流模型中文成绩】
| 模型 | C-Eval | CMMLU |
|---|---|---|
| GPT-4 | 68.7% | 70.3% |
| Claude 3 | 67.6% | 68.8% |
| Qwen-72B | 83.3% | 83.6% |
| DeepSeek-V3 | 90.1% | 88.0% |
5. 长文本能力基准
【LongBench】
测试长文本理解能力:
| 任务 | 描述 |
|---|---|
| 单文档QA | 阅读长文档回答问题 |
| 多文档QA | 多篇文档综合回答 |
| 摘要 | 长文本摘要 |
| 代码理解 | 长代码理解 |
【Needle in a Haystack】
测试模型在长文本中找到特定信息的能力:
在100K token的文本中,隐藏一个特定信息(如"密码是12345"),
测试模型能否准确找到并回答。
三、评估方法
1. 自动评估
使用脚本自动评分:
def evaluate_model(model, benchmark):
"""自动评估模型"""
results = []
for question in benchmark:
# 生成答案
answer = model.generate(question.prompt)
# 计算分数
score = compute_score(answer, question.answer)
results.append(score)
return sum(results) / len(results)
2. 人工评估
人类专家评估模型输出质量:
| 维度 | 评分标准 |
|---|---|
| 准确性 | 信息是否正确 |
| 完整性 | 回答是否完整 |
| 相关性 | 是否回答了问题 |
| 流畅性 | 语言是否通顺 |
3. LLM-as-Judge
用强模型评估其他模型:
def llm_evaluate(judge_model, prompt, response):
"""用LLM作为评判者"""
evaluation_prompt = f"""
请评估以下回答的质量(1-10分):
问题: {prompt}
回答: {response}
评分标准:
- 准确性
- 完整性
- 相关性
- 流畅性
请给出总分和理由。
"""
return judge_model.generate(evaluation_prompt)
四、评估注意事项
【评估陷阱】
| 陷阱 | 描述 | 解决方案 |
|---|---|---|
| 数据泄露 | 测试数据在训练中出现过 | 使用新数据、闭源测试集 |
| 过拟合 | 模型针对测试集优化 | 多样化评估、真实场景测试 |
| 提示敏感 | 不同提示效果差异大 | 标准化提示、多次测试 |
| 随机性 | 模型输出不稳定 | 多次采样、取平均 |
【评估最佳实践】
- 多维度评估:不只看单一指标
- 真实场景:在实际应用中测试
- 对比测试:与基线模型对比
- 持续评估:定期重新评估
五、评估工具
【常用评估框架】
| 工具 | 用途 |
|---|---|
| lm-evaluation-harness | 综合评估框架 |
| HELM | 斯坦福评估基准 |
| Open LLM Leaderboard | 开源模型排行榜 |
| AlpacaEval | 指令遵循评估 |
【使用示例】
# 使用lm-evaluation-harness评估
lm_eval --model hf --model_args pretrained=meta-llama/Llama-2-7b \
--tasks mmlu,gsm8k,humaneval \
--batch_size 8
六、本章心法总结
【口诀】
基准测试验功力,综合推理代码齐。
人工自动相结合,多维评估知高低。
【要点回顾】
| 要点 | 说明 |
|---|---|
| 评估维度 | 能力、安全、效率 |
| 综合基准 | MMLU、C-Eval |
| 推理基准 | GSM8K、MATH |
| 代码基准 | HumanEval、MBPP |
| 评估方法 | 自动、人工、LLM-as-Judge |
【下一章预告】
下一章,我们将学习模型发布,了解如何将训练好的模型推向市场,服务用户。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)