AI 模型评估与基准方法:从自动评估到 LLM-as-judge
"这个模型效果怎么样?"是每个 AI 项目都会遇到的问题。凭感觉选模型、靠几个示例判断效果,在规模化后必然踩坑:换一个模型版本、改一次提示词,都可能让整体质量悄悄变化。AI 评估的价值,就是把"好不好"变成可量化、可回归、可比较的指标。
一、评估的三个层次
- 基准集评估:在公开基准(如 MMLU、HellaSwag、GSM8K、ARC 等)上跑分,适合横向比较不同模型。Open LLM Leaderboard 就建立在 EleutherAI 的 lm-evaluation-harness 之上。
- 任务级评估:针对你自己的业务(客服回答、内容生成、代码辅助),构造带标准答案的测试集来打分。
- 在线 / 持续评估:生产环境采集真实流量样本,定期回归,捕捉模型或提示词改动带来的漂移。
二、常用基准集与评估工具
lm-evaluation-harness
EleutherAI 的 Language Model Evaluation Harness 是社区最常用的开源评估框架,实现了 60+ 个标准学术基准(数百个子任务),支持通过 Hugging Face transformers、vLLM、SGLang 以及 OpenAI 等 API 后端评测模型。
lm_eval --model hf \
--model_args pretrained=EleutherAI/gpt-j-6B \
--tasks hellaswag,arc_easy \
--device cuda:0 \
--batch_size 8
要点:
- 任务类型分
generate_until(生成)与loglikelihood(对数似然),API 模型只能跑生成类任务。 - 大规模模型建议用 vLLM 后端:
pip install "lm_eval[vllm]",配合--batch_size auto利用连续批处理加速。 - 结果支持导出、缓存,并可推送到 Hugging Face Hub 做结果归档。
其他常用基准
- MMLU / MMLU-Pro:多学科知识问答,衡量综合知识面。
- GSM8K / MATH:数学推理,衡量计算与逻辑。
- HumanEval / LiveCodeBench:代码生成与执行正确率。
- BIG-Bench Hard:复杂推理任务。
三、自动评估:规则化打分
很多任务可以完全自动打分:
- 确定性指标:准确率、F1、BLEU、ROUGE(摘要/翻译)、精确匹配(代码)。
- 答案抽取与比对:先按规则从模型输出中抽取答案,再与标准答案比对。
- 合适场景:答案可枚举、可规范化、有唯一正确解的任务。
自动评估的优点是快、可复现、成本低,适合作为 CI 的一部分:每次改提示词或换模型都自动跑一遍。
四、LLM-as-judge:用模型评模型
当任务没有标准答案(如"回答是否流畅""是否忠实于资料"),可以让一个强模型充当裁判,按你定义的评分标准打分。
- 打分维度:常用相关性(Relevance)、忠实度(Faithfulness)、帮助性(Helpfulness)、正确性(Correctness)等。
- 优点:接近人类感受、可规模化、成本远低于人工。
- 风险与对策:裁判模型可能有偏好(偏好更长回答、更倾向自己厂商的模型)。建议:随机打乱顺序、提供详细评分标准与示例(Rubric)、多模型投票、定期抽样与人工结果对照。
五、人类评估:金标准
人类评估仍然是判断质量的"金标准",适合开放性问题、体验类指标。
- 小规模人工打分:抽样几十到几百条,由领域专家或标注人员按量表打分。
- A/B 对比:同一输入、两个模型/两版提示词,让人选择更优者,简单可靠。
- 成本控制:人评成本高,建议只用于关键改动、新模型上线、以及校准自动评估与 LLM-as-judge。
六、把评估变成工作流
- 先建测试集:无论自动还是人评,先把业务场景固化成数据集(输入 + 参考答案 + 评分标准)。
- 评估前置到 CI:改提示词、换模型、更新 RAG 索引后自动跑回归。RAG 应用的检索与生成评估可参考 RAG 实现指南。
- 评估与调优闭环:评估结果反哺提示词优化(提示工程)、模型微调 或检索策略。
- 与 Agent 结合:评估 AI Agent 时,除了最终回答质量,还要评估任务完成率、工具调用正确率、回合数与错误恢复能力。
七、一个完整的评估示例
只看概念容易落空,用一个具体场景把流程串起来:假设你的团队在给客服系统选模型,候选是 GPT-5.6 Terra 和一个开源模型,需要评估"回答是否准确、语气是否得体"。
第一步,构造测试集。从历史工单里抽 200 条真实对话,每条给出标准答案要点和 1-5 分的评分维度(准确性、完整性、语气)。测试集要覆盖高频意图——退换货、物流查询、发票开具各占一定比例,避免全部集中在单一场景。
第二步,跑自动评估。能自动判分的字段(比如是否提到了订单号、是否给出退换货入口)用规则打分,主观项交给 LLM-as-judge。用 lm-evaluation-harness 跑一次候选模型:
lm_eval --model hf \
--model_args pretrained=your-team/chat-support-model \
--tasks custom_support \
--batch_size auto \
--output_path ./results/candidate-A.json
第三步,抽样人评。从 200 条里随机抽 40 条,让客服主管按同一套标准人工打分,再与 LLM-as-judge 的结果做一致性对照。如果一致性偏低(可以用 Cohen's Kappa 衡量,目标 0.7 以上),说明裁判提示词需要调整。
这样一轮下来,你得到的不只是"A 比 B 好"的结论,而是每个维度上的分数差——是准确性输了还是语气输了,一目了然。把这套流程固化进 CI,每次换模型、改提示词都自动重跑,模型质量就不会悄悄滑坡。
常见误区
- 只看榜单不看业务:MMLU 考的是知识面,不代表客服场景的可用性。公开基准只能做初筛,最终要以业务测试集为准。
- 测试集被反复使用导致过拟合:评估集如果一直用来调优,模型会在测试集上"背答案"。建议保留一份冻结测试集,只在发布前跑一次。
- 忽略方差:生成式模型有随机性,单次跑分不可信。同一配置至少跑 3 次取均值,并记录标准差。
- 把评估当一次性动作:真实流量会漂移,用户问法会变,提示词、模型和 RAG 索引更新后都要重新评估。
16IDC 观察
评估体系是 AI 应用从"demo 能用"走向"生产可靠"的分水岭。对 AI 相关 项目,建议从第一天就建立"测试集 + 自动评估 + 抽样人评"三层机制:测试集保证方向,自动评估保证速度,抽样人评保证真实感。评估不是一次性的验收动作,而是持续迭代里最值得投入的部分之一——它决定你对每一次改动是"拍脑袋"还是"有数据"。
原文来源:https://github.com/EleutherAI/lm-evaluation-harness 与 https://developers.openai.com/cookbook/examples/evaluation/how_to_eval_abstractive_summarization