Skip to content

多卡互联与集群网络 ​

标签
AI/infra/互联
字数
2592 字
阅读时间
11 分钟

01-GPU 硬件架构与存储层次 列的四个指标里,最后一个「互联带宽」决定了多卡能扩展到什么程度。它不像算力那样容易被宣传数字误导,但对分布式训练效率的影响往往更大 —— 算力提升是线性的,互联带宽不够会让并行扩展效率断崖式下跌。

互联分两层:机内卡间(NVLink / NVSwitch)与跨机(InfiniBand / RoCE)。

PCIe:通用但不够用 ​

PCIe 是 GPU 与 CPU、以及 GPU 之间最基本的通道。

PCIe 版本单向带宽(x16)双向带宽(x16)
PCIe 4.032 GB/s64 GB/s
PCIe 5.064 GB/s128 GB/s

对大模型张量并行来说这远远不够 —— 每一层前向和反向都要做 AllReduce。即便是 PCIe 5.0 的 128 GB/s 双向带宽也不够用,这是后面所有并行策略设计的硬约束。

NVLink 绕开 PCIe,在 GPU 之间搭直通链路。

NVLink 版本架构单链路每 GPU 链路数每 GPU 总带宽(双向)
NVLink 3.0Ampere (A100)50 GB/s12600 GB/s
NVLink 4.0Hopper (H100)50 GB/s18900 GB/s
NVLink 5.0Blackwell (B200)100 GB/s181,800 GB/s

与 PCIe 5.0(双向 128 GB/s)对比的量级:

  • NVLink 4.0 约是 PCIe 5.0 的 7 倍(900 / 128)
  • NVLink 5.0 约是 PCIe 5.0 的 14 倍

这条比例直接决定工程准则:需要高频通信的并行策略必须限制在 NVLink 范围内。下面会把这句话量化。

NVSwitch:消除拓扑不对称 ​

8 卡机器里如果每两张卡都直连,布线复杂度爆炸。NVSwitch 是交换芯片,所有 GPU 通过它互联,任意两卡之间都能跑满带宽。

它的价值可以精确表述为:消除拓扑不对称。张量并行每层都要 AllReduce,只要存在某些卡对之间带宽更低,整体性能就被最慢的那条链路拖累 —— 一个「平均值很好」的拓扑在这里没用。

查看实际拓扑 ​

bash
nvidia-smi topo -m     # 卡间互联矩阵
nvidia-smi nvlink -s   # NVLink 状态与带宽

输出示例:

        GPU0  GPU1  GPU2  GPU3  GPU4  GPU5  GPU6  GPU7
GPU0     X    NV18  NV18  NV18  NV18  NV18  NV18  NV18
GPU1    NV18   X    NV18  NV18  NV18  NV18  NV18  NV18
...

NV18 表示走 18 条 NVLink。如果矩阵里出现 PIX / PHB / SYS 这类标记,说明该卡对走的是 PCIe 或跨 NUMA,带宽低一个到两个量级 —— 这是「8 卡机器跑出 4 卡效果」的最常见技术原因。

典型的 8 卡节点 ​

以 DGX H100 为例:

  • 8 块 H100 通过 NVSwitch 全互联,任意两卡 900 GB/s
  • 每台机器配 8 张 ConnectX-7 InfiniBand 网卡接入集群

机内通信远快于机间,这个带宽落差是并行策略分层的物理依据。

跨机:InfiniBand 与 RoCE ​

传统以太网的三条硬伤 ​

普通 TCP/IP 以太网用在大模型训练上有三个问题:

问题量级
延迟高数据要过内核协议栈,端到端 50–100 微秒
CPU 开销大拷贝与协议处理占大量 CPU,挤占数据预处理
有效带宽受限协议开销导致硬件是 100GbE 也打不满

梯度同步是每个 training step 都要做的高频操作,这三个问题会被直接放大成训练速度的拖累。

RDMA:绕过内核与 CPU ​

RDMA(Remote Direct Memory Access) 允许一台机器直接读写另一台机器的内存,完全绕过操作系统内核和 CPU。

它的三个特性:零拷贝(数据不在用户态与内核态间往返)、内核旁路(消除上下文切换)、微秒级延迟(端到端 1–2 微秒,比 TCP/IP 快 50–100 倍)。

InfiniBand ​

IB 原生支持 RDMA,是当前大规模 AI 训练集群最主流的方案。

标准单链路速率4x 带宽(常用配置)等效字节带宽
HDR50 Gb/s200 Gb/s25 GB/s
NDR100 Gb/s400 Gb/s50 GB/s
XDR200 Gb/s800 Gb/s100 GB/s

特点:协议栈效率极高;拥塞控制由硬件完成,大规模集合通信下表现稳定;需要专用交换机与网卡(HCA),成本高;NVIDIA(收购 Mellanox 后)是主要供应商,与 GPU 生态深度绑定。

RoCE:以太网上的 RDMA ​

让标准以太网硬件也支持 RDMA。

版本协议层路由能力
RoCE v1以太网二层不可跨子网路由
RoCE v2UDP/IP 三层可路由,更通用
维度InfiniBandRoCE v2
延迟约 1 μs约 2–5 μs
带宽400–800 Gb/s100–400 Gb/s
拥塞控制硬件原生实现依赖 ECN / PFC 配置
成本高(专用设备)中(复用以太网基础设施)
大规模稳定性成熟需要仔细调优
适用大型 AI Lab、万卡集群云厂商、中小规模集群

对上层训练代码完全透明 —— PyTorch / DeepSpeed 不需要区分,NCCL 会自动选择可用的传输方式。所以「换网络」这件事的成本主要在部署与运维,不在改代码。

一台 8 卡节点的两层互联:

   ┌──────────────── 机内:NVLink 域 ────────────────┐   ┌── 跨机 ──┐
   │   [GPU0] ──┐   ┌── [GPU1]   ┌── [GPU2]  ┌─ [GPU3]│   │          │
   │            │   │            │           │        │   │  交换机   │
   │          NVSwitch(交换芯片,任意两卡等带宽)      │──▶│  IB / RoCE│
   │            │   │            │           │        │   │          │
   │   [GPU4] ──┘   └── [GPU5]   └── [GPU6]  └─ [GPU7]│   │          │
   └──────────────────────────────────────────────────┘   └──────────┘
        任意两卡 900 GB/s(H100)                            50 GB/s(NDR)
                    └──────────── 差 18 倍 ────────────┘

  这台带宽落差是并行策略分层的物理依据:需要高频通信的维度必须留在机内。
  (图中未画:每卡对应一张 ConnectX 网卡接入集群。)

为什么并行策略的形状由互联决定 ​

这是本篇最实用的一条判据:通信频率越高的并行维度,必须放在带宽越高的互联层上。

张量并行为什么必须待在机内 ​

张量并行在每一个 Transformer 层的每个子模块都要 AllReduce:

一层前向:输入 → Linear1 → AllReduce → 激活 → Linear2 → AllReduce → 输出
一层反向:梯度 → AllReduce → ... → AllReduce → ...

一个 Transformer 层有 Attention 与 MLP 两个子模块,各自前向、反向各 1 次,合计 4 次 AllReduce。80 层的模型意味着 320 次 AllReduce。

按「每次搬 1 GB」估算:

走哪条路单次耗时320 次总计
NVLink 4.0(900 GB/s)约 1.1 ms约 0.35 s
IB NDR(50 GB/s)约 20 ms约 6.4 s

差距 18 倍。 这就是「TP 不跨机」的物理原因 —— 不是约定,是带宽算出来的。

数据并行的通信量 ​

数据并行的 AllReduce 数据量等于模型梯度大小:

模型FP16 梯度8 卡 Ring AllReduce 每卡通信量NVLink 4.0 耗时
7B14 GB约 28 GB约 31 ms
70B140 GB约 280 GB约 311 ms

70B 模型跨机走 IB(50 GB/s)时 AllReduce 约 5.6 秒 —— 这就是 ZeRO 系列要把梯度与参数切碎分片存储的动机:用更多次小通信替换一次大通信,让通信能与计算重叠(见 03-集合通信与 NCCL 的重叠一节)。

流水线并行的气泡 ​

流水线并行按层切分到不同机器,机器间用点对点 Send/Recv 传激活值。通信量远小于 TP 和 DP,IB 完全够用。它跨机不是问题,代价在别处:

气泡占比=P−1P−1+M

(P 流水线级数,M micro-batch 数。)增大 M 能缩小气泡,但会增加显存占用。

小结 ​

并行维度通信频率通信量该放在
张量并行 TP每层多次激活大小NVLink(机内)
数据并行 DP每步一次梯度大小机内优先,可跨机
流水线并行 PP每 micro-batch激活大小可跨机(IB 够用)
专家并行 EP每层 All-to-AllToken 路由量视规模,通常需高带宽

这张表决定了任何大规模训练的并行度分配。它也是 NVLink 5.0「单域 72 卡」的意义所在(见 02-NVIDIA GPU 架构演进:Volta 到 Blackwell):把 TP 可用的范围从 8 卡扩到 72 卡,等于允许更大的模型不上跨机网络也能跑起张量并行。

通信频率越高,就必须待在带宽越高的一层:

  并行维度      │ 通信频率              │ 通信量        │ 该放哪层
  ──────────────┼──────────────────────┼──────────────┼──────────────────────
  TP 张量并行   │ 每层多次(一层 4 次)  │ 激活大小      │ 必须机内 —— 跨机差 18 倍
  DP 数据并行   │ 每步一次              │ 梯度大小      │ 机内优先,可跨机
  PP 流水线     │ 每 micro-batch        │ 激活大小      │ IB 够用,代价是气泡
  EP 专家并行   │ 每层 All-to-All       │ 路由 token 量 │ 视规模,通常需高带宽
  ──────────────┴──────────────────────┴──────────────┴──────────────────────

  TP 那一行的「必须」不是约定,是按带宽算出来的:
  80 层 × 4 次 = 320 次 AllReduce,每次 1 GB ⇒ NVLink 上 0.35 s、IB 上 6.4 s。

网络侧排错清单 ​

现象可能原因排查方法
step 时间远超预期通信带宽不足nccl-tests 测实际带宽
GPU 利用率长期偏低数据加载或 CPU 预处理拖后腿Nsight Systems 看 CPU-GPU 交互
不同卡速度不一致NVLink 拓扑不对称nvidia-smi topo -m 查是否出现 PIX/PHB/SYS
多机扩展效率差IB 配置问题NCCL_DEBUG=INFO 看实际传输路径
带宽远低于理论值算法选择不优或缓冲区过小NCCL_ALGO 强制切换算法对比

相关 ​

参考 ​

贡献者 ​

文件历史 ​