先分清是哪种歪:能力退化、风格走样、安全边界松动,3 类的排查入口完全不同。走 5 步能定位到具体原因,多数情况 2 小时内能找到,最慢 1 个工作日,第 5 步是回滚。
我 2025 年给 1 个做客服的团队处理过 2 次跑偏,两次都不在训练代码上:1 次是微调集里混进 3000 条旧版话术,1 次是学习率设成了预训练的 10 倍。下面按我们当时的顺序写。
3 类的现象差别明显,先归类能省掉一半排查时间。
| 现象 | 常见原因 | 先查哪里 |
|---|---|---|
| 原来会的题现在答不出 | 微调集太窄,把基座能力盖掉 | 微调集里通用样本占比 |
| 回答变短、变空、只顾结论 | 偏好数据带偏,或惩罚项过强 | 标注标准与训练超参 |
| 口气忽然变了,爱用某类句式 | 训练数据来源单一 | 按来源分组的样本比例 |
| 该拒答的照答 | 安全样本在微调后失效 | 拒答类评测集通过率 |
第 4 行要单独处理。安全边界松动属于不能上线的问题,程度比效果差一点重得多,排查顺序要提前到第 1 位。
归类不准的时候,用 1 个笨办法:把 10 条输出读给不了解项目的人听,问 2 个问题——听得懂吗、敢照着做吗。听不懂的多是风格或能力问题,不敢照着做的先按安全边界处理。
3 类里只有第 1 类会体现在评测分数上。风格走样与边界松动的分数常常没掉,甚至涨 1 到 2 个点,这也是它们最容易被放过去的原因。
同样的问题换个问法,输出差异可能比版本差异还大。20 条提示词要覆盖 4 类:原来答得好的、答得差的、该拒答的、多轮追问的,4 类各 5 条。多轮那 5 条要写满 3 轮追问,第 1 轮就露问题的,说明不了后 2 轮会不会跑。
把微调集按来源拆成 3 组,先剔掉占比最高的那组重训。我那次剔掉旧版话术之后,口气问题当轮就消失了,剩下的 1 个问题在别的组里。剔完要记 1 笔:剔掉多少条、占总量几成,下次遇到同类现象直接照做。
回滚的同时把复现脚本、对比清单、训练配置 3 样存进 1 个文件夹。下一轮排查从这份存档起步,不用重新造样本。
存档要写 4 个字段:版本号、训练数据指纹、关键超参、跑评测的日期。4 个字段缺 1 个,2 周后再看就分不清这份权重是用哪批数据训的,排查只能从头再来。
团队里两个人以上碰这件事时,把「谁改了什么」也记下来。改样本的人与调参数的人分开,出问题能立刻分辨是数据侧的改动还是训练侧的改动。我见过一次跑偏,查了两天才发现是同事前一天临时替换了一批标注样本,日志里没有任何记录,只能靠人回忆。

| 东西 | 具体是什么 | 没有会怎样 |
|---|---|---|
| 上一版权重 | 完整的 checkpoint 与推理配置 | 没法对照,只能猜 |
| 固定提示词集 | 20 条,分 4 类,每类 5 条 | 每次结论都不一样 |
| 训练日志 | 每 10 步的损失、学习率、显存 | 看不出是哪一步开始偏 |
第 3 样最常缺。日志只存最后 1 行,跑完只剩 1 个总数,看不出第 300 步之后的异常抖动。开训前把日志级别调到每 10 步 1 条,代价是几十 MB 磁盘。
3 样里最容易被忽视的是第 1 样。上一版权重留在推理服务器上,训练机上没有备份,回滚时才发现得重新训 1 遍,8 小时起步。养成习惯:每次上新版前,先把旧版权重与推理配置一起打包存 1 份。
现象复现不了,是最常见的卡点。同一提示词跑 3 次结果不一样,说明问题在推理参数上,先把温度调到 0 再测 1 轮。
对照不出差异,多半是提示词集本身太窄。20 条都在问同一类问题,两版输出自然差不多,加 5 条跨领域的再比。
换数据后现象没变,说明问题不在数据。回到第 4 步调参数,学习率从 5e-5 降到 1e-5 试 1 轮,多数退化会缓解。只改 1 个参数,改完跑 200 步就够判断方向,不用跑完。
第 4 步的顺序也有讲究:先降学习率,再看训练轮数,最后动批大小。前 2 个改动成本低,第 3 个会连带影响显存与速度。
评测分数没掉,但人觉得变差了。这类情况要信人,把觉得差的 10 条样本补进评测集,下 1 轮就看这个指标。
补样本时把「差在哪」写清楚,1 条 1 句话:答得比原来短、给了错误的日期、把 2 个概念混着说。写清之后,下 1 轮的对比才有落点,也方便判断这轮改动到底有没有解决问题。
回滚这个动作本身要提前演练 1 次。上线前把回滚命令写在运维文档里,2 个人各跑 1 遍,确认 10 分钟内能把旧版换回来。真出事的时候再翻文档,往往已经过去半小时。
整件事的成本主要在样本上,不在算力上。1 次排查通常要跑 3 到 5 个短周期版本,每个版本 200 到 500 步,1 张卡几小时能跑完;真正花时间的是把 20 条提示词、微调集分组、对比清单准备齐,这部分准备 1 次能用半年。准备齐了,第 2 次遇到同类问题,1 小时内能给出方向。
回滚后旧问题又回来,说明 2 个版本各有各的毛病。这时候不走二选一,把两版的优点各抽 10 条样本,拼成 1 个新的微调集,重训 1 轮。
重训前先把 2 版的样本对齐:同一提示词下,把好答案标出来,坏答案不删只标注。只删坏样本的做法会让模型在同类问题上过拟合,换个问法又跑偏。
整个 5 步走完,快的话 2 小时,慢的 1 个工作日。决定快慢的是第 3 步:微调集有没有按来源打好标签,没标签就得先补 1 轮人工分组,半天起步。

第 3 条能抓出不少隐性问题。同一件事换个问法就答反,说明模型学到的是句式关联,底下的知识没稳住,这类问题在评测分数上看不出来。
验证通过后把这次的样本与结论写进 1 页纸,放进项目文档。同一个团队 3 个月内重复踩同一个坑的概率不低,有这页纸下次 10 分钟就能对上号。

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