很多人把后训练理解成“拿指令数据微调一下”。 这会漏掉最重要的系统事实:后训练不是单个脚本,而是一条不断采样、标注、优化、评测、回流的数据流水线。
这篇文章先给出从 base model 到 release model 的完整图,再分别解释 SFT、偏好数据、奖励模型、在线 RL、离线偏好优化、可验证奖励和评测各自改变了什么。 它只做全景,不展开每个算法的推导;后续第 07 到第 13 篇会逐层拆开。
一、后训练是系统,不是脚本
预训练模型学到的是互联网语料上的下一个 token 分布。 它可能会续写、解释、反问,也可能拒绝按人类期望的格式回答。 后训练把这个通用分布改造成面向指令、偏好、安全和任务正确性的行为分布。
| 阶段 | 输入 | 目标 | 主要产物 |
|---|---|---|---|
| Base / pretrained | 大规模无标注语料 | 下一个 token 预测 | 通用语言与知识能力 |
| SFT | 指令与优质回答 | 模仿人类或教师答案 | 会遵循指令的初始策略 |
| Preference / RM | 同一 prompt 的回答对与偏好 | 学习人类相对偏好 | 奖励模型或偏好数据集 |
| Policy optimization | 采样回答、奖励、参考模型 | 提高偏好分数并控制 KL | RLHF/DPO/GRPO 后的策略 |
| Evaluation / release | 基准、红队、回归集 | 筛掉退化和风险 | 可发布模型与数据回流 |
flowchart LR
A[Base model] --> B[SFT 指令微调]
B --> C[采样候选回答]
C --> D[偏好标注]
D --> E[奖励模型 RM]
E --> F[RLHF / PPO / GRPO]
D --> G[DPO 等离线偏好优化]
F --> H[评测与红队]
G --> H
H --> I[发布模型]
H --> J[失败样本回流]
J --> B
J --> D
二、每个阶段到底改变什么
SFT 主要改变回答格式和指令遵循方式。 它把“看到指令后继续写任何相关文本”的预训练模型,拉到“给出一个像助手的回答”的分布上。
奖励模型改变的是训练信号。 它不直接发布给用户,而是把偏好数据压缩成一个可对任意候选回答打分的代理目标。
策略优化改变的是模型在自己采样分布上的行为。 它让模型不只模仿静态正例,而是在生成多个候选、比较优劣、更新策略的闭环中移动。
评测改变的是发布决策。 没有评测,后训练只是在优化一个局部代理目标;有评测,团队才能知道偏好提升是否以推理、安全或事实性退化为代价。
三、为什么 SFT 不够
- SFT 只看正例。它知道“应该怎么答”,但不知道同一 prompt 下哪些回答更差、差在哪里。
- SFT 的监督信号来自固定数据分布。模型上线后会遇到自己训练集中没有覆盖的采样轨迹。
- SFT 容易收窄分布。高质量指令数据能让模型更像助手,但也可能降低多样性和探索空间。
- SFT 无法直接表达相对偏好。人类更容易判断 A 比 B 好,而不是写出唯一最优答案。
- SFT 不擅长利用可验证反馈。数学、代码、工具调用这类任务常常能自动判定对错,直接模仿会浪费反馈。
四、三条优化路线的高层对比
| 路线 | 数据形态 | 是否在线采样 | 代表方法 | 后续展开 |
|---|---|---|---|---|
| 在线 RL | 当前策略生成回答并打分 | 是 | PPO、GRPO | 09、12 |
| 离线偏好优化 | 固定偏好对 | 否 | DPO、IPO、KTO、ORPO、SimPO | 10、11 |
| 可验证奖励 | 答案可自动判对错 | 通常是 | RLVR、R1 风格训练 | 13、14 |
在线 RL 的优点是能在当前策略分布上探索,缺点是采样、奖励和训练编排复杂。 DPO 类方法的优点是稳定、简单、便宜,缺点是受离线偏好数据覆盖范围限制。 RLVR 的优点是奖励更硬,缺点是任务必须可验证。
五、真实配方给出的共同结构
InstructGPT 把 SFT、奖励模型和 PPO 组合成主流 RLHF 范式。 论文报告显示,人类偏好评测中较小的 RLHF 模型可以超过更大的纯预训练模型,但这个结论依赖其任务、数据和评测设置。
Llama 2 公开报告了 SFT、奖励模型、RLHF、拒答安全数据和人工评测组成的后训练流程。 它说明开源基础模型进入聊天场景时,后训练不是附属步骤,而是产品化能力的一部分。
Tülu 3 把开放数据、SFT、偏好训练、可验证任务和评测做成可复现配方。 它的价值在于把闭源对齐流程中常被省略的数据与训练细节尽量公开。
DeepSeek-R1 报告的路线突出 RLVR 和长思维链推理。 它把“后训练用于风格对齐”的印象推进到“后训练可直接塑造推理行为”的阶段。
六、系统核对清单
1. 数据版本
- 核对点:每批 SFT、偏好、评测和红队数据都应有版本号与来源说明。
- 常见失败:训练曲线变化后无法判断来自算法还是数据。
- 观测信号:dataset hash、样本数、去重率。
- 边界条件:公开报告通常不会给出全部内部数据细节。
2. 模板一致性
- 核对点:SFT、RM、RL 和评测必须使用兼容的 chat template。
- 常见失败:训练时角色标记与推理时不同,模型学到错误边界。
- 观测信号:special token 覆盖率、模板单测。
- 边界条件:不同模型族模板不可随意互换。
3. 采样策略
- 核对点:后训练数据来自模型采样时,温度和 top-p 会改变候选分布。
- 常见失败:只用贪心采样导致偏好数据缺少有信息量的负例。
- 观测信号:temperature、候选多样性。
- 边界条件:高温样本更难标注,也更容易包含无效回答。
4. 偏好标注
- 核对点:同一 prompt 下的比较应控制候选来源、顺序偏差和标注指南。
- 常见失败:标注员把长度、礼貌或格式误当成质量。
- 观测信号:agreement、tie rate、长度分布。
- 边界条件:偏好不是绝对真理,只是目标人群的代理信号。
5. 奖励模型
- 核对点:RM 应在 held-out 偏好对和策略采样回答上监控。
- 常见失败:离线准确率高,但在线优化后被过度利用。
- 观测信号:RM accuracy、calibration、reward-KL 曲线。
- 边界条件:第 08 篇会展开过优化。
6. 参考模型
- 核对点:RLHF 通常用 SFT 模型作为 reference,约束策略不要跑太远。
- 常见失败:reference 与 policy 初始化不一致,KL 惩罚含义混乱。
- 观测信号:KL to reference、response length。
- 边界条件:DPO 也隐含 reference。
7. 评测分层
- 核对点:通用能力、指令遵循、安全、事实性、推理、代码应分开看。
- 常见失败:一个总分掩盖某类能力回退。
- 观测信号:per-category win rate、regression count。
- 边界条件:自动评测不能完全替代人工红队。
8. 发布门禁
- 核对点:模型发布需要阈值,而不是只看 reward 是否上升。
- 常见失败:reward 上升但安全拒答退化仍被发布。
- 观测信号:release checklist、rollback reason。
- 边界条件:不同产品线门禁不同。
9. 数据飞轮
- 核对点:线上失败样本应回流到 SFT、偏好或评测,而不是直接堆进训练。
- 常见失败:把脏日志加入 SFT,模型复制用户错误。
- 观测信号:case triage label、回流去向。
- 边界条件:隐私和合规约束优先。
10. 算法选择
- 核对点:PPO、DPO、GRPO、RLVR 要匹配数据和反馈形态。
- 常见失败:没有在线采样系统却强上 PPO,工程成本失控。
- 观测信号:GPU hours、sample throughput。
- 边界条件:方法名不是目标,反馈闭环才是目标。
11. 安全数据
- 核对点:安全拒答、越狱、隐私和有害内容需要单独数据与评测。
- 常见失败:通用偏好训练让模型更会迎合危险请求。
- 观测信号:refusal precision/recall、red-team pass rate。
- 边界条件:安全策略随产品和地区变化。
12. 能力保持
- 核对点:后训练不能只看聊天偏好,还要看预训练能力是否回退。
- 常见失败:模型更会聊天但数学、代码、检索下降。
- 观测信号:MMLU/GPQA/HumanEval 等外部基准。
- 边界条件:引用外部 benchmark 必须标注来源。
13. 成本模型
- 核对点:在线 RL 的主要成本常在采样和奖励计算,不只在反向传播。
- 常见失败:训练脚本快,但 rollout 队列拖慢整个实验。
- 观测信号:tokens/sec、rollout latency、RM throughput。
- 边界条件:第 17 篇会展开基础设施。
14. 可观测性
- 核对点:每阶段要记录数据、模型、奖励、KL、长度和评测版本。
- 常见失败:问题发生后只能靠猜测定位。
- 观测信号:experiment tracker、artifact lineage。
- 边界条件:日志不能泄露用户隐私。
15. 人工与自动
- 核对点:人工偏好适合开放问题,可验证奖励适合有标准答案任务。
- 常见失败:用 RM 判断数学正确性,模型学会写像正确的错解。
- 观测信号:human agreement、verifier accuracy。
- 边界条件:RLVR 不是所有任务的万能答案。
七、如何阅读后续篇章
第 07 篇讲 SFT,把指令数据、模板、loss mask 和过拟合控制讲清楚。 第 08 篇讲奖励模型,从 Bradley-Terry 偏好损失讲到 Goodhart 和奖励黑客。 第 09 篇把 RM、PPO、reference KL 串成 RLHF 全链路。
第 10 和第 11 篇讨论 DPO 与免 RL 对齐路线。 第 12 篇讨论 GRPO 为什么能去掉 critic。 第 13 篇讨论 RLVR 如何用可验证奖励训练推理能力。
八、阶段交接清单
1. 阶段边界
- 观察:确认 SFT、RM、RL、评测各自输入输出。
- 风险:把一个阶段失败归咎于另一个阶段。
- 处置:为每个阶段保存模型和数据 artifact。
2. 数据回流
- 观察:失败样本先分类再进入 SFT、偏好或评测。
- 风险:线上噪声直接污染训练集。
- 处置:建立 triage 标签和审核流程。
3. SFT 覆盖
- 观察:检查任务、语言、长度、工具使用和安全样本覆盖。
- 风险:后续 RL 被迫学习基础格式。
- 处置:补 SFT 数据而不是盲目加 PPO 步数。
4. 偏好覆盖
- 观察:偏好对要覆盖模型真实会生成的候选。
- 风险:RM 在上线分布上失效。
- 处置:用当前策略定期采样新候选。
5. DPO 适用性
- 观察:确认有高质量离线偏好数据。
- 风险:数据覆盖不足时离线优化只会放大偏差。
- 处置:先做偏好数据审计,再决定 DPO。
6. RLVR 适用性
- 观察:确认任务有可靠 verifier。
- 风险:用模糊 RM 判定可验证任务,错解被奖励。
- 处置:把自动判题和人审分层。
7. 安全门禁
- 观察:分开看拒答正确性和有用替代建议。
- 风险:安全模型变成过度拒答模型。
- 处置:维护安全正反样本集。
8. 能力保持
- 观察:后训练后跑核心预训练能力回归。
- 风险:聊天分数上升但基础能力下降。
- 处置:把回归失败写入 release blocker。
9. 模板版本
- 观察:所有阶段记录 chat template hash。
- 风险:RM 和 policy 看到不同角色标记。
- 处置:模板升级必须重跑小规模 sanity check。
10. 评测盲区
- 观察:自动评测难覆盖事实性和越狱。
- 风险:代理评测被模型风格骗过。
- 处置:组合人工评审、红队和任务基准。
11. 成本预算
- 观察:拆分采样、打分、训练和评测成本。
- 风险:只优化训练 step,整体实验仍慢。
- 处置:以 end-to-end iteration time 管理项目。
12. 发布回滚
- 观察:保留上一版模型和完整配置。
- 风险:线上退化后无法快速回退。
- 处置:发布前演练 rollback。
13. 人评一致性
- 观察:看标注员之间是否能稳定判断。
- 风险:偏好标签噪声大到无法训练。
- 处置:修订指南或引入 tie/uncertain 标签。
14. 多目标冲突
- 观察:helpfulness、harmlessness、honesty 不总一致。
- 风险:模型学会用拒答逃避有用性。
- 处置:分目标评测并显式设权重。
15. 开放报告阅读
- 观察:把论文结果放回数据和评测设置中理解。
- 风险:把某模型配方当成普适结论。
- 处置:只引用论文明确报告的结论。
16. 工具调用数据
- 观察:工具轨迹要区分 assistant action 和 tool result。
- 风险:模型把工具输出当成自己语言。
- 处置:模板中固定 tool role。
17. 长上下文
- 观察:后训练数据长度应覆盖产品上下文长度。
- 风险:模型短对话好,长对话漂移。
- 处置:按长度桶评测。
18. 多语言
- 观察:中文、英文和混合代码场景分开看。
- 风险:英文偏好数据塑造中文回答风格。
- 处置:维护语言标签和分语言指标。
19. 去重污染
- 观察:评测题进入训练会虚高。
- 风险:发布后真实能力低于报告。
- 处置:做近重复扫描。
20. 持续监控
- 观察:上线后收集失败类别而不是只收集点赞。
- 风险:高频问题长期重复出现。
- 处置:把监控映射到数据飞轮。
21. 奖励版本
- 观察:每次 RL 或 DPO 运行都绑定 RM 或偏好数据版本。
- 风险:结果变化无法复现。
- 处置:把 reward artifact 写入配置。
22. 候选池更新
- 观察:偏好候选定期来自新策略。
- 风险:数据只覆盖旧模型错误。
- 处置:按策略版本分层采样。
23. 标注预算
- 观察:优先标注高不确定性和高影响类别。
- 风险:预算花在容易样本上。
- 处置:用主动学习或 disagreement 排序。
24. 拒答边界
- 观察:单独评估应答、拒答和安全改写。
- 风险:模型把合规请求误拒。
- 处置:维护边界案例集。
25. 产品提示词
- 观察:系统提示和开发者提示进入评测。
- 风险:离线好模型上线后行为变了。
- 处置:用真实部署 prompt 做回归。
26. 多模型比较
- 观察:同一评测下比较 base、SFT、RL 和候选模型。
- 风险:不知道哪个阶段引入退化。
- 处置:保留 stage-by-stage scoreboard。
27. 数据许可证
- 观察:训练前确认每个数据源可用于目标用途。
- 风险:后续无法公开或商用。
- 处置:把许可证纳入 dataset card。
28. 隐私过滤
- 观察:线上回流数据先做脱敏和权限检查。
- 风险:敏感信息进入训练集。
- 处置:在数据飞轮前设置合规门。
29. 失败分类
- 观察:把失败分为事实、格式、安全、推理、工具等。
- 风险:所有问题都被粗暴加数据处理。
- 处置:按类别选择 SFT/RM/RLVR。
30. 灰度发布
- 观察:先小流量观察真实用户分布。
- 风险:离线评测漏掉线上长尾。
- 处置:设置自动回滚指标。
31. 文档记录
- 观察:记录每次发布的训练配方和已知限制。
- 风险:团队无法解释模型行为。
- 处置:写 model card 和 release note。
32. 跨篇衔接
- 观察:把本篇全景映射到 07 到 13 的具体算法。
- 风险:读者把方法孤立理解。
- 处置:在每次选型时先定位反馈类型。
九、参考资料
- Long Ouyang et al. “Training language models to follow instructions with human feedback”. NeurIPS 2022.
- Hugo Touvron et al. “Llama 2: Open Foundation and Fine-Tuned Chat Models”. arXiv 2023.
- Nathan Lambert et al. “Tülu 3: Pushing Frontiers in Open Language Model Post-Training”. arXiv 2024.
- DeepSeek-AI. “DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning”. arXiv 2025.
- Rafael Rafailov et al. “Direct Preference Optimization: Your Language Model is Secretly a Reward Model”. NeurIPS 2023.
← 上一篇:05|PPO 深度解剖 | 下一篇:07|监督微调(SFT) →
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
强化学习与大模型后训练
从 MDP、策略梯度、PPO 等强化学习最小必要集出发,系统讲清现代大模型后训练:SFT、奖励模型、RLHF,到 DPO/IPO/KTO/ORPO/SimPO 免 RL 对齐、GRPO,再到 RLVR 可验证奖励、推理模型(o1/R1 范式)、过程奖励、奖励黑客、RL 训练基础设施与评测。全 20 篇深度博客。
【强化学习与大模型后训练】01|系列总览:从 RL 到 LLM 后训练的地图
把强化学习到大模型后训练的主线压成一张可阅读地图,区分风格对齐与能力激发,并说明 20 篇文章的依赖关系。
【强化学习与大模型后训练】08|奖励模型:偏好数据、Bradley-Terry 与奖励黑客
从成对偏好数据和 Bradley-Terry 损失解释奖励模型训练,再讨论校准、集成、过优化与奖励黑客。
【强化学习与大模型后训练】09|RLHF 全链路:用 PPO 对齐语言模型
从 SFT 初始化、奖励模型、参考策略 KL 到 PPO 更新,串起 RLHF 的四模型训练闭环,并解释稳定性与工程成本。