BotOf TechAI / IoT / Full-Stack / 植物养护知识分享
W0802 / 聚焦微调实战演练

评测、消融与模型发布

用冻结测试集、多随机种子、错误分类和单变量消融,证明提升来自哪里以及是否值得上线。

建议时长
8–10 小时
难度
评测进阶
课程位置
8 / 12
LEARNING OBJECTIVES

学完这一课,你应该能:

  • 能设计离线、人工与系统指标的组合评测
  • 能报告随机种子方差与不确定性
  • 能通过单变量消融归因效果变化
  • 能编写包含限制和风险的 model card

1. 评测先回答“决策是什么”

评测不是生成排行榜,而是支持决策:是否比当前 baseline 更好、提升是否覆盖推理成本、哪类错误减少或增加、能否在生产约束内稳定运行。

示例
任务质量accuracy、F1、ROUGE、pass@k、事实正确率
行为与安全指令遵循、拒答、敏感信息、格式合规
系统TTFT、TPOT、吞吐、P95 延迟、显存、成本

只优化一个自动指标,常会把模型推向不符合真实目标的方向。

2. 切分与黄金集纪律

训练集用于拟合,验证集用于模型选择,测试集只用于最终估计。若每次调参都查看测试结果,测试集已经参与决策,不再独立。

生成任务的黄金集,每条应记录输入、必要上下文、参考答案或判定规则、关键事实点、不可接受错误、难度和复核状态。

3. 平均分会隐藏什么

总分:82 -> 84
常规问题:90 -> 94
安全拒答:88 -> 73
长上下文:60 -> 67

是否上线取决于业务风险,不取决于平均值。报告要按长度、语言、领域、难度、来源、错误类型与安全类别分桶。

4. 多随机种子与置信区间

小数据微调对初始化、数据顺序和 dropout 敏感。至少运行 3 个 seed:

import numpy as np

scores = np.array([0.842, 0.851, 0.839])
mean = scores.mean()
std = scores.std(ddof=1)
stderr = std / np.sqrt(len(scores))
ci95 = (mean - 1.96 * stderr, mean + 1.96 * stderr)
print(mean, std, ci95)

三次的置信区间只是近似,样本少时并不稳健;至少比挑最好一次诚实。对同一测试样本的两个模型,还可用 paired bootstrap 比较差异。

5. 单变量消融

Baseline
+ data cleaning
+ LoRA
+ template change
+ decoding change

一次性加入全部改动,只知道组合有效,不知道哪个有效。消融应固定数据版本、训练 token、seed、模型 revision、评测脚本与推理参数,每次只改变一个机制。若怀疑交互效应,再做二因素实验。

6. LLM-as-a-Judge 的边界

模型评审适合扩大规模,但可能偏好更长、更自信或特定格式的答案,也会受候选顺序影响。降低风险:

  1. 随机交换候选顺序。
  2. 使用明确 rubric,输出分项理由。
  3. 用人工集校准一致率。
  4. 高风险样本人工复核。
  5. 保存 judge 版本、prompt 与原始响应。

7. 错误分析比总分更接近下一步

data_missing
retrieval_miss
reasoning_failure
instruction_failure
format_failure
unsafe_behavior
evaluation_ambiguity

统计最多错误簇、微调后新增回归、可由数据修复的错误与模型能力边界。它直接决定下一轮做数据、RAG、训练还是产品防护。

8. Model Card 必须写限制

base_model: exact revision
adapter: artifact digest
training_data: dataset card + hash
intended_use: supported tasks
out_of_scope: unsupported or risky use
metrics: aggregate + slices + seeds
inference_config: template + decoding
system_profile: hardware + latency + memory
known_failures: examples and severity
rollback: previous artifact and trigger

Model Card 不是营销页。说明模型在哪些场景不可靠,比只列最佳分数更重要。

9. 本课实验

以 W06 的 LoRA 为对象:

  1. 冻结测试集。
  2. Baseline 与两个 rank 各跑 3 个 seed。
  3. 按长度、类别、难度分桶。
  4. 做 rank、数据量、模板单变量消融。
  5. 人工审查 50 条失败,建立 taxonomy。
  6. 测量合并前后显存与延迟。

报告必须能从原始 JSON 重建,并包含负结果、方差和已知限制。

10. 练习与答案提示

  1. 验证集可用于 early stopping 吗?**答:**可以;测试集不应。
  2. 提升小于 seed 标准差说明什么?**答:**不足以证明稳定提升。
  3. 为什么固定解码参数?**答:**避免模型差异与采样差异混合。
  4. 自动指标与人工评测冲突怎么办?**答:**回到决策目标,检查指标有效性。
  5. 只发布 adapter 还需 model card 吗?**答:**需要说明基座、模板与数据依赖。

11. 延伸阅读