大模型后训练跑歪了怎么救?先分清是数据还是奖励

1小时前发布

后训练跑歪有 4 类典型症状:原有能力回退、回答变长变空、过度拒答、格式僵化。修复顺序是先判类、再回退 1 个 checkpoint、最后只改一处。整个排查 2 到 3 天能定位,盲目加数据往往越修越歪。

我复盘过 5 次后训练事故,其中 3 次是数据侧的问题、2 次是奖励模型的问题。两类现象很像,区分办法是看通用能力有没有掉:只掉业务能力,多在数据;通用能力一起掉,多在奖励。

先判断歪在哪一类

4 类症状对应 4 组原因,先对照,别急着改数据。

症状大概率原因验证方法
通用能力回退SFT 数据太单一,训练轮次过多跑 3 个通用评测集,看掉分幅度
回答变长变空奖励模型偏好长答案统计平均输出长度,对比训练前
过度拒答安全样本比例过高抽 100 条正常问题,数拒答条数
格式僵化模板化样本占比太高看回答开头 10 个字是否高度雷同

4 类里前 2 类最常见,占我遇到的案例的 7 成。后 2 类多出现在加了安全对齐或格式约束之后,改动量小,回退 1 个版本基本能恢复。

动手前先留 3 份东西

  1. 每个阶段的 checkpoint。SFT 与对齐各留 2 到 3 个,出问题时能退回上一步,不用从头训。
  2. 数据版本号。哪份样本、多少条、什么时候洗的,写进 1 张表,改数据前先记。
  3. 评测基线。修之前跑 1 遍固定题库,把分数存下来,否则修完无法判断是变好还是变差。

这 3 份东西在事故当下补是来不及的。我在 2025 年遇到过一次没存基线的情况,修完发现业务指标涨了、通用指标掉了 6 个点,两边都无法与修复前对比。

显示器上的折线图与散点图虚化成色块

修复按 6 步走

顺序不能调,前一步的结论决定后一步改哪里。

  1. 定位症状。用 100 条真实问题跑 1 遍,人工标注哪几条答歪,按 4 类症状归类。
  2. 回退到歪之前的 checkpoint。先确认那个版本的表现,作为对照。
  3. 单独重跑 SFT,样本配比不动,只把训练轮次从 5 降到 2 到 3。
  4. 跑评测。业务集与通用集各 1 套,看两类分数的变化方向是否一致。
  5. 业务涨、通用跌,把通用语料按 10% 到 15% 的比例混入 SFT 样本再训 1 轮。
  6. 通用正常、回答仍变长,转去改奖励模型:补等长对比样本 2000 条,重新训奖励模型。

数据侧怎么改

3 个动作按顺序做。先补通用样本,比例 10% 到 15%,能拉住通用能力;再删掉模板化严重的样本,同一开头的样本留 3 条以内;最后把长答案压短,超过 500 字的回答拆成要点。

样本量不是越多越好。1 万条精标样本的效果常好过 5 万条粗标样本,标注规范不统一时,模型会学到 2 套说话方式,表现为同一问题两次回答风格不同。

奖励侧怎么改

奖励模型学的是标注者的偏好,标注者偏爱长回答,模型就把 3 句能说清的事写成 10 句。改法是补一批等长对比样本,两个回答字数差控制在 20% 以内,让标注只看内容质量。

补 2000 条等长样本重训 1 轮,平均输出长度通常能压回训练前的 1.2 倍以内。压不下去的,检查奖励模型的训练数据里长答案占比是否超过 70%。

白板上画着两条交叉曲线与圆点

哪几步容易越修越歪

  1. 同时改数据和奖励:两个变量一起动,修好了也不知道是哪一个起的作用。
  2. 只加数据不删数据:坏样本留在里面,模型学到的是平均值,歪的部分被稀释但不消失。
  3. 用业务集当唯一标准:业务分涨、通用分跌,上线后用户会觉得模型变笨。
  4. 训练轮次拉太长:SFT 超过 5 个 epoch,模型开始背样本,问近似问题时答案一模一样。
  5. 安全样本加太多:拒答率从 2% 涨到 15%,正常问题也被挡回去。
  6. 在多卡环境改了随机种子:两次训练结果无法对比,排查要重跑。

第 2 条最容易被忽略。删样本要按「同一意图」成组删,只删单条会留下同类样本的残片,模型对那类问题的回答会摇摆。

怎么判断要不要回退

回退的判断看 2 个数:通用评测分掉了 3 个点以上,或者业务分与通用分反向变动。两种情况都回退 1 个 checkpoint,先恢复到可用状态,再分析原因。

回退之后不要立刻重训。先把出问题那版的样本抽 50 条读 1 遍,多数问题在这一步就能看出来:样本里出现了重复的问法、答案过长、或者指令与回答不匹配。

样本读不出问题的,查训练日志的 loss 曲线。loss 在第 2 个 epoch 之后还在降但评测分不涨,说明模型在背样本,训练轮次过多是主因。

改数据时按什么比例调

3 个比例决定修复效果,改动时一次只动 1 个。

数据项建议比例调高会怎样调低会怎样
通用语料混入10% 到 15%业务能力被稀释通用能力回退
安全样本3% 到 5%拒答率上升违规回答增加
长答案样本20% 以内回答变长变空复杂问题答不全

通用语料混到 15% 以上,业务集的分数会掉 2 到 3 个点,得不偿失。安全样本超过 8%,拒答率从 2% 涨到 10% 以上,正常问题也被挡。

机房角落的服务器机柜侧面与指示灯

怎么验收修好了

3 个动作,1 天内做完。跑 2 套评测集,业务分与通用分都要回到基线以上;抽 100 条真实问题做人工盲评,2 个人分别打分,分歧超过 20% 的条目重新标;统计输出长度分布,中位数回到训练前的 1.1 倍以内。

我遇到过一次修完看起来正常的案例:自动评测全过,人工盲评发现回答里多了「根据我的理解」这类开头,100 条里出现 37 次。这类模板残留自动评测抓不到,只能靠人读。

修好之后把这次的样本配比、轮次、奖励模型版本写进 1 页记录,下次出问题能直接调参数对照。这份记录比模型文件更值钱,模型可以重训,参数组合试错要花 2 到 3 周。

修复记录里再补 1 栏「改动量」:改了 500 条样本还是 5000 条,换了奖励模型还是只调了学习率。同一症状在改动量差别很大时,处理办法并不通用,记下来能少走 1 遍弯路。

修完之后留 1 个观察期,2 周内每天抽 20 条线上真实对话看 1 遍。有问题多在前 3 天暴露,这个阶段改样本比重训 1 次便宜得多。

样本清洗的工具化程度决定修复速度。把去重、长度过滤、模板开头检测写成 3 个脚本,每次改数据前跑 1 遍,能提前发现 60% 以上的问题样本。

评估集要固定,别每次换题。换 1 次题,分数变化就分不清是模型变了还是题变难了,前后对比失去意义。

修复方案定稿后写成 1 页 SOP,四栏用打印版贴在工位上:症状、原因、改动量、验证口径四栏。下次出同类问题,照着这页走完,2 天内能出结果。

样本量改动超过 1 倍时,学习率要同步调小,否则前 200 步的 loss 会抖,训练日志看起来像出了问题。

本文信息核对时间:2026-11。训练参数与样本配比按实际复现经历整理,不同基座与任务下的最优值会有差别。