摘要:这消息来自 Thinking Machines Lab(简称 TML)的一篇新博客,作者是 Kevin Lu。文章讲的是把“在策略蒸馏”(on-policy distillation)真正放到训练里去做,并把实验和代码都开源了。TML 的 CEO Mira M
TML 的新方法在成本极低的前提下,在数学推理和企业内助手两个方向上都取得了比常规方法更好的效果。简单说,就是用更少的算力,把小模型训练得更能干。
这消息来自 Thinking Machines Lab(简称 TML)的一篇新博客,作者是 Kevin Lu。文章讲的是把“在策略蒸馏”(on-policy distillation)真正放到训练里去做,并把实验和代码都开源了。TML 的 CEO Mira Murati 在介绍时还说,这套办法特别适合给小模型增加专业能力,还能做持续学习。博客里频繁引用了 Qwen 系列——英文原文里“Qwen”出现了 38 次(作者专门点了这个数字,顺便说雷军在小米 17 发布会上提“苹果”那次只出现 37 次)。他们在实验里大量用了 Qwen3 系列,也明确说这项工作受到了 Qwen 团队的启发。
说清楚来龙去脉之前,先把训练流程交代明白。整个训练通常分三步:预训练(海量无监督数据学语言),中训练(像学指令、学推理那类专门技能),和后训练(微调到具体任务)。后训练常见套路有两类:一类是强化学习(on-policy RL 或 policy optimization),另一类是监督微调/蒸馏(distillation)。蒸馏里又分离策略和在策略:离策略是老师先把样本生成好,学生再去学;在策略是学生先自己采样轨迹,老师在学生的轨迹上给分。TML 的重点是把在策略采样和蒸馏结合起来:学生自己生成序列,老师对学生每个 token 给出密集评分,然后用这些逐 token 的分数去训练学生。说白了,就是把“你自己走一遍,我边看边纠正”落到代码里。
这办法为什么有效,说得直白些:强化学习的好处是训练时把学生放到它自己会遇到的状态里,这样它能学会从犯错里恢复。问题是 RL 的反馈太稀疏——通常一通对话结束才给一个好坏的分数,不会细说哪一步影响最大。离策略蒸馏的优点正好相反:老师把完整轨迹和内部思路都摊开,学生能一步步学,不过学生通常只见到老师常出现的那类状态,一旦学生自己走岔了,容易掉链子。TML 就把这两头的好处凑一起:学生在自己走的轨迹上被老师逐 token 评分,既是学生真实会遇到的分布,又能拿到密集监督信号。
技术细节上,他们用了逐 token 的反向 KL(reverse KL)作为损失。通俗点讲,就是在当前上下文里,让学生尽量给出和老师相同的 token 概率分布。反向 KL 有两个实际好处:一是和 RL 的目标天然契合,二是“mode seeking”,它更倾向学老师的主要行为,而不是把概率平均到很多次优选项上。再一个好处是省算力:学生生成轨迹用的小模型运算快,老师算对数概率只要一次前向就够,不需要采样整条长轨迹再去算奖励。这意味着可以用短轨迹、部分轨迹来训练,也很容易写成可复现的脚本。TML 把这套流程写进了他们的 Tinker cookbook,博客里也给了链接和示例代码,按着能跑起来。
看实验就更直观。在数学推理上,TML 用 Qwen3-32B 做老师,Qwen3-8B-Base 做学生。起点是先在 OpenThoughts-3 数据集上做一轮离策略蒸馏,对学生做了 40 万条提示的全参数微调,学生在 AIME’24 上拿到 60% 分。要把这 60% 提升到 70%,按传统离策略继续扩数据估计要把提示扩到 200 万条,成本非常高。Qwen 团队的报告显示,用 RL(在类似的 SFT 初始化上)花了 17,920 个 GPU 小时能把分数推到 67.6%。他们还说,用在策略蒸馏可以把成本降到 RL 的十分之一,而且在 AIME’24 上能拿到 74.4%。TML 自己复现时,从那个 40 万提示的 SFT 检查点出发,只用了大约 150 步就把学生推到 70%,梯度步数比 RL 少了约 7 到 10 倍,换算成 FLOPs 估算大概等于 50 到 100 倍的计算效率提升。TML 甚至把成本按 FLOPs 换算:如果 SFT 数据已经存在或在多次训练中分摊,基线成本会降约 9 倍;算上教师采样成本的话,整体成本相比离策略蒸馏能低约 30 倍。
为了把原理说得更好懂,他们还举了一个 SimpleBench 的例子来说明老师如何惩罚“分叉 token”。一个学生模型(Qwen3-4B-Instruct-2507)把题看成纯数学问题,忽略了题里的物理前提,算出错误答案。老师模型(Qwen3-235B-A22B-Instruct-2507)在评分时会把那些把学生引偏的起始 token 惩罚得重一些。直白点就是:哪个起点把学生带上了错误路子,老师就重点批评那个起点。图里颜色越深惩罚越高,这样学生更容易学会避开那些会把后续步骤带偏的选择。末尾错出来的答案有时候不直接被重罚,因为在给定前面的条件下它是能被预测的——关键在于找出导致错误的关键一步。
除了数学,TML 还把这套办法用到企业内部助手的定制上。场景常见:想让模型既懂公司内部知识(比如手册、FAQ、文档),又保持原先学到的指令执行能力。问题是,直接在内部文档上微调,经常会让之前通过 RL 学到的行为能力退化——这就是所谓的灾难性遗忘。TML 的做法是先从已经有指令能力的 Qwen3-8B 出发,在内部文档上做中训练,但同时混入一定比例的聊天/指令数据,试图保住行为能力。他们拿 Tulu3 这类广泛的聊天和指令数据当作“背景聊天数据”,让 Qwen3-8B 去重新采样这些提示作为背景,按不同权重做混合微调。结果是,文档数据占比上去确实能把内部 QA 做得更好,但 IF-eval(衡量指令遵循能力)会下降。就算混入 30% 以上的聊天数据,也难完全维持原有的 IF-eval。用 LoRA 这类轻量微调去限制参数更新,也没能完全解决问题——做得稳的不够,学到的新知识也有限。
他们的对策是用在策略蒸馏“恢复”行为能力。具体做法是把模型早期的检查点当老师(比如 Qwen3-8B 的早期版本),在 Tulu3 提示上对当前已经在文档上微调过的学生做在策略蒸馏。这个过程并不接触内部文档数据,目标很单一:把指令跟随的能力拉回来。结果很直接:当先用 70% 文档 + 30% 聊天数据做微调后,再用在策略蒸馏去恢复指令行为,IF-eval 基本回到原来水平,内部 QA 分数几乎没被拉下。还发现聊天能力和内部 QA 之间有一定正向迁移——也就是说,恢复指令行为的同时,知识召回并没有被牺牲。这个事实表明:把模型自身当作奖励模型,用它的高概率行为作为奖励信号,是可行的;任何能输出 logprobs 的调优后模型,都能拿来做这种在策略蒸馏。
在数据效率上,TML 做了对比实验,发现强化学习那种把同一提示反复训练容易把答案记死(memorization)。在策略蒸馏里,他们学的是接近老师的整个分布,而不是某个唯一答案,所以可以在同一个提示上训练多次而不至于陷入机械记忆。举个具体的实验:随机挑了数据集里的一个提示,连续在同一个提示上训练 20 步,在策略蒸馏下仍能达到类似老师的表现。这点在现实中很实用——很多任务的数据难搞到手,能在少量数据上反复利用是很大的优势。
TML 在论文背景里也把自己的方法和早期工作联系起来。提到了 DAGGER(Ross et al., 2010)和过程奖励建模(Lightman et al., 2023),在策略蒸馏方向上是在 Agarwal 等人(2023)和 Qwen3 团队(2025)之前工作的基础上做了扩展。实现细节也开门见山:伪代码、训练脚本都放在 Tinker 的 RL 脚本基础上,脚本包含采样、奖励计算和策略梯度训练,路径都在 cookbook 的仓库里,方便社区复现。
关于算力和成本,TML 用 FLOPs 做了估算,给出比较直观的数:在策略蒸馏要达到 RL 那种效果时,梯度步数少了约 7 到 10 倍,AIME 的分数在十来个梯度步就能恢复,而 RL 需要大概 70 步才能到同一水平。把 SFT 数据已经存在或被摊销的情况算进来,基线成本下降明显;如果再把教师采样成本算上,总体比离策略蒸馏省不少。意思是密集的逐 token 监督,能把训练效率推高挺多的。
还有一点要交待的:Kevin Lu 在博客里提到他有 OpenAI 的背景,参与过 4o-mini 的发布和 GPT-5 系列、多个 mini/nano 版本的研发。作者走的是博客+开源 code 的路线,不是传统学术论文,目的就是把方法和复现步骤都公开,好让社区检验和跟进。博客和代码的链接都在文章里,想复现的人可以直接看源码跑一遍。
来源:智勇双全冰淇淋bnJk4GT