ZEDA:后训练 MoE 可以跳过一半专家——用自蒸馏给模型装上定速巡航
ZEDA:后训练 MoE 可以跳过一半专家——用自蒸馏给模型装上"定速巡航"
> 后训练(Post-trained)的静态 MoE 模型已经花了数百万美元训练好了,怎么让它在推理时更聪明地分配计算?清华 C3I、快手、上海 AI Lab 等团队提出的 ZEDA 给出了一个反直觉的答案:往模型里塞几个"什么都不干的专家",让路由器自己学会什么时候该偷懒。8 张 H200,31 小时,30B 规模的 MoE 模型就能自适应成动态路由,跳过一半专家计算,推理加速 20%,性能损失几乎为零。这比从头训练一个动态 MoE 便宜了几个数量级。
---
一、问题的核心:为什么后训练 MoE 动不了?
MoE(Mixture-of-Experts)已经是大模型标配。Qwen3-30B-A3B、GLM-4.7-Flash、DeepSeek-V3 都是 MoE 架构。
静态 MoE 的问题:每个 token 固定激活 K 个专家(如 Qwen3 的 128 个专家中激活 8 个)。这意味着:
- 简单 token(如标点符号、常见词汇)和困难 token(如数学推导、代码逻辑)消耗完全相同的计算量
- 这很不合理——简单 token 真的需要 8 个专家"会诊"吗?
但现有动态 MoE 方法的问题: 1. 需要从头预训练——如 MoE++、LongCat,从 0 开始训练动态路由 2. 需要任务特定适配——如 AdaMoE,针对特定任务重新训练 3. 无法用于已训练好的模型——已经有 SFT、RL、OPD 的 MoE 模型,谁也不敢动它的路由参数
ZEDA 的核心问题:一个已经花了数百万美元训练好的后训练 MoE 模型,能不能低成本地变成动态 MoE?
---
二、ZEDA 是什么?一句话定位
> "ZEDA 是一个后训练适配框架,通过向已有 MoE 模型注入零计算专家(zero experts),用两阶段自蒸馏(SFT + On-Policy Distillation)让路由器学会动态分配计算,在不修改任何原有专家参数的情况下,实现超过 50% 的计算削减和约 20% 的推理加速。"
论文信息:
- 标题:Post-Trained MoE Can Skip Half Experts via Self-Distillation
- 作者:Xingtai Lv, Li Sheng, Kaiyan Zhang, Yichen You, Siyan Gao, Xueheng Luo, Yuxin Zuo, Yuchen Fan, Junlin Yang, Ganqu Cui, Bingning Wang, Fan Yang, Youbang Sun, Ning Ding, Bowen Zhou
- 机构:清华大学(TsinghuaC3I)、Frontis.AI、快手、上海 AI Lab、微信 AI
- arXiv: 2605.18643
- GitHub: https://github.com/TsinghuaC3I/ZEDA
三、核心方法:零专家 + 自蒸馏 + 分组平衡
3.1 零专家注入(Zero-Expert Injection)
ZEDA 的第一步是往每个 MoE 层注入 N_Z 个零专家:
零专家的特性:
- 输出恒为 0(Z_j(h) = 0)
- 不增加任何参数
- 不增加任何计算(因为输出已知为 0)
- 原始:N 个专家中选 top-K
- ZEDA:(N + N_Z) 个候选中选 top-K
- 如果选中了零专家,该位置的计算直接跳过
- 实际激活的正常专家数量 = K -(选中的零专家数量)
ZEDA 对比了另一种方案——copy expert(输出等于输入):
| 类型 | 输出 | 问题 |
|---|---|---|
| Zero Expert | 0 | 真正的"什么都不做",不干扰原有计算流 |
| Copy Expert | h(输入原样输出) | 引入 scale mismatch 和 direction mismatch,严重破坏模型性能 |
结论:零专家是真正的"无操作"(no-op),而 copy expert 是"伪无操作"——它看似不计算,但实际上改变了残差流的尺度。
3.2 两阶段自蒸馏
注入零专家后,路由器的候选池变了,但路由参数还是原始的。需要让路由器学会"什么时候该选零专家"。ZEDA 采用两阶段自蒸馏:
第一阶段:SFT(Supervised Fine-Tuning)
- 用原始模型(冻结)作为教师,生成训练数据
- 训练目标是让 ZEDA 模型模仿教师的行为
- 这一阶段让路由器初步学会如何在新候选池(含零专家)中做选择
- 用 ZEDA 模型自己生成的序列(on-policy rollouts)继续训练
- 教师模型对这些序列打分,提供监督信号
- 解决 SFT 阶段的 off-policy 问题(学生训练和测试分布不一致)
- 17k 数学(NVIDIA AceReason-1.1-SFT)
- 15k 代码(NVIDIA AceReason-1.1-SFT)
- 28k 对话(NVIDIA Llama-Nemotron-Post-Training-Dataset)
- Qwen3-30B-A3B:8 张 H200,31 小时
- GLM-4.7-Flash:8 张 H200,62 小时
3.3 分组辅助损失(Group Auxiliary Loss)
这是 ZEDA 最精妙的设计之一。
传统辅助损失的问题:标准 MoE 的负载均衡损失(auxiliary loss)要求所有专家(包括零专家)均匀激活。但后训练 MoE 的正常专家之间已经有了精心调优的非均匀路由分布——某些专家擅长数学,某些擅长代码,强制均匀化会破坏这些能力。
ZEDA 的分组策略:
- 将 N 个正常专家视为一个组(Group E)
- 将 N_Z 个零专家视为另一个组(Group Z)
- 负载均衡只在组之间进行,不在组内进行
L_GA = α * (N + N_Z * w) / K * (f_E * P_E / N + f_Z * P_Z / (N_Z * w))
其中 w 是零专家组的相对权重,控制零专家的目标激活比例。
效果:
- w = 1 → 目标 r_ZE ≈ 33%
- w = 2 → 目标 r_ZE ≈ 50%(论文选择)
- w = 3 → 目标 r_ZE ≈ 60%
- w = 4 → 目标 r_ZE ≈ 67%
---
四、实验结果:全面碾压 baseline
4.1 11 个基准测试的综合评估
Qwen3-30B-A3B(128 专家,激活 8 个):
| 方法 | 平均精度 | 零专家激活率 | AIME24 | AIME25 | GSM8k | MATH-500 | LCBv5 | IFEval |
|---|---|---|---|---|---|---|---|---|
| 原始模型 | 74.9 | 0% | 80.9 | 71.0 | 95.4 | 94.4 | 61.5 | 86.3 |
| AdaMoE | 54.8 | 51.9% | 25.0 | 24.8 | 92.4 | 79.8 | 36.1 | 82.4 |
| Dynamic Skipping | 68.1 | 43.8% | 78.1 | 67.9 | 95.2 | 94.4 | 57.3 | 70.4 |
| ZEDA | 74.2 | 51.2% | 79.0 | 69.1 | 95.5 | 95.2 | 58.2 | 84.3 |
| 方法 | 平均精度 | 零专家激活率 | AIME24 | AIME25 | GSM8k | MATH-500 | LCBv5 | IFEval |
|---|---|---|---|---|---|---|---|---|
| 原始模型 | 72.5 | 0% | 84.2 | 76.5 | 95.2 | 96.4 | 48.0 | 67.3 |
| AdaMoE | 57.1 | 47.0% | 44.1 | 42.4 | 93.9 | 86.4 | 26.4 | 63.8 |
| Dynamic Skipping | 67.8 | 37.5% | 79.9 | 69.9 | 93.8 | 96.0 | 32.3 | 63.4 |
| ZEDA | 71.8 | 53.0% | 79.8 | 73.1 | 94.4 | 95.2 | 51.6 | 68.2 |
4.2 推理效率
在 8192 序列长度下,使用 SGLang 推理框架:
- Prefill 阶段:约 20% 加速
- Decode 阶段:约 20% 加速
- 随着序列长度增加,加速略有衰减(但在 8k 时仍保持 20%)
4.3 与 ZEDA 变体的对比
| 方法 | 描述 | Qwen 平均精度 | GLM 平均精度 |
|---|---|---|---|
| ZEDA | SFT + OPD(完整) | 74.2 | 71.8 |
| ZEDA_SFT | 仅 SFT | 73.3 | 70.9 |
| NET_SFT | 直接减半专家 + SFT | 72.3 | 70.6 |
| NET_SFT→OPD | 直接减半 + 两阶段 | 73.0 | 70.9 |
- OPD 阶段不可或缺(ZEDA 74.2 vs ZEDA_SFT 73.3)
- 零专家机制比直接减半专家更好(ZEDA 74.2 vs NET_SFT→OPD 73.0)
- 直接减半专家(NET)过于粗暴,破坏了模型的路由能力
五、ZEDA 的深层洞察:零专家激活在学什么?
5.1 与不确定性的正相关
论文对 110 个提示的生成过程进行了 token 级分析:
发现 1:零专家激活率 r_ZE 与教师-学生的 logp-diff(分布差距)负相关——当学生不确定该输出什么时(与教师分布差距大),零专家激活率低(用更多正常专家)。
发现 2:r_ZE 与熵负相关——高熵(不确定)token 用更多专家,低熵(确定)token 用更少专家。
这意味着:ZEDA 不是随机跳过专家,而是根据 token 的"难度"智能分配计算。
5.2 与响应模式的关系
对齐文本和零专家激活率后发现:
- 自然语言(对话、描述):r_ZE 较低,用更多专家
- 代码片段和数学表达式:r_ZE 较高,用更少专家
5.3 与任务难度无关
在 MATH-500(5 个难度级别)和 AIME24 上的对比显示:
- 不同难度级别的 r_ZE 几乎相同
- 任务难度不影响零专家激活率
---
六、设计决策的深度分析
6.1 为什么路由概率不需要重归一化?
当零专家被选中后,正常专家的权重是否需要重新归一化(让它们的权重之和为 1)?
ZEDA 实验对比了两种方案:
- 不重归一化(默认):维持原始模型的输出尺度
- 重归一化:将正常专家权重除以它们的权重之和
6.2 为什么两阶段缺一不可?
| 策略 | Qwen 平均精度 | 说明 |
|---|---|---|
| 仅 SFT | 73.3 | 稳定初始路由,但 off-policy |
| 仅 OPD | 更低 | 需要同时学习路由和生成,难度叠加 |
| SFT + OPD | 74.2 | 先稳定路由,再对齐分布 |
6.3 适配数据量的缩放曲线
ZEDA 测试了不同训练数据量(15k→30k→60k)的效果:
- 60k 之前,精度和 r_ZE 同步快速上升
- 60k 左右达到饱和(plateau)
- 这证明了 ZEDA 的样本效率——不需要海量数据就能收敛
七、与相关工作对比
| 维度 | ZEDA | MoE++ | LongCat | AdaMoE | Dynamic Skipping |
|---|---|---|---|---|---|
| 训练阶段 | 后训练(仅适配) | 从头预训练 | 从头预训练 | 任务特定 | 推理时启发式 |
| 修改专家参数 | 否 | 是 | 是 | 是 | 否 |
| 是否需要教师 | 自蒸馏(自身为教师) | 否 | 否 | 否 | 否 |
| 负载均衡 | 分组级(不破坏原有路由) | 专家级 | 专家级 | 专家级 | 无 |
| Qwen 精度 | 74.2(-0.7) | 需训练 | 工业级 | 54.8(-20.1) | 68.1(-6.8) |
| 计算削减 | 51.2% | 可调 | 可调 | 51.9% | 43.8% |
| 适配成本 | 31小时(8 H200) | 数周/数千GPU | 数周 | 需训练 | 无 |
---
八、局限与未来方向
1. 规模限制:目前仅在 30B 级模型上验证,更大规模(100B+)的效果待验证 2. Agent 任务缺失:未在长程 agent 任务上测试 3. 长序列加速衰减:超过 8k 序列后加速略有下降,但仍有潜力(如结合 DeepEP) 4. 仅测试了语言模型:多模态 MoE 的适用性未验证
---
九、一句话总结
ZEDA 不是训练一个更好的 MoE,而是让已有的 MoE 学会"什么时候该偷懒"。它的巧妙之处在于:用零专家扩展候选池而不增加计算,用分组辅助损失保护已有路由能力,用自蒸馏恢复性能而不需要外部数据。对于已经部署在生产环境的 MoE 模型(如 Qwen3、GLM-4、DeepSeek-V3),ZEDA 提供了一条几乎零成本的加速路径——31 小时、8 张卡,跳过一半专家,性能几乎无损。这可能是 MoE 推理优化领域最务实的方案。
---
参考信息
- 论文:Post-Trained MoE Can Skip Half Experts via Self-Distillation
- 作者:Xingtai Lv, Li Sheng, Kaiyan Zhang, Yichen You, Siyan Gao, Xueheng Luo, Yuxin Zuo, Yuchen Fan, Junlin Yang, Ganqu Cui, Bingning Wang, Fan Yang, Youbang Sun, Ning Ding, Bowen Zhou
- 机构:清华大学(TsinghuaC3I)、Frontis.AI、快手、上海 AI Lab、微信 AI
- arXiv: 2605.18643
- GitHub: https://github.com/TsinghuaC3I/ZEDA
- 核心创新:零专家注入 + 两阶段自蒸馏 + 分组辅助损失
- 测试模型:Qwen3-30B-A3B(128专家/激活8)、GLM-4.7-Flash(64专家/激活4)
- 评估基准:11个(AIME24/25/26、GSM8k、MATH-500、LCBv5/v6、HumanEval+、MBPP+、IFBench、IFEval)
- 训练成本:Qwen 31小时(8 H200),GLM 62小时(8 H200)
- 计算削减:51.2%(Qwen)、53.0%(GLM)
- 推理加速:约20%(prefill + decode)
- 相比baseline优势:+6.1(Qwen)、+4.0(GLM)
- 训练数据:60k prompts(17k数学+15k代码+28k对话)
- 关键技术参数:w=2(零专家组权重)、α=0.1(损失系数)、不重归一化路由权重
*步子哥,ZEDA 让我想到一个更深层的问题:模型训练完成后,"优化"并没有结束。ZEDA 证明了后训练阶段还有巨大的效率空间可以挖掘——不是通过压缩模型(量化、剪枝),而是通过让模型"更聪明地分配计算"。这类似于人脑的注意力机制:我们不会用同样的精力处理每一个字,而是根据重要性动态分配。ZEDA 给 MoE 模型装上了这种"认知经济性"。未来可能的方向:如果零专家可以动态添加/移除,模型是否可以在运行时根据任务负载自动调整计算预算?那将是真正的"自调节 AI"。*
#ZEDA #MoE #后训练 #自蒸馏 #动态路由 #零专家 #推理加速 #清华 #快手 #上海AILab #大模型部署 #MoE优化
🌟 智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
🎁 领取 2000万 Tokens