Expert Parallelism
了解专家并行性如何将专家混合模型分布到各个 GPU 上,在平衡路由、通信和性能的同时降低内存需求。
专家并行是一种分布式计算技术,它将混合专家模型的不同专家放置在不同的GPU或加速器上。每个设备无需存储所有专家,而是只保存一个子集。学习型路由器将每个输入 token 发送到选定的专家,使超大型模型能够在不为每个输入激活每个参数的情况下提高参数容量。
该技术专门适用于混合专家架构,而不适用于普通稠密神经网络。它通常用于训练或服务大型语言模型和视觉语言模型,否则这些模型的专家层会在单个设备上消耗过多内存。
专家并行如何工作#
MoE层包含几个专家网络(通常是前馈神经网络)以及一个路由器。对于每个 token,路由器会产生评分并选择少量的专家,通常称为 top-k 路由。
例如,在一个分布在四个GPU上的八专家层中,每个GPU可能会存储两个专家。随后处理过程遵循四个主要步骤:
- 路由器为每个 token 选择专家。
- 在 GPU 之间交换 token,以便它们到达持有这些专家的设备。
- 每个专家在本地处理分配给它的 token。
- 结果返回到原始 token 位置并继续通过模型。
这种交换通常依赖于 all-to-all 通信,这是一种在NVIDIA NCCL 集体操作文档中描述的集体操作。NVIDIA Megatron Bridge 并行指南展示了专家数量和专家并行规模如何决定放置在每个 GPU 上的专家数量。
专家并行节省了每个设备的内存,因为专家权重被分区了。然而,它并没有消除计算或通信成本:token 可能会在每个 MoE 层的设备或节点边界之间穿梭。
专家并行与相关技术的对比#
专家并行是分布式训练的一种形式,但它与其他策略划分模型的方式不同:
- 数据并行: 每个设备存储一个完整模型的副本并处理不同的批次。正如PyTorch 分布式训练概述中所解释的,梯度在副本之间同步。当完整模型适合每个设备时,这非常有效。
- 张量并行: 层内的单个权重矩阵和数学运算分布在各个设备上。而专家并行则是将完整的专家分配给设备。
- 流水线并行: 连续的层组在不同的设备上运行,微批次作为流水线阶段流经它们。
- 上下文并行: 长输入序列在设备之间进行分区,以减少激活内存需求。
- 专家张量并行: 专家分布在各个设备上,并且每个单独的专家也进行张量分片。这种混合方法可以容纳更大的专家,但会引入额外的通信。
这些方法是互补的。大型 MoE 系统可以根据模型大小和硬件拓扑结合专家、数据、张量、流水线和上下文并行。
实际应用#
大规模多语言助手: MoE 语言模型可能包含许多专家网络,而每个 token 只激活少数几个。专家并行将这些网络分发到推理集群中,使系统能够在不将每个专家加载到每个 GPU 上的情况下保持高模型容量。vLLM 专家并行部署和TensorRT-LLM 专家并行等生产运行时支持这种类型的推理布局。
多模态内容分析: 处理图像块和文本 token 的大型 MoE 模型可以通过分布在多个加速器上的选定专家来路由输入。这可以支持文档理解、视觉问答和其他多模态 AI服务,同时使每个设备的专家内存易于管理。同样的原则也适用于稀疏的大规模视觉 Transformer,尽管大多数紧凑的实时视觉模型并不需要它。
优势、瓶颈与实践指导#
专家并行提供了三大优势:减少了每个 GPU 的专家权重内存、支持具有更大总容量的模型,以及当每个 token 仅激活少数专家时的高效稀疏计算。Amazon SageMaker 专家并行指南说明了专家并行度如何控制集群间的分布。
其主要挑战是负载不均衡。如果路由器向一个专家发送了太多 token,该专家的 GPU 就会变成拖后腿者,而其他设备则在等待。后果包括吞吐量降低、延迟不稳定,以及在专家容量有限时可能丢弃 token。工程师应监控每个专家的 token 数量、路由平衡、通信时间、内存使用情况和端到端延迟。高带宽互连和通信计算重叠可以减少传输开销。
当使用诸如Ultralytics YOLO26之类的稠密模型时,专家并行是不必要的。多 GPU Ultralytics YOLO 训练改用分布式数据并行:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Two-GPU YOLO training uses data parallelism, not expert parallelism.
results = model.train(
data="coco8.yaml",
epochs=10,
imgsz=640,
device=[0, 1],
)此工作流将 YOLO26 复制到两个 GPU 上并在它们之间划分训练批次;它不在专家网络之间路由输入。团队还可以使用Ultralytics Platform 云端训练来管理视觉数据集、训练、指标、导出和部署,而无需手动配置分布式基础设施。









