MoE 与专家并行
MoE(Mixture of Experts)用"每 token 只激活一小部分专家"换来参数量与计算量的解耦——参数做到千亿甚至万亿,每 token 的 FLOPs 却只相当于小模型。代价是一种新的显存分布与一种新的通信模式:all-to-all。本章讲清楚 MoE 的显存账、专家并行(EP)怎么切、以及 all-to-all 为什么成为新的瓶颈。
MoE 的基本账:参数多、计算少
Section titled “MoE 的基本账:参数多、计算少”以一个典型 MoE 层(如 Mixtral 风格,8 专家 top-2)为例:
- 参数量:FFN 部分乘以专家数(8 个 FFN),参数 ×8
- 每 token 计算量:只激活 2 个专家,FFN 计算 ×2/8 = ×0.25(相对同参数量的稠密模型)
这就是 MoE 的核心交易:用显存和通信换 FLOPs。但显存是真实的:8 专家 × 每专家一份 FFN 权重,单层 FFN 的显存 ×8——单卡装不下,必须把专家切到多张卡上。
专家并行:按专家切分
Section titled “专家并行:按专家切分”EP 把不同的专家放到不同的卡上,每卡持有几份完整的 FFN:
GPU0: 专家1 专家2 GPU1: 专家3 专家4GPU2: 专家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 是"多对多乱序",对网络的要求更苛刻。
all-to-all 为什么难
Section titled “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 训练对网络的敏感度远高于同规模稠密模型。
显存与并行的组合
Section titled “显存与并行的组合”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 起步。
负载均衡:MoE 的持续性工程
Section titled “负载均衡:MoE 的持续性工程”Router 的负载不均不是一次性的,是持续的:
- 训练时:auxiliary load-balancing loss 强制 router 分散;容量因子(capacity factor,典型 1.0–1.25)限制每专家最多收多少 token,溢出的丢弃或重算
- 推理时:没有 aux loss,热门专家靠专家副本(热门专家复制到多卡)或动态路由
- 监控:每专家的 token 接收量是 MoE 集群的核心指标——max/mean 比值大于 2 就是失衡预警
什么时候用 EP
Section titled “什么时候用 EP”| 场景 | 建议 |
|---|---|
| 稠密模型 | 不用 EP |
| MoE、专家数 ≤ 节点内卡数 | EP 节点内,简单 |
| MoE、专家数多(64+) | EP 跨机 + TP 嵌套,网络是第一优先级 |
| 推理 MoE | EP + 专家副本 + 动态路由 |
判断 MoE 是否划算的总账:省下的 FLOPs(×)能不能覆盖显存(×)与 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 训练速度。
- 序列与上下文并行 — 上一章
- 激活内存:重计算与卸载 — 下一章:显存账的补充
- 拥塞、抖动与网络故障 — all-to-all 的拥塞风险
- 混合并行与配置方法论 — EP 嵌入整体配置