监督微调(Supervised Fine-Tuning, SFT)是 RLHF 流水线的基础。SFT 模型的质量决定了 RL 所能达到的上限:RL 可以精炼和提升某种行为,但无法可靠地引入 SFT 模型中完全不存在的行为。本节涵盖高效 SFT 的关键技术。

序列打包以提升效率

序列打包将多个短样本拼接为长度为 max_seq_length 的单一序列,并以 EOS Token 分隔。Attention mask 确保不同样本的 Token 之间不会相互 attend:

  1. 按长度对样本排序(可选,可提升打包效率)。
  2. 贪心地将样本打包进大小为 max_seq_length 的 bin。
  3. 使用块对角(block-diagonal)Attention mask,防止跨样本 attention。
  4. 只在非 padding Token 上计算 Loss。

Chat 模板与格式化

ChatML 是使用最广泛的 chat 模板:

# ChatML format
template = """<|im_start|>system
{system_message}<|im_end|>
<|im_start|>user
{user_message}<|im_end|>
<|im_start|>assistant
{assistant_message}<|im_end|>"""

Llama 3 使用一种带特殊 Token 的不同模板:

# Llama 3 format
template = """<|begin_of_text|><|start_header_id|>system<|end_header_id|>
{system_message}<|eot_id|><|start_header_id|>user<|end_header_id|>
{user_message}<|eot_id|><|start_header_id|>assistant<|end_header_id|>
{assistant_message}<|eot_id|>"""

仅对补全部分进行 mask

多任务 SFT 的数据混合策略

按各数据集的大小比例从中采样:

pk=Nk∑j=1KNj,

其中 Nk 是数据集 k 中的样本数量。这是大多数框架的默认做法,当各数据集质量相近时效果良好。

应用温度 T 来平滑各比例:

pk∝Nk1/T.

T=1:按比例混合。T→∞:均匀混合。T<1:过采样大数据集。T>1:过采样小数据集。

按估计质量对数据集加权(例如参考模型下的困惑度(Perplexity)、人工质量评分):

pk∝Nk⋅qk,

其中 qk 是数据集 k 的质量得分。

当 SFT 反而有害——灾难性遗忘与对齐税

当 LLM 依次经历各训练阶段——预训练 → 继续预训练 → SFT → RLHF/DPO——性能退化常常在标准基准上显现。驱动这些退化的是两种 本质不同的现象,把二者混为一谈会导致错误的缓解策略。

灾难性遗忘(结构性擦除)

症状:

  • 在微调数据未覆盖的任务上完全失效(例如模型在 chat 数据上 SFT 后忘记了如何做数学)
  • 语言多样性丧失——模型只按微调分布的狭窄风格生成
  • 在微调期间未被强化的知识上,事实准确性下降
  • 仅用英文 SFT 后多语言能力退化

机制成因——Fisher 信息视角:任务 A 的 Fisher 信息矩阵 F 指出哪些参数对 𝒟A「重要」:

F=𝔼x∼𝒟A​[∇θ​log​πθ​(x)​∇θ​log​πθ​(x)T](10.2)

具有高 Fisher 特征值的参数对任务 A 至关重要。在任务 B 上进行无约束的梯度下降会完全忽略这些特征值——Δ​θ 沿着 ∇ℒB 移动,而不论它是否会破坏 ℒA 的高 Fisher 方向。

对齐税(行为约束)

对齐税是一种 有意为之、预期之内的权衡:模型的原始能力(无约束生成、最大推理带宽)会下降,因为策略被约束为产生安全、格式良好、符合偏好的输出。

机制:在 DPO/PPO 期间,策略 πθ 因偏离参考 πref 而通过 KL 散度受到惩罚:

rimplicit​(x,y)=β​log⁡πθ​(y|x)πref​(y|x)(10.3)

这条缰绳约束了模型的 输出分布——它无法探索偏离参考过远的高方差推理路径。知识并 未被抹除,只是被 抑制。模型仍然「知道」答案,但其分布被压平,趋向安全、通用的回应。

症状:

  • 过度拒答(对无害提问也回答「我无法帮你处理这个」)
  • 风格僵硬——大量模糊限定词、过多免责说明、冗长的安全声明
  • 原始能力基准(MMLU、HumanEval)得分下降,而偏好基准(MT-Bench、AlpacaEval)得分提升
  • 产生复杂、高熵输出的能力下降(创造性写作、新颖算法)

对比分类

维度灾难性遗忘对齐税
有意性非有意(优化过程的副产物)预期之内的权衡(为安全性/有用性而有意付出)
参数状态先验知识被物理覆盖潜空间分布被约束/截断
信息被销毁:权重不再编码该能力被抑制:知识仍然存在,但更难被触发
主要发生阶段序贯 SFT、领域继续预训练偏好优化(PPO、DPO、KTO、RLHF)
主要症状基线能力完全失效过度拒答、风格僵硬、原始基准得分下降
可逆性不从检查点重新训练则不可逆部分可逆:调整 β、system prompt 或进行微调
检测方法预训练评估集上的困惑度飙升困惑度保持稳定,但能力基准上的胜率下降
随模型规模的变化不同规模下表现相似较小的模型付出更大的对齐税

表 10.1:灾难性遗忘 vs. 对齐税——完整对比。

缓解策略

针对灾难性遗忘:

  1. 数据回放(Data replay):将 5–10% 的预训练数据混入 SFT 数据集。确保 Gradient 更新不会完全忽略预训练分布。
  2. 弹性权重巩固(Elastic Weight Consolidation, EWC)[186]:添加正则项 Ω⁡(θ)=λ2​∑iFi​(θi−θi∗)2,惩罚对原始任务具有高 Fisher 信息的参数发生改变。
  3. LoRA / 参数高效微调:只训练低秩适配器(占参数量的 <1%),保持基座权重完全冻结。这可防止预训练知识被 永久销毁——你随时可以移除适配器并恢复原始模型。然而,在适配器处于激活状态时,组合后的系统 (W0+B​A) 仍可能表现出遗忘:适配器可能使模型的有效行为偏离旧技能。LoRA 保护的是检查点,而不是激活的推理行为。
  4. 保守的学习率:使用 1–5×10−6,并只训练少量 epoch(1–3)。学习率越大,遗忘越快。
  5. 渐进式训练:逐步混合各分布,随时间逐渐提高 SFT 数据比例,而不是突然切换。

针对对齐税:

  1. 谨慎调节 β:较低的 β 给模型更多自由(减轻对齐税),但可能牺牲安全性。对于大多数设置,最优值为 β∈[0.05,0.3]。
  2. 高质量、多样化的 SFT 数据:对齐税的一部分来自 SFT 收窄了输出分布;更广泛、更多样的 SFT 数据可以减轻这一部分。RL 阶段还会通过 KL 正则项 [280] 施加进一步约束。
  3. 条件对齐(Conditional alignment):训练模型仅当安全标志位激活时才保持对齐。推理时,在基准测试中关闭约束(仅限研究的技术)。
  4. Constitutional AI / RLAIF:使用模型生成的反馈来构造更细致的偏好数据,在提升对齐的同时保持能力。
  5. 有针对性的 RL 预算:不要用 RL 过度训练。监控能力基准,当对齐税超过可接受阈值(通常为 MMLU 下降 2–5%)时停止。

与 RL 的关系——SFT 质量决定 RL 上限

  1. SFT 数据质量:使用高质量、多样化的数据。少量高质量数据优于大量低质量数据。
  2. SFT 数据覆盖度:确保 SFT 数据覆盖你希望用 RL 提升的任务。如果某个任务不在 SFT 数据中,RL 将很难奏效。
  3. SFT 训练时长:不要过度训练 SFT 模型。过度训练会降低多样性,使 RL 的探索更加困难。
  4. 预热:在 RL 之前,考虑用任务特定数据做一次短暂的 SFT 预热,即使基座模型已经过指令微调。