跳转到内容

MoE 与专家并行

MoE(Mixture of Experts)用"每 token 只激活一小部分专家"换来参数量与计算量的解耦——参数做到千亿甚至万亿,每 token 的 FLOPs 却只相当于小模型。代价是一种新的显存分布与一种新的通信模式:all-to-all。本章讲清楚 MoE 的显存账、专家并行(EP)怎么切、以及 all-to-all 为什么成为新的瓶颈。

以一个典型 MoE 层(如 Mixtral 风格,8 专家 top-2)为例:

  • 参数量:FFN 部分乘以专家数(8 个 FFN),参数 ×8
  • 每 token 计算量:只激活 2 个专家,FFN 计算 ×2/8 = ×0.25(相对同参数量的稠密模型)
参数∝E而每 token FLOPs∝k(k≪E)\text{参数} \propto E \quad \text{而} \quad \text{每 token FLOPs} \propto k \quad (k \ll E)

这就是 MoE 的核心交易:用显存和通信换 FLOPs。但显存是真实的:8 专家 × 每专家一份 FFN 权重,单层 FFN 的显存 ×8——单卡装不下,必须把专家切到多张卡上。

EP 把不同的专家放到不同的卡上,每卡持有几份完整的 FFN:

GPU0: 专家1 专家2 GPU1: 专家3 专家4
GPU2: 专家5 专家6 GPU3: 专家7 专家8

每层的计算流程:

token 进来 → router 打分选专家 → 【all-to-all:把 token 发到专家所在的卡】
→ 各卡并行算自己的专家 → 【all-to-all:把结果发回 token 所在的卡】

两次 all-to-all是 EP 的标志:先按路由把 token 送到专家处,算完再送回来。通信量与 TP 的 all-reduce 同量级甚至更大,但通信模式完全不同——all-to-all 是"多对多乱序",对网络的要求更苛刻。

对比三种通信的几何:

通信模式NCCL 实现网络友好度
all-reduce环/树,规约语义Ring/Tree,高度优化好(轨道对齐即可)
all-gather全量分发Ring,优化好好
all-to-all每卡到每卡,乱序实现 + 调优都更难差

三个难点:

一、流量模式乱。 all-to-all 没有规约语义(不能在网计算 SHARP),就是纯粹的全交叉流量,对交换机的端口容量要求最苛刻,容易触发拥塞。

二、负载不均。 Router 可能把某几个 token 都发到同一个专家(热门专家),那张卡收到多得多的 token——EP 的负载均衡问题(auxiliary loss、容量因子 capacity factor 都是为此而生)。

三、跨机成本高。 EP 度大(专家多)时必然跨机 all-to-all,IB 带宽直接决定 MoE 层的速度。MoE 训练对网络的敏感度远高于同规模稠密模型。

MoE 的显存大头是专家权重,切分组合:

组合分什么适用
EP 单独专家按卡切,非专家部分复制专家数少、小模型
EP + TP专家内部再按 hidden 切(大 FFN)常见生产配置
EP + DP非专家部分按 batch 切标准 MoE 训练形态
EP + PP专家跨流水线段超大专家数

典型千卡级 MoE 训练(如 DeepSeek/Mixtral 级):TP=8(节点内)× EP=8/16(跨节点)× DP 若干——all-to-all 跨机,IB 400G 起步。

Router 的负载不均不是一次性的,是持续的:

  • 训练时:auxiliary load-balancing loss 强制 router 分散;容量因子(capacity factor,典型 1.0–1.25)限制每专家最多收多少 token,溢出的丢弃或重算
  • 推理时:没有 aux loss,热门专家靠专家副本(热门专家复制到多卡)或动态路由
  • 监控:每专家的 token 接收量是 MoE 集群的核心指标——max/mean 比值大于 2 就是失衡预警
场景建议
稠密模型不用 EP
MoE、专家数 ≤ 节点内卡数EP 节点内,简单
MoE、专家数多(64+)EP 跨机 + TP 嵌套,网络是第一优先级
推理 MoEEP + 专家副本 + 动态路由

判断 MoE 是否划算的总账:省下的 FLOPs(×k/Ek/E)能不能覆盖显存(×EE)与 all-to-all 通信的成本。网络越好,MoE 越划算;网络差的集群慎用大 EP。

  • MoE 用显存换 FLOPs:参数 ×E、计算 ×k/E;专家权重必须切到多卡(EP)。
  • EP 的标志是每层两次 all-to-all:送 token 去专家、送结果回来;流量模式乱、对网络最苛刻。
  • all-to-all 无规约语义(SHARP 用不上)、负载不均、跨机成本高——MoE 对网络敏感度远超稠密模型。
  • 负载均衡是持续工程:aux loss(训练)、容量因子、专家副本(推理)、max/mean 监控。
  • 标准组合 EP+TP+DP;EP 度大时 all-to-all 跨机,网络设计决定 MoE 训练速度。