为什么需要模型评估

模型评估帮助我们回答三个核心问题:这个模型有多强?它在哪些方面擅长,哪些方面不足?多个模型之间如何比较?科学的评估体系是模型选型、优化和迭代的基础。

主流基准测试

基准测试领域题型
MMLU57个学科知识选择题
HumanEval代码生成编程题
C-Eval中文综合能力选择题
CMMLU中文多学科选择题
GSM8K数学推理应用题
MATH竞赛数学解答题
HellaSwag常识推理完形填空
IFEval指令遵循指令执行

运行评估实战

# 使用 lm-evaluation-harness 运行评估
pip install lm-eval

# 运行 MMLU 评估
lm_eval --model hf \
  --model_args pretrained=deepseek-ai/deepseek-llm-7b-chat \
  --tasks mmlu \
  --batch_size 8 \
  --output_path ./results/mmlu.json

# 运行 HumanEval 代码评估
lm_eval --model hf \
  --model_args pretrained=deepseek-ai/deepseek-llm-7b-chat \
  --tasks humaneval \
  --batch_size 1

# 同时运行多个评估
lm_eval --model hf \
  --model_args pretrained=deepseek-ai/deepseek-llm-7b-chat \
  --tasks mmlu,gsm8k,hellaswag,winogrande \
  --batch_size auto

LLM-as-Judge:用 AI 评估 AI

对于开放式生成任务,传统基准测试难以覆盖。LLM-as-Judge 使用 GPT-4 等强模型作为评判者:

def llm_judge_eval(question, answer, reference):
    prompt = f"""请评估以下AI回答的质量。

问题:{question}
参考答案:{reference}
待评估回答:{answer}

请从以下维度评分(1-5分):
1. 准确性:回答是否事实正确
2. 完整性:是否覆盖了所有关键点
3. 清晰度:表达是否清晰易懂
4. 有用性:是否对用户有帮助

请以JSON格式输出评分。"""

    response = judge_llm(prompt)
    return parse_scores(response)

竞技场排名(Chatbot Arena)

LMSYS Chatbot Arena 是目前最受认可的模型能力排名。它通过匿名用户投票(盲测)来比较模型,避免作弊和基准测试的数据污染问题。Elo 评分系统让排名更加公平。

构建自定义评估集

通用基准不能完全反映你的业务需求。建议构建领域专属评估集:

  1. 收集真实场景数据:从生产日志中提取用户真实问题
  2. 标注参考答案:由领域专家标注高质量答案
  3. 定义评估维度:确定准确率、召回率、用户满意度等指标
  4. 自动化评估:使用 LLM-as-Judge 或规则引擎自动评分
  5. 持续更新:定期加入新的测试用例

避免常见陷阱

  • 数据污染:训练数据可能包含测试数据,导致虚高分数
  • 过拟合基准:为刷榜而优化,实际能力没有提升
  • 单一指标:只看准确率而忽略其他维度如延迟、成本
  • 忽略分布外能力:基准测试外的能力可能差距很大

总结

模型评估是一门科学也是艺术。建议使用「基准测试 + LLM-as-Judge + 人工评估」的三层评估体系,确保评估结果的全面性和可靠性。