小红书AllSpark提出D³-MOPD,多教师在线蒸馏收敛提速3倍
导读在大模型合版训练过程中,多教师在线蒸馏(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 记录,计算出新配比并写入状态文件——全程异步,不阻塞主训练。分层采样器:把原来“所有数据混一起随机抽”的方式改成按观察者给