2. 基础知识:多卡通信拓扑的基本概念与常见结构
2.1 为什么拓扑结构决定分布式训练的天花板
在多卡训练中,拓扑(Topology)描述的是 GPU 之间如何通过物理链路相互连接。它决定了任意两张卡之间交换数据的路径长度、可用带宽以及拥塞风险。一个直观的类比是城市交通网:同样是 8 个节点,环形路的绕行距离与全连接高速路的直达体验截然不同。在 All-Reduce、All-to-All 等集合通信操作中,数据往往需要跨多张卡多次转发,拓扑直接决定了通信步数(Steps)和单步耗时,进而成为扩展效率(Scaling Efficiency)的硬约束。
2.2 四种基础拓扑结构详解
实际集群中,拓扑往往不是单一形态,而是多种结构的组合。但理解基础形态是分析复杂拓扑的前提。以下四种结构覆盖了从单机到大规模集群的主要设计模式。
2.2.1 环形(Ring)拓扑
每张卡仅与相邻的两张卡相连,形成一个闭合环。数据沿单一方向逐跳传递。其最大优势是链路简单、布线成本低,且每个节点的收发压力均衡。Ring-AllReduce 算法正是基于这种拓扑,将数据切分为 N 个块,通过 N-1 次 Scatter-Reduce 和 N-1 次 All-Gather 完成全局归约,通信总量为 2×(N-1)/N × 数据量,效率极高。但缺点是:当环上某条链路故障或某卡计算变慢时,整个环的通信吞吐会立即下降;且任意两卡通信的平均跳数为 N/2,延迟较高。
2.2.2 树形(Tree)拓扑
常见于多机互联场景,GPU 通过 PCIe Switch 或 NVSwitch 汇聚到根节点,再通过高速网络(如 InfiniBand)向上层交换机连接。树形结构天然支持分层集合通信:先在各叶子节点内部完成局部归约,再沿树向上传递,最后广播回各叶子。这种拓扑的优点是扩展性好,适合构建数百甚至数千卡的大集群;缺点是越靠近根部的链路越容易成为瓶颈,且根节点故障会导致大面积通信中断。
2.2.3 网格(Mesh)拓扑
GPU 按二维或三维网格排列,每个节点与上下左右(及前后)邻居相连。这种结构在 TPU Pod 和部分定制 AI 芯片中常见。网格的优点是局部通信延迟低,适合卷积神经网络中常见的相邻层数据交换;缺点是全局通信需要多次转弯,且网格边界的节点拥塞程度高于中心节点。对于不规则通信模式,网格的利用率往往低于全连接。
2.2.4 全连接(Fully-Connected)拓扑
任意两张卡之间都有独立物理链路。这是理想化的拓扑,通信延迟最低(单跳直达),不存在转发瓶颈。NVIDIA 的 NVLink 全连接(如 DGX A100 中的 8 卡全连接)和 NVSwitch 架构(如 DGX H100 中 8 卡通过 8 个 NVSwitch 实现全互联)是典型代表。全连接的代价是布线复杂度和交换机成本随卡数平方增长,因此仅适用于单机 8 卡或小规模高密场景,无法直接扩展到大规模集群。
2.3 真实场景中的混合拓扑与层次化设计
没有任何一个大规模集群会单纯使用上述某一种拓扑。以一台 8 卡 DGX 服务器为例:卡间通过 NVLink 构成全连接;多台服务器之间则通过 InfiniBand 或 RoCE 交换机连接成胖树(Fat-Tree)。胖树本质上是一种多根树形结构,通过增加上层交换机的数量来缓解根节点瓶颈。从全局视角看,整个集群呈现“叶脊(Spine-Leaf)”架构:每台服务器(叶)连接到两个或多个脊交换机,任意两台服务器之间的路径数等于脊交换机数量,从而提供多路径冗余和更高的对分带宽。
这种层次化设计带来了一个关键问题:通信距离不对称。同一台服务器内的两张卡通信延迟约 1-2 微秒,带宽可达 600 GB/s(NVLink);而跨服务器通信延迟可能上升到 5-10 微秒,带宽降至 25-50 GB/s(单条 HDR InfiniBand)。如果调度器不了解这种差异,就可能出现“把需要频繁交换梯度的两张卡分配到不同服务器”的次优决策,导致训练效率下降 20%-40%。
2.4 拓扑感知的实践方法:从 lspci 到 nvidia-smi
在实际集群中,获取拓扑信息通常分三步:
- PCIe 拓扑发现:通过
lspci -tv查看 GPU 与 PCIe Switch、CPU 的挂载关系,识别是否共享 PCIe Switch。 - NVLink 连接查询:使用
nvidia-smi topo -m输出 GPU 间的 NVLink 连接矩阵,其中NV#表示 NVLink 连接数,PIX表示通过 PCIe Switch,SYS表示需要通过系统总线。 - 网络架构探测:通过
ibstat或roce show确认网卡速率,结合交换机配置了解跨机路径。
# 查看 GPU 间拓扑连接矩阵
$ nvidia-smi topo -m
GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7
GPU0 X NV1 NV1 NV2 NV2 SYS SYS SYS
GPU1 NV1 X NV2 NV1 SYS NV2 SYS SYS
GPU2 NV1 NV2 X NV1 SYS SYS NV2 SYS
GPU3 NV2 NV1 NV1 X SYS SYS SYS NV2
GPU4 NV2 SYS SYS SYS X NV1 NV1 NV2
GPU5 SYS NV2 SYS SYS NV1 X NV2 NV1
GPU6 SYS SYS NV2 SYS NV1 NV2 X NV1
GPU7 SYS SYS SYS NV2 NV2 NV1 NV1 X
上述输出中,NV2 表示两张卡之间有 2 条 NVLink 直连,通信带宽最高;SYS 表示需要通过 PCIe 和系统内存中转,带宽最低。调度器在分配 GPU 时,应优先将通信量最大的 rank 对映射到 NV2 或 NV1 的位置。
2.5 常见误区与设计复盘
2.6 拓扑结构选择决策清单
| 场景 | 推荐拓扑 | 原因 | 典型硬件 |
|---|---|---|---|
| 单机 8 卡,张量并行 | 全连接(NVLink) | 张量并行每步都需 AllReduce,延迟敏感 | DGX A100/H100 |
| 单机 4-8 卡,数据并行 | 环形或混合环形 | Ring-AllReduce 带宽利用率高 | 普通 PCIe 服务器 |
| 多机 16-64 卡 | 层次化:机内全连接 + 机间胖树 | 兼顾局部带宽与扩展性 | DGX + InfiniBand |
| 超大规模 > 256 卡 | 多维环 / 3D-Torus | 降低交换机端口压力,容错性好 | TPU Pod / 定制集群 |