模型层 开放阅读

All-to-All 通信

All-to-All Communication

概念 ID
all-to-all-communication
更新时间
2026-05-29
来源数量
待补

All-to-All 通信

All-to-All 通信(All-to-All Communication)

3 秒看懂

All-to-All 是一种”每个节点都要给其他每个节点发不同数据”的集体通信操作。 它是 Mixture-of-Experts(MoE)模型训练与推理的核心通信原语——每个 token 被路由到不同 GPU 上的专家,就必须通过 All-to-All 把 token 分发出去、再把结果收回来。它对网络全对分带宽的要求极高,是当前万卡集群通信瓶颈的头号难题之一。

3 分钟产业解释

为什么 All-to-All 突然成为热点?

2023–2025 年,MoE 架构从学术走向产业主流:Mixtral 8×7B、DeepSeek-V2/V3、Grok-1 等模型均采用稀疏 MoE 结构。MoE 模型将每一层的前馈网络(FFN)拆分为多个”专家”,分布在不同 GPU 上。每个 token 只激活其中 Top-K 个专家(通常 K=1 或 2),但这些专家分散在不同设备上。

关键问题: 你不知道每个 token 会被路由到哪个专家——路由是动态的、数据依赖的。因此,通信模式无法提前编排为 AllReduce 这样规则的模式,而必须做 All-to-All:每个 GPU 把属于其他 GPU 上专家的 token 发过去,同时接收属于本地专家的 token。

这意味着:

  1. 通信量与专家数(≈GPU数)成正比,而非固定大小;
  2. 流量模式是全对全的置换(permutation),网络中任意两点间都可能同时有流量——这是对交换网络最难的流量模式;
  3. All-to-All 的延迟直接叠加在每个 MoE 层上,一层一次 dispatch + 一次 combine,百层模型就是两百次。

产业链影响: 正因为 All-to-All,MoE 训练对网络拓扑的要求比纯数据并行/张量并行高一个量级。InfiniBand 全对分胖树、NVSwitch 全连接、甚至光交换等前沿方案的加速落地,都与 MoE 的 All-to-All 需求直接相关。

15 分钟专家深入

1. All-to-All 在并行策略中的位置

在分布式训练中,三种核心并行策略对应三种截然不同的通信模式:

并行策略核心通信操作通信特征
数据并行(DP)AllReduce / ReduceScatter + AllGather每个 rank 发送相同的聚合结果,流量对称且可预知
张量并行(TP)AllReduce(Megatron-LM 风格)沿张量维度切分,通信发生在同一层的矩阵乘前后
流水线并行(PP)Point-to-Point Send/Recv只在相邻 stage 之间传递 activation
专家并行(EP)All-to-All每个 rank 发送不同数据给每个其他 rank,流量为全对全置换

关键区分: AllReduce 是”所有人算完自己的部分,然后求和/均摊”;All-to-All 是”每个人手里有不同东西,要发给不同的目标”。两者的网络行为完全不同。

2. All-to-All 的 MoE 工作流

以一个简化的 4-GPU MoE 层为例,假设 8 个专家,每个 GPU 放 2 个专家,Top-1 路由:

┌─────────────────────────────────────────────────────────┐
│                    MoE Layer Forward                     │
│                                                         │
│  Step 1: Router计算 (每个GPU本地完成)                      │
│    GPU0: token A→Expert3, token B→Expert6               │
│    GPU1: token C→Expert1, token D→Expert7               │
│    GPU2: token E→Expert0, token F→Expert5               │
│    GPU3: token G→Expert4, token H→Expert2               │
│                                                         │
│  Step 2: All-to-All Dispatch (分发token到专家所在GPU)      │
│    GPU0 持有 Expert0,1 → 收到 token C(→E1), token E(→E0)│
│    GPU1 持有 Expert2,3 → 收到 token A(→E3), token H(→E2)│
│    GPU2 持有 Expert4,5 → 收到 token G(→E4), token F(→E5)│
│    GPU3 持有 Expert6,7 → 收到 token B(→E6), token D(→E7)│
│                                                         │
│  Step 3: Expert计算 (每个GPU本地执行2个专家的FFN)           │
│                                                         │
│  Step 4: All-to-All Combine (将结果发回token原始所在GPU)   │
│    (Step 2的逆置换)                                       │
└─────────────────────────────────────────────────────────┘

每次 MoE 层 = 2 次 All-to-All(dispatch + combine)。如果一个 MoE 模型有 58 个 MoE 层(如 DeepSeek-V3 的设计),就是 116 次 All-to-All。

3. 通信量分析

设:

  • N = 参与专家并行的 GPU 数(= 专家数 / 每 GPU 专家数)
  • S = 每个 token 的 hidden dimension 大小(字节)
  • T = 每个 GPU 上的 token 数
  • K = Top-K 路由数(通常 1 或 2)

每次 All-to-All 的通信量(理想情况):

  • 每个 GPU 发送 K·T 个 token,均匀分散到 N 个目标 → 每个 GPU 发送 K·T·S / N 字节给其他每个 GPU
  • 单 GPU 总发送量 ≈ K · T · S · (N-1) / N ≈ K · T · S(当 N 较大时)
  • 这与 AllReduce 不同——AllReduce 的通信量约 2·(N-1)/N · D(D 为本地数据量),与 GPU 数几乎无关;而 All-to-All 的每 GPU 通信量 ≈ K·T·S,与 GPU 数 N 无关但流量模式要求全对全。

真正的问题不是总带宽,而是流量模式: All-to-All 产生的是全对全置换流量,要求网络任意两点间都能同时以线速通信。这对网络的”对分带宽”(bisection bandwidth)提出了 100% 的要求。

4. 网络拓扑的影响

All-to-All 对网络的核心要求: 全对分带宽 (Full Bisection Bandwidth)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[理想情况] 无阻塞胖树/Spine-Leaf
  - 任意两点间均可线速通信
  - All-to-All 达到理论峰值
  - 成本: O(N·logN) 交换端口

[常见妥协] 过度订阅 (Oversubscription)
  - 上行链路带宽 < 下行链路带宽 (如 1:4, 1:8)
  - All-to-All 在跨 leaf 时严重拥塞
  - MoE 训练效率大幅下降

[前沿方案]
  - Rail-optimized 拓扑 (GPU rail 与网络 rail 对齐)
  - 光交换/电路交换 (应对突发 All-to-All burst)
  - SHARP 网络内计算 (In-Network Aggregation)
    注: SHARP 原生支持 Reduce/AllReduce,
    对 All-to-All 的支持有限/需进一步确认

Rail-optimized 网络设计: 这是 NVIDIA 在 DGX SuperPOD 等大规模集群中推荐的拓扑。其核心思想是将 GPU 的多个网络端口(如 ConnectX-7 的多端口或多个 NIC)分别连接到不同的 rail 交换机,使得同一 rail 内的通信不经过 spine 层。对于 All-to-All,这种设计可以将跨 rail 的流量均匀分散到所有 spine 链路上,最大化有效对分带宽。

5. 实现层面

NCCL(NVIDIA Collective Communications Library): 支持 ncclAllToAllncclAllToAllv 操作。ncclAllToAll 要求每个 rank 发送给其他每个 rank 的数据块大小相同;ncclAllToAllv 支持变长(这在 MoE 中很重要,因为不同专家接收的 token 数量是动态的)。

通信原语分解: 理论上,All-to-All 可以分解为 N-1 次点对点 Send/Recv,也可以用其他集体操作组合近似,但直接的 All-to-All 实现通常更高效。

NVLink + NVSwitch(节点内): 在 DGX H100 等系统中,8 个 GPU 通过 NVSwitch 实现全连接,节点内的 All-to-All 可以达到 NVLink 的全带宽。这是 MoE 模型在单节点内做专家并行的高效基础。

跨节点 All-to-All: 通过 InfiniBand(HDR/NDR/XDR)或 RoCE 网络实现。跨节点的 All-to-All 延迟和带宽直接受网络拓扑、拥塞控制、路由策略影响。

6. 延迟敏感性

All-to-All 与 AllReduce 的一个关键区别:AllReduce 的时间主要由带宽决定(大数据量传输),而 All-to-All 在小消息场景下严重受延迟影响。

原因:All-to-All 需要 N 个独立的消息交换,每次交换都有固定的启动延迟。当每个消息很小时(如 token 数少、hidden dim 小),总时间 ≈ N × latency_per_message,而非 data_size / bandwidth。

这对 MoE 的影响:batch size 较小(推理或小 batch 训练)时,All-to-All 的延迟占比急剧上升,成为主要瓶颈。


技术原理(最深)

All-to-All 的形式化定义

设有 P 个进程(rank),每个 rank i 持有 P 个数据块 D_{i,0}, D_{i,1}, …, D_{i,P-1}。

All-to-All 操作完成后:

  • rank j 收到所有 rank i 发给它的数据块 D_{i,j}(对所有 i = 0, 1, …, P-1)
Rank 0 持有: [D₀₀] [D₀₁] [D₀₂] [D₀₃]
Rank 1 持有: [D₁₀] [D₁₁] [D₁₂] [D₁₃]
Rank 2 持有: [D₂₀] [D₂₁] [D₂₂] [D₂₃]
Rank 3 持有: [D₃₀] [D₃₁] [D₃₂] [D₃₃]

         ↓ All-to-All ↓

Rank 0 收到: [D₀₀] [D₁₀] [D₂₀] [D₃₀]  ← 每个rank发给它的第0块
Rank 1 收到: [D₀₁] [D₁₁] [D₂₁] [D₃₁]
Rank 2 收到: [D₀₂] [D₁₂] [D₂₂] [D₃₂]
Rank 3 收到: [D₀₃] [D₁₃] [D₂₃] [D₃₃]

通信量: 每个 rank 发送 (P-1) 个消息,接收 (P-1) 个消息。总网络通信量 = P × (P-1) × block_size,即 O(P² × block_size)

与 All-to-Allv 的区别

操作数据块大小MoE 适用性
AlltoAll固定(每个 rank 给其他每个 rank 的块大小相同)简单场景,负载均衡时可用
AlltoAllv变长(每个 rank 给不同 rank 的块大小可以不同)MoE 的实际需要——不同专家被路由到的 token 数动态变化

MoE 中,一个 GPU 发给 GPU_3(持有 Expert 6,7)的 token 数取决于 router 的决策,不可能预先保证相等。因此实际使用的是 AlltoAllv

All-to-All 的网络层实现

在胖树(Fat-Tree)拓扑下,All-to-All 的流量模式分析:

                ┌─── Spine ───┐
               / |            | \
              /  |            |  \
         Leaf0  Leaf1  Leaf2  Leaf3
          / \    / \    / \    / \
        G0  G1  G2  G3  G4  G5  G6  G7

All-to-All 流量特征:
  - G0→G6 的流量经过 Leaf0→Spine_x→Leaf3
  - G0→G7 的流量经过 Leaf0→Spine_y→Leaf3 (可能不同spine)
  - 同时: G6→G0, G7→G0, G1→G5, ... 所有方向同时有流量
  - 结果: 每条 Spine 链路都被打满
  - 要求: Spine 层无阻塞 (bisection bandwidth = 端口数×线速)

为什么 1:4 过度订阅对 MoE 是灾难性的: 假设 leaf switch 有 8 个 100Gbps 下行口连接 GPU,但只有 2 个 100Gbps 上行口连接 spine(1:4 过度订阅)。此时 leaf 对外总带宽只有 200Gbps,但 All-to-All 要求 leaf 对外发送约 6/8 × 总输入带宽的流量。当跨 leaf 流量占比高时,上行口成为瓶颈,All-to-All 性能骤降至理论值的 1/4。


技术演进史

时间事件与 All-to-All 的关系
2007-2012MPI 标准定义 All-to-All / AlltoAllv经典 HPC 通信原语,主要用于科学计算(如 FFT、矩阵转置)
2020GShard (Google) 600B MoE确立了 MoE 中 All-to-All dispatch/combine 范式
2021Switch Transformer (Google) 首次大规模 MoE 训练在 TPU Pod 上使用 ICI 网络做 All-to-All dispatch
2021Megablocks (Stanford)优化 MoE 中 All-to-All 的调度,减少 padding 浪费
2022NCCL 增强 All-to-Allv 支持NVIDIA 官方通信库对 MoE 场景的原生支持改善
2022-2023Mixtral 8×7B, DeepSeek-V2开源 MoE 模型爆发,All-to-All 从 TPU 走向 GPU 集群的核心挑战
2023-2024NVSwitch + Rail-Optimized 网络大规模部署产业界为 All-to-All 优化网络基础设施
2024DeepSeek-V3/R1超大规模 MoE(数百专家),EP+TP+DP+PP 多维并行中 All-to-All 的工程极致
2024-2025光交换、电路交换方案探索研究界探索用光/电路交换解决 All-to-All 的突发全对全流量

技术路线对比(量化表)

维度AllReduce (DP/TP)All-to-All (EP)Point-to-Point (PP)
流量模式聚合/广播,对称全对全置换仅相邻 rank
通信量/GPU≈ 2×(N-1)/N × param_size≈ K × tokens × hidden_bytes≈ microbatch × hidden_bytes
对分带宽需求高但可优化(梯度压缩等)极高且难以优化
延迟敏感性低(大消息为主)高(小消息时尤为突出)
网络拓扑敏感性极高
拥塞控制难度中(可预测模式)高(突发、全对全)
典型加速方案SHARP 网络内聚合、梯度压缩NVSwitch、全对分胖树、[前沿:光交换]Micro-batching
NCCL 支持成熟ncclAllToAll / ncclAllToAllvncclSend / ncclRecv

上下游

上游(依赖)

                    ┌──────────────────────┐
                    │   MoE 模型架构设计     │  ← 专家数量、Top-K、路由策略
                    └──────────┬───────────┘
                               │
                    ┌──────────▼───────────┐
                    │  专家分布策略 (EP degree) │ ← 每GPU放多少专家,决定N
                    └──────────┬───────────┘
                               │
           ┌───────────────────┼───────────────────┐
           ▼                   ▼                   ▼
   ┌───────────────┐  ┌───────────────┐  ┌───────────────┐
   │  集体通信库     │  │  网络硬件       │  │  拓扑设计       │
   │  NCCL / GLOO   │  │  NVSwitch      │  │  胖树/Spine-Leaf│
   │  MPI / MSCCL   │  │  IB NDR/XDR    │  │  Rail-Optimized │
   └───────────────┘  │  RoCE v2       │  │  过度订阅比例    │
                      └───────────────┘  └───────────────┘

下游(影响)

  • MoE 模型训练吞吐:All-to-All 效率直接影响 MFU(Model FLOPs Utilization)
  • MoE 推理延迟:小 batch 推理时 All-to-All 延迟占比高,影响 Time-to-First-Token
  • 集群网络采购决策:是否需要全对分带宽直接影响交换机和光模块的采购量(成本可能翻倍)
  • 模型架构设计:All-to-All 成本反过来约束了专家数量、EP degree 的选择(通信成本太高时可能减小 EP、增大 TP)

关键指标

指标含义典型量级参考
All-to-All 延迟单次 All-to-All 的端到端时间(小消息)节点内(NVSwitch): 低微秒级;跨节点(IB): 数十微秒级 [具体值因系统规模和配置差异较大,无据不编]
All-to-All 带宽效率实际吞吐 / 理论峰值良好配置下可接近线速;差配置(过度订阅)可能 < 30% [估算]
对分带宽(Bisection BW)将网络切为两半时,跨切面的总带宽全对分 = 线速 × 端口数/2;1:4 过度订阅 = 全对分的 1/4
EP Degree参与专家并行的 GPU 数从 8(单节点)到数百(跨节点)
Tokens per Expert每个专家平均处理的 token 数决定 All-to-All 的消息大小;负载均衡时 ≈ total_tokens × K / num_experts
All-to-All 时间占比All-to-All 时间 / 总 MoE 层时间网络差时可达 50%+;优化后可降至 10-20% [估算]

供需与市场数据

需求端驱动力

  • MoE 模型规模爆发: 主流前沿模型(DeepSeek-V3/R1、Mixtral 系列、Grok 等)均采用 MoE,且专家数持续增长(从 8 到 64 到 256+),直接放大 All-to-All 通信需求。
  • 推理场景: MoE 模型推理时,Expert Parallelism 是常见的部署策略(尤其当单个专家无法放入单 GPU 时),推理阶段的 All-to-All 对延迟极为敏感。
  • 万卡训练集群: 当 EP degree 扩展到数百 GPU 时,All-to-All 的 O(N²) 流量模式使网络成为硬瓶颈。

供给端响应

  • 网络设备升级: 全对分带宽的胖树拓扑需要的交换机端口数和光模块数量远高于过度订阅方案。据行业估算,从 1:4 过度订阅升级到 1:1 全对分,网络侧成本可能增加 2-3 倍 [行业估算,无精确来源]。
  • NVSwitch 演进: NVIDIA 在 DGX 系统中持续升级 NVSwitch,提升节点内 All-to-All 带宽。GB200 NVL72 等系统通过 NVLink 实现更大范围的高速互联。
  • 光互连/光交换: 学术界和产业界(如 RotorNet、Jupiter 等项目)探索用光电路交换来高效支持 All-to-All 流量模式,但尚处于早期。

代表公司与资本映射

领域代表公司/项目与 All-to-All 的关联
GPU + 互连NVIDIANVSwitch 提供节点内 All-to-All 基础;NCCL 提供 AlltoAllv 实现;ConnectX NIC 支持跨节点通信
网络交换NVIDIA (Spectrum-X)、Arista、Cisco提供全对分胖树/Spine-Leaf 交换机
InfiniBandNVIDIA (ConnectX, Quantum)IB 是跨节点 All-to-All 的主流高性能网络
RoCE / 以太网Broadcom、Marvell超以太网(Ultra Ethernet)联盟推动以太网增强集体通信支持
光互连Lightmatter、Ayar Labs、Celestial AI硅光/光交换可能从根本上改变 All-to-All 的网络行为
通信库/编译器NVIDIA (NCCL/MSCCL)、微软 (MSCCL)、CMU (Hetu)优化 All-to-All 的调度、流水线和分块策略
MoE 模型DeepSeek、Mistral AI、xAI (Grok)作为 All-to-All 的核心”消费者”,其架构设计直接影响 All-to-All 需求

投资逻辑

核心推理链

MoE成为主流架构 → 每层需要2次All-to-All → 要求全对分带宽网络
    → 网络基础设施成本和复杂度大幅上升
    → 受益标的: 高性能网络交换(光模块/交换机)、NVLink/NVSwitch生态、
              光互连技术、高性能通信库

看多逻辑

  1. MoE 趋势确立: 从 DeepSeek 到各大厂商,MoE 是scaling的主流路径。专家数越多 → EP degree 越大 → All-to-All 通信量越大 → 网络需求越强。
  2. 网络从”够用”到”必须全对分”: 纯 DP/TP 时代,过度订阅网络勉强可用;MoE 时代,全对分带宽成为硬性要求。这驱动网络侧资本开支升级。
  3. 光互连的结构性机会: 电交换在全对全流量下功耗和成本急剧上升,光互连/光交换在 All-to-All 场景下有潜在结构性优势。

风险与不确定性

  1. MoE 架构可能被替代: 如果 Dense 模型(如 Llama 系列)在同等成本下持续缩小与 MoE 的差距,EP 和 All-to-All 的重要性会下降。
  2. 通信优化可能缓解瓶颈: 专家合并、Token 选择策略优化、本地化路由(减少跨节点通信)等方法可能降低 All-to-All 的实际压力。
  3. DeepSeek 等已展示部分缓解方案: 如通过 DualPipe 等技术将 All-to-All 与其他计算重叠,减少实际暴露的通信时间。

常见误读纠偏

❌ 误读 1:“All-to-All 和 AllReduce 本质一样,都是集体通信”

纠正: 两者在流量模式上完全不同。AllReduce 的核心操作是聚合(Reduce),每个节点的贡献被求和/均摊到所有节点,流量模式是树形或环形的,具有高度对称性和可预测性。All-to-All 的流量模式是全对全置换——每个节点发给其他每个节点的数据都不同,网络中任意两点间都可能同时有流量。这意味着 AllReduce 可以通过 SHARP 等网络内聚合技术加速,而 All-to-All 原则上无法用类似方式优化(你无法在网络交换机上”聚合”不同目的地的数据)。

❌ 误读 2:“MoE 用 AllReduce 就行,和数据并行一样”

纠正: MoE 的专家并行层不能用 AllReduce 替代 All-to-All。AllReduce 是”所有人算完聚合”;而 MoE 需要的是”把不同 token 发给不同专家、再把结果发回来”——这是本质上不同的通信模式。有人可能混淆的原因是:在 MoE 模型中,非 MoE 层(如 Attention 层)仍然使用 AllReduce(如果做了张量并行),但 MoE 层的 dispatch/combine 必须是 All-to-All(或其变体)。

❌ 误读 3:“All-to-All 的瓶颈是带宽,增加带宽就能解决”

纠正: 带宽只是问题的一面。All-to-All 在小消息场景下延迟是主要瓶颈——它需要 N 次独立的消息交换,每次都有固定的启动延迟。此外,即使带宽充足,All-to-All 的全对全流量模式也极易引发网络拥塞(多条路径同时竞争交换机缓存),因此对分带宽拥塞控制与绝对带宽同等重要。

❌ 误读 4:“节点内 All-to-All 没有瓶颈”

纠正: 在配备 NVSwitch 的系统中(如 DGX H100),节点内 All-to-All 确实可以高效完成。但当单节点内 GPU 数有限(如 8 个),而专家数远大于 8 时,必须做跨节点 EP。此时节点内 All-to-All 只是整个通信链的一环。另外,如果未来采用 GB200 NVL72 等更大范围的 NVLink 域,节点内/域内 All-to-All 的定义也会变化。


学习路径

Level 0: 理解概念
  ├── 理解 All-to-All 的数据交换语义(每个rank发不同数据给每个其他rank)
  ├── 对比 AllReduce、AllGather、ReduceScatter 的语义差异
  └── 推荐: 阅读 MPI 标准中 MPI_Alltoall 的文档

Level 1: 理解 MoE 中的应用
  ├── 读懂 GShard 论文中的 MoE dispatch/combine 图示
  ├── 理解 Top-K 路由如何决定 All-to-All 的消息大小和目的地
  └── 推荐: 代码阅读 Megablocks 或 FairScale MoE 实现

Level 2: 理解网络影响
  ├── 学习胖树/Spine-Leaf 拓扑和对分带宽概念
  ├── 理解过度订阅对 All-to-All 性能的影响(可以用简单仿真验证)
  └── 推荐: NVIDIA DGX SuperPOD 网络设计文档

Level 3: 理解系统优化
  ├── 学习 All-to-All 与计算的重叠(overlap)技术
  ├── 了解 MSCCL 等可编程集合通信优化
  ├── 理解 EP + TP 混合并行中通信量的权衡
  └── 推荐: DeepSeek-V3 技术报告(DualPipe 等优化); 
           论文 "MegaScale" (ByteDance, 2024)

Level 4: 前沿研究
  ├── 光交换/电路交换支持 All-to-All 的方案
  ├── 网络内计算(In-Network Computing)对 All-to-All 的潜在加速
  ├── 自适应路由和拥塞控制在 All-to-All 场景下的表现
  └── 推荐: RotorNet, c-Through, Jupiter 等光交换论文

一句话总结

All-to-All 是 MoE 大模型时代最关键的通信原语——它把”全对全置换流量”这个对网络最不友好的模式变成了每次 MoE 层的刚需,倒逼整个 AI 基础设施从网络拓扑到互连技术的全面升级。


延伸阅读与来源

资源说明
GShard (Lepikhin et al., 2020)首次系统描述 MoE 中 All-to-All dispatch/combine 范式
Switch Transformer (Fedus et al., 2022)Google 的稀疏 MoE 大规模训练
Mixtral 8×7B开源 MoE 语言模型,采用 Top-2 路由
DeepSeek-V2/V3 技术报告大规模 MoE 训练的并行策略与通信优化细节
NCCL 文档ncclAllToAll / ncclAllToAllv 使用说明
DGX SuperPOD 网络设计指南NVIDIA 推荐的 Rail-Optimized 拓扑
MSCCL (Microsoft)可编程集合通信库,支持自定义 All-to-All 调度
光交换论文RotorNet, c-Through, Jupiter 等
source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型