第 11 章 第三部分:后训练数据工程

后训练全景——SFT/DPO/RLVR三阶段

后训练 vs 预训练本质差异(规模差1000倍/单样本价值高1000倍)、三大阶段(SFT/偏好对齐/RL)、10步流水线、5层架构、数据流转时序、三大阶段产物(SFT 100K-10M/偏好 50K-1M/RL 10K-500K)、Tulu-3标杆配方

后训练 SFT DPO RLVR Tulu-3 数据流水线

预训练教模型”说话”,后训练教模型”说人话”。

后训练数据规模差 1000 倍,但单样本价值高 1000 倍——这是后训练数据工程的根本命题。


11.1 后训练 vs 预训练:本质差异

很多人把后训练理解为”预训练的小号版本”,这是危险误解。两者在数据哲学、工程方法、评估标准上都截然不同。

11.1.1 规模与价值的”镜像关系”

维度预训练后训练
数据规模1T-15T tokens1B-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 的交叉熵。后训练的目标有三个层次:

  1. SFT(Supervised Fine-Tuning):学会”指令-响应”格式,最小化 P(response | prompt) 的负对数似然
  2. 偏好对齐(DPO/RLHF):学会”好 vs 坏”判断,最大化 log σ(β·(logπ(y_w|x)/π_ref(y_w|x) - logπ(y_l|x)/π_ref(y_l|x)))
  3. 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 三大阶段产物规模

工业级后训练三大阶段的数据规模有明确”甜点区间”:

阶段最小可用工业典型上限备注
SFT10 万100 万1000 万超过 1000 万边际收益骤降
偏好对齐5 万10 万-100 万100 万偏好数据贵,超过 100 万不划算
RL/RLVR1 万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)

数据源数量占比说明
通用对话280K30%WizardLM/Evol-Instruct 改写
数学190K20%NuminaMath/GSM8K 增强
代码140K15%Magicoder/Evol-Code
安全95K10%WildGuardMix
指令遵循95K10%IFEval-like 数据
多语言45K5%涵盖 20+ 语言
知识问答45K5%OpenOrca 子集
工具调用45K5%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 的关键工程经验

  1. SFT → DPO → RLVR 必须串联:跳过任何一步都会显著掉分
  2. DPO 数据要长度去偏:未去偏的 DPO 会让输出长度漂移 30%+
  3. RLVR 只用可验证任务:开放式任务的 RL 会 reward hacking
  4. 每一阶段都要重新评估:不能假设前阶段好就稳定

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-32024SFT→DPO→RLVR 串联
三分支并行OLMo 32025Think/Instruct/RL-Zero 三路分训
多专家蒸馏MiMo Flash v22026-016 专家 → On-Policy Distillation
工业级 MOPDNemotron 3 Ultra2026-0610+ 专家、两轮迭代
极致分训DeepSeek V42026-0410+ 领域专家
OPD 泛化OPOD2026-07OPD 框架的进一步泛化

补充: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. 质量 >> 数量:1 万精选胜过 10 万粗制(Deita 实证)
  2. 多样性是生命线:4-gram 重复率 < 40%,InsTag 覆盖率 ≥ 1000
  3. 可验证性优先:RL 阶段只做可验证任务,否则必然 hacking
  4. 闭环迭代:评测-归因-补数据-再评测,每轮 1-2 周
  5. 去污染是底线:对 20+ 评测集做 13-gram 匹配,污染率 < 0.1%

这五条原则贯穿后续 9 章。第 12 章将深入后训练数据的四大来源。