AI 算力基础学习笔记:GPU 多卡互联与集群通信原理
一、学习背景
在前面的 GPU 学习中,我们从三个核心指标认识了一块 GPU:
-
显存容量(Memory Capacity):决定模型和数据能否装进 GPU。
-
显存带宽(Memory Bandwidth):决定 GPU 从显存中读取和写入数据的速度。
-
计算能力(Compute Capability):决定 GPU 执行计算任务的速度。
但在实际的大模型训练和推理场景中,单张 GPU 往往无法满足需求,需要多张 GPU 协同工作。
这就引出了一个新的问题:
当多张 GPU 一起工作时,GPU 与 GPU 之间如何通信?通信速度会不会成为整个计算任务的瓶颈?
例如,8 张 GPU 放在同一台服务器中,与 8 张 GPU 分布在 8 台服务器中,虽然 GPU 数量相同,但实际训练效率可能存在很大差距。
因此,本篇主要学习 GPU 多卡互联、NVLink、NVSwitch、InfiniBand、RoCE、RDMA,以及 TP、PP 等并行技术,理解 AI 集群中计算资源与网络资源之间的关系。
二、GPU 多卡互联的三种层次
在 AI 算力集群中,GPU 之间的数据传输主要分为三个层次:
-
卡内通信:GPU 内部计算单元与显存之间的数据传输。
-
机内通信:同一台服务器内部不同 GPU 之间的数据传输。
-
机间通信:不同服务器之间 GPU 的数据传输。
2.1 三种通信方式对比
| 通信层次 | 通信路径 | 典型带宽 | 主要应用 |
|---|---|---|---|
| 卡内 | GPU 计算单元与自身 HBM | 3.35 TB/s | 模型计算、数据读取 |
| 机内 | GPU 与 GPU 之间 | 900 GB/s | 多卡训练、张量并行 |
| 机间 | 不同服务器之间 | 50 GB/s | 跨节点训练 |
以上数据是用于理解带宽层级的典型参考值,具体性能取决于 GPU 型号、互联拓扑、链路数量和配置。
可以发现:
GPU 之间的通信距离越远,通常可用带宽越低,通信延迟也越难控制。
这也是为什么大型 AI 服务器会特别重视 GPU 之间的高速互联。
2.2 NVLink:GPU 专用高速互联技术
NVLink 是 NVIDIA 推出的一种 GPU 高速互联技术,主要用于解决 GPU 之间的数据传输问题。
传统 PCIe 总线也可以实现 GPU 之间的数据交换,但在高性能 AI 训练场景中,NVLink 通常能够提供更高的互联带宽。
可以简单理解为:
-
PCIe:通用设备互联总线。
-
NVLink:面向 GPU 高速通信优化的互联技术。
NVLink 的主要作用:
-
提高 GPU 与 GPU 之间的数据传输速度。
-
降低多 GPU 协同计算时的通信开销。
-
支持大模型张量并行等高频通信任务。
例如,H100 SXM 平台的 NVLink 4.0 总带宽可达到约 900 GB/s(双向聚合口径)。
2.3 NVSwitch:GPU 之间的交换芯片
如果只有 NVLink,那么 GPU 之间的连接仍然受到具体链路拓扑的限制。
NVSwitch 的出现进一步解决了多 GPU 之间的互联问题。
NVSwitch 是 NVIDIA 专门设计的高速交换芯片,可以将服务器内部多张 GPU 连接起来,实现高带宽的 GPU 全互联通信。
可以用网络设备进行类比:
| AI 计算领域 | 传统网络领域 |
|---|---|
| NVLink | 高速互联链路 |
| NVSwitch | 交换机 |
| GPU | 网络终端设备 |
通过 NVSwitch,可以让服务器内部的 GPU 之间实现高效的数据交换。
需要注意:并不是所有支持 NVLink 的服务器都具有 NVSwitch,也不是所有 GPU 都能实现相同的全互联带宽,具体取决于服务器设计。
三、GPU 互联带宽:必须理解 bit 和 Byte
学习 AI 数据中心网络时,一个非常容易犯的错误就是混淆 bit 和 Byte。
两者的区别:
-
bit:比特,通常使用小写 b 表示。
-
Byte:字节,通常使用大写 B 表示。
两者之间的关系:
1 Byte = 8 bit
因此,在查看网卡和 GPU 互联参数时,一定要注意单位。
3.1 InfiniBand NDR 400G 是多少 GB/s?
假设一张 InfiniBand NDR 网卡的端口速率为:
400 Gb/s
换算成 GB/s:
因此:
400 Gb/s = 50 GB/s
而 H100 NVLink 4.0 的双向聚合带宽约为 900 GB/s。
两者对比:
也就是说,按照上述带宽口径,机内 NVLink 的带宽约为机间单个 400 Gb/s 网络端口的 18 倍。
3.2 GPU 互联带宽阶梯
| 技术 | 典型带宽 | 主要作用 |
|---|---|---|
| HBM 显存 | 3350 GB/s | GPU 内部数据读写 |
| NVLink | 900 GB/s | GPU 高速互联 |
| PCIe 5.0 x16 | 约 128 GB/s | CPU、GPU及设备互联 |
| InfiniBand NDR | 50 GB/s | 跨服务器高速通信 |
| 25GbE 以太网 | 约 3.125 GB/s | 普通网络通信 |
这些数值的统计口径并不完全相同,例如 NVLink 可能采用多链路双向聚合带宽,而 PCIe 和网卡也需要区分单向、双向及有效吞吐量。
因此,实际选型时不能只看数字,还要确认带宽口径。
3.3 SXM 和 PCIe 的区别
在购买 NVIDIA GPU 服务器时,经常会看到两种形态:
-
SXM
-
PCIe
它们有什么区别?
SXM:
SXM 是 NVIDIA 面向高性能 GPU 服务器设计的模块形态,通常配合专用基板和高速互联方案使用。
特点:
-
支持更高功耗设计。
-
散热和供电能力更强。
-
通常能够提供更强的 GPU 互联能力。
-
常用于多 GPU 高性能计算服务器。
PCIe:
PCIe 版本通过标准 PCIe 插槽连接服务器。
特点:
-
通用性更强。
-
部署方式更加灵活。
-
可以通过 PCIe 实现 GPU 数据交换。
-
多卡互联能力通常不如高端 SXM 平台。
需要注意,具体 NVLink 能力取决于 GPU 型号和服务器设计。例如 A100 PCIe 版本没有 NVLink,而 H100 PCIe 版本支持特定的 NVLink 桥接方案,但不能因此认为它具备 8 卡 NVSwitch 全互联能力。
所以,在选择 AI 服务器时,不能只关注 GPU 型号,还要关注 GPU 的封装形态、互联方式和整机拓扑。
四、通过 AllReduce 理解多 GPU 通信开销
理解 GPU 互联最好的方式,就是通过一个实际训练场景来计算。
假设我们要对 Llama 3 8B 模型进行全参数微调。
模型参数量:
假设使用 BF16,每个参数占用 2 Byte。
模型权重大小:
如果按照约 16 倍参数量估算训练显存需求:
因此,一张 80GB 显存的 GPU 无法独立完成这个训练任务,需要多张 GPU 协同工作。
4.1 什么是 AllReduce?
在分布式训练中,每张 GPU 通常负责一部分训练数据,并独立计算梯度。
计算完成之后,需要将不同 GPU 上的梯度进行汇总、求和或平均,再将结果同步给各个 GPU。
这个过程叫做 AllReduce。
AllReduce 的主要作用:
-
汇总不同 GPU 计算出来的梯度。
-
对梯度进行规约操作。
-
将规约结果同步给所有 GPU。
-
保证不同 GPU 的模型参数能够保持一致。
AllReduce 是分布式深度学习训练中的核心通信操作之一。
4.2 环形 AllReduce 的通信量
假设使用 8 张 GPU 进行训练。
梯度数据量为:
在 Ring AllReduce 中,每张 GPU 需要经过 Reduce-Scatter 和 AllGather 两个阶段。
每张 GPU 的发送数据量近似为:
其中:
-
N:GPU 数量。
-
S:需要规约的数据量。
代入 N=8、S=16GB:
因此,每张 GPU 的发送数据量约为 28GB,接收量也约为 28GB。
这里需要区分:28GB 是发送量,发送和接收合计约为 56GB。
4.3 不同网络条件下的通信时间
为了方便理解,我们按照不同链路的带宽估算通信耗时。
| 部署方式 | 典型带宽 | 按 28GB 发送量估算 |
|---|---|---|
| 单机 NVLink | 900 GB/s | 约 31 ms |
| 跨机 InfiniBand | 50 GB/s | 约 560 ms |
| 25GbE 以太网 | 3.125 GB/s | 约 8.96 s |
以上是简化的理想带宽估算,并不代表真实 AllReduce 测试结果。实际性能还受到链路拓扑、通信协议、延迟、NCCL 算法和并发流量等因素影响。
可以看出:
GPU 数量相同,并不意味着计算效率相同。GPU 之间的通信带宽会直接影响整体训练效率。
如果训练任务本身只需要几秒钟,而通信却需要数百毫秒,那么网络就可能成为训练瓶颈。
五、训练并行策略:TP、PP 和 DP
当模型规模越来越大,单张 GPU 无法完成训练时,就需要对模型和数据进行拆分。
常见的并行策略包括:
-
TP:Tensor Parallelism,张量并行。
-
PP:Pipeline Parallelism,流水线并行。
-
DP:Data Parallelism,数据并行。
它们属于分布式训练中的并行策略,通常由训练框架和用户配置。
5.1 张量并行 TP
张量并行的核心思想是:
将一个模型层内部的张量计算拆分到多张 GPU 上执行。
例如,一个 Transformer 层的矩阵计算,可以按照不同维度拆分给多张 GPU。
每张 GPU 只负责一部分计算,随后需要通过 GPU 间通信完成结果同步或聚合。
特点:
-
模型内部计算被拆分。
-
GPU 之间通信频率较高。
-
每层计算都可能涉及通信。
-
对 GPU 互联带宽和延迟要求较高。
因此,TP 通常优先部署在同一台具备高速 NVLink/NVSwitch 互联的服务器内部。
5.2 流水线并行 PP
流水线并行的核心思想是:
将模型不同层拆分到不同 GPU 组中,让不同 GPU 组负责不同阶段的计算。
例如,一个模型有 40 层:
-
GPU 组 A 负责前 20 层。
-
GPU 组 B 负责后 20 层。
第一组完成前半部分计算后,将中间激活数据传递给第二组,第二组继续完成后半部分计算。
特点:
-
按模型层进行拆分。
-
不同 GPU 组负责不同模型阶段。
-
阶段之间通过激活数据进行通信。
-
可以通过 Micro-batch 提高流水线利用率。
相比 TP,PP 通常具有较低频率的阶段间通信,因此更加适合跨服务器部署。
5.3 数据并行 DP
数据并行的核心思想是:
每张 GPU 或每个 GPU 组都拥有模型副本,但处理不同的数据。
训练过程中,各个 GPU 分别计算梯度,再通过 AllReduce 等方式同步梯度。
特点:
-
模型副本分布在不同 GPU 上。
-
不同 GPU 处理不同训练数据。
-
通过梯度同步保持模型参数一致。
-
可以通过增加 GPU 数量提高训练吞吐量。
5.4 TP、PP、DP 的关系
在常见的规则化并行配置中:
TP×PP×DP=GPU总数
例如:
一共有 16 张 GPU:
-
TP = 8
-
PP = 2
-
DP = 1
那么:
这表示:
-
每个 TP 组有 8 张 GPU。
-
模型被划分为 2 个流水线阶段。
-
数据并行副本数量为 1。
需要注意,这个公式描述的是常见的三维并行组网配置,实际训练框架还可能引入专家并行、上下文并行等其他维度。
六、16 张 H100 如何进行合理分组?
假设现在有:
-
16 张 H100 GPU。
-
2 台 GPU 服务器。
-
每台服务器 8 张 GPU。
-
训练模型:70B。
-
并行配置:TP=8、PP=2。
应该如何分配?
建议采用以下方式:
| 服务器 | GPU 数量 | TP 组 | 模型负责部分 |
|---|---|---|---|
| 机器 A | 8 张 | TP 组 1 | 模型前半部分 |
| 机器 B | 8 张 | TP 组 2 | 模型后半部分 |
整体结构:
70B 大模型训练
|
Pipeline Parallelism
|
+------------+------------+
| |
机器 A 机器 B
8 张 H100 8 张 H100
| |
TP = 8 TP = 8
| |
模型前半部分 模型后半部分
| |
+------ 激活数据传输 ------+
InfiniBand
为什么这样设计?
核心原则:
通信频率越高的 GPU,越应该放在互联带宽更高的网络范围内。
原因如下:
第一,TP 组内通信频率非常高。
张量并行需要在模型计算过程中频繁交换中间结果,通信次数可能达到每个训练步骤数百次。
如果 TP 组被拆分到不同服务器,通信就需要经过机间网络,容易产生较大的通信开销。
第二,PP 阶段间通信相对较少。
流水线并行主要在不同阶段之间传递激活数据,适合利用 InfiniBand 等高速网络进行跨服务器通信。
因此,比较合理的方式是:
-
TP 尽量放在机内。
-
PP 可以跨机器。
-
DP 可以根据集群网络能力进行跨机器扩展。
这也是 AI 数据中心网络拓扑设计中非常重要的思路。
七、机间通信技术:RDMA、InfiniBand 和 RoCE
当 GPU 分布在不同服务器时,就需要依赖高速网络实现通信。
传统网络通信通常需要经过 CPU、操作系统内核和主机内存等环节,容易产生额外的数据复制和 CPU 开销。
为了解决这些问题,RDMA 技术被广泛应用于高性能计算和 AI 数据中心。
7.1 RDMA 是什么?
RDMA 全称 Remote Direct Memory Access,即远程直接内存访问。
它允许一台计算机通过网络直接访问另一台计算机的内存,减少传统网络通信中的 CPU 参与和数据复制开销。
主要优势:
-
降低 CPU 使用率。
-
减少数据复制。
-
降低通信延迟。
-
提高网络吞吐量。
可以简单理解为:
传统网络通信需要 CPU 参与较多的数据处理,而 RDMA 能够让网卡承担更多数据传输工作。
7.2 GPUDirect RDMA
普通 RDMA 主要解决主机内存之间的数据传输问题。
而 GPUDirect RDMA 进一步优化了 GPU 与网卡之间的数据交换。
它允许支持该技术的网卡直接访问 GPU 显存,减少 GPU 数据经过主机内存中转的开销。
基本数据路径:
传统数据传输:
GPU A
|
主机内存 A
|
网卡 A
|
网络交换机
|
网卡 B
|
主机内存 B
|
GPU B
GPUDirect RDMA:
GPU A
|
网卡 A
|
网络交换机
|
网卡 B
|
GPU B
实际部署还需要满足 GPU、网卡、驱动、PCIe 拓扑和软件栈等条件。
7.3 InfiniBand 和 RoCE 的区别
AI 数据中心常见的两种高速网络技术是 InfiniBand 和 RoCE。
InfiniBand:
InfiniBand 是一种面向高性能计算的网络互联技术。
特点:
-
专用网络体系。
-
低延迟、高吞吐量。
-
广泛用于 HPC 和 AI 集群。
-
通常需要专用网卡和交换机。
RoCE:
RoCE 全称 RDMA over Converged Ethernet,即基于融合以太网的 RDMA 技术。
它允许 RDMA 在以太网基础设施上运行。
特点:
-
可以利用以太网基础设施。
-
支持 RDMA 通信。
-
设备选型和网络部署更加灵活。
-
对交换机配置和拥塞控制有较高要求。
RoCE 网络通常需要合理配置 PFC、ECN 等机制,以控制拥塞和丢包带来的影响。
两者对比:
| 对比项目 | InfiniBand | RoCE |
|---|---|---|
| 网络类型 | 专用高速网络 | 以太网承载 RDMA |
| 典型应用 | HPC、AI 集群 | AI 数据中心 |
| 延迟 | 低 | 取决于网络配置 |
| 部署成本 | 通常较高 | 可复用以太网基础设施 |
| 运维方式 | 专用网络体系 | 以太网网络体系 |
| 主要优势 | 高性能、低延迟 | 灵活、易于融合 |
如何选择?
如果是大型 AI 训练集群,追求极致性能,可以考虑 InfiniBand。
如果已有成熟的高速以太网基础设施,希望降低部署成本,可以考虑 RoCE。
实际选择还需要综合考虑集群规模、交换机能力、网络运维经验和业务负载。
八、AI 数据中心常见网络拓扑
除了网络协议之外,网络拓扑同样会影响 GPU 集群的通信性能。
常见的两种拓扑是 Fat-tree 和 Rail-optimized。
8.1 Fat-tree(胖树拓扑)
Fat-tree 是一种常见的数据中心网络拓扑。
它通过多层交换机进行连接,通常可以提供较好的网络带宽和路径冗余。
特点:
-
网络结构具有层次性。
-
可以提供较好的跨节点带宽。
-
能够支持大规模服务器通信。
-
网络设备和布线成本相对较高。
8.2 Rail-optimized(导轨优化拓扑)
Rail-optimized 是 AI 集群中常见的一种网络设计思路。
它通过将服务器中不同 GPU 对应的网络接口连接到不同的网络 Rail,减少不必要的跨交换机通信。
例如:
机器 A 机器 B
GPU 0 GPU 0
| |
网卡 0 网卡 0
| |
交换机 Rail 0 ---------------- 交换机 Rail 0
GPU 1 GPU 1
| |
网卡 1 网卡 1
| |
交换机 Rail 1 ---------------- 交换机 Rail 1
这种设计可以让不同 GPU 的网络流量更加均衡,并减少部分通信路径上的交换跳数。
对于 TP 主要在机内完成、DP 跨机器扩展的训练架构,Rail-optimized 拓扑具有较好的适用性。
九、GPU 通信性能如何监控和排查?
在实际 AI 集群运维中,如果训练速度突然下降,不能只关注 GPU 利用率,还需要检查 GPU 之间的通信链路。
9.1 查看 NVLink 状态
可以使用:
nvidia-smi nvlink --status
主要检查:
-
NVLink 链路是否正常。
-
链路是否建立。
-
是否存在链路异常。
-
实际连接情况是否符合服务器拓扑。
9.2 使用 NCCL Tests 测试通信性能
NCCL 是 NVIDIA 提供的 GPU 集合通信库,广泛用于多 GPU 分布式训练。
NCCL Tests 是用于测试 GPU 集合通信性能的工具。
例如:
./build/all_reduce_perf -b 1G -e 1G -f 2 -g 8
参数含义:
| 参数 | 含义 |
|---|---|
| -b 1G | 测试起始数据量 |
| -e 1G | 测试结束数据量 |
| -f 2 | 数据量增长倍数 |
| -g 8 | 使用 8 张 GPU |
通过测试可以观察:
-
AllReduce 带宽。
-
通信延迟。
-
不同数据规模下的通信性能。
-
GPU 集合通信是否达到预期。
注意:测试 8 张 GPU 的命令需要在具备 8 张可用 GPU 的环境中执行。
9.3 GPU 通信监控
在 NVIDIA DCGM 监控体系中,可以关注 NVLink 相关指标。
例如:
DCGM_FI_PROF_NVLINK_TX_BYTES
该指标用于观察 NVLink 发送的数据量。
需要注意,它是字节计数类指标,不是直接表示 GB/s 的瞬时带宽。计算带宽时需要结合采样时间间隔进行换算。
9.4 常见故障分析
假设某个 AI 训练任务突然变慢:
-
GPU 利用率只有 30%。
-
GPU 计算能力没有明显异常。
-
训练任务耗时明显增加。
这时就需要考虑通信是否出现瓶颈。
常见原因:
-
GPU 之间没有正常建立 NVLink 链路。
-
原本应该走 NVLink 的通信绕到了 PCIe。
-
跨服务器通信没有正常使用 InfiniBand。
-
NCCL 通信配置不合理。
-
网络出现拥塞或丢包。
-
GPU 之间的通信拓扑不合理。
排查思路:
训练速度下降
|
检查 GPU 利用率
|
GPU 利用率偏低
|
检查 GPU 通信情况
|
检查 NVLink 状态
|
检查 PCIe 拓扑
|
检查 NCCL 通信性能
|
检查 InfiniBand / RoCE
|
定位通信瓶颈
一个重要的经验:
GPU 利用率低,不一定意味着 GPU 算力不足,也可能是 GPU 一直在等待其他 GPU 或网络返回数据。
十、SXM、NVLink、NVSwitch 常见问题
1. SXM 就是带 NVLink 的版本吗?
不完全准确。
SXM 是 GPU 的模块封装和连接形态,而 NVLink 是 GPU 高速互联技术。
两者经常同时出现在高性能 GPU 服务器中,但不能直接画等号。
2. NVLink 是一种协议吗?
可以理解为一种完整的 GPU 高速互联技术规范,包含物理链路和通信协议等内容。
它的目标是实现 GPU 之间的高速数据传输。
3. NVSwitch 是交换机吗?
NVSwitch 是专门为 GPU 互联设计的交换芯片。
它负责连接多张 GPU,让 GPU 之间可以进行高效通信。
可以记忆为:
-
NVLink:GPU 之间的高速互联链路。
-
NVSwitch:负责交换 GPU 数据的专用芯片。
4. TP 和 PP 是硬件属性吗?
不是。
TP 和 PP 属于训练框架中的并行策略,是可以通过训练配置进行调整的。
它们决定模型如何拆分,以及不同 GPU 之间如何协同计算。
硬件拓扑则决定这些通信任务能以多快的速度完成。
十一、本次学习总结
通过本次学习,我对 AI 集群中 GPU 之间的通信有了更加清晰的认识。
重点掌握以下内容:
-
GPU 通信分为三个层次:卡内、机内和机间。不同层次的带宽差异很大。
-
NVLink 是 GPU 高速互联技术,NVSwitch 是 GPU 互联交换芯片,两者共同构成高性能多 GPU 服务器的重要基础。
-
带宽单位必须区分 bit 和 Byte,400 Gb/s 换算后是 50 GB/s。
-
AllReduce 是分布式训练中的重要通信操作,多 GPU 训练不仅需要计算能力,也需要足够的通信能力。
-
TP、PP、DP 是常见的并行策略,分别对应张量、流水线和数据并行。
-
RDMA 和 GPUDirect RDMA 可以减少数据传输过程中的额外开销,提高跨服务器 GPU 通信效率。
-
InfiniBand 和 RoCE 是 AI 数据中心常见的高速网络方案,需要结合成本、性能和运维能力进行选择。
-
GPU 服务器的网络拓扑非常重要,通信频率高的 GPU 应尽可能部署在高速互联范围内。
我认为本次学习最重要的一个知识点是:
AI 集群的性能不仅取决于 GPU 本身的计算能力,还取决于 GPU 之间的通信能力。
当模型规模越来越大,GPU 数量越来越多时,网络不再只是连接服务器的基础设施,而是直接影响 AI 算力利用率的重要组成部分。
更多推荐


所有评论(0)