On-Policy Distillation:让模型在自己的烂摊子里学会变好
普通蒸馏让学生看老师的标准答案。On-policy 蒸馏更像老师改学生自己的草稿:模型先生成,老师再在它真实走到的状态里教它怎么修回来。
On-Policy Distillation:让模型在自己的烂摊子里学会变好
训练大模型时,有一个问题很烦:模型在训练集里看见的世界很干净,真上线之后遇到的世界却是它自己写出来的。
标准答案里没有它前面胡说八道留下的半截句子,没有它写错的代码路径,没有它把工具调用弄乱之后的尴尬上下文。可真实生成就是这样。模型不是一次性从天上掉下一篇完美答案,它是一 token 一 token 往前走。前面一步歪了,后面就要在歪掉的上下文里继续活。
On-Policy Distillation 说的就是这件事:别只让学生模型看老师的标准答案,也要让它在自己真实会走到的状态里,向老师学习。
先把词拆开
Distillation 是蒸馏。大模型训练里通常指老师模型教学生模型。老师可以是一个更强、更贵、更大的模型,学生可以是一个更小、更便宜、准备上线的模型。学生学的不是课本上的唯一答案,而是老师的回答方式、判断习惯、纠错能力和 token 分布。
Policy 是策略。放到语言模型里,可以粗略理解成:这个模型在当前上下文下会怎么继续写。
On-policy 的意思是:训练数据来自当前学生模型自己的策略。不是拿一批固定题目,让老师先写好答案,再让学生模仿;而是先让学生自己做,做出一份草稿、半成品、错误轨迹,再让老师看着这份草稿来教。
普通蒸馏像背答案
普通蒸馏的流程很直:
- 给一个 prompt。
- 老师模型生成一个好答案。
- 学生模型学习这个好答案。
这当然有用。便宜、稳定、容易规模化。很多小模型就是靠这种方式学会了大模型的语气、知识结构和基本任务能力。
但它有个盲区:学生只看见老师怎么在干净输入上表现,却没有学会老师怎么处理学生自己制造出来的麻烦。
这就像学开车时只看教练在空旷路上标准倒库。真上路以后,你车头已经偏了,后面还有车催,旁边有电动车钻出来。这时候你需要的不是标准动作,而是补救动作。
On-policy 蒸馏像老师改你的草稿
On-Policy Distillation 的流程更接近真实学习:
- 给学生模型一个任务。
- 学生先按自己的能力生成回答,可能写对,也可能写偏。
- 老师模型读取这个任务和学生的回答。
- 老师给出更好的答案、修正、评分,或者指出哪一步开始错。
- 学生学习老师在这个状态下会怎么做。
关键不是"有老师",而是状态来自学生自己。
比如让学生写一个函数。学生写出能跑但边界条件错的代码。老师不是重新讲一遍函数怎么写,而是看着这份代码说:这里空数组会炸,这里返回值类型不对,这里应该补测试。学生学到的东西就更接近上线时真正需要的能力:写到半路出错了,怎么收回来。
它解决的是分布偏移
大模型训练里经常会遇到 distribution shift,分布偏移。训练时,模型看的是人类写好的答案、老师写好的答案、清洗过的数据。推理时,模型看的是自己刚刚生成出来的上下文。
这两个世界不一样。
在短问答里,这个问题还不算致命。可到了长任务、代码 agent、多轮工具调用、浏览器操作、文件修改,它会被放大。一个错文件名会带来错 patch;一个错 patch 会带来错测试;错测试又会诱导模型继续修错地方。模型越走越深,最后不是不会答题,而是不会从自己的错误现场撤出来。
On-policy 蒸馏的价值就在这里。它让训练更接近部署。学生不是只学老师在理想状态下的样子,而是学老师如何面对学生自己的半成品。
它和 RLHF、DPO、PPO 的关系
On-policy 这个词本来就有强化学习味道。PPO 这类方法会让当前模型先生成回答,再用奖励模型或人类偏好打分,然后根据当前模型生成的数据更新模型。这已经很接近 on-policy 训练。
On-Policy Distillation 不是某一个固定算法名,更像一种训练范式。老师可以直接给改写答案,也可以给偏好选择,也可以给过程反馈。学生生成候选答案,老师挑出更好的;学生生成两条轨迹,老师判断哪条更可靠;学生在 agent 任务里走错路,老师接管并留下修正轨迹。这些都可以算同一类思想。
如果说 SFT 是"看标准答案",DPO 是"学偏好选择",PPO 是"按奖励往前调",那 On-Policy Distillation 更像一句朴素的话:让模型在自己会遇到的局面里学习。
为什么它贵,但还是重要
On-policy 蒸馏不便宜。学生要先生成,老师要再读一遍,有时还要多轮修改。学生每更新一轮,数据分布也变了,旧数据很快不完全贴合新模型。训练系统要处理采样、过滤、打分、蒸馏、再采样,比离线蒸馏麻烦得多。
但它解决的是离线数据很难解决的问题:模型自己的行为会改变它接下来看到的世界。
这对 agent 尤其重要。一个会写漂亮单步答案的模型,不一定会做三小时任务。长任务里的能力,不只是知道答案,而是发现自己偏了、停下来、改路线、继续推进。老师模型最值得蒸馏给学生的,往往不是最后那段漂亮总结,而是中间那些把局面救回来的动作。
一句话
On-Policy Distillation 不是让学生背老师的满分作文。
它是让学生先写,写错也没关系。老师拿着学生自己的草稿讲:你真实会错在这里,下一步应该这样救。
大模型越往 agent、代码、长任务走,这种训练就越重要。因为真正上线的模型,从来不是活在标准答案里。它活在自己的输出里。
More from WayDigital
Continue through other published articles from the same publisher.
Comments
0 public responses
All visitors can read comments. Sign in to join the discussion.
Log in to comment