专家并行解决 MoE 的什么问题
混合专家模型(MoE)的每层有多组专家网络,单次前向只激活其中少数几组。这意味着权重总量很大但单步计算量相对小,显存里要装下全部专家,算力却只用到一部分。专家并行把不同专家分布到不同卡上,降低单卡的权重驻留,和按层切分的张量并行组合使用。代价是路由带来的跨卡通信,网络要求与纯张量并行不同。
基本信息
| 适用模型 | 具备专家结构的混合专家模型 |
|---|---|
| 并行维度 | 与张量并行组合,不是替代关系 |
| 启用方式 | 推理引擎提供的专家并行开关,参数名以版本文档为准 |
| 通信特征 | 专家路由产生多对多的跨卡流量 |
| 前置条件 | 卡间互联带宽足够,且模型结构确实包含专家层 |
典型使用场景
- 单卡装不下全部专家:模型权重总量超过单卡容量,需要把专家分散到多卡
- 提高硬件利用率:激活专家少时,分布到多卡可减少单卡闲置
- 大并发服务:专家分片后更容易扩展总吞吐
- 混合并行规划:在小规模集群上组合张量与专家并行,兼顾显存与通信
- 成本评估:对比纯张量并行方案,判断哪种切分方式的单位成本更低
启用示意
启用示意
vllm serve <moe 模型路径> \
--tensor-parallel-size 8 \
--enable-expert-parallel # 参数名与支持矩阵以版本文档为准
# 启动后核对:日志中确认专家分布生效,而非仅忽略该参数
grep -iE 'expert|parallel' <服务日志> | head
# 压测对比:同一模型分别用纯张量并行与组合并行跑,记录吞吐与延迟切分方式对比
| 方式 | 切分对象 | 主要代价 |
|---|---|---|
| 张量并行 | 每层权重矩阵 | 每步都有通信,对带宽要求高 |
| 专家并行 | 不同专家的归属 | 路由导致的多对多通信 |
| 张量加专家 | 两者组合 | 两种通信叠加,调度更复杂 |
| 单卡承载 | 不切分 | 显存不足或利用率低 |
路由带来多对多的跨卡流量:网络评估要把这部分与张量并行的通信一起算,只看单卡的带宽指标会低估实际需求。
专家负载不均衡是常见现象:请求内容集中时少数专家被反复调用,可能出现单卡繁忙而其他卡空闲,压测要覆盖不同输入类型。