后训练跑歪,多数能救,代价在 1 到 7 天之间。先看 3 个信号分方向:格式突然不守、拒答变多、通用题掉分。方向定错了,改数据改 1 周也不见好。下面按定位、回滚、改数据、重训、验收 5 步写。
三种典型症状对应两类原因,判断只需要跑 1 组回归题。把训练前的基线答案拿出来,对同一批 50 条问题各答一遍,逐条比。
| 症状 | 先查什么 | 常见原因 | 改法 |
|---|---|---|---|
| 格式不守 | 训练样本的答案字段 | 模板混用、样本里带多余说明 | 统一模板,剔除带解释的样本 |
| 拒答变多 | 安全样本占比 | 占比超过 20%,标注偏严 | 压到 10% 以内,重写拒答口径 |
| 通用题掉分 | 学习率与轮次 | 学习率大 1 个数量级,跑了 5 轮 | 降 1 个数量级,回到 2 到 3 轮 |
| 复读与死循环 | 重复样本 | 同一问答出现 3 次以上 | 按问题去重,保留 1 条 |
| 答案变超长 | 奖励模型偏好 | 标注时偏爱长答案 | 标注规范加同等信息量不比长度 |
救之前先把 4 样东西凑齐,缺一样就会反复试错。这 4 样在开训时就该留,事后补不回来。
我经手的一次微调,团队只留了最终权重,跑歪后只能从头再训,多花 2 天卡时。后面改成每轮存 1 份,同样的问题回滚 1 个点、重训 4 小时就解决了。
先跑回归题集,把掉分的题按类型分组,看集中在哪一类。接着回滚到偏之前的那 1 个检查点,用同一批题再测一遍,确认回滚后回到了基线附近。这一步通常 2 到 4 小时,占整件事的两成时间。
改数据只改 1 个变量。样本重复就只去重,格式混用就只统一模板,别同时动 3 处,否则下次还是不知道哪一处起了作用。重训从回滚点接着跑 1 到 2 轮,学习率比原来低 1 个数量级。
验收跑 3 组题:业务题、通用题、该拒答的题。三组都不低于基线才算救回来。灰度放 5% 流量跑 3 到 7 天,看用户追问率与人工兜底率,追问率高于基线 10 个百分点就说明还没好。
同一个问题换了问法,分数就不一样。救之前把 50 到 200 条题的问法固定,标点都别改,后面每次复测用同一份,前后才可比。
基线版本要记 3 个数:业务题通过率、通用题通过率、平均回答长度。二次训练后这 3 个数一起看,只盯业务题的,容易把通用能力练没了还在庆祝。
训练环境做成镜像,依赖版本、分词器、数据版本一起打包。换机器重跑能复现,出问题时才有得比。我吃过依赖版本不一致的亏,同一份数据跑出两个结果,查了 1 天才发现是框架小版本不同。
这三件事花半天做完,后面每次救火都省 1 到 2 天。赶时间跳过这一步的,最后基本都要回来补。
这 4 条加进训练脚本,1 次配置能用很久。我现在的习惯是每次开训先跑 200 步看曲线,形状不对就停,比跑 2 天再发现有问题是省时间。
救火时还有人爱换框架版本,想靠升级解决。版本一换,变量多出 3 个,问题反而更难定位,先把版本锁定再谈改数据。
两种情况直接重训更省。训练数据本身只有几百条、且质量参差,改不如重做;底座换过版本,旧检查点和新的分词器对不上,回滚也跑不起来。这两种情况重训 1 到 2 天能出结果,硬救反而拖 1 周。
救与不救的分界线在数据量。样本 5000 条以上、只是配比或格式出问题,值得救;样本 500 条以下、问题出在标注本身,重做标注比重训划算。
整套流程走完,1 次跑歪的处理成本能压到 1 天以内。真正省时间的是开训前那 4 样准备,检查点和回归题集留好了,后面每一步都有参照。
跑歪本身不可怕,怕的是没有可比的对象。题集固定、检查点留好、数字记下,这三件事做了,1 次故障处理 1 天能收尾。
团队里养成 1 个习惯:每次开训前把 3 个基线数字写在共享文档第一行,谁接手都能看明白上一版是什么水平。
处理完把这次的过程写 1 页纸:什么症状、改了什么、结果如何。下次遇到同类问题,翻这页纸比重新推理快,团队里也能直接复用。
本文信息核对时间:2026-11。学习率与轮次按常见 7B 到 32B 规模的后训练经验给出,具体取值按所用框架与数据规模调整。