H100 · 多 GPU 系统(Multi GPU)

目录 · ← l10 · l12 →

H100 · 多 GPU 系统(Multi GPU)

本文档基于课程讲义《9. Multi GPU.pdf》(Lesson 9,27 页)整理, 系统介绍 H100 的多 GPU 互联体系:NVLink / NVSwitch / ConnectX-7 / SuperPOD / Rail 网络 / P2P。 前置阅读:H100-架构介绍.md(NVLink、GPC)、H100-Kernel-Design.md(调度)。


目录

  1. 为什么需要多 GPU
  2. NVLink 与 NVSwitch
  3. H100 DGX 节点与 SuperPOD
  4. NVLink 4.0 细节
  5. NVSwitch 3 与 ConnectX-7
  6. OSFP 笼与存储网络
  7. Rail 对齐系统
  8. 三层网络:Leaf / Spine / Core
  9. Quantum-2 QM9700 交换机
  10. 自适应路由与 SHIELD
  11. P2P 通信与 UVA
  12. 总结与学习衔接

1. 为什么需要多 GPU

问题:用 H100 训练一个 1T 参数的模型、10T token

  • 经验观测:每 token 每参数约需 6 次运算(FLOPs)(前向 + 反向 + 更新)。
  • 总 FLOPs = 6 × 10^12 × 10^13 = 6 × 10^25
  • 假设每秒 1000 TFLOPS → 需 约 1900 年

这就是为什么需要多 GPU:把多块 GPU 连起来,获得更高吞吐、跑更大模型。两项技术支撑:

  • NVLink Gen 4:绕过 CPU 的 GPU 直连,900 GB/s 双向带宽,比 PCIe Gen 5 快 7 倍
  • NVSwitch:让节点内每块 GPU 都能以全速与其它任何 GPU 通信。

  • 传统计算里,GPU 是离散单元,靠较慢的 PCIe 通道通信。
  • H100 范式转变:创建一张 “mesh”,让每块 GPU 都能以极高速度访问其它 GPU 的内存。
  • 8 GPU 集群可表现为单一的内存+算力池
  • 架构可从单服务器 8 GPU 扩展到 256 GPU 集群(NVLink Switch System),以原生芯片速度通信。

3. H100 DGX 节点与 SuperPOD

3.1 DGX H100 节点

  • 8 块 SXM5 形态的 H100。
  • 板上含 4 个第三代 NVSwitch
  • GPU 与交换机经第四代 NVLink 连接,每 GPU 900 GB/s 带宽。
  • 8 个 ConnectX-7 网卡(NIC):专用于把网络任务从主 CPU 卸载出去的处理器。
  • 4 个 OSFP 笼(Octal Small Form-factor Pluggable)。

3.2 H100 SuperPOD

  • 127–128 块 GPU,组织成 4 个 SU(Scalable Unit,可扩展单元),每个 SU 有 32 个 DGX H100 节点
  • “32” 这个数能用标准交换机端口数(通常每交换机 64 端口)做出完美平衡的 Level 1 网络
  • 设计基础:单个 DGX H100 节点有 8 个独立的 ConnectX-7 计算网络接口(HCA),每 GPU 一个。

  • 每块 H100 有 900 GB/s 双向带宽,约比 PCIe Gen5 快 7 倍;让 GPU 在 HBM 之间通信、跳过 CPU 路径。
  • H100 用 18 条独立 NVLink “link” 达到该速度。
  • 与上代不同,第四代 NVLink 更注重密度:每条 link 只用 2 对高速差分对(从 4 对降下来), 能在同样空间塞更多 link。

5. NVSwitch 3 与 ConnectX-7

5.1 NVSwitch 3

  • 标准 8-GPU HGX 板上用 4 块 NVSwitch 连接全部 8 块 H100;每块交换机接 4–5 个 NVLink 端口
  • 交换机构成完全无阻塞的互联:每块 GPU 能同时以全 900 GB/s 与任何 GPU 通信,无需排队等通道清空。
  • NVIDIA 把 NVSwitch 装进外部托盘(NVLink Switch System),可把最多 256 块 H100(32 个机架)连成一个 SuperPOD。
  • NVSwitch 自带 ALU,可在交换机内做加法/归约——这是带来巨大性能提升的最重要特性之一。

5.2 ConnectX-7

  • 服务器箱内 GPU 靠 NVLink(900 GB/s)通信;数据一旦要出箱到另一台服务器,就撞上 ConnectX-7
  • 一个 DGX 里有 8 个计算网络接口(ConnectX-7)
  • 这是瓶颈:训练速度取决于你如何高效应对这个 18 倍的带宽骤降。ConnectX-7 的存在就是为了最小化”出箱”的代价。
  • ConnectX-7 让网络在 CPU 不知情的情况下读写 GPU 内存
  • 网卡与网络交换机协作,在飞行中(in flight)对梯度求和——把网络流量从 O(N)(随集群规模线性增长)变成 O(1)(恒定)。 这是大规模训练能线性扩展的唯一原因。

6. OSFP 笼与存储网络

6.1 OSFP 笼(计算网络)

  • 4 个物理笼提供 8 条独立的 400Gb/s 网络链路(共 3.2 Tb/s),靠 “Twin-port” 双端口技术实现。
  • 它们内部连到 8 块 ConnectX-7 网卡
  • 支持 GPUDirect RDMA:让不同 DGX 节点的 GPU 互聊,不占用系统 CPU。
  • 这 4 个 OSFP 笼专用于计算网络(Compute Fabric)——存储流量不走这些线缆。

6.2 存储网络(Storage Fabric)

  • 用于把海量数据集载入 GPU、保存 checkpoint。
  • 单独的 PCIe 卡(装在机箱后部标准 PCIe 槽),不是 OSFP 笼
  • 通常是 Fat Tree 或标准 leaf-spine;不同于 “Rail” 网络,任何 DGX 节点都要能连到任何存储阵列

7. Rail 对齐系统

  • 标准网络里,一台服务器可能用一条线缆承载它所有组件的流量。DGX SuperPOD 里,网络被物理拆成 8 条并行、隔离的网络——这就是 “Rails”
  • 节点内有 8 块 GPU(编号 0–7):Rail 1 连接集群里每台节点的 GPU 0 到同一组交换机,Rail 2 连接每台节点的 GPU 1 到另一组交换机,以此类推。
  • Rail 1 的流量在叶交换机层绝不干扰 Rail 2 —— 在整个集群上形成 8 个独立连接平面。
  • Rail 系统利用 NVIDIA SHARP 技术,把数据操作卸载到网络交换机本身。

8. 三层网络:Leaf / Spine / Core

SuperPOD 用 3 层(Leaf、Spine、Core)把 SU 连起来:

作用
Layer 1: Leaf(叶)连接节点
Layer 2: Spine(脊)连接 SU 之间
Layer 3: Core / Super-Spine(核/超脊)最大规模扩展

这些层就是一堆 Quantum-2 InfiniBand 交换机连在一起。

8.1 Leaf 层

  • 线缆从 DGX H100 服务器后部物理引出。
  • Rail 隔离:8 个独立交换机”平面”——Rail 1 交换机只连每节点的第 1 张网卡(GPU 0),Rail 8 只连第 8 张(GPU 7)。
  • Leaf 交换机处理本地 SU 内流量:若 Node 1 的 GPU 0 要跟(同 SU 的)Node 2 的 GPU 0 通信, 流量走 Node → Leaf → Node无需上更高层
  • QM9700 用 SHARPv3(比上代强 32 倍),可处理复杂 AI 数学。

8.2 Spine 层

  • 连接 Leaf 交换机,让 SU-1 的节点与 SU-2 的节点通信。
  • Spine Groups(脊组):脊交换机也按 rail 对齐分组——Spine Group 1 只连”处理 Rail 1”的 Leaf 交换机。
  • 隔离:保证 Rail 1 的流量绝不”泄漏”到 Rail 2 的线缆(否则拥堵)。
  • 例:SU-1 的 GPU 0 → SU-2 的 GPU 0:Node(SU1) → Leaf(Rail1) → Spine(Group1) → Leaf(Rail1) → Node(SU2)

8.3 Core / Super-Spine 层

  • 超大规模集群(如 ≥127 节点)时加第三层。
  • 连接多个 Pod(SU 的集群)。
  • 这一层常改用 800G 光模块减少线缆数,再逻辑拆回两条 400G 链路。

9. Quantum-2 QM9700 交换机

  • 提供超高带宽、低延迟的 GPU-GPU 互联。
  • 64 个 400Gb/s 端口
  • 前面板 32 个 OSFP 笼;每个 OSFP 笼实际承载两条独立 400Gb/s 链路32 笼 × 2 链路 = 64 逻辑端口
  • 64 端口恰好匹配 32 节点的 SU
    • 32 端口(下行):连 SU 内 32 个节点(如 Rail 1 连所有 32 节点的 GPU 0);
    • 32 端口(上行):连”上”到 Spine(Layer 2)以访问其它 SU。

10. 自适应路由与 SHIELD

10.1 Leaf 层的自适应路由

  • 上游流量(去其它 SU)时,自适应路由至关重要
  • 数据包从 GPU 到 leaf、需去另一 SU 时,要上 spine;非阻塞/超订阅 fat-tree 里有多个可选 spine。
  • 不用静态 hash(固定把某流送到同一 spine,可能碰撞),Quantum-2 硬件监控所有上行端口的队列深度与拥塞, 按每包/每消息动态把包送到最不拥塞的 spine 链路。
  • 即便去 spine 的某条路堵了,流量也能从其它路顺畅走。

10.2 Spine 层的自适应路由

  • 标准 2 层 fat-tree 里,从某 spine 到某 leaf 通常只有一条”下行”路径。
  • 但自适应路由对故障处理并行链路多路径仍重要。
  • 若朝某 leaf 的缓冲满了,spine 传递反压;Quantum-2 的自适应特性(如 SHIELD)帮助隔离该拥塞, 避免扩散到 spine 里其它未受影响的流量。

10.3 SHIELD(硬件故障切换)

  • 传统 InfiniBand:线缆断/链路抖动时,软件控制器要 5–30 秒算新路由表并推给所有交换机——直接毁掉整轮训练
  • SHIELD 把恢复逻辑直接搬进交换机硬件 ASIC
    • 链路 down 时,交换机不丢包,而是立刻在本地硬件表里找替代有效路径
    • 找到就更新自己的表避开坏节点、走健康邻居;
    • 找不到就向邻居发硬件信号,让其以后不再把流量发过来。

11. P2P 通信与 UVA

11.1 P2P(Peer-to-Peer)

  • P2P CUDA 机制让两块 GPU 不经 CPU 通信。
  • 可显式 P2P 内存拷贝,或 P2P 直接访问;整个传输走 NVLink。
  • 这一切由 UVA(统一虚拟寻址) 支撑。

11.2 UVA

  • UVA 让 CPU 与 GPU 共享单一虚拟地址空间
    • UVA 之前:CPU、GPU 各有自己的指针,需手工管理哪个指针指向哪块物理内存。
    • UVA 之后:系统仅凭指针值就能确定数据物理上在哪(系统 RAM 还是 H100 的 HBM3)。
  • 必须用 cudaDeviceEnablePeerAccess 启用 Peer 访问,否则这功能无法工作。

11.3 cudaDeviceEnablePeerAccesscudaMemcpyPeer

  • cudaDeviceEnablePeerAccess
    • 单向:若需双向拷贝或两侧 kernel 互访内存,必须在两块设备上都调用
    • 不启用 → 可能回退到更慢的 PCIe 路径。
    • H100 服务器上,若可用会自动用 NVLink(900 GB/s),否则用 PCIe Gen5。
  • cudaMemcpyPeer:让两块独立 GPU 之间直接传输数据、不经过主机(CPU)内存
    • 用 NVLink 拷贝前必须启用 cudaDeviceEnablePeerAccess

11.4 原始 P2P 的真相

  • H100 HGX 板上不是 8 块 GPU 连成一条线,而是经 NVSwitch 连成复杂 mesh
  • 纯 P2P 要手工管理走哪条链路:GPU 0 跟 GPU 7 通信是直连还是经 GPU 3 跳?
  • 虽然 H100 有 900 GB/s 双向 NVLink,但若从 SM 直接发普通 LD/ST 跨 NVLink 结构, 很可能只用一条或几条 NVLink lane,很难打满带宽——”用吸管喝消防栓的水”。
  • 这就是为什么需要 NCCL 这类库来管理多 GPU 连接。

12. 总结与学习衔接

12.1 核心脉络速记

概念一句话
为什么多 GPU1T 参数 × 10T token = 6×10²⁵ FLOPs,单卡 1900 年
NVLink 4.0900 GB/s 双向、7× PCIe、18 link、2 差分对
NVSwitch 3无阻塞全互联、内置 ALU 做 in-switch 归约
ConnectX-7出箱瓶颈(18× 带宽降)、GPUDirect、in-flight 梯度求和 O(N)→O(1)
SuperPOD4 SU × 32 节点、127–128 GPU、Rail 对齐 8 平面
三层网络Leaf(连节点)/ Spine(连 SU)/ Core(连 Pod)
SHARP / SHIELD交换机内做归约 / 硬件级故障切换(5–30s → 即时)
P2P / NCCLUVA + peer access + memcpyPeer;原始 LD/ST 打不满带宽,需 NCCL

12.2 与本课程其他内容的衔接

本文概念对应后续专题
多 GPU 通信原语 / 集合通信《10. Multi GPU Part 2》

12.3 一句话记忆

单卡算力不够 → 用 NVLink/NVSwitch 把 GPU 连成”单一内存+算力池”(节点内 900 GB/s), 出箱靠 ConnectX-7 + Rail 三层网络 + SHARP 在交换机里做归约、SHIELD 在硬件里做故障切换; 编程上靠 UVA + P2P(peer access/memcpyPeer),但真正打满带宽要用 NCCL。


参考来源:9. Multi GPU.pdf(Lesson 9,27 页)。