老师不能教一辈子:RetireOPD 让学生自己决定什么时候"辞退"蒸馏教师

核心摘要:多轮智能体用 RL 训练时,一条长轨迹只有一个标量奖励,中间决策全靠"蒙"。On-Policy Distillation(OPD)让一个掌握特权技能的"老师"给学生提供逐 token 的稠密监督,听着很美好——但 RetireOPD 这篇论文发现两个扎心事实:特权信息并不会自动让老师变强(7B 模型拿着技能提示也只有 23.4% 成功率);而且老师的指导是"阶段性"的,学生和老师的分歧缩小到一定程度后会重新扩大,继续蒸馏反而把学生锁死在老师的天花板下。作者的解法很直白:先用环境奖励把老师训好,再让学生同时学 RL 和蒸馏,当分歧停止缩小且学生成功率达到老师的 90% 时,自动"辞退"老师,之后纯靠 RL 冲刺。在 Qwen2.5 的 1.5B 到 7B 上,ALFWorld 成功率比 GRPO 基线提升 14.1 到 18.8 个点,WebShop 准确率提升 11.8 到 19.0 个点,并且在所有设置下都反超了自己的老师。


📖 论文信息

  • 标题:RetireOPD: Self-Retiring On-Policy Distillation for Agentic Reinforcement Learning
  • 作者:Yan Yu、Zhengxi Lu(共同一作)、Yizhou Liu、Yichen Pan、Aozhe Wang、Qipeng Chen、Hua Yang、Wenqi Zhang、Weiming Lu、Qianglong Chen、Yongliang Shen(通讯作者)
  • 机构:浙江大学、Alibaba Group
  • 发表:2026 年 9 月 17 日提交,arXiv: 2609.20784
  • 代码:https://github.com/ZJU-REAL/SDAR
  • 链接:https://arxiv.org/abs/2609.20784

🎯 一个你可能没意识到的问题:蒸馏老师的"保质期"

先交代一下背景。用 RL 训多轮智能体(比如在 ALFWorld 里做家务、在 WebShop 里网购),最大的痛点是奖励太稀疏——一条几十步的轨迹跑完,环境只告诉你"成功了"或者"失败了",至于中间哪一步走对了、哪一步走错了,全靠模型自己悟。

On-Policy Distillation(OPD)的思路是给学生配一个"开了天眼"的老师:老师能看到特权信息(比如从技能库里检索到的任务技能),在学生自己生成的轨迹上,逐 token 地告诉学生"这个位置我会怎么选"。学生在推理时不需要这些特权信息,技能被内化进了参数。这个范式最近挺火,RetireOPD 就是在它自己的工作 SDAR 基础上继续往下挖的。

但作者在做实验的时候发现了两个不对劲的现象。

现象一:给了特权信息,老师也不一定靠谱。 看下面这张图的左半边——在 GRPO+OPSD 这种"老师和学生共享同一份参数"的设定下,带技能上下文的分支并没有持续跑赢它要指导的学生分支。原因不难想:共享参数主要靠学生的目标来优化,模型从来没被训练过"怎么利用"这些技能上下文。光有答案放在桌上,不代表会抄。数据更直观:7B 模型直接拿技能做 prompt,ALFWorld 成功率只有 23.4%;3B 更惨,28.9%。

现象二:老师的指导有保质期。 中间的图显示,GRPO+OPD 联合训练确实拿到了"快速起步 + 更高上限"的好处——纯 GRPO 起步慢,纯 OPD 天花板低,两者结合看起来完美。但右边的图泼了冷水:师生之间的分布差距(teacher-student gap)先快速缩小,然后反弹扩大。学生把老师诱导的行为内化之后,奖励优化的梯度开始偏好老师不会采取的动作,两个目标打架了。这时候还继续逼着学生模仿老师,等于把学生焊死在老师的水平线上。

图2:3B 学生在 ALFWorld 上的训练动力学

图 2:三个关键观察。左:特权老师分支并不持续强于学生分支;中:GRPO 慢启动、OPD 低上限,GRPO+OPD 兼得快起步和高上限;右:师生差距先缩小后反弹——这就是"该退休了"的信号。

看到右边那条反弹的曲线时我愣了一下。说实话,"蒸馏到后面会冲突"这件事直觉上能猜到,但很少有人把它量化成一条曲线摆在你面前。作者在附录里还给了一阶分析:定义 \(F_\lambda(\theta)=J(\theta)-\lambda D(\theta)\),其中 \(g=\nabla J\) 是奖励梯度、\(h=\nabla D\) 是蒸馏梯度,一步更新后的奖励增量正比于 \(\|g\|^2-\lambda\langle g,h\rangle\)\(\langle g,h\rangle\gt 0\) 时,两个梯度方向冲突,继续联合优化一阶上是在拖奖励的后腿;而 \(\frac{dD}{dt}=\langle g,h\rangle-\lambda\|h\|^2\),所以"差距不再缩小"恰好就是冲突出现(或蒸馏信号枯竭)的可观测信号。理论和生活经验对上了:差距止跌,就是散伙的时候。

那现有方法怎么处理"学多久"这个问题?要么退火——按预设曲线衰减蒸馏权重;要么两阶段——到预定步数硬切换。问题在于,论文观察到差距止跌的时点在不同模型和任务上从第 50 步到第 90 步不等。任何写死的 schedule 都注定在某些设置下撤早了(浪费老师)或者撤晚了(锁死学生)。

这篇论文的核心主张一句话:老师还有没有用,训练信号自己会说话,切换时机应该在线决定,而不是训练前写死。


🏗️ RetireOPD 怎么做:三步走,关键是第三步

图1:GRPO 与 OPD 的冲突与 RetireOPD 的解决思路

图 1:左,师生早期对齐、后期冲突;中上,GRPO 的监督稀疏但扎根任务;中下,OPD 的监督稠密但受限于老师;右,RetireOPD 早期两者兼用、冲突点辞退老师,最终反超老师。

整个方法分三个阶段,对应下面的总览图。

阶段一:把老师先训出来。 老师 \(\pi_\phi\) 和学生 \(\pi_\theta\) 从同一个 base model、同样的架构初始化,但老师能拿到特权技能上下文 \(c^+\)(来自 SkillRL 的 SkillBank,用关键词匹配检索)。用 GRPO 加环境奖励单独优化老师:

\[\phi^{*}=\arg\max_{\phi}\ \mathbb{E}_{x\sim\mathcal{D},\ \tau\sim\pi_{\phi}(\cdot\mid x,c^{+})}\left[R(\tau)\right]\]

训完冻结,这就是 skilled teacher \(\pi_T\)。这一步直接回应现象一——老师必须先学会用自己的特权信息,才有资格教人。训练前后差距巨大:3B 从 28.9% 涨到 79.7%,7B 从 23.4% 涨到 90.6%。

阶段二:师生联合训练。 学生的目标是 GRPO 加 OPD 的混合损失:

\[\mathcal{L}_{\mathrm{student}}(\theta)=\mathcal{L}_{\mathrm{GRPO}}(\theta)+\lambda\,\mathcal{L}_{\mathrm{OPD}}(\theta)\]

OPD 项在学生自己的轨迹上、逐前缀比较学生分布和带技能的老师分布,用的是 reverse KL。精确 KL 要对全词表求和,太贵,所以用 sampled-token 近似:

\[\Delta_t=\log\pi_T(y_t\mid x,c^+,y_{\lt t})-\log\pi_{\theta}(y_t\mid x,y_{\lt t})\]

\(-\Delta_t\) 就是该位置 reverse KL 的单样本 Monte Carlo 估计。这个近似挺务实——在 vocab 动辄十几万的今天,逐位置全词表求和的开销没人受得了。

阶段三:自适应退休(Adaptive Retirement),全文最值钱的部分。 训练按 \(W=5\) 步划成监控窗口,定义窗口级的师生对齐进度 \(\bar{K}_m\)(窗口内 \(\Delta_t\) 的平均),然后算两个信号:

\[\rho_m^{(K)}=\frac{\bar{K}_m-\bar{K}_{m-1}}{\bar{K}_m},\qquad \eta_m=\frac{SR_m+SR_{m-1}}{2\,SR_T}\]

\(\rho_m^{(K)}\) 是差距的相对变化率——小于 0 说明学生还在向老师靠拢,大于等于 0 说明对齐停滞或反转;\(\eta_m\) 是学生相对老师的竞争力(学生成功率取相邻两窗口平均以压波动,\(SR_T\) 是老师的成功率)。退休判据:

\[m^{*}=\inf\left\{m\geq 2:\ \rho_m^{(K)}\geq\delta\ \land\ \eta_m\geq\gamma\right\}\]

默认 \(\delta=0\)\(\gamma=0.9\)。翻译成人话:差距不再缩小,且学生达到老师九成水平,两个条件同时满足,才剪断脐带。 为什么要两个条件?只有 \(\rho\) 的话,学生还很弱的时候一次噪声波动就可能误触发退休;只有 \(\eta\) 的话,师生差距还在快速缩小时就撤退等于浪费了免费指导。触发之后移除 OPD 项,纯 GRPO 继续训练——连老师的前向传播都省了。

图3:RetireOPD 方法总览

图 3:三阶段流程。左,Teacher Construction——老师带技能上下文与环境交互,用奖励训练后冻结;中,Joint GRPO-OPD Skill Internalization——学生无技能 rollout,同时吃 GRPO 优势和 OPD 的逐 token 分布对齐;右,Adaptive Retirement——监控对齐进度 \(\Delta=\log p_T-\log p_S\) 与相对竞争力 \(\eta\),满足 \(\rho^\Delta\geq\delta\)\(\eta\geq\gamma\) 即剪断蒸馏。

这个设计让我想到带实习生:前期手把手教,但师傅得盯着看——什么时候徒弟开始有自己的想法、而且想法确实能跑通,就该放手让他自己干了。一直按着头教,徒弟永远超不过师傅。


🧪 实验:数字确实能打

实验在 ALFWorld(文本具身家务任务,分 Pick / Look / Clean / Heat / Cool / Pick2 六类)和 WebShop(模拟网购,看 Score 和 Acc)两个 benchmark 上跑,模型是 Qwen2.5-Instruct 的 1.5B / 3B / 7B 三档。基线覆盖得挺全:纯 prompt(Vanilla、Skill-Prompt)、纯 RL(GRPO、GiGPO、PPO、RLOO、Skill-GRPO)、纯蒸馏(OPD 系列、OPSD)、以及混合(GRPO+OPD、GRPO+OPSD)。

主实验结果(ALFWorld 平均成功率 / WebShop Acc):

方法 1.5B ALFWorld 1.5B WebShop 3B ALFWorld 3B WebShop 7B ALFWorld 7B WebShop
GRPO 72.8 56.8 75.0 63.3 81.2 72.6
GiGPO 86.7 65.0 92.2 69.5 90.8 72.8
Skill-GRPO*(即老师) 81.2 67.9 79.7 64.8 90.6 78.9
GRPO+OPD 87.5 69.9 82.8 74.2 92.2 81.2
GRPO+OPSD 72.7 66.8 78.1 66.4 79.7 76.5
RetireOPD 89.8 75.8 93.8 77.3 95.3 84.4

几个值得展开说的点。

相对 GRPO 的涨幅很实在:ALFWorld 上 1.5B 涨 17.0 个点、3B 涨 18.8 个点、7B 涨 14.1 个点;WebShop Acc 上分别涨 19.0、14.0、11.8 个点。小模型收益更大,符合直觉——底子越弱,稠密监督的价值越高。

每个设置下都反超了自己的老师。 这是我最看重的结果。蒸馏类方法的尴尬在于学生很难突破老师的天花板,而 RetireOPD 在 9 个设置(3 个模型 × 3 个指标口径下)全部超过 Skill-GRPO 老师,比如 3B 上 93.8 对 79.7。退休后纯 RL 的那段冲刺确实把学生的上限从老师手里解放出来了——退休点处学生成功率 76.6%,之后一路爬到 93.8%。

蒸馏基线暴露的问题也印证了动机。 跨规模蒸馏的结果很惨:OPD-3B(3B 老师教 1.5B 学生)在 ALFWorld 上只有 5.6%,OPD-7B 教 3B 只有 38.3%,OPD-14B 教 7B 是 64.8%——都明显低于对应的同规模 RetireOPD。共享参数的 OPSD 也不行(1.5B 上 14.1%)。诚实地说,这些跨规模蒸馏基线的设置看起来有点"为了输而输"(直接拿不同分布的强老师硬蒸,没有任何适配),但它至少说明了"同架构自我蒸馏 + 退休机制"这条路的合理性。

消融实验(Table 2,3B / ALFWorld):

设置 退休步 成功率
RetireOPD 完整版 60 92.2
去掉对齐停滞信号(只看竞争力) 50 89.0
去掉相对竞争力信号(只看停滞) 100 89.0
不退休(全程联合训练) 82.8
不要 OPD(纯 GRPO) 0 75.0

两个信号各值 3.2 个点,退休机制本身值 9.4 个点,而 OPD 监督值 17.2 个点——每一层都有贡献,且贡献排序合理。注意去掉竞争力信号后退休被拖到了第 100 步:学生早期波动时 \(\rho\) 会误报"停滞",没有竞争力门槛就会一直观望。

阈值鲁棒性是这类方法的生命线——如果退休点对超参敏感,那"自适应"就是把手工调 schedule 换成了手工调阈值,换汤不换药。结果还不错:

图7:退休时机对阈值的敏感性

图 7:\(\gamma\in[0.80,0.96]\)\(\delta\in[-0.10,0.04]\) 范围内,退休步稳定在默认值的 ±5 步以内;只有推到极端阈值(\(\gamma\to1.0\)\(\delta\gt 0.04\))才会明显延迟退休。

\(\gamma\)\(\delta\) 的参数消融(Table 3)也显示成功率在 89.1 到 92.2 之间波动,最差配置也比"不退休"的 82.8 高出一大截。另外作者还对比了手工设计的线性退火基线 ATOD(前 80 步把蒸馏权重从 1.0 线性降到 0.1):退火早期涨得快但后期进入平台期,自适应退休则持续爬升。这基本封死了"我手工调个 schedule 也能行"的退路。

Case study 有个细节挺有意思。 附录里展示了 ALFWorld 第 8 步的关键 token "clean":训练过的 skilled teacher 给这个位置打分 −0.826,而 OPSD 那种没专门训过的老师是 −16.625。差了 20 倍的 logit 惩罚——没训过的老师在关键决策点上会狠狠压制正确动作——特权信息没消化好,老师教的就是错的。


🤔 我的判断

这篇论文最值钱的地方不是哪个单点技术,而是把一个大家心照不宣的现象变成了可计算的信号。"蒸馏到后期会冲突"很多人都有体感,但把它落到 \(\rho^{(K)}\)\(\eta\) 两个从训练日志里直接能读的指标上,再配一阶分析说明"差距止跌即梯度冲突",这个闭环做得干净。

也要泼几盆冷水。

第一,验证面偏窄。只有两个 benchmark、一个模型家族、最大 7B。ALFWorld 和 WebShop 算是 agentic RL 的标准练手场,但离真实复杂场景(更长的 horizon、更稀疏的奖励、工具调用失败恢复)还有距离。退休判据在代码智能体或多模态任务上是否同样稳,得打个问号。

第二,退休是一次性全局硬切换。不可逆、不区分任务类型。ALFWorld 里 Clean 类任务和 Pick 类任务的难度差异不小,学生可能在一类任务上已经超越老师、另一类还差得远,全局退休对后者就不公平。per-task 甚至 per-prompt 的渐进式撤出是个自然的后续方向。

第三,多了一个训练阶段的开销没有被正面量化。老师要先用环境奖励单独训一遍再冻结,论文只定性说"退休后省掉老师前向传播",没给 GPU 小时的对比表。在 150 步训练、batch 16、G=8 的规模下这可能无所谓,但放大到生产规模,这个前置成本值不值需要算账。

第四,依赖 SkillBank 的质量。特权技能来自 SkillRL 的技能库加关键词检索,检索质量对老师上限的影响没有单独消融。如果换一个领域没有现成技能库,整个pipeline的第一块砖就得重新烧。

跟同期工作摆在一起看:GiGPO 解决的是"轨迹级奖励太粗"的问题(加 step 级优势),RetireOPD 解决的是"蒸馏监督何时撤"的问题,两者其实正交,甚至理论上可以叠加——这倒是个挺值得试的组合。


💡 收尾

如果你在做 agentic RL 加蒸馏的混合训练,这篇论文给的 actionable takeaway 很直接:别写死蒸馏 schedule,去监控师生 logprob 差距的相对变化率和学生的相对成功率,差距止跌加九成达标就撤。两个指标的实现成本几乎为零——都是训练日志里现成的量。

更深一层的启发是:凡是"双目标联合训练"的场景(蒸馏加 RL、SFT 加 RL、甚至多任务学习),都可以问同一个问题——辅助目标的梯度什么时候从助力变阻力?训练信号里大概率藏着答案。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我