窄任务 SFT、强 DPO 或激进 CPT 后,模型可能出现灾难性遗忘(catastrophic forgetting)——领域或对齐指标上升,通用对话、推理、安全性下降。本篇汇总缓解手段与 checkpoint 版本管理,与 01-04 数据混合、08-01 基线评估 衔接。
段末注释:KL 约束(Kullback–Leibler divergence constraint)在 DPO/RLHF 中限制新策略偏离参考策略 (\pi_{\mathrm{ref}}) 的程度,是防止对齐阶段遗忘预训练/SFT 能力的重要机制(见 Math-05/20)。
系列索引:微调技术路线导读
一、遗忘的表现
| 类型 | 现象 |
|---|---|
| 通用对话 | 胡言、拒答增多、风格变窄 |
| 推理 | 简单数学/逻辑变差 |
| 格式 | 非目标任务格式崩(若过拟合单一 system) |
| 安全 | 对齐过度导致过度拒绝 |
检测:除主任务 test 外,保留 通用抽检集(50–200 条 instruct 样本)与固定 decode 规则。
二、成因
| 阶段 | 原因 |
|---|---|
| CPT | 仅领域语料、lr 过大 |
| SFT | 单任务数据、epoch 过多、lr 过高 |
| DPO/GRPO | (\beta) 过小、偏好数据分布偏、reward 过窄 |
| 全参 | 可训练权重大,遗忘风险高于 LoRA |
三、缓解策略
3.1 数据层
| 手段 | 说明 |
|---|---|
| 通用数据混合 | SFT 掺 5–20% 通用 instruct(01-04) |
| CPT 混通用语料 | 领域 CPT 时保留部分通用 text |
| 多任务 SFT | 主任务 + 轻量辅助任务 |
3.2 训练层
| 手段 | 说明 |
|---|---|
| LoRA / PEFT | 冻结大部分基座(05-04) |
| 较小 lr、少 epoch | SFT 1–3 epoch;早停看 eval_loss |
| KL / β | DPO 增大 (\beta) 贴近 ref(06-01) |
| CPT lr | 低于 SFT(05-02) |
3.3 对齐层
| 手段 | 说明 |
|---|---|
| 保留 SFT checkpoint | 对齐变差可回滚 |
| GRPO reward 不过窄 | 避免只优化格式 hack |
| 拒绝采样质量 | 01-03 偏好数据 |
Math 对照表:Math-04/20 §5(KL、SFT mix、较小 lr)。
四、版本管理
4.1 命名规范
1 | {project}/{base_model}/{stage}-{date}-{metric}/ |
stage:cpt | sft | dpo | grpo | merged
4.2 必须保存的元数据
| 字段 | 内容 |
|---|---|
| base_model_id | 基座路径/版本 |
| peft_config | r, alpha, target_modules |
| data_version | 数据集 hash 或版本号 |
| train_config | lr, epoch, max_length, seed |
| eval_snapshot | 主任务 + 通用抽检指标 |
| prompt_template | system 全文 |
与 08-01 的固定 decode/parse 一并记录。
4.3 checkpoint 选择
| 策略 | 说明 |
|---|---|
| best eval_loss | 训练监控;需验证任务 F1 |
| best task metric | 自定义 callback 存 F1 最高 |
| last checkpoint | 仅当 clearly 未 overfit |
| 保留 top-k | 磁盘允许时留 2–3 个供 A/B |
1 | # SFTConfig 示例 |
上线前:在 封存 test 上跑 08-01 流程,勿用训练调过的 val 作唯一依据。
4.4 回滚策略
1 | 生产:adapter_v2 (DPO) |
DPO/GRPO 务必永久保留 SFT adapter(02-04)。
五、A/B 与迭代
| 步骤 | 动作 |
|---|---|
| 1 | 固定 test + 通用集 |
| 2 | 新 checkpoint vs 当前生产,同脚本评估 |
| 3 | 主指标 Δ > 阈值 且 通用集无显著退化 |
| 4 | 小流量灰度 → 全量 |
六、常见踩坑
| 现象 | 对策 |
|---|---|
| 只对主任务调参 | 并列监控通用抽检 |
| merge 后无法回滚 | merge 前归档 adapter |
| 覆盖同名 output_dir | 用日期/指标命名 |
| DPO 后「变傻」 | 升 β;回滚 SFT |
七、小结
防遗忘 = PEFT + 混合数据 + 保守 lr/epoch + 对齐 KL + 双集评估。版本管理 = 分 stage 存 adapter + 元数据 + 保留 SFT 备份 + test 上选 checkpoint。