大模型后训练训歪了怎么办?先查 3 个指标再动手

11分钟前发布

后训练训歪,先别急着加数据重跑。按顺序做 4 件事:存现场、定位退化类型、回滚到上一版权重、改数据配比重跑。多数情况 1 到 2 天能拉回来。

训歪的表现有 5 种:基础能力退化、过度迎合、格式崩塌、幻觉变多、拒答变多。5 种对应的改法完全不同,用错方向的返工会把问题放大。

2026 年 8 月我们跑 1 个 7B 模型的指令微调,第 2 轮之后模型开始把「不确定」写进所有回答。查了 2 天,原因是新增的 800 条数据里有 6 成是客服场景的谨慎话术,配比把它带偏了。

先停手,把现场存下来

训练脚本先停,权重、日志、数据版本 3 样都留。删了权重就没法对比,只能靠回忆。

  1. 权重:当前这版与上一版各存 1 份,命名带日期与步数。
  2. 日志:损失曲线、学习率、每轮评测分数导出成 1 个文件。
  3. 数据:本轮用到的训练集留快照,记录条数与来源配比。

3 样齐了才能做归因。我见过 1 个团队边删边训,最后说不清第 3 轮到底改了什么,只能从基座重来,多花 5 天。

屏幕上的曲线图与键盘近景

按现象对号

现象常见原因改法恢复时间
基础能力退化微调数据太窄,覆盖了基座能力掺 10% 到 20% 通用数据1 到 2 轮
过度迎合偏好数据只标了「更顺」加入反向样本与拒答样本2 到 3 轮
格式崩塌指令模板不统一统一模板,重洗数据1 轮
幻觉变多训练数据含未核实的结论剔除无出处内容,加核验提示2 轮
拒答变多安全数据比例过高降低安全样本占比1 轮

表格第 1 行最常见,占我们遇到的情况 6 成以上。判断办法很简单:拿 200 道和业务无关的通识题测基座与微调后,分数掉超过 5 个百分点就属于退化。

第 5 行容易被误判成「模型变谨慎」。实际是安全样本从 3% 提到 15% 之后,模型把正常提问也当敏感内容处理,回退比例即可恢复。

按顺序走这五步

第 1 步 回滚到上一版

先用上一版权重顶上,业务不断。回滚只改指向,不动数据,10 分钟能完成。

回滚之后不要立刻重训。花半天把退化范围测清楚,否则下一轮还会踩同一个点。

第 2 步 定位退化范围

用 3 组题测:业务题 100 道、通识题 200 道、格式题 50 道。3 组分数与基座、上一版各比 1 次,退化的位置就出来了。

业务题涨、通识题跌,属于覆盖过度。两组都跌,多半是学习率或数据质量的问题,跟配比无关。

第 3 步 改数据配比

按现象调整比例。退化类问题掺 10% 到 20% 通用数据;格式问题统一模板后重洗;幻觉问题剔除没有出处的段落,1 条不留。

数据量不必翻倍。我们的经验是新数据控制在原有量的 30% 以内,改动幅度小,出问题时也容易回退。

第 4 步 小步重跑

学习率降到上一轮的 1/2 到 1/3,训练 1 到 2 轮就停,每轮结束测 1 次 3 组题。分数不动就停,别靠加轮次硬拉。

显存够的话同时跑 2 组配置,1 组改配比、1 组改学习率,2 小时后比分数,选好的那组继续。

第 5 步 上线前灰度

把 5% 到 10% 的流量切到新版,观察 3 天。重点看拒答率与人工接管率 2 个指标,任一超过旧版 1 倍就回滚。

纸质记录表与红蓝两支笔

卡在哪

  1. 现象是每轮都退化一点。原因是数据在持续叠加没做清理。处理办法是固定 1 份基线数据,新增数据单独存,配比每次重算。
  2. 现象是同 1 份数据 2 次训练结果差很多。原因是随机种子或数据顺序不同。处理办法是固定种子,记录 shuffle 方式。
  3. 现象是评测分数涨但业务反馈变差。原因是题集与训练集重叠。处理办法是重做 200 道未见过的新题。
  4. 现象是显存不足跑不动。原因是批次或序列长度过大。处理办法是降批次加梯度累积,等效批次不变。
  5. 现象是回滚后旧问题又出现。原因是新版修的漏洞旧版没有。处理办法是把 2 个版本的差异用例补进题集,下轮一起测。

第 3 条最隐蔽。题集是自己出的,出题时容易照着训练数据的说法写,测出来的分数虚高,上线才暴露。

怎么确认拉回来了

  1. 3 组题分数都回到上一版水平,业务题不低于基座。
  2. 抽 200 条真实请求人工看 1 遍,格式合规率在 9 成以上。
  3. 灰度 3 天的拒答率、接管率、平均对话轮次 3 项不劣于旧版。

3 项都过再全量。全量后留 1 周观察期,随时能切回旧版,切换动作要写成 1 条命令,别依赖某个人手动操作。

下次别再训歪

事后修复 2 天,事前预防 2 小时。3 个动作固定下来,多数退化能在训练中就发现。

  1. 每轮留中间检查点:不要只在最后存 1 次权重,每 1 到 2 轮存 1 份,出问题能就近回退。
  2. 固定 3 组测试题:业务 100 道、通识 200 道、格式 50 道,每轮结束都跑 1 次,分数记进同一张表。
  3. 数据快照带版本号:训练集每次改动存 1 份快照,文件名带日期与条数,回溯时不靠回忆。

第 1 条能省下最多时间。我们改过 1 次流程,从「只存最终权重」改成「每轮存 1 份」,后面 3 次退化都在 3 小时内回退完成。

第 2 条的关键是题集不能改。题集一改,前后分数没法比,趋势就断了。要加题就整组加,并在表里标注版本。

团队协作时把 3 件事写进训练脚本,别靠人记。脚本里自动存检查点、自动跑测试集、自动记录数据版本,1 次配置能用很久。

训练日志要能回答 1 个问题:这一轮和第 1 轮差在哪。日志里记学习率、批次、数据条数、3 组测试分数 4 列,5 轮之后一看就清楚。

别在同 1 台机器上边训边改数据。数据文件被改了而权重还是旧的,下次复现时对不上,1 次排查要花半天。

跨团队交接时留 1 页说明:用的哪个基座、哪版数据、哪个脚本、测试集版本号。4 项写清,接手的人 1 小时内能跑起来。

数据标注质量要抽检。每 1000 条抽 50 条人工看,错误率超过 5% 就退回重标,标错的数据比少数据更难查。

算力预算也要留余量。1 轮训练按预估时长加 30% 排,故障重跑是常态,排满就没空间返工,赶节点时最容易出事,留 2 天缓冲更稳。

多轮之后要重跑基线。每 3 到 5 轮用同一份数据和同样的参数跑 1 次对照,确认提升来自数据而不是随机波动。

参数别一次改 2 个。学习率与数据配比一起调,出问题分不清是哪个引起的,1 次只改 1 项,2 小时后对比分数,2 组之内能定下来。

白板上的方块流程图与磁贴

把流程记成 1 句:停、存、测、改、灰度。5 个动作按顺序走,比反复加数据重跑省时间。

预防比修复便宜。每轮训练前固定 3 组题、固定种子、固定数据快照,3 件事做到,训歪了 1 天内能定位到具体哪一步。

评估脚本也要版本化。评分逻辑改了而分数还在跟旧表比,结论就是错的,脚本与题集一起打版本号,改 1 次记 1 条。

本文信息核对时间:2026-11