Expert Parallelism
专家并行(Expert Parallelism, EP) 是专门为 MoE(Mixture of Experts) 模型设计的并行策略:将不同的专家分配到不同的 GPU 上,通过 All-to-All 通信把 token 路由到持有目标专家的 GPU 上执行计算。
MoE 基础
MoE 架构把传统 Transformer 的 FFN 层拆成多个较小的专家(Expert)。每个 token 通过 门控网络(Gate/Router) 选择 Top- 个专家参与计算,其余专家不激活。
以 DeepSeek V3 为例:256 个细粒度专家 + 少量永远激活的 shared experts,每个 token 激活 个。这种设计使模型在参数总量极大的同时,单个 token 的计算量(FLOPs)保持可控。
EP 的执行流程
- Gate 计算:每个 rank 对本地 token 运行 Gate 网络,计算各专家的得分,选出 Top-
- Dispatch(All-to-All):将 token 路由到持有目标专家的 rank——每个 rank 同时发出和接收 token,构成 All-to-All 通信
- Expert Compute:各 rank 独立执行本地专家的 FFN 计算,无需通信
- Combine(All-to-All):计算结果通过 All-to-All 回传到原始 rank,按 Gate 权重加权求和
两次 All-to-All 是 EP 的通信核心。
EP vs TP:通信量对比
定义: 为 GPU 数, 为每层激活值总大小, 为激活专家数。
| 策略 | 单卡通信量 | 特征 |
|---|---|---|
| TP | (恒定) | 与 无关,每层必须 all-reduce |
| EP | 随 缩放, 时远小于 TP |
当 很大(如 64 或 256)且 较小(如 8 或 16)时,EP 的通信量远低于 TP。
EP vs TP:计算效率
这是 EP 更关键的优势。
TP 把每个专家的矩阵进一步切分成 ,产生极细的”瘦矩阵”。对于 DeepSeek 式的细粒度专家(单个专家本就很小),切分后的 GEMM 维度不足以填满 GPU Tensor Core 的计算流水线,MFU 大幅下降。
EP 保持专家矩阵的完整性。token 虽然要跨卡搬运,但到达目标 GPU 后面对的是形状规整的完整矩阵,可以触发高效的计算内核。
EP vs TP:通信带宽
EP 的弱点在于通信拓扑:
- TP 通常在单机 NVLink 域内(~900 GB/s)
- EP 往往跨节点走 RDMA(50-100 GB/s),带宽差一个数量级
此外 All-to-All 是 个小连接,大规模集群下握手开销和长尾延迟不可忽视。
DeepEP 的创新
DeepSeek 的 DeepEP 针对 EP 的通信瓶颈做了两项关键优化:
- RDMA 直驱:绕过 NCCL 协议栈,用 PTX 级别优化实现低延迟的跨节点数据交换
- 计算-通信重叠(Stream-K):Dispatch 的第一批 token 到达 GPU 时立即开始计算,不等所有 个专家的数据全部到齐。在 场景下,通信延迟几乎完全被计算时间掩盖
| 维度 | TP | EP (DeepSeek) |
|---|---|---|
| 通信量 | 固定 () | 随 缩放 |
| 计算效率 | 低(瘦矩阵) | 高(完整专家矩阵) |
| 通信延迟 | NVLink 低延迟 | RDMA + Stream-K 隐藏延迟 |
| 集群扩展性 | 受限于单机 | 支持万卡集群 |
一个历史视角
EP 并非一直优于 TP。在 GShard 时代的”大而少”MoE 设计(8-64 个大专家)中,单个专家足够大,TP 切分后仍有足够的 GEMM 效率。EP 成为主流是被 DeepSeek 引领的”小而多”专家设计驱动的——算法变化改变了并行策略的最优选择。
相关页面
- LLM 并行策略总览见 llm-parallelism
- 张量并行见 tensor-parallelism
- DP Attention(推理场景下对 MLA 模型的 DP 优化)见 sglang
Comments