从0训练LLM · 现代大模型体系 阅读 + 实验 ≈ 35 分钟 页内实验 ×3
C12 后训练:从续写到听话、推理、做事 第 7 课

小模型自己做 RL 又贵又差,能不能直接继承大模型的推理?

蒸馏:小模型直接继承
同一个 32B 底座:直接做 R1-Zero 式 RL,AIME 47.0;用 R1 生成的 80 万条数据做 SFT,72.6。蒸馏从「拿老师的输出做 SFT」出发,一路被逼到:学老师的整个分布(温度)、在学生自己走出来的路上学(on-policy)、用反向 KL 不去覆盖老师认为不可能的地方。Qwen3 的 on-policy 蒸馏只用了 RL 十分之一的 GPU 时。
❓

本课一问:大模型靠 RL 学会了想;小模型如果也自己做一遍 RL,又贵、效果又差。能不能让小模型直接从大模型那里学?怎么学才学得最多?

这一课先不碰:模型压缩的其他路线(量化见 C13 第 4 课;剪枝本课程不展开);多轮 agent(第 8 课)。

从已有出发

从已有出发 · 后训练流水线 点已学的站看数据、损失与模型数

到上一课为止,每个模型都是「自己采样、自己拿奖励、自己学」。回到贯穿提问:一个训好的大模型面对「苹果现在在谁手里?」,输出的不只是「小王」,而是一整个分布——「小王」概率最高,「小明」次之,「小红」很小。这个分布里藏着老师的判断:哪个错答更像对的。

演进图 · 每一代都是被上一代的失败逼出来的本课高亮
  1. 第一代 SFT:用示范教格式 FLAN 2021 · LIMA 2023
  2. 第二代 RLHF:奖励模型 + PPO Christiano 2017 → Ziegler 2019 → InstructGPT 2022
  3. 第三代 · 离线 DPO:不训奖励模型 Rafailov et al. 2023(Stanford)
  4. 第三代 · 在线 GRPO 系:去掉 value model DeepSeekMath 2024-02 → DAPO / Dr. GRPO / GSPO 2025
  5. 奖励来源 RLVR:可验证的奖励 Tülu 3 2024-11 命名 · DeepSeek-R1 2025-01 规模化
  6. 岔路 RL 扩展了能力,还是重排? Yue 2025 vs ProRL 2025
  7. 第四代 思考模型:想更久,也能控 o1 2024-09 · R1 2025-01 · Qwen3 2025-05
  8. 第五代 蒸馏:小模型直接继承 Hinton 2015 → GKD 2023 → Qwen3 2025 你在这里
    解决了同一个 32B 底座蒸馏 R1 的 80 万条数据:72.6;Qwen3 on-policy 蒸馏只用 RL 的 1/10 GPU 时。
    卡在会答题不等于会做事:一条两轮修 bug 轨迹 443 个 token,工具返回的 42 个不是模型写的,不能照单全训。
  9. 第六代 Agentic RL:在环境里做事 SWE-RL 2025-02 · Kimi K2 · GLM-4.5 slime · DeepSeek-V3.2

先自己设计:小模型自己做 RL

  1. ① 朴素方案
  2. ② 它在哪失败
  3. ③ 改进方案
朴素方案小模型自己做 R1-Zero 式 RL

这种「老师生成、学生 SFT」叫序列级蒸馏(Kim & Rush 2016)。它有两个缺口:学生只看到老师采出来的那一个回答,老师分布里的其余信息都丢了;而且学生是在老师的前缀上学的——推理时学生一旦走错一步,就进入了老师从没走过的前缀,训练时没见过,错误会累积(GKD 论文的动机)。

改进一:学老师的整个分布——温度与「暗知识」

Hinton、Vinyals、Dean(2015)提出:不要只学老师的最终答案,去拟合老师的输出分布。可训好的老师往往太自信,正确答案占了九成,剩下的小概率几乎看不见。办法是把 logits 除以一个温度 T 再 softmax:

🎯

试三件事:① 默认 logits [4, 2, 0]:T = 1 时概率是 0.867 / 0.117 / 0.016,T = 4 时是 0.506 / 0.307 / 0.186——「小明」与「小红」的相对大小显出来了;② 把 T 拖到 10:三者趋于相等,差距被压扁——排序其实没变,只是信号弱到难学;③ 改 logits(比如把「小红」改成 3):看老师的判断变化怎样通过软分布传给学生。

知识蒸馏的损失(Hinton et al. 2015 §2)
L = +
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
在 LLM 里,这个分布是每一个位置上整个词表的分布:老师在每个 token 位置都给出 V 个概率。Qwen3.8 的 V = 248,320——所以「全词表蒸馏」很贵,有的团队只蒸 top-k。

这些小概率里的信息,业内常叫它「暗知识」。Hinton 原文的例子:一张「2」的图片,老师可能给「3」10⁻⁶、给「7」10⁻⁹——哪些 2 长得像 3、哪些像 7,这个相对大小就是老师学到的东西 。

改进二:在学生自己走出来的路上学——on-policy 蒸馏

序列级蒸馏的训练数据是老师的前缀,推理时学生走的却是自己的前缀。GKD(Agarwal et al. 2023)把做法换过来:学生自己采样,老师在学生写出的每个位置上给出分布,学生去拟合它 。这和 RL 的数据流几乎一样——rollout 由学生生成——只是「奖励」换成了老师的整个分布,每个 token 都有稠密的信号,不必等一个 0 / 1。

Qwen3 的小模型(0.6B–14B、30B-A3B)正是这样来的:先离线蒸馏打底,再 on-policy 蒸馏。报告表 21 在同一个 8B 起点上做了对照:RL 用 17,920 GPU 时,AIME’24 到 67.6;on-policy 蒸馏只用 1,800 GPU 时(约十分之一),到 74.4,而且 pass@64 也涨了——RL 没有(见岔路课) 。

改进三:KL 的方向——学生容量不够时学成什么样

学生比老师小,不可能处处拟合。这时「正向 KL(老师‖学生)」与「反向 KL(学生‖老师)」给出完全不同的学生:

🎯

试三件事:① 把拟合步数拖到 0:两个学生都从 μ = 15、σ = 2 出发;② 慢慢往右拖:正向 KL 的学生越摊越开(第 600 步 σ ≈ 11.5),盖住两个峰,也把大量概率放在老师几乎为 0 的中间;反向 KL 的学生很快缩到右边那个峰上(μ = 17.0、σ = 1.6);③ 比较两者的 KL:各自在自己的目标上都降了,但「学成什么样」完全不同。

正向 KL 在「老师有、学生没有」的地方罚得极重,学生只好去覆盖一切(mode-covering);反向 KL 在「学生有、老师没有」的地方罚,学生宁可只学一个峰,也不去生成老师认为不可能的东西(mode-seeking)——这是 KL 定义直接推出的性质 。对生成模型,「在老师认为不可能的地方胡编」比「漏掉老师的某种说法」更糟,所以 MiniLLM(Gu et al. 2023)主张 LLM 蒸馏用反向 KL 。

现代做法:蒸馏成了后训练的主干

分歧也有:V4 认为逐 token 的估计方差大,所以用全词表;K3 说试过更细的 top-k 蒸馏,没看到优势 。

⚠

常见误解一:「蒸馏就是拿大模型的输出做 SFT。」 那只是序列级蒸馏,离策略、只用了老师的一个采样。logit 蒸馏学整个分布,on-policy 蒸馏在学生自己的路上学。

常见误解二:「温度越高越好。」 太高时软分布趋于均匀,概率之间的差距被压扁(排序不变,但信号变弱);而且梯度按 1/T² 缩小,要乘回 T²。

常见误解三:「正向 KL、反向 KL 只是写法不同。」 学生容量足够时两者的最优解相同;容量不够时(小模型永远是这样),一个摊开、一个选峰,学出来的模型行为不同。

证据三问

问本课的回答
① 它解决什么问题?小模型自己做 RL 又贵又差;序列级蒸馏丢信息、离策略
② 数学上为什么可能有效?软目标携带比硬标签多得多的信息;KL 方向的覆盖 / 选峰性质可证明 ;on-policy 数据消除训练-推理分布不一致,是理论动机
③ 实验上为什么选了它?R1 表 16:32B 底座 47.0 → 72.6;Qwen3 表 21:1/10 GPU 时、AIME’24 67.6 → 74.4

一句话

📌

蒸馏让小模型直接学老师的整个分布,而不是自己摸索;在自己走出来的路上学(on-policy),才不怕推理时走偏。

🚦

先停在这里:记住「序列级 → logit(温度)→ on-policy → 反向 KL;小模型蒸馏胜过自己 RL」。
再深一层:把 KL 组件的起点想成「学生刚好落在两峰正中间」:反向 KL 会选哪边?(提示:梯度在对称点为 0,需要一点扰动。)

下一个缺口

到这里,模型会回答、会思考,小模型也能继承。可这些都还是「一问一答」:一个修 bug 的任务要读文件、跑测试、改代码、再跑测试,几十步,每一步都要看环境的反馈。从答题到做事:多轮调用工具、看环境反馈,怎么训? → 第 8 课:Agentic RL

你可能会问