大模型后训练跑歪了怎么办?先看 3 个指标再决定回退到哪

54分钟前发布

后训练跑歪,先别急着重跑。按 3 个指标定位:验证集损失是否反弹、拒答率是否超过 15%、格式合规率是否掉到 90% 以下。定位到哪一层,回退到哪一层——权重、数据、超参,三层的处理时间差 5 倍以上。

后训练指的是预训练之后的微调与对齐,工程上最容易出问题的也在这段。我参与过一个 7 人团队的对齐项目,第一次跑完,模型对所有敏感问题都答「无法回答」,正常问题也躲,回头查是偏好数据里拒答样本占了 4 成。

一、先确认真的是「歪」

有的现象属于预期波动,不值得回退。先跑一遍固定评测集,和上一个版本对比,差 2 个点以内按噪声处理,别动权重。

  1. 验证集损失。训练损失降、验证损失升,是过拟合;两边都升,是学习率或数据的问题。
  2. 拒答率。抽 200 条正常问题,统计答「无法回答」的比例。超过 15% 就是歪了。
  3. 格式合规率。要求输出 JSON 或固定结构的 100 条,数能直接解析的有多少。低于 90% 要处理。
  4. 重复率。同一段回答里同一句出现 2 次以上,抽 50 条看占比,超过 10% 算复读。

二、三层回退,成本差很大

回退不是只有「从头再来」一条路。按影响面从小到大排,先试成本低的。

层级回退到什么耗时适用症状代价
超参上一个检查点 + 降学习率数小时损失尖峰、偶发复读低,只损失最后几百步
数据换一版清洗后的数据重跑 SFT1 到 3 天拒答过多、格式崩、模板化中,要重做数据配比
权重回到预训练基座重做后训练1 到 2 周能力整体下降、指令遵循失效高,前面的对齐白做
机房内服务器机柜与冷白灯带

三、按症状走 5 步

  1. 冻结现场。把当前权重、数据版本号、超参配置各存一份,命名带日期。后面每一步对比都要用这套基线。
  2. 定位层级。用第一步的 4 个指标对一遍,哪个越界就对应哪一层。4 个都正常,问题多半在评测集本身。
  3. 改一处,只改一处。超参先降学习率一半,数据先调拒答样本占比,别同时改两项,否则说不清哪个起了作用。
  4. 小步验证。每次改动后跑 200 条评测,2 小时内能出结果。全量评测留到最后。
  5. 记录对照表。每次改动的指标变化写进一张表,3 次以上就能看出哪类改动对哪类症状有效。

数据层怎么改

拒答过多,先把偏好数据里的拒答样本从 40% 压到 15% 以内,再补 2 千到 3 千条正常回答的好样本,标成「优先选这个」。格式崩,先查 SFT 数据里的输出结构是否统一,混了 3 种 JSON 写法的数据集,训出来的模型也会混。

复读多发在数据重复上。同一模板生成的 5000 条问答,进去多少,出来就复读多少。去重按语义做,不按字面做,字面不同但意思一样的样本照样会带出复读。

夜间办公桌上显示器显示模糊曲线

权重回退后要不要重跑对齐

要。回到预训练基座之后,监督微调与对齐都得重做一遍,缺哪步都会少一块能力。有团队图省事只重做微调,跳过对齐,结果模型答得对但语气生硬,格式也不稳。

重跑的这段时间,把上一轮的实验记录翻出来,超参与数据配比直接沿用能用的那版,别从零开始试。

四、卡在哪:6 个常见卡点

  1. 评测集和训练集重了。现象是分数涨但线上没变化。解法是用 n-gram 比对,命中率高的样本从训练集剔除。
  2. 只改数据不改评测。现象是改完看不出差别。解法是评测集扩到 300 条以上,覆盖 5 类场景。
  3. 学习率降得太狠。现象是损失不降,模型学不动。解法是按 0.5 倍逐次降,别一次降到 0.1 倍。
  4. 对齐阶段反复调。现象是越调越不敢答。解法是每轮都留一份基线权重,超过 3 轮就往回退一版。
  5. 显存不够只能减小批量。现象是梯度噪声大、训练不稳。解法是开梯度累积,把有效批量补回来。
  6. 换了基座版本没说。现象是同样的数据效果差很多。解法是记录基座的完整版本号,别只写模型名。

五、怎么确认修好了

  1. 4 个指标都回到基线以上。拒答率、格式合规率、重复率、验证损失,逐项打勾。
  2. 抽 30 条人工读。机器指标过了,读起来别扭的照样不能用。
  3. 上线跑 5% 流量 3 天。看追问率与转人工率,两项都稳再全量。

后训练这段花时间多的是判断。判断错了层级,回退到权重,两周白花。所以第 1 步的 4 个指标要养成习惯,每次跑完先看这 4 个数,再决定动不动。

六、超参怎么调回来

定位到超参层,先动学习率,再动批量,最后动训练轮数。顺序反了,问题会被其他变量的变化盖住。

  1. 学习率减半,重跑 500 步,看损失是否平稳。平稳就继续,抖动就再减半。
  2. 批量调大,用梯度累积实现。有效批量从 32 提到 128,训练会更稳,代价是每步慢一点。
  3. 训练轮数减 1。过拟合的典型表现就是轮数多了,验证集损失抬头。
  4. 预热步数加长。从 100 步加到 300 步,前期不稳的问题多半能压住。

每改一项,跑 500 步看一眼曲线,别等跑完 3 天才发现方向错了。500 步在 8 卡上约 20 分钟,这个代价可以接受。

评测要几个样本

200 条起步,覆盖 5 类场景,每类不少于 30 条。样本少于 100 条时,两条之间的差异落在噪声里,看不出改动有没有效。

人工抽检再加 30 条。机器判分能筛出明显错的,读起来别扭的只有人能发现。这 30 条不用每次都换,固定同一批,方便横向比。

LoRA 什么时候不够用

3 种情况要上全参数:要模型学会一个新的语言体系、要显著改写输出风格、要做大规模知识注入。这 3 件事靠小部分参数调不动,调了也只是表面像。

反过来,格式约束、话术模板、固定场景的问答,LoRA 够用。判断办法是先跑 LoRA,评测差了 5 个点以上再考虑全参数,别一上来就上重装备。

七、小团队怎么省算力

没有千卡,照样能把后训练做完。3 个做法按省下的比例排:用 LoRA 只训一小部分参数,显存需求降到全参数的十分之一;把序列长度从 8K 降到 4K,显存再省一半;用混合精度加梯度检查点,用时间换算显存。

LoRA 的代价是能力上限略低,做垂直场景够用。要的是通用能力的大幅跃升,还是得全参数微调。

白板上画的方框与箭头流程图

后训练的产出要能复现。权重、数据、超参三份记录对得上,半年前的结果才跑得回来,这一步比调参省下的时间更多。

把每次回退的原因写一行。攒到 10 次,能看出自己团队最容易在哪一层出错,下一轮排期就能提前留出余量。

数据版本号要写到文件名里。只写 v1、v2 的,隔一个月就没人记得改了什么,回退时容易拿错版本。

记录比调参省时间,这一点在返工时最明显。

日志留全,回退时不用重跑一遍才知道问题在哪。

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