文章目录
- 一、物理拓扑结构A100讲解
- 1.1 单机多卡拓扑结构
- 二、术语和基础技术介绍
- 2.1 带宽单位
- 2.2 PCIe及PCIe Switch
- 2.3 NVLink
- 2.4 网卡
- 2.5 带宽瓶颈分析
- 2.6 HBM
- 2.7 CPU/GPU
- 三、其他典型物理拓扑
- 3.1 H100/H800拓扑分析
防止遗忘和后续翻找的麻烦,记录下平时学到和用到的GPU知识,较为琐碎,不考虑连贯性和严谨性,如有欠妥的地方,欢迎指正。
本章将围绕着单机多卡物理拓扑结构图,详细介绍每个组件的技术特点和相关术语。
GPU 学习笔记一:从A100与910B分析中,学习GPU参数的意义。
GPU 学习笔记二:GPU单机多卡组网和拓扑结构分析(基于A100的单机多卡拓扑结构分析)
GPU 学习笔记三:GPU多机多卡组网和拓扑结构分析(基于数据中心分析)
GPU 学习笔记四:GPU多卡通信(基于nccl和hccl)
GPU 学习笔记五:大模型分布式训练实例(基于PyTorch和Deepspeed)
GPU 学习笔记六:NVIDIA GPU架构分析(基于技术演进时间线,持续更新)
GPU 学习笔记七:华为 NPU架构分析(基于技术演进时间线,持续更新)
GPU 学习笔记八:GPU参数对比统计表(记录GPU参数,持续更新)
一、物理拓扑结构A100讲解
1.1 单机多卡拓扑结构
随着大模型技术的发展,单卡性能已经无法满足大模型的算力需求,集群和分布式的技术得到了广泛的应用,对模型或者数据进行并行处理。下面以典型的8卡full-mesh拓扑为例,介绍各个技术特点。
拓扑结构图:
如图所示,8个GPU通过6个NVSwitch芯片full-mesh连接,这个full-mesh也叫NVSwitch fabric。full-mesh中的每根线的带宽是: lane个数 * 每个lane的带宽。
组网清单:
- 存储网卡NIC:
2张
。- CPU:
2个
,以及内存设施。- PCIeSwitch:
4个
,PCIe交换芯片。- A100:
8张
GPU卡,采用Ampere架构。- NVSwitch:
6个
,与NVLink Switch外置的单独交换机设备不同,NVSwitch是集成在基板上的交换芯片,与GPU Model模组一体的。- 专用网卡NIC:
8张
,支持RDMA协议,GPU专用的计算网卡。- PCIe连接线、NVLink连接线:
若干
。
更细节的物理拓扑结构如下:
下面章节,会依次介绍这些组件和技术,请参照该拓扑图进行理解。
二、术语和基础技术介绍
2.1 带宽单位
大规模 GPU 训练的性能与数据传输速度有直接关系。这里面涉及到很多链路,比如 PCIe 带宽、内存带宽、NVLink 带宽、HBM带宽、网络带宽等。
- 网络习惯用 bits/second (b/s) 表示之外,并且一般说的都是单向(TX/RX);
- 其他模块带宽基本用 byte/sedond (B/s) 或 transactions/second (T/s) 表示,并且一般都是双向总带宽。
比较带宽时注意区分和转换。换算单位:1Byte=8bit。
2.2 PCIe及PCIe Switch
PCI-e接口的全名是Peripheral Component Interconnect Express
,是一种高速串行计算机拓展总线标准。PCI-e总线链路支持任何两个端点之间的全双工通信,同时跨多个端点的并发访问没有固有的限制。
在传统的台式机中,CPU、内存、存储、网卡、电源等外设备都需要支持该标准进行连接通信。
目前PCIe已经有5代产品了,最新的是PCIe Gen5,支持双向带宽:
- Gen5:128GB/s。
- Gen4:64GB/2。
PCIeSwitch是集成在主板上的PCIe交换芯片,类似于交换机的功能。
PCIe连接线,如下图所示。
对于开发来说,了解这些即可。想深入研究PCIe协议和通信原理的另行搜索,本系列不做探讨。
2.3 NVLink
1) 背景
在大模型推理、HPC等高性能要求场景中,原PCIe通信方式已经成为GPU间通信的瓶颈,严重影响了GPU集群的通信性能,为了解决这一瓶颈,NVIDIA研发了NVLink技术,用来替代PCIe接口,在同一主机内的多个GPU间进行高速通信互联。
2) 定义
NVLink是由Nvidia开发一种基于有线的串行多通道近距离通信链路。一个设备(如GPU)可以由多个NVLink和设备使用网状网络进行通信,而不是使用中央网络枢纽。
3) 特点
- 是一种短距离通信链路,更高性能,替代 PCIe,通常用在GPU连接上。
- 支持多lane,link带宽随 lane 数量线性增长。
- 同一node内的GPU通过NVLink互联,组成full-mesh拓扑结构(类似spine-leaf)。
4) NVLink迭代演进:
迭代:1/2/3/4。
NVLink已经发展到了第4代。
主要差别就在于:单条 NVLink 链路的 lane 数量以及每个 lane 的带宽。
在上图中,展示了NVLink的演进过程。以NVLink3为例,计算其带宽大小:
-
在A100组成的full-mesh拓扑中,使用了6条NVLink3,每条NVLink3链路中包含2条lane链路,每条lane都是双向通信的链路,其双向带宽为50GB/s/lane。故:
双向带宽:6NVLink * 2lane/NVLink * 50GB/s/lane=600GB/s
单向带宽:300/GB/s。双向带宽的一半。
需要注意的是,这里说的带宽是指一个GPU到所有NVSwitch的总带宽。 -
A800是A100的阉割版,阉割掉了4条lane。故:
双向带宽:4NVLink * 2lane/NVLink * 50GB/s/lane=400GB/s
单向带宽:200/GB/s。双向带宽的一半。
5) NVSwitch
NVSwitch 是 NVIDIA 的一款交换芯片,封装在 GPU module 上,并不是主机外的独立交换机。
NVSwitch 听名字像是交换机,但实际上是 GPU module 上的交换芯片,用来连接同一台主机内的 GPU。
2022年,NVIDIA 把这块芯片拿出来真的做成了交换机,叫 NVLink Switch, 用来跨主机连接 GPU 设备。
这俩名字很容易混淆。
在这张图中,左侧的8个有NVIDIA logo的盒子就是A100及其散热系统,右边6块超厚散热片就是NVSwitch芯片。
2.4 网卡
无论是计算网络,还是存储网络,都需要支持RDMA协议,才能实现AI所需的高性能。RDMA有三种实现,如InifiBand、RoCEv2、iWrap。常用的是前两种:
- RoCEv2:公有云卖的 8 卡 GPU 主机基本都是这种网络,比如 CX68*100Gbps 配置;在性能达标的前提下,相对便宜;
- InfiniBand (IB):同等网卡带宽下,性能比RoCEv2好20%以上,但是价格贵一倍。
官方推荐用 BF3 DPU。但其实只要带宽达标,用什么都行。组网经济点的话用 RoCE,追求最好的性能用 IB。
1)存储网络
通过PCIe直连CPU的2张网卡(存储网卡),连接到另一张网络里,主要作用是读写数据,以及 SSH 管理等等。
用途:
- 从分布式存储读写数据,例如读训练数据、写 checkpoint 等;
- 正常的 node 管理,ssh,监控采集等等。
查看节点内GPU拓扑结构:
以8*100组成的full-mesh拓扑结构为例,执行命令如下:
nvidia-smi topo --matrix
GPU区域:
- NV8:表示8条 NVLink 连接,GPU之间的连接都是NV8。
- X:表示自己与自己连接。
NIC区域:
- 在同一片 CPU 上:NODE,表示不需要跨 NUMA,但需要跨 PCIe 交换芯片。
- 不在同一片 CPU 上:SYS,表示需要跨 NUMA。
- 网卡两两做了bond,NIC 0~3 都是 bond。
GPU和NIC关联区域:
- 在同一片 CPU 上,且在同一个 PCIe Switch 芯片下面:PXB,表示只需要跨 PCIe 交换芯片;
- 在同一片 CPU 上,且不在同一个 PCIe Switch 芯片下面:NODE,表示需要跨 PCIe 交换芯片和 PCIe Host Bridge;
- 不在同一片 CPU 上:SYS,表示需要跨 NUMA、PCIe 交换芯片,距离最远;
2)计算网络
GPU网卡直连到置顶交换机(leaf),leaf 通过 full-mesh 连接到 spine,形成跨主机 GPU 计算网络。
多机间通信使用该网卡。
- 这个网络的目的是GPU与其他node 的GPU交换数据;
- 每个GPU和自己的网卡之间通过PCIe交换芯片连接:GPU <–> PCIe Switch<–> NIC。
GPU node互联架构:
后面将单独写一篇文章研究节点间通信,此处不在详细描述。
2.5 带宽瓶颈分析
单机 8 卡 A100 GPU带宽瓶颈分析图:
关键链路带宽都标在图上了
- 同主机GPU之间:走NVLink,双向600GB/s,单向300GB/s。
- 同主机GPU和自己的网卡之间:走 PICe Gen4 Switch 芯片,双向 64GB/s,单向 32GB/s。
- 跨主机GPU之间:需要通过网卡收发数据,这个就要看网卡带宽了。
不同带宽网卡(单向):
- 100Gbps=12.5GB/s:国内 A100/A800配套的主流带宽。 所以跨机通信相比主机内通信性能要下降很多。
- 200Gbps==25GB/s:已经接近 PCIe Gen4的单向带宽。
- 400Gbps==50GB/s:已经超过 PCIe Gen4的单向带宽,需要 PCIe Gen5性能才能发挥出来。所以在PCIe Gen4这种组网中用 400Gbps 网卡作用不大。
2.6 HBM
传统上,GPU 显存和普通内存(DDR)一样插在主板上,通过 PCIe 连接到处理器(CPU、GPU), 因此速度瓶颈在 PCIe,Gen4 是 64GB/s,Gen5 是 128GB/s。
因此,一些 GPU 厂商(不是只有 NVIDIA 一家这么做)将将多个 DDR 芯片堆叠之后与 GPU 芯片封装到一起 (后文讲到 H100 时有图),这样每片 GPU 和它自己的显存交互时,就不用再去 PCIe 交换芯片绕一圈,速度最高可以提升一个量级。 这种“高带宽内存”(High Bandwidth Memory)缩写就是 HBM。
现在 CPU 也有用 HBM 的了,比如 Intel Xeon CPU Max Series 就自带了 64GB HBM2e。
HBM演进:
迭代:HBM 1/2/2e/3/3e。
AMD MI300X 采用 192GB HBM3 方案,带宽 5.2TB/s;
HBM3e 是 HBM3 的增强版,速度从 6.4GT/s 到 8GT/s。
2.7 CPU/GPU
后面会单独写一篇文章,详细介绍NVIDIA GPU技术,如架构演变过程,详细技术细节等。
三、其他典型物理拓扑
3.1 H100/H800拓扑分析
GPU Board Form Factor 分为两种类型:
- PCIe Gen5
- SXM5:性能更高一些
1)H100芯片 Layout
- 4nm 工艺。
- 最下面一排是18根Gen4 NVLink;双向总带宽18lanes * 50GB/s/lane = 900GB/s。
- 中间蓝色的是 L2 cache;
- 左右两侧是 HBM 芯片,即显存;
2)硬件拓扑
跟 A100 8 卡机结构大致类似,区别:
- NVSwitch 芯片从 6 个减少到了 4 个。
- 与CPU的互联PCIe Gen4 x16升级到PCIe Gen5 x16,双向带宽128GB/s。
- 与 A100 也类似,只是标配改成了 400Gbps 的 CX7 网卡, 否则网络带宽与 PCIe Switch 和 NVLink/NVSwitch 之间的差距更大了。