延伸:更多方法
本文介绍MoE(Mixture of Experts,混合专家)模型训练和推理中的一些前沿方法,包括训练侧的正则化方法和推理侧的优化方法。
MoE模型详细原理
MoE基本结构
MoE模型通过门控机制(Gating Mechanism)动态选择专家网络,实现条件计算。其核心组件包括:
- 专家网络(Expert Networks):多个并行的前馈网络(FFN),每个专家专注于处理特定类型的信息
- 门控网络(Gating Network):根据输入动态计算每个专家的权重
- Top-K选择:为每个token选择激活K个专家(通常K=2)
门控函数:
MoE层输出:
其中
MoE的优势与挑战
优势:
- 条件计算:仅激活部分专家,计算量远小于同等参数量的Dense模型
- 专业分工:不同专家可以专注于不同类型的任务
- 扩展性:可以通过增加专家数量提升模型容量
挑战:
- 负载均衡:需要确保专家被均匀利用
- 通信开销:专家分布在不同设备时需要跨设备通信
- 训练不稳定:门控网络容易出现模式崩塌
训练侧:正则化方法
Random Token Selection (RTS)
路由前打乱Token顺序,避免容量限制下优先分配前缀Token,缓解前缀偏置,让专家分配更公平、收敛更稳。
实验对比:
| 方法 | 专家利用率方差 | 训练稳定性 | 最终性能 |
|---|---|---|---|
| 基线 | 0.35 | 一般 | 100% |
| +RTS | 0.12 | 较好 | 100.2% |
链接:https://arxiv.org/abs/2109.10465
Aggregation of Experts (AoE)
合并专家与门控矩阵,用早期checkpoint做合并初始化,稳定专家表示,便于续训/微调后迁移到推理场景。
应用场景:
- 模型续训(Continual Training)
- 微调后部署
- 专家模型压缩
链接:https://arxiv.org/html/2111.15365v4
Auxiliary Load-Balancing Losses
加入辅助损失强制专家均匀利用,防止训练中专家崩塌;但会导致训练均匀、推理稀疏的分布错位,需要权衡。
辅助损失函数:
其中
消融实验:
| 负载均衡 | 模型性能 | 训练速度 | |
|---|---|---|---|
| 0.01 | 较差 | 最佳 | 最快 |
| 0.1 | 良好 | 良好 | 良好 |
| 1.0 | 最佳 | 较差 | 较慢 |
链接:https://arxiv.org/pdf/2502.17187.pdf
推理侧:缩小训练–推理差异
Expert Pruning
按验证集激活频率剪去低利用率专家,推理后微调剩余专家,大幅降计算开销几乎不损精度。
剪枝策略:
- 统计每个专家在验证集上的激活频率
- 移除激活频率最低的
专家 - 对剩余专家进行少量微调恢复性能
实验结果(以Switch Transformer为例):
| 剪枝比例 | 参数量减少 | 推理速度提升 | 性能下降 |
|---|---|---|---|
| 20% | 20% | 1.3x | < 0.5% |
| 40% | 40% | 1.8x | < 1.0% |
| 60% | 60% | 2.5x | ~ 2.0% |
链接:https://arxiv.org/abs/2109.10465
Task-Level Routing
按句子/任务粗粒度分配专家子网,同任务共享路由,降低显存与通信,提升推理吞吐量。
实现方式:
- 静态路由:为每个任务预分配专家子网
- 动态路由:根据任务类型实时调整专家分配
链接:https://arxiv.org/abs/2110.03742
Matryoshka MoE
训练时用可变数量专家,学到由粗到细的层级排名;推理可灵活切专家数,兼顾速度与精度,适配不同算力预算。
层级结构:
层级1:使用2个专家(最快,基础性能)
层级2:使用4个专家(中等速度,中等性能)
层级3:使用8个专家(最慢,最佳性能)性能对比:
| 专家数量 | 推理速度 | 模型性能 |
|---|---|---|
| 2 | 3.0x | 92% |
| 4 | 2.0x | 97% |
| 8 | 1.0x | 100% |
链接:https://arxiv.org/pdf/2509.26520
Capacity-Aware Inference
为每个专家设最大容量,过载Token重路由或丢弃,缓解滞后效应,推理提速约1.9倍,精度几乎无损。
容量控制策略:
- 溢出重路由:超过容量的token路由到次优专家
- 溢出丢弃:直接丢弃超载的token
- 动态容量:根据负载动态调整专家容量
实验结果:
| 方法 | 推理速度 | 性能保持率 |
|---|---|---|
| 无容量限制 | 1.0x | 100% |
| 固定容量 | 1.5x | 99.5% |
| 动态容量 | 1.9x | 99.8% |
链接:https://arxiv.org/pdf/2503.05066
实际应用案例
Switch Transformer(Google)
- 规模:1.6T参数,128个专家
- 训练:使用辅助损失平衡负载
- 部署:Expert Pruning压缩至50%参数
Mixtral 8x7B(Mistral)
- 规模:46.7B参数,8个专家,激活2个
- 性能:媲美70B Dense模型
- 效率:推理成本仅为同等性能Dense模型的1/3
DeepSeek-MoE
- 创新:细粒度专家划分 + 共享专家
- 规模:16B参数,64个专家
- 效果:在相同计算量下性能提升15%