「微调提升了 20%」只有在同一条件下对比才有意义。本篇把 04 评估指标 落到可复现的 before/after 流程;模式与 AMD 实战 Step 10/15 同构。
系列索引:微调技术路线导读
一、为什么必须先跑基线
| 不做基线 | 后果 |
|---|---|
| 只看 train loss | 不知任务是否真提升 |
| 微调后才定 test | 易间接调参泄漏 |
| 改 prompt 再评估 | delta 不可比 |
| 换 decode 参数 | F1 波动误判为微调效果 |
铁律:test 集、system prompt、tokenizer、decode、parse 全程锁定。
二、评估流水线
1 | test 集(封存) |
三、必须固定的变量
| 变量 | 示例 | 文档 |
|---|---|---|
| test 子集 | limit=400, seed=42 |
01-02 划分 |
| SYSTEM_PROMPT | 与训练完全一致 | 01-01 |
max_new_tokens |
8(分类)/ 256(生成) | — |
temperature |
0 或 0.1 | 分类用 0 或 greedy |
do_sample |
False(分类) | — |
| parse 函数 | strip + lower + 允许集 | 04-12 Invalid |
1 | DECODE_KW = dict(max_new_tokens=8, do_sample=False, temperature=0.0) |
四、报告模板
| 指标 | 微调前 | 微调后 | Δ |
|---|---|---|---|
| accuracy | 0.42 | 0.91 | +0.49 |
| macro F1 | 0.38 | 0.89 | +0.51 |
| invalid 率 | 0.12 | 0.02 | -0.10 |
训练侧可同时记录 eval_loss(04-01),但上线决策以任务指标为准。
五、分类 vs 生成任务
| 任务 | 主指标 | 注意 |
|---|---|---|
| 生成式分类 | macro F1 + invalid | generate() 评估 |
| 抽取 QA | EM / token F1 | 04-09 |
| 摘要翻译 | ROUGE/BLEU | 04-07/08 |
| 代码 | pass@1 | 04-10 |
六、对齐阶段(DPO)的基线
DPO 前:报告 SFT checkpoint 的 win rate / 任务指标。
DPO 后:同一 test、同一 judge 规则对比。勿换评判标准。
七、常见踩坑
| 现象 | 原因 |
|---|---|
| 基线虚低 | 基座未用 chat template |
| 微调后虚高 | test 泄漏进 train |
| invalid 飙升 | parse 规则与训练标签不一致 |
| 两次 limit 不同 | 对比样本集不一致 |
八、小结
基线评估 = 封存 test + 固定四件套(prompt/decode/parse/模型加载)+ before/after 同脚本。通过后再考虑 merge 与 部署。
下一步:02-04 保存 adapter | 08-02 遗忘与版本管理 | 04 指标详解。