趋近智
在多个设备上分配专家(专家并行)是扩展 MoE 模型的有效策略。然而,这种分配引入了一个重要的通信需求:将令牌从其当前处理设备路由到包含由门控网络选择的专家所在的设备。这种必要的数据交换表现为 All-to-All 通信模式,这是分布式 MoE 训练中的一项基本操作。
在标准的数据并行设置中,通信通常涉及 All-Reduce 等操作,其中梯度或参数会在设备间聚合。专家并行需要一种不同的模式。考虑使用数据并行在 N 个设备上分布的一批令牌。模型中的 MoE 层也会将其专家分配到这 N 个设备(或其子集)上。
当设备 i 上的令牌 x 经过门控网络 g(x) 时,它可能被分配给专家 Ej,而专家 Ej 实际位于设备 k 上,其中 k 可能与 i 不同。由于专家 Ej 需要令牌 x 的表示来进行计算,因此 x 必须从设备 i 发送到设备 k。
对于所有设备上的微批次中的所有令牌来说,这种情况是同时发生的。每个设备 i 可能需要将其令牌的不同子集发送给所有其他设备 k(如果专家位于本地,也可能包括自身)。相应地,每个设备 k 预期会从所有其他设备 i 接收令牌。这种集体交换,即每个参与者向其他所有参与者发送独特数据并从其他所有参与者接收独特数据,是 All-to-All 通信模式的本质。
从数学角度看,如果我们在 N 个设备上分布了 T 个令牌(因此每个设备初始有 T/N 个令牌),并且 E 个专家也分布在这 N 个设备上(每个设备 E/N 个专家),门控网络会计算分配结果。设 Sik 为当前在设备 i 上需要路由到设备 k 上任何专家的令牌集合。All-to-All 操作有效地执行所有 Sik 集合的传输,对于所有满足 1≤i,k≤N 的 (i,k) 对。
我们可以将此过程进行可视化。设想有四个设备(GPU),每个设备都包含一部分输入令牌和特定 MoE 层的一部分专家。
基于门控决策(彩色箭头),令牌(蓝色方块)在四个设备之间路由到专家(黄色方块)的流程。每个设备向可能多个其他设备发送令牌,并接收发往其本地专家的令牌。
All-to-All 通信以其高带宽需求而闻名,可能成为分布式训练中的主要瓶颈,特别是对于 MoE 模型而言。原因如下:
这种通信模式通常使用 MPI(消息传递接口)等标准库或 NCCL(NVIDIA 集体通信库)等 GPU 加速库提供的原语实现。
MPI_Alltoall 等原语(其中每个进程向/从所有其他进程发送/接收相同数量的数据),或者对于 MoE 更常见的是,使用 MPI_Alltoallv(允许每对进程具有不同的发送/接收计数和位移)。ncclAllToAll。这些实现旨在最大化 GPU 间带宽(如 NVLink)和网络接口的利用率。使用这些库可以抽象出消息打包、路由和同步的低层细节。然而,理解底层模式对于调试性能问题以及选择合适的硬件和网络配置非常必要。举例来说,了解 MoE 严重依赖 All-to-All 可以为构建训练集群时的节点互连选择提供信息。
需要注意的是,在专家计算其接收到的令牌的输出后,通常还需要另一次 All-to-All 通信。设备 k 上为源自设备 i 的令牌计算的结果必须返回到设备 i 进行组合(通常按门控分数加权),并继续前向传播。这第二次 All-to-All 在通信模式和潜在瓶颈方面与第一次相似。
理解 All-to-All 模式的特性和性能影响对于成功扩展 MoE 模型非常重要。后续章节将讨论优化此通信并将其有效整合到更广泛的分布式训练策略中的技术。
这部分内容有帮助吗?
ncclAllToAll,对高性能基于 GPU 的分布式训练至关重要。MPI_Alltoall 和 MPI_Alltoallv 操作。© 2026 ApX Machine Learning用心打造