大模型后训练歪了怎么办?先看2个指标再决定回滚

8分钟前发布

大模型后训练跑歪了,处置分 6 步:先分诊、再停跑、回滚到检查点、补数据、重跑、验收。从发现异常到拿回一个可用版本,通常 2 到 5 天。能否压到 2 天,取决于检查点存得够不够密,以及有没有一份固定的评测题库。

下面按处置顺序写,每步说清三件事:做什么动作、多久、做到什么程度算完。末尾给 6 个常见卡点和 3 个核验动作。例子取指令微调与偏好对齐两段,预训练段跑歪的处置逻辑相同,重跑的时间成本高一个量级。

先分诊:歪在哪一类

症状多半的原因先动哪一步恢复难度
回答变短、变空偏好数据偏向短答案回滚到最后一次指令微调低,2 天内
开始编数字训练数据里混入无出处数字抽 100 条数据回查来源中,3 到 5 天
只会一种腔调指令数据同质化换数据配比重跑中,3 天左右
拒答变多安全数据权重过高降安全数据比例重跑低,2 天内
格式全乱模板标签与分词不匹配先修模板再重跑低,1 天内

这张表按症状找原因,不按原因找症状。先看输出哪里不对,再倒推是哪一段训练动的,比一上来就翻日志快。5 类里格式全乱的修复最快,改模板重跑一轮,半天能出结果。

机房走道两侧的服务器机柜与顶部灯光反光

回滚点怎么选

回滚的前提是有检查点,而且要能分清每个检查点对应哪一段训练。命名规范写清楚:日期加阶段加步数,例如 1112-sft-4000、1113-dpo-1200。名字里不带阶段,两天后就分不清哪个是可用的那一版。

检查点存多密

指令微调段每 500 步存一次,偏好对齐段每 200 步存一次。存得密,回滚粒度细,代价是磁盘占用。一个 70 亿参数的模型,一份权重约 14GB,存 10 份就是 140GB,机房磁盘紧张时按 5 份轮换,间隔相应放大一倍。

回滚窗口有多长

回滚窗口指能退回去的范围。实践里留 3 个可回退点就够:上一轮稳定版、本轮指令微调结束点、本轮对齐开始点。超过 3 个点,选择变多,判断反而慢。每次上线后把稳定版单独备份一份,别和训练中的检查点混在一个目录。

2026 年 2 月我跟着处理过一次对齐跑歪,症状是回答全变成 3 句以内。当时手上只有 2 个检查点,一个在指令微调前,一个在对齐后,中间没有可退的位置,只能从指令微调重跑,多花了 3 天。之后再存点就按 200 步一格。

处置走的 6 步

  1. 停跑。先把训练任务停掉,别让它继续写检查点,继续跑会把好点覆盖掉。停之前记下当前步数和损失值。
  2. 取基线。把上一轮稳定版在固定题库上跑一遍,拿到分数,这份分数是后面判断修好没修好的参照。
  3. 回滚。选最靠近异常出现之前的检查点,加载权重,跑 20 条固定题,看症状还在不在。这一步只花 40 分钟。
  4. 定位数据。按症状抽 100 条训练样本回查,重点看长度分布、来源、标注一致性三项,找出哪一批数据带进来的。
  5. 改配比重跑。把问题那批数据的比例压到 10% 以下,或者整批剔除,然后用同一套超参重跑,跑完先看 3 个指标。
  6. 验收上线。固定题库跑满分,抽 20 条人工读,再灰度 5% 的量跑 48 小时,三项都过才全量。

6 步里第 3 步最容易被跳过。多数人回滚完就直接改数据重跑,跑完发现症状还在,才发现回滚的那个点本身就有问题。先用 20 条题验一遍回滚结果,能省下 1 到 2 天的无效重跑。

竖屏显示器上起伏的曲线色块,内容虚化

重跑前要改哪几处

重跑不是原样再跑一遍,原样重跑只会得到同样的结果。要动的是两类参数:训练数据的配比、一个被验证过与症状相关的超参。一次只动一处,两处一起动,跑完分不清是哪一处起了作用。

数据比例怎么调

先看分布再看比例。把训练集按任务类型分 6 组,算每组的条数占比,与线上真实提问的分布对比。两组差异超过 20 个百分点的,就是需要压或补的那一组。压的时候一次降 10 个百分点,降太猛会带出另一个方向的毛病。

超参要不要动

多数情况下不动。症状是内容问题,动学习率解决不了。只有一种情况要动:损失曲线本身不稳,相邻 200 步的均值来回跳,这时先把学习率降一半,别的参数一律保持。

我处理过一例回答变空的问题,第一轮把批量和学习率都调了,跑完症状没变,反而多了一个回答过长的毛病,花了 2 天才退回去。第二轮只改了数据配比,长答案那组的比例从 8% 提到 25%,一轮就恢复正常。经验是先动数据,超参留到最后。

桌面上并排的三块外接硬盘,指示灯亮着蓝点

卡在哪:6 个常见情况

  1. 检查点被覆盖。停任务不及时,训练进程又写了两轮,可退的点没了。停任务要在发现异常后 10 分钟内做。
  2. 没有基线分数。上一版没测过,改完没法比,只能凭感觉,感觉往往不准。
  3. 数据回查找不到源头。训练数据没有来源字段,抽出来的样本说不清从哪来,回查只能靠猜。
  4. 改了配比症状不变。问题不在比例而在标注口径,同一批数据两个人标出来的答案不一样。
  5. 重跑后另一个毛病出现。压了一个方向用力过猛,回答又开始变长变啰嗦,需要回调一次。
  6. 灰度看不出差异。灰度量太小,5% 的量一天只有几十次调用,差异被噪声盖住。

第 4 条最难查。标注口径不一致时,同一批 200 条数据里约有 30 条是矛盾的,模型学到的是折中行为,输出看起来正常,细看每个答案都不到位。查法很简单:随机抽 20 条,让两个人重标一遍,一致率低于 85% 就先统一口径。

怎么核验修好了

  1. 看固定题库分数。和基线比,差值在 2 分以内算持平,低于基线超过 5 分说明还有问题。
  2. 抽 20 条人工读。重点看三处:有没有编数字、长度是否正常、格式是否跟模板一致。
  3. 灰度 48 小时看两项率。用户追问率与放弃率同时下降,才算真的修好。

三项里第 3 项要留够时间。48 小时是下限,量小的站点要跑到 72 小时才有统计意义。跑完把这一轮的处置记录存下来,写清症状、回滚点、动了哪批数据、最终分数,下次遇到同类症状能直接跳到第 4 步。

处置记录还有一个用处:判断某一类症状是不是反复出现。同一症状一个月出现 2 次以上,说明数据管道的上游有系统性问题,光靠每次回滚解决不了,得回去查标注流程和数据准入那两道关口。记录攒到 6 条以上,规律自然显出来。每条记录的耗时也记上,2 天修完和 5 天修完,差在哪一步一目了然。7 条记录摆在一起,能看出哪一步固定要花 2 天。把这几条按症状归类,还能看出同类症状的修法是不是一样的。

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