Skip to content

延伸:更多方法

本文介绍MoE(Mixture of Experts,混合专家)模型训练和推理中的一些前沿方法,包括训练侧的正则化方法和推理侧的优化方法。

MoE模型详细原理

MoE基本结构

MoE模型通过门控机制(Gating Mechanism)动态选择专家网络,实现条件计算。其核心组件包括:

  1. 专家网络(Expert Networks):多个并行的前馈网络(FFN),每个专家专注于处理特定类型的信息
  2. 门控网络(Gating Network):根据输入动态计算每个专家的权重
  3. Top-K选择:为每个token选择激活K个专家(通常K=2)

门控函数

G(x)=Softmax(Wgx)

MoE层输出

y=i=1NG(x)iEi(x)

其中 N 为专家总数,Ei 为第 i 个专家网络。

MoE的优势与挑战

优势

  • 条件计算:仅激活部分专家,计算量远小于同等参数量的Dense模型
  • 专业分工:不同专家可以专注于不同类型的任务
  • 扩展性:可以通过增加专家数量提升模型容量

挑战

  • 负载均衡:需要确保专家被均匀利用
  • 通信开销:专家分布在不同设备时需要跨设备通信
  • 训练不稳定:门控网络容易出现模式崩塌

训练侧:正则化方法

Random Token Selection (RTS)

路由前打乱Token顺序,避免容量限制下优先分配前缀Token,缓解前缀偏置,让专家分配更公平、收敛更稳。

实验对比

方法专家利用率方差训练稳定性最终性能
基线0.35一般100%
+RTS0.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

加入辅助损失强制专家均匀利用,防止训练中专家崩塌;但会导致训练均匀、推理稀疏的分布错位,需要权衡。

辅助损失函数

Laux=αNi=1NfiPi

其中 fi 为专家 i 接收的token比例,Pi 为门控网络分配给专家 i 的平均概率。

消融实验

α负载均衡模型性能训练速度
0.01较差最佳最快
0.1良好良好良好
1.0最佳较差较慢

链接:https://arxiv.org/pdf/2502.17187.pdf

推理侧:缩小训练–推理差异

Expert Pruning

按验证集激活频率剪去低利用率专家,推理后微调剩余专家,大幅降计算开销几乎不损精度。

剪枝策略

  1. 统计每个专家在验证集上的激活频率
  2. 移除激活频率最低的 p% 专家
  3. 对剩余专家进行少量微调恢复性能

实验结果(以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个专家(最慢,最佳性能)

性能对比

专家数量推理速度模型性能
23.0x92%
42.0x97%
81.0x100%

链接:https://arxiv.org/pdf/2509.26520

Capacity-Aware Inference

为每个专家设最大容量,过载Token重路由或丢弃,缓解滞后效应,推理提速约1.9倍,精度几乎无损。

容量控制策略

  • 溢出重路由:超过容量的token路由到次优专家
  • 溢出丢弃:直接丢弃超载的token
  • 动态容量:根据负载动态调整专家容量

实验结果

方法推理速度性能保持率
无容量限制1.0x100%
固定容量1.5x99.5%
动态容量1.9x99.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%