章节导航 第 16 章 / 共 30 章
后训练总览:从 SFT 到 RL
后训练数据全链路:SFT→偏好→RLVR 的演进与数据在每阶段的作用。
预训练教模型”说话”,后训练教模型”说人话”。
后训练数据规模差 1000 倍,但单样本价值高 1000 倍——这是后训练数据工程的根本命题。
“Almost all knowledge in large language models is learned during pretraining, and only limited instruction tuning data is necessary to teach models to produce high quality output.” ——LIMA (Zhou et al., 2023)
这句话深刻地改变了我们对 SFT 的认知,也为整个后训练阶段定下了理论基调:后训练不是”再教一遍知识”,而是唤醒、组织并校准预训练已经习得的能力。
本章是”后训练数据工程”一篇的总纲。我们先厘清后训练与预训练的本质差异(16.1),再深入 SFT 的理论基础——表面对齐假说及其修正、SFT 学到什么与不学到什么(16.2),然后进入工程全景:三大训练阶段(16.3)、SFT 数据的分类学与规模决策(16.4)、10 步流水线(16.5)、5 层架构(16.6)、数据流转时序(16.7)、三大阶段产物规模(16.8)、Tulu-3 标杆配方与 2026 范式演进(16.9),最后归纳后训练数据工程的核心原则(16.10)。理论与实践在本章中反复互证:理论告诉我们”为什么这样设计数据”,工程告诉我们”数据实际怎么流动”。
16.1 后训练 vs 预训练:本质差异
很多人把后训练理解为”预训练的小号版本”,这是危险误解。两者在数据哲学、工程方法、评估标准上都截然不同。
16.1.1 规模与价值的”镜像关系”
| 维度 | 预训练 | 后训练 |
|---|---|---|
| 数据规模 | 1T-15T tokens | 1B-10B tokens(差 1000 倍) |
| 单样本价值 | ≈ 0.0001 美元 | 0.05-50 美元(差 1000 倍) |
| 数据来源 | 公开网页/书籍/代码 | 人工标注/模型合成/生产日志 |
| 数据形态 | 连续文本流 | 结构化 (prompt, response) 对 |
| 失败模式 | 多了无伤大雅 | 一条坏样本能毁一个能力 |
| 评估周期 | 数周 | 数小时到数天 |
| 算力消耗 | 千卡数月 | 数卡数天 |
理解这个 1000×1000 的镜像关系,是理解后训练所有工程决策的钥匙:
- 因为单条样本贵,所以要做严格的清洗、过滤、归因
- 因为单条样本影响大,所以要做多轮人工审核与交叉验证
- 因为规模小,所以可以用人工介入的”重数据”工程
- 因为评估周期短,所以可以快速迭代闭环
这个镜像关系也解释了为什么后训练阶段的理论研究如此活跃:当每条数据的价值被放大 1000 倍时,“选哪些数据、怎么加权、用什么损失”这些在预训练中可以忽略的细节,在后训练中变成了决定成败的一等公民。后文 16.2 节的 SFT 理论(DFT、QQQ-target、CADFT)本质上都是在回答”如何让每一条昂贵的数据发挥最大价值”。
16.1.2 数据哲学的根本转向
预训练是”广撒网”——只要数据总体分布接近自然语言,个别坏样本不影响最终结果。后训练是”精养鱼”——每条数据都在塑造模型的具体行为,是行为级雕刻。
这导致一个反直觉结论:后训练数据”少即是多”。Deita 论文(2023)实证表明,1 万条精选 SFT 数据训练的模型,胜过 10 万条粗制数据训练的模型。这与预训练的”数据越多越好”截然相反。
同样的结论在 LIMA 的实验中体现得更为极端(详见 16.2.1):1000 条精选数据在 65B 模型上就能逼近 GPT-4 的对话质量,而 52000 条中等质量合成数据(Alpaca)反而明显不如它。质量对数量的碾压性优势,是后训练数据工程区别于预训练数据工程的第一性原理。
16.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 教思考。
16.2 理论基础:SFT 的本质
在进入后训练的工程全景之前,必须先回答一个理论问题:SFT 到底改变了模型的什么?这个问题的答案直接决定了 SFT 数据应该怎么造、造多少、怎么选。本节从 LIMA 的表面对齐假说出发,沿着 2023-2026 年的理论演进,逐步揭示 SFT 的本质、能力边界与数学根因。
16.2.1 LIMA 的启示:Less is More
2023 年,Meta 的研究者用 LIMA 模型向世界展示了一个惊人的结果:仅用 1000 条精心挑选的指令-回复对,在 65B 参数的 LLaMA 上做 SFT,就能得到接近 GPT-4 水平的对话质量。
LIMA 的实验对比了多种方案:
| 方案 | SFT 数据量 | 数据质量 | 效果 |
|---|---|---|---|
| LIMA | 1,000 条 | 极高(人工精选) | 接近 GPT-4 |
| Alpaca | 52,000 条 | 中等(GPT-3.5 合成) | 明显不如 LIMA |
| 无 SFT | 0 条 | - | 基座模型,无法正常对话 |
这个对比揭示了一个核心原则:在 SFT 阶段,数据的质量比数量重要得多。 一条高质量的样本胜过一千条平庸的样本。
16.2.2 表面对齐假说的深层含义
LIMA 结果背后的理论解释被称为”表面对齐假说”(Superficial Alignment Hypothesis):
模型的知识和能力几乎全部在预训练阶段学习。SFT 的作用只是教模型以正确的格式和风格来”展示”这些已有的知识。
用一个类比:
- 预训练 = 一个人读了十年书,知识渊博但不善表达
- SFT = 教这个人”如何在面试中展示自己”——回答要结构清晰、有条理、有礼貌
- 关键洞察:SFT 不是在教新知识,而是在教”包装”已有的知识
16.2.3 假说的量化与边界:从”教格式”到”信息压缩”
LIMA 的结论在简单任务上经受住了检验,但后续研究揭示了它的边界条件。
2024 年,Scale AI 的研究团队对 Llama-3、Mistral、Llama-2 多个模型家族进行了系统实验(Revisiting the Superficial Alignment Hypothesis),发现了两个重要现象:
- 后训练性能与数据量呈幂律缩放——在数学推理和多跳推理任务上,少量 SFT 样本只能实现风格对齐,远未达到性能饱和。
- 模型可通过后训练整合新知识——在多跳问答场景中,SFT 不仅调整了输出格式,还帮助模型组合了预训练中零散存储的事实。
2026 年初,Operationalising the Superficial Alignment Hypothesis via Task Complexity 提出了信息论视角的量化框架:用”达成目标性能所需最短程序长度”来度量任务复杂度。预训练将这个复杂度从 GB 级降到了 KB 级——SFT 的本质是信息论意义上的高效压缩,而非简单的格式教学。在数学推理(MATH/AMC)、机器翻译(WMT’22)、指令遵循(AlpacaEval)三大任务上,这个 GB→KB 框架都得到了验证。
修正后的认知是:表面对齐假说在简单指令遵循和格式对齐上成立,但在复杂推理和知识密集型任务上是过度简化。 把 LIMA 的结论当作绝对真理来指导工程实践会导致对 SFT 数据投入的系统性低估。这条修正与 16.8 节”SFT 数据甜点区间”的工程实证相互印证——工业级 SFT 数据量之所以在 10 万到 1000 万条之间,正是因为复杂能力(数学、代码、推理)的习得远非 1000 条精选数据所能覆盖。
16.2.4 认知演变链:从 InstructGPT 到 2026
SFT 数据的认知经历了多次反转与修正,理解这条演变链可以避免用过时的教条指导今天的实践:
SFT 数据的认知演变
- 2022:InstructGPT 时代——“人工标注是金标准,13K 条人工数据 + RLHF”
- 2023.3:Self-Instruct / Alpaca——“原来可以用 GPT 来合成 SFT 数据!52K 条就行”
- 2023.5:LIMA——“等等,1000 条精选数据就够了?质量>>数量”
- 2023-2024:Phi 系列——“精心构造的合成数据可以非常强大”
- 2024:Llama 3 / Qwen 2.5——“工业实践中用数万到数十万条 SFT 数据”
- 2024.10:Scale AI Revisiting SAH——“后训练有幂律缩放,表面对齐假说是过度简化”
- 2025.01:ICML SFT Memorizes, RL Generalizes——“SFT 重定位为 RL 的格式稳定前置”
- 2025-2026:多阶段 SFT 成为主流——“不同阶段需要不同类型和难度的数据”
- 2026.02:任务复杂度框架——“SAH 量化为 GB→KB 信息压缩”
- 2026.04:推理 SFT 泛化三条件——“不是不能泛化,是条件苛刻”
16.2.5 SFT 教的是格式与风格,不是知识
这是理解 SFT 的最关键认知。
基座模型(预训练后)的行为:
User: "什么是光合作用?"
Model: "光合作用是植物利用光能将二氧化碳和水"
"转化为有机物和氧气的过程光合作用的化学"
"方程式为6CO2+6H2O→C6H12O6+6O2光合作用"
"在叶绿体中进行主要分为光反应和暗反应..."
→ 模型知道答案,但输出是一团糟——没有分段、没有标点、
没有结构化的解释,像是在"背诵"而不是"回答"。
SFT 后的行为:
User: "什么是光合作用?"
Model: "光合作用是植物利用光能将无机物转化为有机物的过程。
## 基本原理
植物通过叶绿体中的叶绿素吸收光能...
## 化学方程式
6CO₂ + 6H₂O → C₆H₁₂O₆ + 6O₂
## 两个阶段
1. **光反应**:在类囊体膜上进行...
2. **暗反应(Calvin 循环)**:在基质中进行..."
→ 同样的知识,但以清晰、结构化、用户友好的方式呈现。
16.2.6 SFT 激活预训练知识的四种机制
SFT 的作用可以理解为在模型的”知识空间”和”输出空间”之间建立了一个映射:
- 格式映射:学习”用户提问 → 结构化回答”的模式
- 风格校准:学习”用什么语气、什么详细度来回答”
- 安全边界:学习”哪些问题应该拒绝、如何拒绝”
- 角色设定:学习”我是一个助手,我应该如何行为”
其中安全边界的机制值得深入理解。ICLR 2026 的研究 Superficial Safety Alignment Hypothesis (SSAH) 将表面对齐假说扩展到安全维度,揭示了一个精巧的机制:安全对齐本质上教的是模型在”执行请求”和”拒绝请求”两个推理方向之间做选择。研究发现安全的最小功能单元在神经元级别——少量关键神经元即可控制模型的安全行为。这意味着安全对齐不需要海量数据,但需要精准覆盖。同时,这也解释了安全对齐的脆弱性:既然只有少量神经元在控制,几步恶意微调就可能绕过它。
16.2.7 SFT 的能力影响边界
SFT 有其能力边界——有些事情它能做到,有些做不到,还有些取决于条件:
| 维度 | SFT 的影响 | 条件/注释 |
|---|---|---|
| 回答格式(markdown、代码块) | ✅ 能做到 | 少量高质量数据即可 |
| 回答风格(正式/幽默/简洁) | ✅ 能做到 | 几百条样本通常足够 |
| 对话轮次意识 | ✅ 能做到 | 需要多轮对话样本 |
| 安全边界和拒答规则 | ✅ 能做到 | 关键神经元的方向选择(见 16.2.6) |
| 工具使用格式 | ✅ 能做到 | 需覆盖各工具类型的调用样本 |
| 数学推理能力提升 | ⚠️ 有条件 | 需要验证过的长 CoT 数据 + 强基座 + 充分训练(2026.04 最新结论) |
| 整合新知识领域 | ⚠️ 有条件 | 少量 SFT 效果有限,大规模高质量后训练可整合(Scale AI, 2024) |
| 缓解通用能力损失 | ⚠️ 可管理 | 通过学习率调整和 Token-Adaptive Loss Reweighting 可实现领域收益与通用能力的平衡(TALR, ICLR 2026) |
| 基础语言理解能力 | ❌ 做不到 | 需预训练阶段解决 |
| 修复预训练知识错误 | ❌ 做不到 | 需回到中训练/预训练 |
| 从根本上消除幻觉 | ❌ 做不到 | 结构性问题,非 SFT 能解决 |
注意这张表的”⚠️ 有条件”一栏在不断变长——SFT 能力边界不是二元的,很多过去的”做不到”在新条件下变成了”有条件地做到”。这提醒我们:对 SFT 边界的认识本身就是快速演进的对象。
16.2.8 角色演变:SFT 记忆,RL 泛化
在 2023-2024 年的认知中,SFT 是后训练的”最终步骤”——做完 SFT 就上线。但 2025 年以来,随着 RL(强化学习)在推理能力上的突破,SFT 的角色发生了根本性转变。
ICML 2025 的研究 SFT Memorizes, RL Generalizes 通过系统实验揭示了一个清晰的分工:
- SFT 倾向记忆训练数据——在训练分布内表现良好,但在分布外(未见过的变体)泛化困难
- RL(尤其是基于结果的 RL)擅长泛化——可以有效迁移到训练中未出现的问题变体
- 但 SFT 对 RL 不可或缺——SFT 稳定了输出格式和推理模板,使后续 RL 的探索有了正确的起点
这个分工正好解释了 16.3 节和 16.9 节的三阶段串联设计:为什么 SFT → 偏好对齐 → RL 必须依次执行,为什么跳过 SFT 直接 RL 会导致输出乱码——RL 的探索需要 SFT 提供稳定的格式与推理模板作为起点。
新的定位是:SFT 不是终点,而是从预训练到 RL 的关键桥梁。 它提供格式稳定性和初始推理模板,为后续 RL 阶段的能力放大创造必要条件。
同一结论在蒸馏场景的独立复现:这条”桥梁”定位通常只在 SFT→RL 的方向上被论证。2026-10 的一项工作(arXiv:2610.03185)在完全独立的场景——On-Policy Distillation——里得到了同一个结论:OPD 训练会崩溃为过长、重复的输出,而从 SFT 初始化出发与 mask 不健康响应各自都能修复崩溃(详见 16.3.3 踩坑 6)。
值得把这件事记下来:SFT 初始化在这里起作用的机制与 RL 场景并不相同——RL 场景要的是”格式与探索起点”,蒸馏场景要的是”学生初始策略与教师偏好的对齐程度”。两个不同的理由指向同一个工程动作,这意味着”SFT 不能省”是一条比单一论证更强的结论。
16.2.9 DFT:SFT 倾向记忆的数学根因
为什么 SFT 倾向记忆而非泛化?DFT(Distribution-Forcing Training)从数学根因上给出了精确解释。标准 SFT 的交叉熵损失梯度隐式编码了一个逆概率加权的奖励结构——梯度与 1/π_θ(y_t*) 成正比:
这意味着:模型当前概率越低的 token,梯度信号越强。 在推理任务中,那些”不太确定但偶然正确”的低概率 token 会获得巨大的梯度惩罚,迫使模型死记硬背而非灵活迁移。这正是 SFT 泛化受限的数学根源。
DFT 的解法极为优雅——只需对标准 SFT 损失做一行代码的修改,用 token 概率对梯度加权(stop-gradient 阻断梯度回传),消除逆概率加权:
其中 sg(·) 表示 stop-gradient 操作。效果是:低概率 token 的梯度被自动抑制,模型不再被强迫记忆”难样本”,转而关注已具备基础能力的模式,从而释放泛化潜力。
这里有一个精彩的哲学反转:在欠拟合时代,Focal Loss 的核心思想是”强调难样本”——模型还没学好,需要更多关注困难案例;而在 LLM 过拟合时代,DFT 的智慧恰恰相反——“弱化难样本”——模型已经足够强,过度关注低概率 token 反而造成记忆锁定。从 Focal Loss 到 DFT,是对”难样本”态度的根本性翻转,映射了从欠拟合到过拟合的时代变迁。
DFT 严格数学形式(深化版)
Wu/Zhou et al. (ICLR 2026) 给出了 SFT 梯度变身后的完整形式——通过重要性采样的精确推导:
其中两个关键量:
-
隐式奖励 = 指示函数 :
- 只有当生成与标准答案一字不差时奖励为 1
- 否则为 0
- 隐式奖励极其稀疏——这是 SFT 缺陷的根源之一
-
重要性权重 :
- 当 极低时(模型认为”困难”),倒数变得极大
- 导致梯度爆炸——这是 SFT 的第二个根本缺陷
病态重要性权重的具体数值示例:
当模型对正确专家答案的概率变化时,重要性权重的数值表现:
π_θ(y*|x) = 0.99 → w = 1/0.99 = 1.01 (梯度信号正常)
π_θ(y*|x) = 0.5 → w = 1/0.5 = 2.00 (梯度信号加倍)
π_θ(y*|x) = 0.1 → w = 1/0.1 = 10.0 (梯度信号放大 10 倍)
π_θ(y*|x) = 0.01 → w = 1/0.01 = 100.0 (梯度爆炸!单样本主导整批)
π_θ(y*|x) = 0.001 → w = 1/0.001 = 1000.0 (数值不稳定,训练崩溃)
这意味着:在常规 SFT 中,少数模型认为”困难”的样本会主导整个 batch 的梯度方向。这些困难样本可能仅占 1% 的数据量,但其梯度信号可能占整批的 90% 以上——导致模型被少数”难样本”拽偏,死记硬背这些样本而非学到通用模式。
DFT 一行代码的物理意义:
- 标准 SFT 损失对 的梯度贡献:(病态放大)
- DFT 通过 (stop-gradient)反向抵消这个
- 效果:每个 token 的梯度贡献与 解耦——不再有”低概率 token 梯度爆炸”现象
- 数学等价:低概率 token 的损失被下加权(down-weight),高概率 token 的损失被保持
DFT 与 Focal Loss 的精确对比:
| 维度 | Focal Loss | DFT |
|---|---|---|
| 时代背景 | 欠拟合(CV 时代) | 过拟合(LLM 时代) |
| 难样本处理 | 上加权难例 | 下加权难例 |
| 权重公式 | ||
| 目标 | 让模型更关注没学好的样本 | 防止模型死记硬背已学好的样本 |
| 应用领域 | 目标检测、医学影像 | LLM SFT / 推理训练 |
| 梯度稳定性 | 中等(γ 控制) | 高(直接消除病态权重) |
DFT 在 offline RL 设定下的优势:
Wu et al. 的实验还表明,在数学推理任务上 DFT outperforms DPO 且接近 online RL methods:
- 不需要偏好对(vs DPO)
- 不需要奖励模型(vs PPO)
- 不需要参考模型正则化(vs DPO)
- 提供”resource-efficient”的更简化 offline RL 替代方案
对 SFT 缺陷理论的完整总结:
SFT 的两个根缺陷(深化版):
缺陷 1:隐式奖励极其稀疏
└── 只有生成与标准答案一字不差时才"有奖励"
└── 实际中:模型生成的合理但不同的回答 → 零奖励
└── 后果:模型无法区分"接近正确答案"和"完全错误"
└── DFT 部分缓解:通过 token 概率加权让部分正确回答有梯度
缺陷 2:病态重要性权重
└── 1/π_θ(y*|x) 在低概率时爆炸
└── 实际中:少数"难样本"主导整批梯度
└── 后果:模型死记硬背难样本而非学通用模式
└── DFT 完全消除:token 概率解耦,梯度贡献均匀化
16.2.10 推理 SFT 泛化的三个条件与深层机制
2026 年 4 月的最新研究 Rethinking Generalization in Reasoning SFT(上海 AI Lab)对”SFT 只记忆不泛化”的简单叙事做了重要修正。推理 SFT 的泛化是有条件的,需要同时满足三个条件:
- 充分的训练时间——存在”先抑后扬”模式,早期检查点会低估泛化能力
- 高质量、经过验证的长 CoT 数据——短回答或未经验证的 CoT 反而有害
- 强基座模型——弱模型只会模仿冗长的推理形式,强模型才能内化回溯、验证等可迁移的推理模式
这项研究进一步揭示了泛化背后的深层机制,提供了比”三个条件”更精细的分析框架:
Dip-and-Recovery 动力学。推理 SFT 的训练过程中存在一个关键的性能下降-恢复(Dip-and-Recovery)模式:在训练早期,模型在训练分布上的性能快速提升,但在分布外会出现显著的性能下降(Dip);随着训练继续,分布外性能逐渐恢复并超越基线(Recovery)。这意味着——如果只看早期检查点就得出”SFT 不泛化”的结论,是对训练动力学的误读。 研究者还发现,回复长度的变化是这一动力学的有效诊断指标:Dip 阶段回复异常缩短,Recovery 阶段回复长度趋于稳定。
程序化泛化(Procedural Patterns)而非领域知识驱动。跨域迁移的真正载体不是领域特定的知识,而是可复用的推理程序——如分步分解、自我验证、假设-反驳循环。实验证据:在数学推理上训练的模型可以泛化到逻辑推理和代码调试,但不能泛化到与其推理程序无关的领域。这为数据选择提供了明确指导:应该优先选择能训练出强推理程序的数据,而非覆盖更多领域知识的数据。
重复曝光优于单次遍历。在同等数据量下,对高质量 CoT 数据进行多次重复训练(repeat exposure),其泛化效果显著优于单次遍历更多不同数据。这与”数据去重”的常见实践形成张力——对于推理 SFT,关键数据的重复曝光比数据多样性更重要。实操建议:对核心推理模式数据,3-5 次重复曝光是合理的。
工程张力提示:这里存在一个值得注意的实践张力——通用 SFT 的经验是”epoch=1 通常最好,超过 3 必然过拟合”(见 16.3.1),而推理 SFT 研究却建议对核心推理数据做 3-5 次重复曝光。两者并不矛盾:前者针对的是通用对话数据的全量多轮遍历,后者针对的是精选推理模式数据的有意重复。落地做法是把推理数据单独分组并控制其重复次数,而不是对整个数据集统一跑多个 epoch。
非对称泛化警告:推理提升伴随安全退化。研究发现推理能力的泛化和安全对齐的保持之间存在系统性张力——推理 SFT 提升跨域推理的同时,模型的安全拒答率会不可忽略地下降。这种非对称泛化意味着:推理 SFT 的评估不能只看推理指标,必须同时监控安全退化。 在工程实践中,推理 SFT 后通常需要一轮安全修复 SFT 来恢复安全边界。
16.2.11 理论统一视角:从 LIMA 到 CADFT
2026 年上半年的几项工作将 SFT 理论推向了统一。Qian Liu 等人在 A Primer in Post-Training Reasoning Data 综述中提出的四维度框架(可验证/可解释/可监督/可扩展)为后训练数据建立了系统分类。在此基础上,2026 年 6 月两篇论文将 SFT 理论分别从”损失函数选择”和”token 级修正”推向了更基础的理论层面。
QQQ-target:SFT 的目标分布统一框架
UCLA 的 Xie et al. 在 QQQ-target(arXiv:2606.11189, 2026-06-09)中提出了一个根本性的视角转换:SFT 的本质不是损失函数选择,而是目标分布设计。
其核心是一个看似简单的分解——将 SFT 的目标分布 分解为两个正交维度:
其中:
- :在多大程度上信任观测 token(由模型自身不确定度决定)——控制”教什么”
- :剩余概率质量如何分配给备选 token——控制”怎么分配剩余信任”
理论威力:该框架统一了大量已有的 SFT 变体——DFT、label smoothing、token 级重加权、正则化方法——都可以解释为 目标分布的不同隐式选择。DFT 可理解为 的特例,即”信任程度 = 模型对观测 token 的当前概率”。
关键实验结论:Target-SFT(显式构建 目标分布)在 10 个推理基准上一致性优于 DFT 和标准 SFT。这验证了”损失只是优化的代理,目标分布才是 SFT 的一等公民”这一核心洞察。
从 Token 到 Sample:CADFT 的样本级方差控制
DFT 解决的是 token 级梯度偏差问题——同一序列中,模型对某些 token 的过强自信导致不合理的梯度加权。但澳门大学 Zhou et al. 在 ACL 2026 的 CADFT(arXiv:2606.11206)指出 DFT 的一个隐含假设缺陷:假设所有演示都是同等合适的学习目标——这与大规模指令数据的强异质性矛盾。
CADFT 的两项核心贡献:
- 样本级兼容性信号:使用模型自身似然度计算每条 SFT 样本的动态兼容性评分——对”适合当前模型学习”的样本赋高权重,反之赋低权重。这是方差控制估计器的思想:降低不兼容样本的梯度方差贡献。
- 延迟兼容性引导重写:对持续不兼容的演示,用 nucleus sampling 重新生成可学习目标——不是丢弃数据,而是改写为模型当前可吸收的形式。类似人类学习中”换个说法再讲一遍”。
实验表明 CADFT 在数学推理、代码生成、多模态推理上超越 DFT,且提供更强的 RL 冷启动初始化——因为 RL 阶段的初始策略已经过样本级方差控制,降低早期训练不稳定性。这一点与 16.2.8 的”SFT 是 RL 的桥梁”定位形成闭环:好的 SFT 不仅是格式稳定器,还是 RL 阶段训练稳定性的直接来源。
理论脉络:从 LIMA 到 CADFT 的演进
LIMA (2023):SFT 是表面对齐——"教格式"而非"教知识"
↓
DFT (ICLR 2026):token 级梯度修正——消除 SFT 隐式重要性权重
↓
QQQ-target (2026-06):目标分布统一——DFT 只是 Q 的一种特例
↓
CADFT (ACL 2026):样本级方差控制——从 token 到 sample 的梯度校正
这条演进脉络展示了一个清晰的认知深化:SFT 理论正在从”做什么”(LIMA)→ “怎么做”(DFT)→ “为什么这样做”(QQQ-target)→ “如何做得更好”(CADFT)逐层推进。核心洞察从”少即是多”收敛到”目标分布 > 损失函数 > 数据数量”。
反直觉发现
很多团队在模型”不知道某个知识”时,会尝试通过在 SFT 数据中加入相关知识来”补救”。这通常效果很差——因为几百条 SFT 样本无法与万亿 token 的预训练竞争。如果模型缺知识,应该回到中训练或预训练去补。SFT 只负责”展示”。 但需要注意:这个”展示”比早期想象的更复杂——在满足高质量 CoT 数据 + 强基座 + 充分训练的条件下,SFT 可以激发超出简单格式对齐的推理泛化能力。
16.3 三大阶段:SFT / 偏好对齐 / RL
理论基础就位后,现在进入工程全景。工业级后训练通常按三大阶段串联执行,每个阶段有不同的目标、数据形态、参数区间和踩坑模式。
16.3.1 SFT(Supervised Fine-Tuning)
目标:让模型学会”听指令办事”,从续写机器变成对话机器人。结合 16.2 的理论定位:SFT 在教格式与风格的同时,为后续阶段提供稳定的推理模板与探索起点。
数据:(prompt, ideal_response) 对,loss 只在 response 部分计算(loss mask)。
规模:10 万到 1000 万条,工业级典型 100 万条量级。规模决策的详细方法学见 16.4。
关键参数:
- 学习率:1e-5 到 2e-5(比预训练小 1-2 个数量级)
- batch size:32-256(按 token 计算更稳定)
- epoch:1-3(多了过拟合;推理数据的重复曝光策略见 16.2.10 的张力提示)
- warmup ratio:0.03
- 学习率调度:cosine
- 最大序列长度:4096-8192(部分长 CoT 数据需要 32K)
踩坑经验:
- epoch=1 通常最好,超过 3 必然过拟合
- 学习率太大会”灾难性遗忘”预训练知识
- batch size 太小(<8)训练不稳定,loss 跳动剧烈
- 必须做 loss mask,否则模型会学会生成 prompt(错误行为)
从 DFT 理论的视角回看这些经验参数,还能获得一层额外理解:学习率必须小,是因为 SFT 梯度本身携带病态的逆概率加权——任何放大的学习率都会让低概率 token 的爆炸性梯度进一步失控;epoch 必须少,是因为重复遍历会不断强化对难样本的记忆锁定。工程经验与理论诊断在此完全对齐。
16.3.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
16.3.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 学到的格式,输出乱码——这正是 16.2.8”SFT 是 RL 格式稳定前置”结论的反面印证
- 必须监控 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 系数。
- 踩坑 6:蒸馏/OPD 同样会 reward hacking,机理与 RLVR 同源。 这一条必须补上,因为本章 16.9.6 会把 OPD 描述为解决 exposure bias 与能力冲突的方案——它没有逃出 reward hacking,只是把奖励从 verifier 换成了教师的 log-prob。arXiv:2610.03185(2026-10-02)用强化学习的视角重述了这件事:教师隐式地在奖励学生的行为,包括那些它自己极少表现出的行为。由此得到两个判据:
- 奖励可靠时,OPD 不增加新能力——它只是让正确答案更容易被采样。所以看到 OPD 涨分就以为”学到了新东西”是误读;
- 偏好与质量错位时,学生 reward-hack——隐式奖励模型放大过长、重复的 rollout,尽管教师自己几乎不生成这类文本。这正是此前”Extrapolation Cliff”(OPD 存在闭式崩溃阈值)的机制解释:越过阈值后学生优化的是一个教师从未验证过的奖励。
- 两条缓解手段:训练时 mask 掉不健康的响应;或从 SFT 初始化出发——两者各自都能修复崩溃。
多教师蒸馏(MOPD/OPD)的工程陷阱——“泛化双重性质”(arXiv:2608.16647,2026-08-17):与 STEER 熵坍缩互补,该工作揭示了多教师蒸馏失效的机理层原因,有三重结论——(1) 蒸馏迁移的是推理行为而非答案记忆(学生学到的是”怎么想”,不是”记住答案”);(2) 同源 vs 跨源教师差异显著(跨源教师组合的迁移更不稳定);(3) 多教师蒸馏存在 “seesaw” 现象——某教师权重上升时另一教师贡献下降,导致能力此消彼长而非齐头并进。工程上这意味着:多教师蒸馏不能只看最终总分,必须按能力维度分别监控贡献占比,警惕”数学涨了代码塌了”的跷跷板效应。
16.4 SFT 数据工程:分类学、规模与科学选择
SFT 是三大阶段中数据量最大、形态最多样的一环。本节回答三个问题:SFT 数据有哪些类型(分类学)、需要多少(规模决策)、怎么选(科学选择)。
16.4.1 按任务类型分类
SFT 数据的任务分类
├── 对话与问答
│ ├── 开放域问答(世界知识)
│ ├── 闲聊对话
│ └── 多轮对话
│
├── 创作与生成
│ ├── 文章写作(报告、邮件、文案)
│ ├── 创意写作(故事、诗歌)
│ ├── 翻译
│ └── 摘要
│
├── 推理与分析
│ ├── 数学推理
│ ├── 逻辑推理
│ ├── 代码生成与调试
│ └── 数据分析
│
├── 指令遵循
│ ├── 格式约束("用 JSON 格式回答")
│ ├── 长度约束("用三句话总结")
│ ├── 角色扮演
│ └── 多步骤任务
│
└── 工具使用
├── 函数调用
├── API 交互
└── 搜索增强
16.4.2 按难度分层
难度级别设计
Level 1: 简单指令遵循
- "把这段话翻译成英文"
- "给这篇文章写一个标题"
- "解释什么是 HTTP 协议"
Level 2: 中等复杂度
- "对比 REST 和 GraphQL 的优缺点,给出建议"
- "帮我重构这段 Python 代码,提高可读性"
- "分析这份销售数据的趋势"
Level 3: 高复杂度
- "设计一个分布式缓存系统,需要考虑一致性和可用性的权衡"
- "阅读这三篇论文的摘要,找出它们的共同点和分歧"
- "帮我写一个完整的 REST API,包括错误处理和测试"
Level 4: 专家级
- "证明 P≠NP 的一个充分条件(如果存在的话)"
- "分析这个分布式系统中的死锁条件,给出避免方案"
- 需要多步骤推理、跨领域知识整合
16.4.3 按来源分类
| 来源 | 优点 | 缺点 | 适用阶段 |
|---|---|---|---|
| 人工标注 | 质量最高、可控 | 贵、慢、规模有限 | 种子数据、关键任务 |
| 强模型合成 | 规模大、成本低 | 多样性可能不足、有偏 | 主体数据 |
| 拒绝采样 | 质量有保证 | 依赖好的评分函数 | 质量提升 |
| 人机协作 | 平衡质量和效率 | 流程复杂 | 最佳实践 |
| 智能筛选(NAIT/MIG/DEITA) | 质量高、效率高 | 需要目标能力的 seed 数据 | 全流程数据优化 |
2025-2026 年的趋势是”先大规模合成,再智能筛选”——合成提供任务覆盖度,智能筛选保证质量和效率。这已经从实验室走向了工程实践。
16.4.4 推理 SFT 数据的四维分类框架
A Primer in Post-Training Reasoning Data(arXiv:2606.02113,2026-06-01)系统综述了 150+ 篇关于后训练推理数据的研究,为”推理数据”这一 SFT 数据子类提供了系统的分类框架:
推理 SFT 数据构建的四维框架:
1. 数据对象(Data Objects)
├── 问题-答案对(带详细推理过程)
├── 思维链(中间步骤 + 注释 + 验证节点)
└── 多种推理路径(正确 / 错误 / 替代路径)
2. 质量因素(Quality Factors)
├── 正确性(答案准、推理逻辑严密)
├── 多样性(问题/解法多样)
├── 难度适配(与模型能力匹配)
└── 格式清晰(标注一致、可读)
3. 构建方法(Construction Methods)
├── 人工(专家 / 众包)
├── 自动(自举法 / 迭代精炼 / 形式化系统转换)
└── 混合(人机协作 / 对抗生成)
4. 规模效应(Scale Effects)
└── 数据规模 vs 训练效率的相互作用
这个四维框架与 16.2.10 的泛化研究形成方法学闭环:泛化研究告诉我们”优先选择能训练出强推理程序的数据”,四维框架则给出了”质量因素”的具体一级指标(正确性/多样性/难度适配/格式清晰),两者共同指导推理 SFT 数据的构建与筛选。
16.4.5 SFT 数据量的决策
你到底需要多少 SFT 数据? 这取决于你的目标和基座模型的质量。
经验性指导:
极简方案(LIMA 风格):
- 数据量:1K-5K 条
- 适用:强基座模型 + 简单对话场景
- 特点:每条数据都经过人工精选
标准方案:
- 数据量:10K-100K 条
- 适用:通用助手模型
- 特点:人工精选 + 合成数据混合
工业方案(Llama 3 风格):
- 数据量:100K-1M+ 条
- 适用:全能力覆盖的商业模型
- 特点:多阶段 SFT,覆盖数十种任务类型
关键原则:
不是"越多越好",而是"覆盖越全面越好"。
重复加入同类型的简单数据,边际效用快速递减。
注意:这三档方案与 16.2.3 的假说边界精确对应——极简方案之所以可行,正是因为简单指令遵循属于表面对齐假说成立的区域;而工业方案需要 100K-1M+ 条,是因为数学、代码等复杂能力落在幂律缩放区域,远未饱和。
16.4.6 从经验法则到科学选择
上述三档是直觉指导,但 2025-2026 年的数据选择方法已经从经验法则演进到模型驱动的科学方法。
NAIT:神经元感知的数据选择(Neuron-Aware Data Selection in Instruction Tuning, ICLR 2026)提出了一个优雅的框架:通过分析训练样本引起的神经元激活模式与目标能力的相似性来选择数据。核心发现:
- 仅用 10% 的 Alpaca-GPT4 数据,即可持续优于依赖外部模型评分的方法
- 逻辑推理和程序化特征的 SFT 数据具有强跨能力迁移性——选对类型比增加数量更有效
更广泛的趋势在 JAIR 2025 综述 A Survey on Data Selection for LLM Instruction Tuning 中得到系统梳理:从高质量子集中选择优于全量训练已成为共识,但选择标准仍在快速演进。
数据选择范式的变化可以概括为三个阶段:
第一阶段:人工精选
依据:标注员经验 + 任务覆盖直觉
代表:LIMA(1K 精选)
第二阶段:模型评分筛选
依据:用强模型(GPT-4等)对样本打分
代表:Alpagasus、DEITA
第三阶段:模型内部机制驱动
依据:目标模型自身的神经元激活 / 信息增益
代表:NAIT、MIG
优势:不依赖外部模型,10% 数据可达全量效果
工程启示:如果你的 SFT 数据预算有限,与其在”人工精选 vs 合成”之间纠结,不如投入精力建立智能选择管线——先合成大池子,再用 NAIT 等方法筛选出最高价值的子集。这与 16.4.3 “先大规模合成,再智能筛选”的来源趋势表完全一致。
16.4.7 Prompt 多样性与 Frozen-Prompt Artifacts
NAIT 等方法关注的是”选哪些数据”,但另一个常被忽视的维度是”prompt 的多样性”。当 SFT 数据的 prompt 高度相似或模板化时,模型会形成 frozen-prompt artifacts——对特定 prompt 模式产生过度依赖,导致换一种问法就”不会了”。这种现象的本质是:模型将推理能力绑定在了 prompt 表面特征上,而非内化为可迁移的推理程序。
Prompt diversity 的解法并非简单地”多加不同 prompt”,而是需要关注两个层面:
-
语义多样性:同一推理任务,用不同风格、不同详细度、不同角色设定的 prompt 来表达。例如,“解这道数学题”、“请帮我算一下”、“作为一个数学老师,解释如何求解”——三种 prompt 触发的是同一推理程序,但训练模型不依赖单一触发模式。(注:语义多样性的最优配比目前尚无共识。)
-
结构多样性:prompt 中信息组织的不同模式——直接提问、上下文+提问、多轮渐进式提问等。结构多样性帮助模型学会从不同信息布局中提取关键指令。
工程提示
Frozen-prompt artifacts 有一个简单的诊断方法:将验证集的 prompt 做同义改写后测试,如果性能显著下降(>5%),说明模型存在 prompt 过拟合。修复方法是增加 prompt 多样性训练数据,而非增加更多相同 prompt 的样本。
16.5 后训练 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%。
其中第 5 步”质量过滤”正是 16.4.6 数据选择科学化的流水线落点——IFD/Deita 属于”模型评分筛选”阶段的代表方法,而 NAIT/MIG 等”模型内部机制驱动”的方法正在进入工业流水线的第 5 步;第 8 步”配方混合”则呼应 16.2.10 的”程序化泛化”洞察——配方不仅要覆盖任务/领域/难度三轴,还应考虑推理程序的多样性。
16.6 后训练 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。理论进展同样在这张架构图中找到自己的位置:DFT/QQQ-target/CADFT 等损失与目标分布层面的创新作用于 L4 训练层,NAIT 等数据选择创新作用于 L2 质量层——两条线在 L3 配方层汇合,共同决定”哪些数据、以什么权重、用什么目标分布进入训练”。
16.7 数据流转时序
后训练数据在系统中的典型流转时序:
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 都遵循类似节奏。评估环节需要注意 16.2.10 的”非对称泛化”警告:T+5 的评估不能只看能力维度评分,推理类 SFT 之后必须同时监控安全维度的退化,必要时在 T+7 的反馈环节安排安全修复 SFT。
16.8 三大阶段产物规模
工业级后训练三大阶段的数据规模有明确”甜点区间”:
| 阶段 | 最小可用 | 工业典型 | 上限 | 备注 |
|---|---|---|---|---|
| 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 数据存在”能力饱和点”。理论上,这正是 16.2.3 幂律缩放曲线趋近平坦的区域:简单能力的表面对齐早已完成,复杂能力也已在高质量数据上接近饱和,继续堆量只剩噪声。
为什么偏好数据上限是 100 万? DPO 训练的本质是学习偏好方向,不是学习具体响应。100 万对足以覆盖绝大多数偏好维度,更多数据只会强化已知方向,不会引入新偏好。
为什么 RL 上限是 50 万? RL 训练时每个 prompt 要采样 8-64 次,50 万 prompt 实际产生 400 万-3200 万次 rollout,计算成本极高。超过 50 万 prompt 的边际收益被算力瓶颈吃掉。
把这张表与 16.4.5 的三档方案对照,可以看到同一规律的两种表述:SFT 数据需求不是单一数字,而是一条从 1K(极简/表面对齐区域)到 1000 万(工业全能力/幂律缩放区域)的谱线,落点取决于目标能力落在假说边界的哪一侧。
16.9 Tulu-3 标杆配方与 2026 范式演进
AllenAI 的 Tulu-3(2024)是后训练的标杆配方,开源完整数据与训练流程,是工业级后训练的最佳参考。
16.9.1 Tulu-3 三阶段串联
SFT 阶段:939K 条混合数据
↓
DPO 阶段:271K 对偏好数据
↓
RLVR 阶段:30K 可验证 prompt(数学+代码+指令遵循)
16.9.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 |
16.9.3 DPO 阶段配方(271K)
- Helpfulness:35%(95K)
- Honesty:15%(40K)
- Harmlessness:15%(40K)
- 推理:20%(55K)
- 长度去偏:15%(41K)
16.9.4 RLVR 阶段配方(30K)
- 数学(可验证):15K(sympy 校验)
- 代码(单测):10K(pass/fail)
- 指令遵循(规则):5K(格式检查)
16.9.5 Tulu-3 的关键工程经验
- SFT → DPO → RLVR 必须串联:跳过任何一步都会显著掉分
- DPO 数据要长度去偏:未去偏的 DPO 会让输出长度漂移 30%+
- RLVR 只用可验证任务:开放式任务的 RL 会 reward hacking
- 每一阶段都要重新评估:不能假设前阶段好就稳定
这四条经验与本章理论部分处处呼应:第 1 条对应 16.2.8 的”SFT 是 RL 的桥梁”;第 3 条对应 16.3.3 的 reward hacking 陷阱;第 4 条对应 16.2.10 的非对称泛化警告——每个阶段的训练都可能带来预料之外的能力退化,重新评估是唯一的保险。
16.9.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 从”范式定型”转向”教师信号可靠性”——如何在上游就过滤掉被污染的教师信号,而非在下游接收污染。这与 16.3.3 的多教师蒸馏”泛化双重性质”警示一脉相承:教师信号的传递不是无损的,蒸馏管线需要自己的质量层。
第二根设计轴:迁移的”目标”选对了没有(Δ-MOPD)
上面那条追问的是”教师信号脏不脏”。还有第二个独立问题:就算信号完全干净,你要迁移的那个对象本身可能就混进了不该迁移的东西。
MOPD 有两种用法——common-domain composition(多个教师对同一 prompt 域的 rollout 打分,信号合成一个目标)与 routed-domain distillation(不同域的 prompt 分派给对应专家)。两者默认迁移的都是教师的端点策略(endpoint),而端点 = 后训练带来的改变 + 从教师 base 继承的偏好。当教师 base ≠ 学生初始化时,继承的 base pull 可能盖过后训练偏移本身——你迁移的大半是教师 base 的口味,不是它后训练学到的东西。
Δ-MOPD(arXiv:2610.10460,2026-10-07)改迁 teacher-minus-base 的 logit 偏移,并在学生冻结的初始化处重新锚定。在固定教师选择的前提下对比:
- 移除 base pull 后,teacher-term 范数比从
5.2:1降至1.44:1,target–student KL 从0.152降至0.031; - 三教师组合下 Δ-MOPD 比端点组合 +4.11 Math、+1.95 五基准分;两教师下打平;
- phased routing:两种 phase order 均更高,且顺序差从 10.50 降到 6.42 分;
- interleaved routing(每次更新只见一个教师):两者相当;
- 达到端点臂最佳 Math 分用 35% 更少的 H100 小时;
- 一个未配对的 cross-tokenizer 扩展(把第四个偏移投影到 151,665-token 有效词表)在三数学基准上再 +3.32 Math / +1.85 五基准分(但 Science/IF 因无 in-domain prompt 比端点组合低 1.29 分)。
适用边界(作者自己限定,必须照抄):收益出现在”教师信号在同一 state 被合并”或”跨阶段累积”时;每次更新只见一个教师(interleaved)时不增益。作者的结论是:目标构造是 MOPD 中一条与教师选择正交的独立设计轴。
与 16.3.3 已收录的 MOPD seesaw 现象对照着读更清楚:seesaw 关心”谁的信号”,Δ-MOPD 关心”信号的哪一部分”——两者不是同一层的问题,所以也不能互相替代。
“上游过滤”的具体答案:教师信号该在哪里被门控
回到本节开头那句”如何在上游就过滤掉被污染的教师信号”。2026 年 9 月底至 10 月初的一批工作给了答案,而且没有一篇是”加更多教师”——它们的共同主张是:教师信号要被门控,而不是被最大化。 差别只在门装在哪一层:
| 门控维度 | 方法 | 只在哪里让教师说话 | 报告增益 |
|---|---|---|---|
| token 级(对齐) | Cross-tokenizer OPD(arXiv:2610.08448,2026-10-06) | 严格 1:1 对齐位置 + 共享词表的 top-16 切片;为未对齐 span 补监督反而降低精度(这些梯度方向与严格位置的梯度方向弱相关甚至负相关) | 学生自采样响应上,严格对齐位置已保留近乎全部师生概率质量;top-16 reverse KL 即可匹配全共享词表 OPD |
| 轨迹级(结果) | DiffGate(arXiv:2610.04596,2026-10-03) | 用 verifier 决定哪些轨迹获得教师指导——只给失败 rollout 加,且按 group 难度缩放并做有界截断 | Qwen3-0.6B / 1.7B:代码 pass@8 相对 GRPO +1.6 / +5.7,数学 +1.1 / +3.9 |
| 步级(pivot) | PivotOPD(arXiv:2609.40285,2026-09-30,NVIDIA) | 只在第一个致命错误(pivotal mistake)及其后几步:三个 Qwen3 模型(8B–235B)上过半失败 rollout 含一个 pivot,且通常发生在早期 | 修好该 turn 可把 replay 成功率从 8% 提到 59%;标准 OPD 在 pivot 之后几乎无效(恢复动作概率 <1%,永不被采样);13 个基线上平均最优 |
| 阶段级(rubric) | OPD Before RL(arXiv:2610.02781,2026-10-02) | 先用 rubric-aware 教师蒸馏让学生对齐 rubric(rubric 作为特权教师上下文),再 RL 优化 rubric 奖励 | HealthBench / ResearchQA / RubricHub Science 上最高分,且 reward hacking 少于 SFT+RL 基线 |
其中 Cross-tokenizer OPD 那条给了一个与直觉相反的结论,值得单独记住:词表不匹配主要不需要”解决”,只需要把监督限制在严格对齐的位置上。 三组异构师生对上,尽管词表差异显著,严格 1:1 分组已经覆盖了大部分学生生成的 token;反过来,为了让”覆盖率”完整而给未对齐 span 补 MSE 监督,反而降低精度。监督覆盖率不是目标,监督可靠性才是。
一条可以复用的判据:这一批工作把 §16.3.3 的 OPD 设计空间从”用哪些教师、各占多少权重”扩展成了一个二维网格——教师选择 × 门控位置。选型时先问”我的教师信号在哪个粒度上不可靠”(token 对齐?轨迹成败?关键步?阶段目标?),再决定门装在哪一层,而不是先问”要不要再加一个教师”。
生产级后训练实证:DeepSeek-V4-Flash(据 2026-08 媒体报道)。将上述抽象叙事锚定到具体工程实践,DeepSeek-V4-Flash 采用十领域专家混合(MoE)+ 完整词表 + reverse KL 蒸馏目标 + DSec 沙箱安全机制的组合:十领域专家对应 MOPD 的专家分训,reverse KL 是蒸馏目标的具体选择,DSec 沙箱把安全约束纳入后训练流程——是”多教师蒸馏 + 专家化 + 安全约束”在工业级落地的最新锚点。
Nemotron 3 Ultra:一手校正(NVIDIA 官方技术报告)
上表”10+ 专家、两轮迭代”这一行的一手出处是 NVIDIA 官方技术报告。原文逐句如下(可直引):
“The initial SFT stage used a carefully curated data mixture to build the model’s foundational capabilities. This was followed by unified RLVR over a wide mix of reasoning, agentic, code, safety, usability, and chat environments. In parallel, more than ten domain-specialized teacher models were trained using targeted recipes, including agentic teachers built on a dedicated agentic SFT path. Finally, Multi-teacher On-Policy Distillation (MOPD) consolidated these teachers into Ultra through dense token-level guidance on student-generated rollouts.”
同一份报告另确认:预训练在 NVFP4 下用 20T token(Warmup-Stable-Decay 调度),分两相——第一相 15T 侧重多样性与宽域覆盖,第二相 5T 侧重高质量数据以精炼精度;MOPD 对 Ultra 做了两轮迭代;Ultra 另配推理强度控制。开源侧,除 Base / Post-Trained / NVFP4 量化 checkpoint 外,训练配方、数据与 RL 环境一并开源——对要做工业级复现的读者,这是本章提到的全部工作里最可直接取用的一份资产(另见第 17 章的开源后训练数据来源)。
⚠️ 一处必须澄清的读法:本章的范式叙事是”SFT → DPO → RLVR 串联”被 MOPD 取代,容易滑向”MOPD 取代了 RLVR 阶段”。技术报告给出的实际形态是并存而非替代——完整管线是 初始 SFT → 统一 RLVR → 并行训练 10 余个领域专家教师 → MOPD。MOPD 取代的是”不同域各跑一套 RL、再想办法把结果合并起来”这件事,不是取代 RLVR 本身;统一 RLVR 仍然是打底层,MOPD 是在它之上整合专家。把这两者的关系读反,会直接导致排期与算力预算的错误。
选型指南:1-2 人团队做 7B 模型 → Tulu-3 三段式 + 本篇 GRPO 配方完全够用。10+ 人团队做 70B+ 模型 → 建议按 MOPD/Nemotron 方向规划专家分训架构。
16.10 后训练数据工程的五条核心原则
总结后训练数据工程的 5 条核心原则:
- 质量 >> 数量:1 万精选胜过 10 万粗制(Deita、LIMA 双重实证;理论解释见 16.2.9——低质量难样本会主导梯度方向)
- 多样性是生命线:4-gram 重复率 < 40%,InsTag 覆盖率 ≥ 1000(含 prompt 多样性,防 frozen-prompt artifacts)
- 可验证性优先:RL 阶段只做可验证任务,否则必然 hacking
- 闭环迭代:评测-归因-补数据-再评测,每轮 1-2 周
- 去污染是底线:对 20+ 评测集做 13-gram 匹配,污染率 < 0.1%
这五条原则贯穿后续各章。下一篇章将深入后训练数据的四大来源。
动手环节:理解 SFT 的”表面对齐”本质
目标:通过对比实验,直观感受 SFT 不是教知识而是教格式。
练习 1:模拟”基座模型”vs”SFT 模型”的输出差异
"""
模拟展示 SFT 前后的输出差异
用规则来模拟:基座模型有知识但不会格式化,SFT 模型会"包装"输出
"""
# 知识库(模拟预训练学到的知识)
KNOWLEDGE_BASE = {
"光合作用": {
"定义": "植物利用光能将二氧化碳和水转化为有机物和氧气的过程",
"场所": "叶绿体",
"阶段": ["光反应:在类囊体膜上进行,光能转化为化学能",
"暗反应(Calvin循环):在基质中进行,CO₂固定为有机物"],
"方程式": "6CO₂ + 6H₂O → C₆H₁₂O₆ + 6O₂",
},
"TCP协议": {
"定义": "传输控制协议,提供可靠的面向连接的字节流传输服务",
"特点": ["面向连接", "可靠传输", "流量控制", "拥塞控制"],
"三次握手": "SYN → SYN-ACK → ACK",
},
}
def base_model_response(query: str) -> str:
"""模拟基座模型:有知识但输出混乱"""
for topic, info in KNOWLEDGE_BASE.items():
if topic in query:
# 基座模型:把知识点堆在一起,没有格式
parts = []
for key, value in info.items():
if isinstance(value, list):
parts.append("".join(value))
else:
parts.append(str(value))
return "".join(parts) + "以上就是关于" + topic + "的内容"
return query + "是一个重要的概念在很多领域都有应用"
def sft_model_response(query: str) -> str:
"""模拟 SFT 后的模型:同样的知识,结构化输出"""
for topic, info in KNOWLEDGE_BASE.items():
if topic in query:
lines = [f"## {topic}\n"]
lines.append(f"**定义**:{info.get('定义', '')}\n")
for key, value in info.items():
if key == "定义":
continue
if isinstance(value, list):
lines.append(f"\n### {key}")
for i, item in enumerate(value, 1):
lines.append(f"{i}. {item}")
else:
lines.append(f"\n**{key}**:{value}")
return "\n".join(lines)
return f"关于「{query}」,我需要更多上下文才能给出准确回答。您能具体描述一下想了解哪方面的内容吗?"
# 对比
queries = ["什么是光合作用", "解释TCP协议", "量子力学是什么"]
for q in queries:
print(f"\n{'='*50}")
print(f"问题: {q}")
print(f"\n--- 基座模型(预训练后、SFT 前)---")
print(base_model_response(q))
print(f"\n--- SFT 模型 ---")
print(sft_model_response(q))
练习 2:SFT 数据需求估算
"""
根据本章的经验指导,为不同场景估算 SFT 数据需求
"""
def estimate_sft_data(
scenario: str,
base_model_quality: str, # "strong", "medium", "weak"
task_types: int, # 需要覆盖的任务类型数
target_quality: str, # "demo", "production", "commercial"
) -> dict:
"""估算 SFT 数据需求"""
# 基础数据量(根据场景)
base_amounts = {
"demo": 1000,
"production": 50000,
"commercial": 200000,
}
base = base_amounts.get(target_quality, 50000)
# 基座模型质量调整
quality_multiplier = {"strong": 0.5, "medium": 1.0, "weak": 2.0}
base *= quality_multiplier.get(base_model_quality, 1.0)
# 任务类型调整
base *= (1 + 0.15 * (task_types - 5))
# 各类数据的建议比例
breakdown = {
"人工精选种子": int(min(500, base * 0.05)),
"强模型合成": int(base * 0.50),
"拒绝采样精选": int(base * 0.25),
"人工标注补充": int(base * 0.20),
}
return {
"场景": scenario,
"总量估算": int(base),
"数据构成": breakdown,
"预估成本": f"${int(base * 0.1)}-${int(base * 0.5)}",
"预估时间": f"{max(1, int(base/10000))} 周",
}
# 评估不同场景
scenarios = [
("个人项目Demo", "strong", 3, "demo"),
("企业内部助手", "medium", 8, "production"),
("商业对话产品", "medium", 15, "commercial"),
]
for scenario, quality, tasks, target in scenarios:
result = estimate_sft_data(scenario, quality, tasks, target)
print(f"\n=== {result['场景']} ===")
print(f" 总量: {result['总量估算']:,} 条")
print(f" 构成:")
for source, count in result['数据构成'].items():
print(f" {source}: {count:,} 条")
print(f" 预估成本: {result['预估成本']}")
练习 3:设计 SFT 数据的任务分布
参考 16.4 节的任务分类学,为一个中文编程助手设计 SFT 数据的任务分布。需要:
- 覆盖至少 8 种任务类型
- 每种类型设定数量和难度分布
- 说明为什么这样分配(重点放在”覆盖度”而非”总量”)
关键思考:如果你只有 5000 条的预算,你会优先覆盖哪些任务类型?为什么?(提示:结合 16.2.10 的”程序化泛化”洞察——优先覆盖能训练出可迁移推理程序的任务类型。)
本章要点回顾
- 后训练与预训练是镜像关系:数据规模差 1000 倍、单样本价值高 1000 倍,“少即是多”取代”越多越好”
- 表面对齐假说有边界:在简单指令遵循上成立,但在复杂推理和知识密集型任务上是过度简化——后训练性能与数据量呈幂律缩放
- SFT 的本质是信息压缩:将访问预训练能力的复杂度从 GB 级压缩到 KB 级,不只是”教包装”
- 质量远大于数量:1000 条精选 > 100K 条噪声,但复杂任务需要更多高质量数据
- SFT 是 RL 的关键桥梁:SFT 记忆、RL 泛化,两者互补而非替代
- 推理 SFT 泛化有三个条件:充分训练时间 + 高质量 CoT + 强基座模型
- 安全对齐是神经元级的方向选择:少量关键神经元控制执行/拒绝,精巧但脆弱
- SFT 能力边界不是二元的:很多”做不到”在新条件下变成了”有条件地做到”
- 数据选择已科学化:从人工精选到神经元驱动的智能选择,10% 数据可达全量效果
- SFT 理论正经历”从经验配方到数学统一”的范式转换:QQQ-target 将 DFT/token 重加权/正则化等统一为目标分布的不同选择;CADFT 将 DFT 的 token 级修正推广至样本级方差控制——SFT 理论脉络从 LIMA(教格式)→ DFT(token 级修正)→ QQQ-target(目标分布统一)→ CADFT(样本级控制),逐层深化对”SFT 到底是什么”的理解
- 三阶段各有甜点区间:SFT 100K-10M / 偏好 50K-1M / RL 10K-500K,超上限边际收益骤降
- 范式正在演进:从 Tulu-3 三段式串联到 MOPD 多专家蒸馏,教师信号可靠性成为下一战场