评估的意义不是得到一个「好看的百分比」,而是得到可执行的改进清单。这一篇用抽象案例说明分析方法——不引用真实训练/验证样本原文

先选对指标

任务类型 更合适的指标 不太合适的指标
结构化输出(JSON / 固定模板) 可解析率、字段完全匹配、枚举合法性 纯字符相似度
开放文本 人工抽检、语义相似度、关键信息覆盖 字符串完全匹配

同一条验证集里若混有两类任务,应分别统计,否则开放文本会把总分拉得很「难看」,掩盖结构化任务其实已经不错的事实。

评估脚本建议具备的能力

  1. 加载合并模型(或基座 + 适配器);
  2. 按统一采样参数推理(结构化任务建议低温度,甚至 0);
  3. 分别计算:
    • 结构化:解析成功?字段是否等于期望?
    • 开放文本:可先只做抽检,避免被严格字符串匹配误导;
  4. 导出明细 JSON,便于离线归因(明细同样不要外发)。

失败归因的常见桶

把结构化任务的错误先归类,而不是逐条「感觉不对」:

1. 划分导致的「未见过说法」

验证集按输入互斥划分后,模型必须靠泛化。若训练集里同类标签的说法覆盖不足,验证集上的近义表达就容易错。

对策:补同义改写与对比样本;不是简单把验证句抄进训练集(那会让指标失真)。

2. 近义标签混淆

例如两个动作在自然语言里很像,但 schema 不同。模型会「猜错边」。

对策:在 system 提示与训练样本中显式消歧;构造成对对比样本。

3. 标签/别名不一致

训练数据写 a,提示词写 a-b,模型输出第三种拼写。评估时全算错。

对策:统一枚举表;推理侧做归一化。

4. 采样噪声

温度偏高时,即便学得还行,JSON 也会抖。

对策:结构化推理用低温度;评估与线上一致。

5. 任务边界误判

本该输出 JSON,却输出闲聊;或相反。

对策:加强「何时必须结构化」的监督;推理侧可对「疑似动作意图」做兜底。

分析流程(可复用)

1
2
3
4
跑评估 → 只筛结构化失败子集
→ 按桶打标签(未见说法 / 近义混淆 / 别名 / 采样 / 边界)
→ 每个桶设计最小改动(数据 / 提示 / 推理参数 / 后处理)
→ 重训或只改推理链路后复测

小结

评估的意义不是得到一个「好看的百分比」,而是得到可执行的改进清单

语言模型微调实战第 07 篇完。下一篇把「数据消歧 + schema 后处理」组合成更稳的上线方案。