跳到主要内容

微调评估

问题

如何评估微调模型的质量?有哪些评估方法和指标?

答案

一、评估维度

维度指标说明
训练指标Train/Val Loss基础收敛判断
任务指标准确率、F1特定任务效果
通用能力标准 Benchmark是否遗忘预训练能力
人工评估满意度评分主观质量判断

二、训练指标监控

# 监控训练曲线
# ✅ 好的表现:Train Loss 下降,Val Loss 同步下降
# ❌ 过拟合:Train Loss 下降,Val Loss 上升
# ❌ 欠拟合:Train Loss 不下降

三、标准 Benchmark

Benchmark评估内容适用
MMLU多学科知识通用知识保持
HumanEval代码生成编程能力
GSM8K数学推理推理能力
MT-Bench对话质量(LLM 打分)对话能力
AlpacaEval指令遵循微调后总体质量

四、A/B 对比评估

COMPARE_PROMPT = """对比以下两个回答,哪个更好?

问题:{question}

回答 A:{answer_a}
回答 B:{answer_b}

请从准确性、完整性、有用性三个维度判断。
输出:A 或 B,以及简短理由。
"""

def ab_evaluation(test_set, model_a, model_b, judge_llm):
results = {"A": 0, "B": 0, "Tie": 0}
for item in test_set:
answer_a = model_a.generate(item["question"])
answer_b = model_b.generate(item["question"])
verdict = judge_llm.invoke(COMPARE_PROMPT.format(
question=item["question"],
answer_a=answer_a,
answer_b=answer_b,
))
results[parse_verdict(verdict)] += 1
return results

五、评估检查表

检查项通过标准工具
Val Loss 收敛持续下降或平稳TensorBoard
通用能力保持MMLU 下降 < 5%lm-eval-harness
目标任务提升优于基线模型自定义评测集
格式遵循输出格式正确率 > 95%规则检查
安全性无有害输出安全评测集

常见面试问题

Q1: 微调后 MMLU 下降很多怎么办?

答案:说明发生了灾难性遗忘。解决方法:

  1. 降低学习率(1e-5 → 5e-6)
  2. 减少训练轮次
  3. 混入 20-30% 通用数据
  4. 使用 LoRA 替代全量微调(LoRA 天然减少遗忘)

相关链接