后训练跑歪,先别急着重跑。按 3 个指标定位:验证集损失是否反弹、拒答率是否超过 15%、格式合规率是否掉到 90% 以下。定位到哪一层,回退到哪一层——权重、数据、超参,三层的处理时间差 5 倍以上。
后训练指的是预训练之后的微调与对齐,工程上最容易出问题的也在这段。我参与过一个 7 人团队的对齐项目,第一次跑完,模型对所有敏感问题都答「无法回答」,正常问题也躲,回头查是偏好数据里拒答样本占了 4 成。
有的现象属于预期波动,不值得回退。先跑一遍固定评测集,和上一个版本对比,差 2 个点以内按噪声处理,别动权重。
回退不是只有「从头再来」一条路。按影响面从小到大排,先试成本低的。
| 层级 | 回退到什么 | 耗时 | 适用症状 | 代价 |
|---|---|---|---|---|
| 超参 | 上一个检查点 + 降学习率 | 数小时 | 损失尖峰、偶发复读 | 低,只损失最后几百步 |
| 数据 | 换一版清洗后的数据重跑 SFT | 1 到 3 天 | 拒答过多、格式崩、模板化 | 中,要重做数据配比 |
| 权重 | 回到预训练基座重做后训练 | 1 到 2 周 | 能力整体下降、指令遵循失效 | 高,前面的对齐白做 |
拒答过多,先把偏好数据里的拒答样本从 40% 压到 15% 以内,再补 2 千到 3 千条正常回答的好样本,标成「优先选这个」。格式崩,先查 SFT 数据里的输出结构是否统一,混了 3 种 JSON 写法的数据集,训出来的模型也会混。
复读多发在数据重复上。同一模板生成的 5000 条问答,进去多少,出来就复读多少。去重按语义做,不按字面做,字面不同但意思一样的样本照样会带出复读。
要。回到预训练基座之后,监督微调与对齐都得重做一遍,缺哪步都会少一块能力。有团队图省事只重做微调,跳过对齐,结果模型答得对但语气生硬,格式也不稳。
重跑的这段时间,把上一轮的实验记录翻出来,超参与数据配比直接沿用能用的那版,别从零开始试。
后训练这段花时间多的是判断。判断错了层级,回退到权重,两周白花。所以第 1 步的 4 个指标要养成习惯,每次跑完先看这 4 个数,再决定动不动。
定位到超参层,先动学习率,再动批量,最后动训练轮数。顺序反了,问题会被其他变量的变化盖住。
每改一项,跑 500 步看一眼曲线,别等跑完 3 天才发现方向错了。500 步在 8 卡上约 20 分钟,这个代价可以接受。
200 条起步,覆盖 5 类场景,每类不少于 30 条。样本少于 100 条时,两条之间的差异落在噪声里,看不出改动有没有效。
人工抽检再加 30 条。机器判分能筛出明显错的,读起来别扭的只有人能发现。这 30 条不用每次都换,固定同一批,方便横向比。
3 种情况要上全参数:要模型学会一个新的语言体系、要显著改写输出风格、要做大规模知识注入。这 3 件事靠小部分参数调不动,调了也只是表面像。
反过来,格式约束、话术模板、固定场景的问答,LoRA 够用。判断办法是先跑 LoRA,评测差了 5 个点以上再考虑全参数,别一上来就上重装备。
没有千卡,照样能把后训练做完。3 个做法按省下的比例排:用 LoRA 只训一小部分参数,显存需求降到全参数的十分之一;把序列长度从 8K 降到 4K,显存再省一半;用混合精度加梯度检查点,用时间换算显存。
LoRA 的代价是能力上限略低,做垂直场景够用。要的是通用能力的大幅跃升,还是得全参数微调。
后训练的产出要能复现。权重、数据、超参三份记录对得上,半年前的结果才跑得回来,这一步比调参省下的时间更多。
把每次回退的原因写一行。攒到 10 次,能看出自己团队最容易在哪一层出错,下一轮排期就能提前留出余量。
数据版本号要写到文件名里。只写 v1、v2 的,隔一个月就没人记得改了什么,回退时容易拿错版本。
记录比调参省时间,这一点在返工时最明显。
日志留全,回退时不用重跑一遍才知道问题在哪。
本文信息核对时间:2026-11