从云原生走向 AI 原生:一套面向未来的架构方法论 → 阅读《AI 原生基础设施》

互连与集合通信:拓扑如何决定调度上限

草稿

多 GPU 系统的性能上限往往不在 GPU 里,而在 GPU 之间:同一组 8 张卡,放对地方和放错地方,通信能力差一个数量级。

微架构讲的是卡内;本章讲卡间与机器间。它是Ray/KubeRay 拓扑约束调度问题域的物理前提,也解释了MIG与共享方案的一个关键限制:实例间 P2P 关闭。

带宽金字塔

路径带宽(数量级)相对显存带宽类比
HBM 显存3.35 TB/s本地内存
NVLink(卡间,双向合计)900 GB/s~0.27×机柜内专线
PCIe Gen5 x1664 GB/s~0.02×节点内普通总线
InfiniBand 400G~50 GB/s~0.015×跨节点网络
表 1: H100 时代的通信层级(与显存带宽对照)

要点:NVLink 只存在于同一台服务器内部(经 NVSwitch 芯片把 8 卡全互联);跨机器只能走网卡。同样的 8 卡张量并行,放一台 HGX 里和拆到两台机器,通信能力差近 10 倍。

读拓扑表:nvidia-smi topo -m

        GPU0 GPU1 ... NIC0 NIC1
GPU0    X    NV18     PIX  PIX
GPU1    NV18 X        PIX  PIX
Legend: NV18 = 18 条 NVLink 直连 | PIX = 同一 PCIe 交换机
        PXB = 同主机跨 PCIe 交换机 | PHB/SYS = 经过 CPU / 跨 NUMA

三类读法:

  • GPU↔GPU 全是 NV18:NVSwitch 全互联,任意 8 卡组合都好;
  • GPU↔NIC 的 PIX/PXB:哪块网卡离哪块 GPU 近,而 GPUDirect RDMA(网卡 DMA 直达显存,免主机中转)依赖这个亲和;云环境开启 ACS 会强制绕 CPU,是“本地快云上慢”的经典原因;
  • 异常格子:本该 NV 的位置出现 PHB/SYS,说明拓扑降级,训练吞吐会无声下跌。

环形 AllReduce:通信量的小学数学

数据并行训练每步要把各卡梯度归约(AllReduce)。NCCL 的环形算法把数据切块沿环传递,每卡发送量为:

每卡发送量 = 2 × (N-1)/N × 数据量 ≈ 2 倍数据量(与卡数几乎无关)

这个“常数发送量”是数据并行能扩展到几百卡的数学根基。工程上只需两个结论:

  1. 环的速度由最差一段决定:环上任何一步跨机器,整环被拉到网卡带宽。所以 NCCL 启动日志(NCCL_DEBUG=INFO)里的 Via NVL(好)与 Via SYS/PCIe(坏)值得纳入部署验收;
  2. nccl-tests 的 busbw 才是可比指标busbw = algbw × 2(N-1)/N 归一化了环系数,单节点 H100 大消息应达 430–480 GB/s(NVLS 开启后 700+);只有 200 左右说明掉到了 PCIe。

拓扑对调度的三条硬规则

  1. 张量并行(TP)留在同一 NVSwitch 域内:TP 每层通信,小而频,跨机即灾难。推理 TP=4/8 的部署同理。
  2. 跨 MIG/vGPU 实例的并行是陷阱:MIG 实例间(以及多数 vGPU 形态下)P2P/NVLink 不可用,跨实例的 TP 会退化到 PCIe 甚至主机中转。多实例节点只服务 TP=1 的模型分档。
  3. Kubernetes 原生不感知这些:调度器只数卡数,选哪几张卡发生在 kubelet 侧且拓扑盲。现实践是节点级独占(大任务整节点)、注入有序的 CUDA_VISIBLE_DEVICES,以及未来由DRA把“同一 NVSwitch 域的 4 张卡”变成可声明约束。
工程经验
排查“多卡任务慢”的标准顺序:先看 NCCL 日志走的路径,再看拓扑表,最后才怀疑应用。多数“GPU 性能问题”在这一层就有了答案。

NVIDIA 当前的 NVLink 页面描述了 Rubin 的第六代 NVLink:每 GPU 3.6 TB/s、72 GPU 域共 260 TB/s 聚合带宽;Blackwell 页面则是第五代 NVLink、72 GPU 域 130 TB/s。这些数字不可互换。一份严肃的架构文档总会写清代数、平台、方向约定,以及数字是每链路、每 GPU 还是聚合值;把它与世代、模块与产品语言的五层词汇一起写进采购清单。

图 1: 物理位置决定了数据可走的路径
图 1: 物理位置决定了数据可走的路径

GPUDirect:在受支持处消除多余拷贝

GPUDirect 系列技术减少 GPU 显存与网卡、存储等对端设备之间的拷贝。GPUDirect RDMA 可让网络适配器经由受支持的软硬件路径直接向显存搬数据;GPUDirect Storage 面向存储与显存之间经由加速路径的数据搬运。注意它们是端到端特性:需要验证固件、驱动、内核模块、PCIe 布局、权限、容器能力和库行为。“网卡支持 RDMA”不能证明应用正在使用显存直传。

rank 映射与扩展效率

一个分布式进程拥有 rank 和设备分配,从 rank 到 GPU、从 GPU 到网卡、从 GPU 到对端链路的映射影响每一次集合通信的路径。正确性也许能在糟糕的映射下幸存,性能不会。应用可以完美调优于单节点域,却在跨节点域上无法扩展,所以基准计划必须至少有三条基线:单 GPU、单服务器全部 GPU、同一工作负载跨两台及以上服务器。结果可以用一行诊断式表达:

扩展效率 = 单设备耗时 / (N × N 设备耗时)

它是诊断工具而非经济模型:请在旁边同时记录通信占比、排队时间、失败和每次完成运行的成本(见容量经济)。

常见误区

误区真相
8 GPU 的 Pod,K8s 会放好原生调度拓扑盲,可能跨 4 台机器
NVLink 900GB/s 是任意两卡之间是每卡聚合双向带宽,经 NVSwitch 仲裁
万兆以太网也能跑分布式训练能跑,AllReduce 慢一个数量级,卡在等网络
MIG 实例间还能 NVLink 通信默认关闭,跨实例 TP 是性能陷阱
加了 GPU 的节点网络就够了RDMA 亲和、peermem、ACS 是一组独立的主机级前置条件
表 2: 互连层的常见误区

总结

互连层给平台的结论可以压缩成一句:通信留在金字塔上层。训练的数据并行可以跨机(环形算法发送量是常数),张量并行必须同机同域;共享与切分方案会改变 P2P 可用性,因此“切分后能否并行”是选型时必须显式回答的问题(见决策轴)。把拓扑表纳入节点档案、把 NCCL 路径纳入部署验收,是成本最低的两项治理动作。

参考资料

创建于 2026/08/31 更新于 2026/08/31 2096 字 阅读约 5 分钟