专家并行(Expert Parallelism, EP)是 MoE 架构的标配并行策略:把大模型拆成 N 个独立”专家”分布到不同 GPU,路由器为每个 token 选少量专家激活。突破”单卡装不下 + 算力浪费”的双重瓶颈。

三步原理

  1. 拆分专家:把稠密大模型替换为 N 个独立专家(小型 FFN 网络),每个专家放在不同 GPU,单卡只存自己负责的那一部分
  2. 路由分配:每个输入 token 经过路由器(一个小 MLP),打分后选 top-k(通常 k=1 或 2)专家;通过 All-to-All 通信把 token 送到目标 GPU
  3. 稀疏激活 + 汇总:只有被选中的专家参与计算,结果再次 All-to-All 送回原 GPU 拼接

稀疏激活是 MoE 的精髓:模型规模可达万亿参数,单步计算量却只随激活的 k 个专家增长。

与其他并行的区别

策略拆什么解决问题
数据并行(DP)把数据切给多卡,模型复制数据量大,需提升吞吐
张量并行(TP)把单层权重切给多卡单层过大,单卡装不下
流水并行(PP)把不同层放在不同卡总参数过多,单卡装不下
专家并行(EP)把模型拆成多个独立专家分布到多卡模型超大但希望计算稀疏

DP 解决”数据多”;TP/PP 解决”模型大”;EP 解决”模型超大且希望计算稀疏”。

实操两大坑

负载均衡

如果路由器总把 token 分给少数专家,会导致几张 GPU 过载、其他闲置。解决:

  • 辅助损失:对路由概率加 KL 或方差惩罚(如 Switch Transformer 的负载均衡损失)
  • 容量上限:设置每个专家的 token 容量,超过则丢弃或溢出到下一个专家
  • 学习路由偏置:DeepSeekMoE 等用动态偏置项主动平衡

通信开销

每个 token 要经过两次 All-to-All(送出/收回),通信量随 batch 与专家数增长。要点:

  • 高带宽互联(NVLink、InfiniBand)必备
  • 与 ZeRO/FSDP/TP 组合时要小心通信冲突
  • DeepSpeed-MoE、Megatron-MoE 等框架对此有针对性优化

典型案例

  • Switch Transformer(Google):1.6 万亿参数,每个 token 只激活 1 个专家
  • GLaM、Mixtral、DeepSeek V3:top-2 路由,激活参数远小于总参数
  • 业内共识:MoE 是总参数 × 训练效率 × 推理成本三者权衡的最佳解之一