监督微调(Supervised Fine-Tuning, SFT)是 RLHF 流水线的基础。SFT 模型的质量决定了 RL 所能达到的上限:RL 可以精炼和提升某种行为,但无法可靠地引入 SFT 模型中完全不存在的行为。本节涵盖高效 SFT 的关键技术。
序列打包以提升效率
序列打包将多个短样本拼接为长度为 max_seq_length 的单一序列,并以 EOS Token 分隔。Attention mask 确保不同样本的 Token 之间不会相互 attend:
- 按长度对样本排序(可选,可提升打包效率)。
- 贪心地将样本打包进大小为
max_seq_length的 bin。 - 使用块对角(block-diagonal)Attention mask,防止跨样本 attention。
- 只在非 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 的数据混合策略
按各数据集的大小比例从中采样:
其中 是数据集 中的样本数量。这是大多数框架的默认做法,当各数据集质量相近时效果良好。
应用温度 来平滑各比例:
:按比例混合。:均匀混合。:过采样大数据集。:过采样小数据集。
按估计质量对数据集加权(例如参考模型下的困惑度(Perplexity)、人工质量评分):
其中 是数据集 的质量得分。
当 SFT 反而有害——灾难性遗忘与对齐税
当 LLM 依次经历各训练阶段——预训练 继续预训练 SFT RLHF/DPO——性能退化常常在标准基准上显现。驱动这些退化的是两种 本质不同的现象,把二者混为一谈会导致错误的缓解策略。
灾难性遗忘(结构性擦除)
症状:
- 在微调数据未覆盖的任务上完全失效(例如模型在 chat 数据上 SFT 后忘记了如何做数学)
- 语言多样性丧失——模型只按微调分布的狭窄风格生成
- 在微调期间未被强化的知识上,事实准确性下降
- 仅用英文 SFT 后多语言能力退化
机制成因——Fisher 信息视角:任务 A 的 Fisher 信息矩阵 指出哪些参数对 「重要」:
具有高 Fisher 特征值的参数对任务 A 至关重要。在任务 B 上进行无约束的梯度下降会完全忽略这些特征值—— 沿着 移动,而不论它是否会破坏 的高 Fisher 方向。
对齐税(行为约束)
对齐税是一种 有意为之、预期之内的权衡:模型的原始能力(无约束生成、最大推理带宽)会下降,因为策略被约束为产生安全、格式良好、符合偏好的输出。
机制:在 DPO/PPO 期间,策略 因偏离参考 而通过 KL 散度受到惩罚:
这条缰绳约束了模型的 输出分布——它无法探索偏离参考过远的高方差推理路径。知识并 未被抹除,只是被 抑制。模型仍然「知道」答案,但其分布被压平,趋向安全、通用的回应。
症状:
- 过度拒答(对无害提问也回答「我无法帮你处理这个」)
- 风格僵硬——大量模糊限定词、过多免责说明、冗长的安全声明
- 原始能力基准(MMLU、HumanEval)得分下降,而偏好基准(MT-Bench、AlpacaEval)得分提升
- 产生复杂、高熵输出的能力下降(创造性写作、新颖算法)
对比分类
| 维度 | 灾难性遗忘 | 对齐税 |
|---|---|---|
| 有意性 | 非有意(优化过程的副产物) | 预期之内的权衡(为安全性/有用性而有意付出) |
| 参数状态 | 先验知识被物理覆盖 | 潜空间分布被约束/截断 |
| 信息 | 被销毁:权重不再编码该能力 | 被抑制:知识仍然存在,但更难被触发 |
| 主要发生阶段 | 序贯 SFT、领域继续预训练 | 偏好优化(PPO、DPO、KTO、RLHF) |
| 主要症状 | 基线能力完全失效 | 过度拒答、风格僵硬、原始基准得分下降 |
| 可逆性 | 不从检查点重新训练则不可逆 | 部分可逆:调整 、system prompt 或进行微调 |
| 检测方法 | 预训练评估集上的困惑度飙升 | 困惑度保持稳定,但能力基准上的胜率下降 |
| 随模型规模的变化 | 不同规模下表现相似 | 较小的模型付出更大的对齐税 |
表 10.1:灾难性遗忘 vs. 对齐税——完整对比。
缓解策略
针对灾难性遗忘:
- 数据回放(Data replay):将 5–10% 的预训练数据混入 SFT 数据集。确保 Gradient 更新不会完全忽略预训练分布。
- 弹性权重巩固(Elastic Weight Consolidation, EWC)[186]:添加正则项 ,惩罚对原始任务具有高 Fisher 信息的参数发生改变。
- LoRA / 参数高效微调:只训练低秩适配器(占参数量的 ),保持基座权重完全冻结。这可防止预训练知识被 永久销毁——你随时可以移除适配器并恢复原始模型。然而,在适配器处于激活状态时,组合后的系统 仍可能表现出遗忘:适配器可能使模型的有效行为偏离旧技能。LoRA 保护的是检查点,而不是激活的推理行为。
- 保守的学习率:使用 –,并只训练少量 epoch(1–3)。学习率越大,遗忘越快。
- 渐进式训练:逐步混合各分布,随时间逐渐提高 SFT 数据比例,而不是突然切换。
针对对齐税:
- 谨慎调节 :较低的 给模型更多自由(减轻对齐税),但可能牺牲安全性。对于大多数设置,最优值为 。
- 高质量、多样化的 SFT 数据:对齐税的一部分来自 SFT 收窄了输出分布;更广泛、更多样的 SFT 数据可以减轻这一部分。RL 阶段还会通过 KL 正则项 [280] 施加进一步约束。
- 条件对齐(Conditional alignment):训练模型仅当安全标志位激活时才保持对齐。推理时,在基准测试中关闭约束(仅限研究的技术)。
- Constitutional AI / RLAIF:使用模型生成的反馈来构造更细致的偏好数据,在提升对齐的同时保持能力。
- 有针对性的 RL 预算:不要用 RL 过度训练。监控能力基准,当对齐税超过可接受阈值(通常为 MMLU 下降 2–5%)时停止。
与 RL 的关系——SFT 质量决定 RL 上限
- SFT 数据质量:使用高质量、多样化的数据。少量高质量数据优于大量低质量数据。
- SFT 数据覆盖度:确保 SFT 数据覆盖你希望用 RL 提升的任务。如果某个任务不在 SFT 数据中,RL 将很难奏效。
- SFT 训练时长:不要过度训练 SFT 模型。过度训练会降低多样性,使 RL 的探索更加困难。
- 预热:在 RL 之前,考虑用任务特定数据做一次短暂的 SFT 预热,即使基座模型已经过指令微调。