SFT 让模型学会格式与任务;偏好对齐(preference alignment)让输出更符合人类期望——更安全、更有帮助、推理链更可靠。对齐方法近年快速演进:从 RLHF 三阶段到 DPO 一步优化,再到 GRPO 服务推理模型。本篇从工程选型角度对比主流路线,损失推导见 Math-05/20 RLHF 与 KL。
段末注释:RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习)用偏好数据训练奖励模型再以 RL 微调策略;DPO(Direct Preference Optimization,直接偏好优化)将 RL+KL 目标改写为偏好对的分类损失,无需在线采样。
系列索引:微调技术路线导读
一、对齐在流水线中的位置
1 | SFT checkpoint(π_ref 参考策略) |
前提:对齐几乎总在 SFT 之后。Reference model (\pi_{\mathrm{ref}}) 通常冻结为 SFT 权重;对齐 loss 中的 KL 项防止策略偏离过远导致灾难性遗忘。
二、方法对比总表
| 方法 | 数据形态 | 是否需要 RM | 是否需要在线采样 | 工程复杂度 | TRL Trainer |
|---|---|---|---|---|---|
| RLHF | 偏好对 → 训 RM;prompt → 生成 → PPO | 是 | 是 | 高 | RewardTrainer + PPO |
| DPO | (prompt, chosen, rejected) |
否 | 否 | 低 | DPOTrainer |
| ORPO | SFT 样本 + 偏好对(可合并) | 否 | 否 | 低 | ORPOTrainer |
| KTO | (prompt, completion, label) 好/坏 |
否 | 否 | 低 | KTOTrainer |
| IPO / cDPO | 同 DPO | 否 | 否 | 低 | DPO 变体参数 |
| GRPO | prompt + 可验证 reward 函数 |
否 | 是(组内采样) | 中 | GRPOTrainer |
三、各路线详解
3.1 经典 RLHF(RM + PPO)
三阶段(见 Math-05/20):
- SFT:监督微调得 (\pi_{\mathrm{ref}})
- RM:偏好对 ((x, y_w, y_l)) 训练奖励模型 (r(x,y))
- PPO:最大化 (r(x,y) - \beta D_{\mathrm{KL}}(\pi_\theta | \pi_{\mathrm{ref}}))
| 优点 | 缺点 |
|---|---|
| 工业界验证最久(InstructGPT 路径) | 三套模型/流程,调试成本高 |
| RM 可复用于多种 policy | PPO 超参敏感、训练不稳定 |
| 适合复杂多维偏好 | 算力与工程门槛高 |
何时仍考虑:已有 RM 资产、需在线探索、偏好维度复杂且 DPO 效果 plateau。PPO 算法细节见 RL-03-11 PPO。
3.2 DPO(首选,大多数团队)
对偏好 (y_w \succ y_l)(在 prompt (x) 下),DPO 损失:
$$
\mathcal{L}{\mathrm{DPO}} = -\mathbb{E}\left[\log \sigma\left(\beta \log \frac{\pi\theta(y_w|x)}{\pi_{\mathrm{ref}}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{\mathrm{ref}}(y_l|x)}\right)\right]
$$
| 优点 | 缺点 |
|---|---|
| 无需 RM、无需 PPO 采样循环 | 需要成对偏好数据 |
| 训练稳定,TRL 原生支持 | (\beta) 需调;数据噪声敏感 |
| 与 SFT 共用 LoRA 栈 | 对「可验证」任务不如 GRPO 直接 |
数据格式(TRL):
1 | { |
关键超参:(\beta)(通常 0.1–0.5)控制偏离 (\pi_{\mathrm{ref}}) 的惩罚强度;过大则接近 SFT,过小则易遗忘通用能力。
适用:对话质量、安全性、风格、有帮助性——有明确 chosen/rejected 的场景。详见 06-01 DPOTrainer 详解。
3.3 ORPO(SFT + 对齐一步)
Odds Ratio Preference Optimization 在单次训练中同时优化 SFT loss 与偏好 odds ratio,适合尚未单独做 SFT 或希望减少训练阶段的团队。
| 优点 | 缺点 |
|---|---|
| 省一次完整 SFT 训练 | 对数据配比更敏感 |
| 小团队友好 | 极端复杂任务可能不如 SFT→DPO 两阶段 |
适用:资源有限、数据同时含标准答案与偏好对。
3.4 KTO(无配对偏好)
只需 (prompt, completion, label),label 表示好/坏,不需要每条 prompt 同时有 chosen 和 rejected。
| 优点 | 缺点 |
|---|---|
| 数据收集门槛低 | 样本效率通常低于 DPO |
| 适合隐式反馈(点赞/点踩) | 超参与权重平衡需经验 |
适用:只有单边反馈、难以构造完整偏好对。
3.5 GRPO(推理 / 代码 / 数学)
Group Relative Policy Optimization(组相对策略优化)对同一 prompt 采样一组输出,用组内相对 reward 更新策略,无需 critic 网络。DeepSeek-R1 等推理模型训练路径的代表方法之一。
| 优点 | 缺点 |
|---|---|
| reward 可自动验证(单测、答案匹配) | 需要可靠 reward 函数 |
| 适合 chain-of-thought、代码 | 采样开销大 |
| 不依赖人类偏好标注 | 错误 reward 设计会强化幻觉 |
数据形态:prompt + reward 函数(如 pass@1、数学 \boxed{} 校验)。
适用:代码生成、数学推理、格式可校验的结构化输出。评估指标见 pass@k。
四、选型决策树
1 | 已有 SFT checkpoint? |
五、与 SFTTrainer 的衔接
SFTTrainer 第九章对比了 TRL 各 Trainer:
| 阶段 | Trainer | 输出 |
|---|---|---|
| 1 | SFTTrainer |
SFT adapter / 全量 ckpt → 作 (\pi_{\mathrm{ref}}) |
| 2a | DPOTrainer |
对齐 adapter(LoRA 可续训) |
| 2b | GRPOTrainer |
推理增强 adapter |
| 2c | RewardTrainer |
RM(RLHF 中间产物) |
LoRA 对齐实践:SFT 与 DPO 可共用同一 LoraConfig 结构;DPO 阶段加载 SFT adapter 作为初始 policy,(\pi_{\mathrm{ref}}) 冻结为 SFT 权重副本。
六、评估对齐效果
| 方法 | 训练监控 | 任务验收 |
|---|---|---|
| DPO | loss、rewards/accuracies |
偏好 win rate、人工抽检、下游 EM/F1 |
| GRPO | group reward mean | pass@k、推理准确率 |
| RLHF | RM score、KL、PPO clip | 同上 + RM 校准 |
注意:对齐可能提升「主观质量」但略降某些客观 benchmark;务必保留 SFT checkpoint 以便回滚。共性局限见 评估指标导读 §五。
七、常见踩坑
| 现象 | 原因 | 对策 |
|---|---|---|
| DPO 后模型变「复读/短答」 | (\beta) 过大或 chosen 偏短 | 调低 (\beta);检查偏好数据长度分布 |
| 对齐后通用能力下降 | KL 约束不足或过度优化偏好 | 增大 (\beta);SFT 数据 mix;LoRA 而非全参 |
| GRPO reward 恒为 0 | reward 函数过严或 parse 失败 | 先验证 reward 在样本上的分布 |
| chosen/rejected 差异太小 | 标注噪声 | 过滤近似对;提高标注指南区分度 |
| ref model 与 policy 不一致 | DPO 未正确加载 SFT ckpt | 显式 ref_model= 指向 SFT 权重 |
八、小结
| 场景 | 推荐 |
|---|---|
| 通用对话对齐、有偏好对 | DPO |
| 省阶段、数据混合 | ORPO |
| 仅单边反馈 | KTO |
| 代码/数学/可验证推理 | GRPO |
| 成熟 RM + RL 平台 | RLHF (PPO) |
SFT 解决「会不会做任务」;对齐解决「做得好不好、是否符合偏好」。默认路径:LoRA SFT → DPO;可验证任务再考虑 GRPO。