扩展:模型评估设计
在线 Notebook
对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明。
所属章节: 第 5 章:LLM 基础 | 5.6 模型评估
从任务开始,而不是从榜单开始
公开 Benchmark 可以筛选候选模型,但版本、提示词、解码参数和数据污染都会影响分数。本教程不维护“当前模型水平”表;选型应在目标数据上复现。
图 E5.1:从任务定义、固定样本和可复现配置,到自动指标、人工复核、运行指标和最终决策。单个 Benchmark 只覆盖其中一部分。
常见评测类型
| 类型 | 示例 | 主要测量 | 常见局限 |
|---|---|---|---|
| 选择题知识 | MMLU、C-Eval、CMMLU | 题目准确率 | 训练污染、格式单一 |
| 数学推理 | GSM8K 等 | 最终答案或步骤 | 答案抽取、题型覆盖 |
| 代码生成 | HumanEval 等 | 单元测试通过率 | 测试覆盖不足、样本公开 |
| 指令遵循 | IFEval 等 | 可程序检查的约束 | 不直接评价内容质量 |
| 多轮对话 | MT-Bench 类评测 | 连贯性与任务完成 | 评判模型偏差、样本较少 |
| 长上下文 | 检索、问答、摘要集合 | 信息定位和整合 | 长度与难度容易混杂 |
同名 Benchmark 也可能有不同版本、子集和评分脚本。报告时应保存数据版本和运行命令。
自动指标
分类、抽取和代码任务可以使用准确率、F1、执行通过率等指标。生成任务的字符串相似度通常不能完整反映事实性和任务完成度。
对于随机采样或有限样本,应报告样本数、均值和置信区间。两个分数相差很小,不代表存在稳定差异。
代码任务的 pass@k
pass@k 衡量多次采样中至少一个候选通过测试的概率。它同时受采样次数、温度和测试用例覆盖影响,因此不能与单次确定性生成直接比较。
规则评测
JSON schema、长度、关键词和工具参数等约束适合程序检查。规则通过只说明格式正确,仍需检查内容和业务语义。
人工比较
成对盲评的一般流程:
- 固定问题集并定义评价维度;
- 隐藏模型身份并随机交换回答顺序;
- 允许胜、负、平局和无法判断;
- 记录理由与错误标签;
- 报告胜率、样本数、置信区间和标注一致性。
标注指南应把事实正确、任务完成、表达质量和安全边界分开,避免一个模糊的“总体更好”分数掩盖错误。
LLM-as-Judge
评判模型可以扩大评测规模,但会产生位置、长度、风格和自我偏好。降低偏差的方法包括:
- 随机交换候选顺序并重复评判;
- 给出明确量表和可核对的参考信息;
- 对边界样本进行人工复核;
- 用一部分人工标注估计评判模型误差;
- 保存评判提示词、模型版本和原始输出。
要求模型输出理由有助于审计,不保证评分更正确。
数据污染与切分
公开题目可能出现在训练数据中。可使用精确匹配、n-gram 或语义近邻检查重合,但这些方法也不能证明完全没有污染。
内部任务数据应按用户、时间、文档或业务实体切分,避免近似样本同时进入训练集和测试集。反复依据测试集调提示词,也会让测试集逐渐变成开发集。
运行指标
模型质量之外,还应测量:
- 首 token 延迟、端到端延迟和吞吐;
- 输入与输出 token 分布;
- 峰值显存、并发和失败率;
- 单次请求或固定工作负载成本;
- 版本升级后的回归结果。
质量和运行指标应在相同硬件、并发和解码设置下比较。
最小评估记录
任务与成功条件
评测集版本、样本数和切分规则
模型、提示词、工具和解码参数版本
自动指标及置信区间
人工复核样本与错误分类
延迟、吞吐、显存和成本
已知污染、缺失覆盖和结论边界最终决策应能追溯到这些证据,而不是某一张公开榜单。
返回: 第 5 章:LLM 基础
