小模型自己做 RL 又贵又差,能不能直接继承大模型的推理?
本课一问:大模型靠 RL 学会了想;小模型如果也自己做一遍 RL,又贵、效果又差。能不能让小模型直接从大模型那里学?怎么学才学得最多?
这一课先不碰:模型压缩的其他路线(量化见 C13 第 4 课;剪枝本课程不展开);多轮 agent(第 8 课)。
从已有出发
到上一课为止,每个模型都是「自己采样、自己拿奖励、自己学」。回到贯穿提问:一个训好的大模型面对「苹果现在在谁手里?」,输出的不只是「小王」,而是一整个分布——「小王」概率最高,「小明」次之,「小红」很小。这个分布里藏着老师的判断:哪个错答更像对的。
- 解决了同一个 32B 底座蒸馏 R1 的 80 万条数据:72.6;Qwen3 on-policy 蒸馏只用 RL 的 1/10 GPU 时。卡在会答题不等于会做事:一条两轮修 bug 轨迹 443 个 token,工具返回的 42 个不是模型写的,不能照单全训。
先自己设计:小模型自己做 RL
- ① 朴素方案
- ② 它在哪失败
- ③ 改进方案
最朴素的蒸馏:让老师把题目做一遍,学生拿这些回答做 SFT。DeepSeek-R1 的六个开源小模型(Qwen2.5 与 Llama 底座,1.5B–70B)都是这样来的,只做了 SFT、没有再做 RL;报告说加上 RL 还能再涨,但他们把这一步留给了社区 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条官方自报;对照的 Qwen2.5-32B-Zero 与蒸馏模型用同一个底座。 出处DeepSeek-R1 v2 附录 F 表 16(本地 PDF) ↗ 。
这种「老师生成、学生 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 原文的例子:一张「2」的图片,老师可能给「3」10⁻⁶、给「7」10⁻⁹——哪些 2 长得像 3、哪些像 7,这个相对大小就是老师学到的东西 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条原文在 MNIST 与语音识别上验证;把 logit 蒸馏用到 LLM 是后来的事。 出处Hinton, Vinyals & Dean 2015(本地 PDF) ↗ 。
改进二:在学生自己走出来的路上学——on-policy 蒸馏
序列级蒸馏的训练数据是老师的前缀,推理时学生走的却是自己的前缀。GKD(Agarwal et al. 2023)把做法换过来:学生自己采样,老师在学生写出的每个位置上给出分布,学生去拟合它 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条论文把训练-推理分布不一致当作动机,在摘要、翻译、算术推理上验证了 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 没有(见岔路课) 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条官方自报;老师是 Qwen3-32B 或 Qwen3-235B-A22B。 出处Qwen3 技术报告 §4.5、表 21 ↗需联网 。
改进三:KL 的方向——学生容量不够时学成什么样
学生比老师小,不可能处处拟合。这时「正向 KL(老师‖学生)」与「反向 KL(学生‖老师)」给出完全不同的学生:
试三件事:① 把拟合步数拖到 0:两个学生都从 μ = 15、σ = 2 出发;② 慢慢往右拖:正向 KL 的学生越摊越开(第 600 步 σ ≈ 11.5),盖住两个峰,也把大量概率放在老师几乎为 0 的中间;反向 KL 的学生很快缩到右边那个峰上(μ = 17.0、σ = 1.6);③ 比较两者的 KL:各自在自己的目标上都降了,但「学成什么样」完全不同。
正向 KL 在「老师有、学生没有」的地方罚得极重,学生只好去覆盖一切(mode-covering);反向 KL 在「学生有、老师没有」的地方罚,学生宁可只学一个峰,也不去生成老师认为不可能的东西(mode-seeking)——这是 KL 定义直接推出的性质 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条KL(p‖q) = Σ p log(p/q):p > 0 而 q → 0 时发散,所以正向 KL 逼 q 覆盖 p 的支撑集;反向 KL 反过来。 出处待补 。对生成模型,「在老师认为不可能的地方胡编」比「漏掉老师的某种说法」更糟,所以 MiniLLM(Gu et al. 2023)主张 LLM 蒸馏用反向 KL 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条在指令跟随任务上比较了正向与反向 KL 的蒸馏,报告反向 KL 生成质量更好、暴露偏差更小。 出处MiniLLM(Gu et al. 2023) ↗需联网 。
现代做法:蒸馏成了后训练的主干
- Qwen3:strong-to-weak 蒸馏,离线 → on-policy 两段。
- Gemma 3:所有尺寸在预训练阶段就用蒸馏。
- DeepSeek-V4:十几个领域专家各自 SFT + GRPO,再用 on-policy 蒸馏(反向 KL、全词表)合成一个模型;V4.1 超过 40 个老师,架构可以彼此不同。
- Kimi K3:多老师 on-policy 蒸馏(MOPD):3 个领域 × 3 档推理力度 = 9 个专家,把截断后的对数比当稠密奖励接进 RL 框架。
- GLM-5:在各个 RL 阶段之后做「跨阶段 on-policy 蒸馏」,缓解后面的阶段把前面学会的能力冲掉。
分歧也有:V4 认为逐 token 的估计方差大,所以用全词表;K3 说试过更细的 top-k 蒸馏,没看到优势 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条R3 调研 §3.11:两家各自的技术报告,官方自报。 出处待补 。
常见误解一:「蒸馏就是拿大模型的输出做 SFT。」 那只是序列级蒸馏,离策略、只用了老师的一个采样。logit 蒸馏学整个分布,on-policy 蒸馏在学生自己的路上学。
常见误解二:「温度越高越好。」 太高时软分布趋于均匀,概率之间的差距被压扁(排序不变,但信号变弱);而且梯度按 1/T² 缩小,要乘回 T²。
常见误解三:「正向 KL、反向 KL 只是写法不同。」 学生容量足够时两者的最优解相同;容量不够时(小模型永远是这样),一个摊开、一个选峰,学出来的模型行为不同。
证据三问
| 问 | 本课的回答 |
|---|---|
| ① 它解决什么问题? | 小模型自己做 RL 又贵又差;序列级蒸馏丢信息、离策略 |
| ② 数学上为什么可能有效? | 软目标携带比硬标签多得多的信息;KL 方向的覆盖 / 选峰性质可证明 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条由 KL 的定义直接推出。 出处待补 ;on-policy 数据消除训练-推理分布不一致,是理论动机 证据等级 · 有理论动机 有数学或机制上的理由说明它可能有效,但没有证明它一定更好。最后是否采用,仍然要看实验。 本条模仿学习中的暴露偏差分析(DAgger 一类);在 LLM 上的收益靠实验确认。 出处待补 |
| ③ 实验上为什么选了它? | 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
你可能会问
- 「蒸馏会不会把老师的错也学过来?」 会。学生的上限大体是老师;所以前沿做法先让各领域专家各自 RL 到最好,再蒸馏合成。老师出错的地方,学生只能靠后续的 RL 或更好的老师纠正。
- 「用别家模型的输出蒸馏,合规吗?」 这是许可证问题,不是技术问题:很多模型的使用条款禁止用其输出训练竞品。C15 的岔路课讲开放权重的许可证。
- 「on-policy 蒸馏和 RL 有什么区别?」 数据流几乎一样(学生采样);区别在信号:RL 一条回答一个 0 / 1,蒸馏每个 token 都有老师的整个分布——信号稠密得多,所以省算力。K3 干脆把蒸馏的对数比当成稠密奖励,接进 RL 框架里统一训练。