章节导航 第 11 章 / 共 20 章
后训练全景——SFT/DPO/RLVR三阶段
后训练 vs 预训练本质差异(规模差1000倍/单样本价值高1000倍)、三大阶段(SFT/偏好对齐/RL)、10步流水线、5层架构、数据流转时序、三大阶段产物(SFT 100K-10M/偏好 50K-1M/RL 10K-500K)、Tulu-3标杆配方
预训练教模型”说话”,后训练教模型”说人话”。
后训练数据规模差 1000 倍,但单样本价值高 1000 倍——这是后训练数据工程的根本命题。
11.1 后训练 vs 预训练:本质差异
很多人把后训练理解为”预训练的小号版本”,这是危险误解。两者在数据哲学、工程方法、评估标准上都截然不同。
11.1.1 规模与价值的”镜像关系”
| 维度 | 预训练 | 后训练 |
|---|---|---|
| 数据规模 | 1T-15T tokens | 1B-10B tokens(差 1000 倍) |
| 单样本价值 | ≈ 0.0001 美元 | 0.05-50 美元(差 1000 倍) |
| 数据来源 | 公开网页/书籍/代码 | 人工标注/模型合成/生产日志 |
| 数据形态 | 连续文本流 | 结构化 (prompt, response) 对 |
| 失败模式 | 多了无伤大雅 | 一条坏样本能毁一个能力 |
| 评估周期 | 数周 | 数小时到数天 |
| 算力消耗 | 千卡数月 | 数卡数天 |
理解这个 1000×1000 的镜像关系,是理解后训练所有工程决策的钥匙:
- 因为单条样本贵,所以要做严格的清洗、过滤、归因
- 因为单条样本影响大,所以要做多轮人工审核与交叉验证
- 因为规模小,所以可以用人工介入的”重数据”工程
- 因为评估周期短,所以可以快速迭代闭环
11.1.2 数据哲学的根本转向
预训练是”广撒网”——只要数据总体分布接近自然语言,个别坏样本不影响最终结果。后训练是”精养鱼”——每条数据都在塑造模型的具体行为,是行为级雕刻。
这导致一个反直觉结论:后训练数据”少即是多”。Deita 论文(2023)实证表明,1 万条精选 SFT 数据训练的模型,胜过 10 万条粗制数据训练的模型。这与预训练的”数据越多越好”截然相反。
11.1.3 训练目标的对立统一
预训练的目标是”压缩互联网”——最小化 next-token 的交叉熵。后训练的目标有三个层次:
- SFT(Supervised Fine-Tuning):学会”指令-响应”格式,最小化
P(response | prompt)的负对数似然 - 偏好对齐(DPO/RLHF):学会”好 vs 坏”判断,最大化
log σ(β·(logπ(y_w|x)/π_ref(y_w|x) - logπ(y_l|x)/π_ref(y_l|x))) - RL/RLVR:在可验证奖励上自我探索,最大化
E[reward(x,y)] - β·KL(π||π_ref)
三个目标层层递进:SFT 教格式,DPO 教品味,RL 教思考。
11.2 三大阶段:SFT / 偏好对齐 / RL
11.2.1 SFT(Supervised Fine-Tuning)
目标:让模型学会”听指令办事”,从续写机器变成对话机器人。
数据:(prompt, ideal_response) 对,loss 只在 response 部分计算(loss mask)。
规模:10 万到 1000 万条,工业级典型 100 万条量级。
关键参数:
- 学习率:1e-5 到 2e-5(比预训练小 1-2 个数量级)
- batch size:32-256(按 token 计算更稳定)
- epoch:1-3(多了过拟合)
- warmup ratio:0.03
- 学习率调度:cosine
- 最大序列长度:4096-8192(部分长 CoT 数据需要 32K)
踩坑经验:
- epoch=1 通常最好,超过 3 必然过拟合
- 学习率太大会”灾难性遗忘”预训练知识
- batch size 太小(<8)训练不稳定,loss 跳动剧烈
- 必须做 loss mask,否则模型会学会生成 prompt(错误行为)
11.2.2 偏好对齐(DPO/RLHF)
目标:教模型”好品味”,让响应更符合人类偏好。
数据:(prompt, chosen_response, rejected_response) 三元组。
规模:5 万到 100 万对,典型 10 万对量级。
关键参数(DPO 为例):
- 学习率:5e-7 到 5e-6(比 SFT 还小一个数量级)
- β(KL 系数):0.01-0.1(控制偏离参考模型的程度)
- epoch:1-2
- batch size:64-512
- reference model:冻结的 SFT 模型
踩坑经验:
- β 太大(>0.3)模型几乎不更新;β 太小(<0.001)模型会”跑偏”
- DPO 训练时 chosen 和 rejected 的长度差会导致 Length Bias,必须做长度归一化
- DPO 训完后 reward margin 应该稳定在 0.5-2.0,超过 5 要警惕 reward hacking
11.2.3 RL/RLVR(Reinforcement Learning / RL with Verifiable Rewards)
目标:让模型自我探索、长链思考,突破 DPO 的离线上限。
数据:(prompt, verifier) 二元组,verifier 是能判断响应正确性的函数。
规模:1 万到 50 万条 prompt,每个 prompt 训练时采样 N=8-64 次做 rollout。
关键参数(GRPO 为例):
- 学习率:1e-6 到 1e-5
- KL 系数 β:0.001-0.01(比 DPO 小一个数量级)
- rollout N:8-64(group size)
- 最大生成长度:8K-32K(长 CoT 必需)
- temperature:0.7-1.0(保证探索性)
- group 内归一化:z-score
踩坑经验:
- RL 极易 reward hacking,必须配 Cross-Verifier 检测
- 长输出消耗显存巨大,需要 vLLM 等推理引擎做 rollout
- 学习率太大会让模型”忘记”SFT 学到的格式,输出乱码
- 必须监控 reward 曲线,突增往往意味着 hacking
- 踩坑 5:策略熵坍缩 (Entropy Collapse) —— GRPO 训练 5-10 个 epoch 后,策略熵快速下降导致 rollout 趋同,组内 advantage 无区分度。本质是 GRPO 的优化方向天然倾向”剪枝”而非”增枝”(ACL 2026 Outstanding Paper STEER, arXiv:2510.10150)。工程缓解:从 epoch 5 起监控策略熵,下降超 50% 时降低 lr 并增大 KL 系数。
多教师蒸馏(MOPD/OPD)的工程陷阱——“泛化双重性质”(arXiv:2608.16647,2026-08-17):与 STEER 熵坍缩互补,该工作揭示了多教师蒸馏失效的机理层原因,有三重结论——(1) 蒸馏迁移的是推理行为而非答案记忆(学生学到的是”怎么想”,不是”记住答案”);(2) 同源 vs 跨源教师差异显著(跨源教师组合的迁移更不稳定);(3) 多教师蒸馏存在 “seesaw” 现象——某教师权重上升时另一教师贡献下降,导致能力此消彼长而非齐头并进。工程上这意味着:多教师蒸馏不能只看最终总分,必须按能力维度分别监控贡献占比,警惕”数学涨了代码塌了”的跷跷板效应。
11.3 后训练 10 步流水线
工业级后训练数据流水线通常包含 10 个步骤:
1. 需求定义 → 要解决什么能力(数学?代码?工具调用?)
2. 来源规划 → 人工/开源/合成/日志的比例
3. 数据采集 → 标注平台/API/合成脚本
4. 格式归一化 → 统一到 messages 结构
5. 质量过滤 → IFD/Deita/Reward-Gap
6. 去污染 → 对 20+ 评测集做 13-gram 匹配
7. 多样性筛选 → Embedding 聚类 + InsTag 覆盖率
8. 配方混合 → 任务/领域/难度三轴配比
9. 训练执行 → SFT → DPO → RLVR 串联
10. 评估闭环 → L1 自动评测 + L2 LLM-Judge + L3 人审
每一步都有”质量控制点”(QC Point),不达标不能进入下一步。例如第 5 步要求 IFD ≥ 0.3 的样本占比 ≥ 70%;第 6 步要求污染率 < 0.1%。
11.4 后训练 5 层架构
从数据视角,后训练系统可以拆为 5 层:
┌─────────────────────────────────────┐
│ L5 评估层 │ MMLU/GSM8K/IFEval/MT-Bench/τ-Bench/BFCL │
├─────────────────────────────────────┤
│ L4 训练层 │ SFT/DPO/PPO/GRPO 训练器 │
├─────────────────────────────────────┤
│ L3 配方层 │ 三轴配比/课程化/动态采样 │
├─────────────────────────────────────┤
│ L2 质量层 │ IFD/Deita/Reward-Gap/去污染/多样性 │
├─────────────────────────────────────┤
│ L1 数据层 │ 采集/格式化/存储/索引 │
└─────────────────────────────────────┘
每层都有清晰的输入输出契约:
- L1 输出:标准化
(messages, meta)列表 - L2 输出:带质量分的数据子集
- L3 输出:按配方组织好的训练数据集
- L4 输出:训练好的模型 checkpoint
- L5 输出:能力维度评分报告
这种分层让团队可以并行迭代——数据团队改 L1-L2,训练团队改 L4,研究团队改 L3。
11.5 数据流转时序
后训练数据在系统中的典型流转时序:
T+0 采集:人工标注 1K 条 / 合成 10K 条 / 拉取日志 100K 条
T+1 归一化:统一到 messages 格式,写入数据湖
T+2 过滤:跑 IFD/Deita/去污染,保留 30-50%
T+3 配方:按三轴配比混合,输出训练集
T+4 训练:SFT (1 epoch) → DPO (1 epoch) → RLVR (200 steps)
T+5 评估:自动评测 + LLM-Judge
T+6 归因:消融/TDA 找出贡献最大/最小的数据
T+7 反馈:补充数据 / 调整配方 / 进入下一轮
一轮完整迭代通常 1-2 周,Tulu-3、Llama 3 都遵循类似节奏。
11.6 三大阶段产物规模
工业级后训练三大阶段的数据规模有明确”甜点区间”:
| 阶段 | 最小可用 | 工业典型 | 上限 | 备注 |
|---|---|---|---|---|
| SFT | 10 万 | 100 万 | 1000 万 | 超过 1000 万边际收益骤降 |
| 偏好对齐 | 5 万 | 10 万-100 万 | 100 万 | 偏好数据贵,超过 100 万不划算 |
| RL/RLVR | 1 万 | 5 万-10 万 | 50 万 | prompt 池贵在精不在多 |
为什么 SFT 上限是 1000 万? Microsoft Phi 团队的实验显示,超过 1000 万条 SFT 数据后,模型在 IFEval、MMLU 上的提升进入”噪声区间”——加减 10% 数据引起的评测波动小于 ±0.5%。这说明 SFT 数据存在”能力饱和点”。
为什么偏好数据上限是 100 万? DPO 训练的本质是学习偏好方向,不是学习具体响应。100 万对足以覆盖绝大多数偏好维度,更多数据只会强化已知方向,不会引入新偏好。
为什么 RL 上限是 50 万? RL 训练时每个 prompt 要采样 8-64 次,50 万 prompt 实际产生 400 万-3200 万次 rollout,计算成本极高。超过 50 万 prompt 的边际收益被算力瓶颈吃掉。
11.7 Tulu-3 标杆配方
AllenAI 的 Tulu-3(2024)是后训练的标杆配方,开源完整数据与训练流程,是工业级后训练的最佳参考。
11.7.1 Tulu-3 三阶段串联
SFT 阶段:939K 条混合数据
↓
DPO 阶段:271K 对偏好数据
↓
RLVR 阶段:30K 可验证 prompt(数学+代码+指令遵循)
11.7.2 SFT 阶段配方(939K)
| 数据源 | 数量 | 占比 | 说明 |
|---|---|---|---|
| 通用对话 | 280K | 30% | WizardLM/Evol-Instruct 改写 |
| 数学 | 190K | 20% | NuminaMath/GSM8K 增强 |
| 代码 | 140K | 15% | Magicoder/Evol-Code |
| 安全 | 95K | 10% | WildGuardMix |
| 指令遵循 | 95K | 10% | IFEval-like 数据 |
| 多语言 | 45K | 5% | 涵盖 20+ 语言 |
| 知识问答 | 45K | 5% | OpenOrca 子集 |
| 工具调用 | 45K | 5% | xLAM/Glaive |
11.7.3 DPO 阶段配方(271K)
- Helpfulness:35%(95K)
- Honesty:15%(40K)
- Harmlessness:15%(40K)
- 推理:20%(55K)
- 长度去偏:15%(41K)
11.7.4 RLVR 阶段配方(30K)
- 数学(可验证):15K(sympy 校验)
- 代码(单测):10K(pass/fail)
- 指令遵循(规则):5K(格式检查)
11.7.5 Tulu-3 的关键工程经验
- SFT → DPO → RLVR 必须串联:跳过任何一步都会显著掉分
- DPO 数据要长度去偏:未去偏的 DPO 会让输出长度漂移 30%+
- RLVR 只用可验证任务:开放式任务的 RL 会 reward hacking
- 每一阶段都要重新评估:不能假设前阶段好就稳定
11.7.6 从 Tulu-3 到 MOPD:2026 范式转移
Tulu-3 是 2024 年最好的开源后训练配方,但 2026 年前沿实验室的实践已超越三段式串联范式。Tulu-3 作者 Nathan Lambert 在 2026 年访谈中坦言:“这个 recipe 已不再代表最前沿实验室的做法。”
新范式:Multi-Teacher On-Policy Distillation (MOPD)(arXiv:2606.30406,小米)
核心思想:训练多个单能力专家模型(数学/代码/指令遵循/翻译/创意写作等),然后通过 On-Policy Distillation 将多个专家的策略融合为一个模型。
为什么要超越三段式串联?
三段式串联存在”集成问题(Integration Problem)“:不同能力需要不同训练配方,强行串联导致能力冲突。将多个专家的参数取平均会破坏独特能力;从离线数据蒸发多个专家的知识会丢失策略探索的动态信息。
MOPD 的核心机制:On-Policy 蒸馏——主模型在训练时同步 roll out 自己的策略,多个教师模型对同一 rollout 打分,主模型向加权”能力中心”靠拢。关键洞察是蒸馏”策略偏移量”而非”静态分布”。
关键演进路线:
| 阶段 | 代表工作 | 年份 | 核心思想 |
|---|---|---|---|
| 单体三段式 | Tulu-3 | 2024 | SFT→DPO→RLVR 串联 |
| 三分支并行 | OLMo 3 | 2025 | Think/Instruct/RL-Zero 三路分训 |
| 多专家蒸馏 | MiMo Flash v2 | 2026-01 | 6 专家 → On-Policy Distillation |
| 工业级 MOPD | Nemotron 3 Ultra | 2026-06 | 10+ 专家、两轮迭代 |
| 极致分训 | DeepSeek V4 | 2026-04 | 10+ 领域专家 |
| OPD 泛化 | OPOD | 2026-07 | OPD 框架的进一步泛化 |
补充:Direct-OPD 的弱到强泛化(arXiv:2607.05394,清华 AIR + 字节跳动 Seed, 2026-07-06)
让较小的模型跑 RL 后将”策略偏移”传递给大模型,无需在大模型上运行昂贵的 RLVR。核心洞察:蒸馏”策略偏移”而非”最终策略”,避免了小模型能力上限对大模型的限制。这为算力受限的场景提供了务实的 MOPD 实现路径。
OPD 的下一战场:教师信号可靠性。上表 MOPD 演进默认了一个未言明的前提——教师信号是可信的。2026-08 的一批同期论文(Spurious-Signal-Aware 伪相关信号感知 / Weak-to-Strong 弱教师→强学生 / SAF-OPD 信号对齐过滤,据 singularitymoments.com 综述)共同指向一个被忽视的问题:教师信号本身可能被污染(伪相关性、偏差),OPD 蒸馏时会把污染一并放大。这标志着 OPD 从”范式定型”转向”教师信号可靠性”——如何在上游就过滤掉被污染的教师信号,而非在下游接收污染。
生产级后训练实证:DeepSeek-V4-Flash(据 2026-08 媒体报道)。将上述抽象叙事锚定到具体工程实践,DeepSeek-V4-Flash 采用十领域专家混合(MoE)+ 完整词表 + reverse KL 蒸馏目标 + DSec 沙箱安全机制的组合:十领域专家对应 MOPD 的专家分训,reverse KL 是蒸馏目标的具体选择,DSec 沙箱把安全约束纳入后训练流程——是”多教师蒸馏 + 专家化 + 安全约束”在工业级落地的最新锚点。
选型指南:1-2 人团队做 7B 模型 → Tulu-3 三段式 + Ch15 GRPO 配方完全够用。10+ 人团队做 70B+ 模型 → 建议按 MOPD/Nemotron 方向规划专家分训架构。
11.8 后训练数据工程的核心原则
总结后训练数据工程的 5 条核心原则:
- 质量 >> 数量:1 万精选胜过 10 万粗制(Deita 实证)
- 多样性是生命线:4-gram 重复率 < 40%,InsTag 覆盖率 ≥ 1000
- 可验证性优先:RL 阶段只做可验证任务,否则必然 hacking
- 闭环迭代:评测-归因-补数据-再评测,每轮 1-2 周
- 去污染是底线:对 20+ 评测集做 13-gram 匹配,污染率 < 0.1%
这五条原则贯穿后续 9 章。第 12 章将深入后训练数据的四大来源。