多教师OPD收敛速度不一致?小红书 AllSpark 提出D³-MOPD
导读
在大模型合版训练过程中,多教师在线蒸馏(MOPD)让学生模型同时向多位专家教师学习。但传统固定配比不适应各领域学习速度的差异,导致早收敛的领域仍占算力,真正需要训练的领域却分不到数据。
小红书 AllSpark 团队提出 D³-MOPD,直接利用训练本就在计算的 reverse-KL 信号,实时评估各领域进度,动态调度数据配比,让模型做到“缺哪补哪”。
该方法将师生差距弥合 97%(Vanilla MOPD 仅 63%),收敛提速 3 倍,7 个基准中有 3 项反超教师。
图 1:Vanilla MOPD 与 D³-MOPD 的对比示意(以 3 个领域为例)。固定配比在整个训练过程中保持不变,哪怕有的领域早就收敛;D³-MOPD 则会动态调整,把已收敛领域的数据份额降下来,让还没学好的领域拿到更多数据。
01
固定配比的代价:多领域蒸馏中被浪费的算力
当一个学生模型同时向数学、代码、指令遵循、工具调用四位专家教师学习时,各领域的数据配比应该怎么定?
主流做法是训练开始前按题库大小定死一个比例,然后一路训到底不再调整。这个方案背后隐含着一个默认前提,各领域的学习速度应该差不多。
为了检验这个假设是否成立,团队做了一个对照实验:让学生模型分别单独学习数学、代码、指令遵循三个领域(Single-teacher OPD),观察它跟教师之间的 reverse-KL 差距如何随训练变化。
图 2:单独训练数学、代码、指令遵循三个领域时的 reverse-KL 曲线。三条曲线的收敛节奏相差很大,指令遵循的绝对差距还比另外两个领域高出 1—2 个数量级。
结果非常直观:
数学:训练走到 1/4 时就基本收敛,KL 早早进入平台期;
代码:需要 50 多步才降到平台期,节奏中等;
指令遵循:训练预算耗尽仍在持续下降,绝对 KL 值始终比另外两个领域高出 1—2 个数量级。
三个领域,三个完全不同的收敛节奏。
那么,把它们按 1/3 均匀配比放在一起做 MOPD 训练,又会怎样?收敛节奏的差异会立刻暴露出来:
图 3:三个领域按均匀配比做 MOPD 训练时的 reverse-KL 曲线。各领域进入低 KL 平台期的时间点相差很大,但配比全程没有变化。
代码在第 48 步就已收敛;
数学在第 96 步收敛;
指令遵循一直拖到第 144 步才收敛。
但配比自始至终没变,代码和数学早已“学不动”,训练仍在源源不断分配数据;而真正还在进步的指令遵循,却始终只能拿到 1/3 的资源。
从这个现象看,固定配比可能会导致某些领域的算力浪费,以及某些领域学习不充分。
02
一个“训练自带”的信号:reverse-KL 已经在告诉我们答案
既然各领域的学习速度差异如此显著,那是否可以基于某种信号构造一个指标,实时表示每个领域到底学到什么程度?以及是否还会继续学下去?
我们发现 reverse-KL 就是一个现成的信号。
MOPD 的训练本身就是基于各领域的 reverse-KL——训练每一步都要把这个数字算出来才能反向传播。而这个数字随训练下降的轨迹,几乎完美地刻画了“学生离教师还有多远”。
既然它已经存在、已经准确反映了各领域的真实学习进度,那就完全可以直接拿它来指导下一步该往哪个领域倾斜数据配比。
这正是 D³-MOPD 的出发点:几乎不新增额外计算,就让这个训练自带的信号同时充当“打分员”,实时驱动数据配比动态调整。
03
复合打分:还差多少 × 进步多快,让配比追上真实进度
要用 reverse-KL 打分,最直觉的做法是“哪个领域 KL 高就给谁多喂数据”。但实际操作里,单一指标会漏判两种情况:
一个领域可能“差得远”,却已经卡在瓶颈上不动——再多喂数据也没用;
一个领域可能“快学会了”,只是短期波动让 KL 猛降一段——多给资源也换不来多少提升。
D³-MOPD 用两个指标相乘解决这个问题:
还差多少:当前 KL 除以初始 KL,越接近 0 说明越接近教师;
进步多快:近期 KL 的下降速度(若停滞或上涨则记为 0)。为了排除短期噪声,取多段时间的平均值。
两者相乘的意义在于:只有当一个领域“确实还没学会”且“确实还在稳步进步”时,它才能拿到高分——两个条件缺一不可。
打完分后,系统通过 Softmax 将其换算成实际配比。这里还加了两个安全垫:
最低配比保底:即使某个领域接近收敛,也保留一定量的训练数据,防止模型慢慢忘掉已经学会的能力;
温度调节参数:控制配比向进步最快的领域倾斜的强度。
04
轻量架构:主训练零改动,只在数据侧添两个模块
D³-MOPD 会给训练带来多少额外开销?答案是:几乎为零。
整个方案只在数据侧添加了两个轻量模块:
观察者(Watcher):一个独立于主训练的进程。它定期读取各领域的 KL 记录,计算出新配比并写入状态文件——全程异步,不阻塞主训练。
分层采样器:把原来“所有数据混一起随机抽”的方式改成按观察者给出的配比精确组装每批次样本,同时加入小幅随机扰动,既避免相邻批次同质化,也顺便给快收敛的领域保留一些探索机会。
图 4:D³-MOPD 整体框架。观察者作为独立进程异步运行,负责读取 KL 记录、算出新配比、写入状态文件;数据源按新配比组装每个批次,训练主循环全程不受影响。至于学生怎么生成回答、教师怎么打分、模型怎么更新参数,主训练的每一步都没改动。
这意味着 D³-MOPD 可以与其他 RL 训练技术无缝叠加,对领域数量也完全不设限。融合的领域越多、各领域收敛节奏差异越大,动态调度带来的收益就越显著。
05
实验结果:97% 对 63%,收敛加速 3 倍,多个基准反超教师
团队在 Qwen3.6-35B-A3B 模型上进行了系统验证。四位教师分别对应数学、代码、指令遵循、工具调用,评测覆盖 AIME 2025、HMMT(Nov)、LiveCodeBench、OJBench C++、IFBench、IFEval、BFCL v3 Multi-Turn 共 7 个权威基准。为了直观对比,团队将学生初始水平记为 0、教师水平记为 1,再统一取平均分。
图 5:D³-MOPD 与 Vanilla MOPD 在 7 个基准与平均分上的训练曲线对比。D³-MOPD 在几乎每个基准上的峰值都优于 Vanilla MOPD,且所需训练步数更少。
主要实验结果:
性能全面领先。D³-MOPD 将师生能力差距补齐了 97%(Vanilla MOPD 仅 63%)。更亮眼的是,在 HMMT(Nov)、IFEval、OJBench C++ 这 3 个基准上,学生甚至反超了对应的教师模型。
收敛加速 3 倍。达到平均 61.4 分,Vanilla MOPD 需要 143 步,D³-MOPD只需 47 步。若看每个基准的单项峰值,Vanilla MOPD 最晚要练到 207 步(AIME 2025)才登顶,D³-MOPD 在前 79 步内就已全面追平甚至超越。
消融验证每个设计都不可或缺。单一信号(只看“还差多少”或“进步多快”)都不如两者相乘;去掉小幅随机扰动会让代码类基准明显掉分;拉长观察窗口(取 3 段平均)比只看最近 1 段更抗干扰。
更有意思的是数据配比随训练变化的轨迹,它揭示了一个完全由 KL 信号驱动的“算力接力”过程:
图 6:D³-MOPD 与 Vanilla MOPD 的各领域采样配比演化。随着各领域先后收敛,D³-MOPD 会把配比动态转移到还在进步的领域。
代码配比一路从 25% 降至 15% 左右;
腾出的算力首先流向数学,让它在中期一度冲到 50%;
数学收敛后,配比再次转移,指令遵循和工具调用在后期拿到了 50%—55% 的数据。
整个过程,模型像是自己找到了训练节奏,每个领域只在它还能进步的阶段拿到最多的数据。算力真正被用在了刀刃上。
///
写在最后
D³-MOPD是一个简单且有效的方法,MOPD 训练本来就在计算 reverse-KL 信号,D³-MOPD 只是让它同时充当数据配比的调度器,几乎不增加训练开销。
由于只优化了数据采样这一环节,它展现出极强的通用性:不仅对领域数量不设限,还能与其他训练改进技术无缝叠加。在大模型合版训练日益复杂的今天,融合的领域越多、各领域收敛节奏差异越大,这套动态调度方法所能释放的收益也就越显著。
论文:
https://arxiv.org/abs/2608.24987
///
作者简介
孙泽辰,AllSpark Pevek 组算法实习生,苏州大学自然语言处理(NLP)方向博士在读。目前已以第一作者身份发表 CCF A/B 类论文 6 篇,主要研究方向为大语言模型与长上下文语言模型。
沐川,AllSpark Pevek 组负责人。