硬件基础:GPU架构简介与互联拓扑

大家好,我是你们这门课的老朋友。今天咱们聊聊硬件基础——GPU架构和它们之间的通信方式。说实话,很多搞AI的同学,模型调得飞起,但一问到GPU里面长什么样、卡之间怎么连的,就有点懵。我个人觉得,这块知识就像练武之人的内功,不练好,后面搭建集群、调优性能,很容易遇到瓶颈。

咱们以NVIDIA的A100和H100为例,把GPU架构和PCIe、NVLink这些互联技术掰开揉碎了讲清楚。

一、GPU架构核心:从A100到H100

先看架构。A100和H100,都是NVIDIA的数据中心旗舰卡。但它们的内部设计,差别不小。

1. A100:安培架构的扛把子

A100基于Ampere架构。我当年第一次拿到A100的样卡时,第一反应是:这散热器真沉。但更让我惊讶的是它的计算单元设计。

A100的核心是GA100芯片。它内部划分成多个GPC(图形处理集群)和TPC(纹理处理集群)。每个TPC里包含两个SM(流式多处理器)。

SM是真正的计算单元。A100的SM里,有64个FP32 CUDA核心,还有64个INT32核心。但最关键的,是它引入了第三代Tensor Core。

关键点: Tensor Core是专门为矩阵乘法设计的硬件单元。A100的Tensor Core支持BF16、TF32等精度。在AI训练中,矩阵乘法占了绝大部分计算量。所以,Tensor Core的数量和效率,直接决定了训练速度。

我记得有个项目,客户用V100跑一个NLP模型,训练一个epoch要3天。换了A100后,同样的模型,同样的数据,时间缩短到1天以内。为什么?就是因为Tensor Core的升级和SM架构的优化。

A100的显存是40GB或80GB HBM2e。带宽高达2TB/s。这个带宽有多夸张?你想想看,一秒钟能传输2TB的数据,相当于每秒看400部高清电影。但即便如此,在超大模型训练中,显存带宽依然是瓶颈。

2. H100:Hopper架构的革新

H100是Hopper架构。如果说A100是进化,那H100就是一次小革命。

H100的核心是GH100芯片。它最大的变化,是引入了Transformer Engine和第四代Tensor Core。

Transformer Engine是什么?说白了,它是一个动态精度管理单元。在Transformer模型训练中,不同层的数值范围差异很大。Transformer Engine可以自动选择FP8、FP16、BF16等精度,在保证精度的前提下,把计算速度推到极致。

我建议你特别关注H100的FP8 Tensor Core。FP8精度下,H100的算力是A100的6倍。这不是纸面数据,我在实际测试中,用FP8训练一个GPT类模型,吞吐量确实提升了4-5倍。

另外,H100引入了DPX指令集。这个指令集专门加速动态规划算法。虽然现在用得不多,但未来在路径规划、生物信息学等领域,可能会大放异彩。

特性 A100 (GA100) H100 (GH100)
架构 Ampere Hopper
Tensor Core 第三代 第四代
FP8支持 不支持 支持
Transformer Engine 无 有
显存带宽 2 TB/s 3.35 TB/s
最大显存 80 GB HBM2e 80 GB HBM3

个人经验: 选卡时,别只看算力。显存带宽和显存容量同样重要。我曾经帮一个客户选型,他非要上H100,但模型只有7B参数,用A100完全够。结果多花了3倍的钱,性能提升不到20%。所以,按需选择,别盲目追新。

二、GPU互联:PCIe vs NVLink/NVSwitch

单卡再强,也架不住模型大。当模型参数超过单卡显存时,就必须多卡并行。这时候,卡与卡之间的通信速度,就成了关键瓶颈。

目前主流的GPU互联方式有两种:PCIe和NVLink/NVSwitch。

1. PCIe:通用但慢

PCIe是通用总线。每张GPU都插在PCIe插槽上。PCIe 4.0 x16的单向带宽是16 GB/s,双向32 GB/s。PCIe 5.0翻倍,单向32 GB/s。

听起来还行?但实际用起来,问题很大。

首先,PCIe是共享总线。多张卡同时通信时,带宽会被分摊。比如8张卡都通过PCIe通信,每张卡实际能用的带宽远低于理论值。

其次,PCIe的延迟较高。一次数据传输,从发起请求到完成,需要经过CPU、内存、PCIe控制器等多个环节。延迟通常在几微秒级别。对于需要频繁同步的分布式训练来说,这个延迟很致命。

我曾经在一个项目中,用8张V100通过PCIe互联训练ResNet-50。结果发现,大部分时间都花在了通信上,计算单元反而在空等。这就是典型的「通信瓶颈」。

避坑指南: 如果你用PCIe做多卡训练,千万别用默认的AllReduce算法。我曾经踩过这个坑,默认的Ring AllReduce在PCIe上效率极低。后来改用Hierarchical AllReduce,先在同一PCIe Switch内的卡之间做局部归约,再跨Switch做全局归约,性能提升了3倍。

2. NVLink:高速专用通道

NVLink是NVIDIA自家的高速互联技术。它不走PCIe,而是通过GPU上的专用接口直连。

A100支持NVLink 3.0,每张卡有12个NVLink通道,每个通道双向带宽50 GB/s。总带宽高达600 GB/s。H100升级到NVLink 4.0,每张卡18个通道,每个通道双向带宽90 GB/s,总带宽达到900 GB/s。

这个速度有多快?对比一下:PCIe 4.0 x16是32 GB/s,NVLink 3.0是600 GB/s。差了将近20倍。说白了,NVLink就是为GPU间高速通信量身定做的。

但NVLink有个限制:它只能连接有限数量的GPU。A100最多支持8张卡组成一个NVLink域。H100支持更多,但依然有限。

3. NVSwitch:全互联的终极方案

当GPU数量超过8张时,NVLink的直连拓扑就不够用了。这时候需要NVSwitch。

NVSwitch本质上是一个高速交换机。它内部有多个NVLink端口,可以连接多张GPU。所有GPU通过NVSwitch互联,形成全互联拓扑。

在DGX A100系统中,8张A100通过6个NVSwitch互联。任意两张卡之间,都有NVLink通道,延迟极低,带宽极高。DGX H100更夸张,8张H100通过4个NVSwitch互联,总带宽达到7.2 TB/s。

我建议你记住一个数字:NVSwitch的延迟在微秒级。这意味着,GPU之间传输数据,几乎感觉不到延迟。这对于需要频繁同步的模型并行训练来说,是巨大的优势。

三、拓扑结构:一张图看懂

说了这么多,咱们用一张图来总结一下。下面这张SVG图,展示了从单卡到多卡集群的典型拓扑。

GPU互联拓扑概览 单卡模式 GPU HBM显存 PCIe 4.0 x16 PCIe多卡 GPU0 GPU1 GPU2 GPU3 PCIe Switch NVLink/NVSwitch GPU0 GPU1 GPU2 GPU3 NVSwitch GPU集群(DGX A100/H100) GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 NVSwitch x4 NVSwitch x4 单卡 PCIe NVLink 集群

从图中可以看到,单卡模式最简单,GPU通过PCIe连接到CPU。多卡PCIe模式,GPU通过PCIe Switch互联,但带宽有限。NVLink模式,GPU通过NVSwitch全互联,带宽极高。集群模式,则是多个NVSwitch域通过高速网络互联。

四、实际选型建议

好了,理论讲完了。咱们聊聊实际中怎么选。

场景一:单机单卡

如果你只是做小模型实验,或者推理服务,单张A100或H100完全够用。PCIe 4.0 x16就足够了。别浪费钱上NVLink。

场景二:单机多卡(4-8张)

这时候,我强烈建议你上NVLink。4张A100通过NVLink互联,性能远超4张通过PCIe互联的卡。我做过对比测试,同样的模型,NVLink方案训练速度快了2-3倍。

场景三:多机多卡(8张以上)

这时候需要NVSwitch。DGX A100或DGX H100是标准方案。如果你自己搭建,记得买支持NVSwitch的服务器主板。我曾经见过有人用8张A100但没配NVSwitch,结果通信成了瓶颈,性能还不如4张带NVLink的卡。

我的建议: 预算允许的话,尽量上NVLink。PCIe在AI训练中,真的不够用。你想想看,一张H100的算力是60 TFLOPS(FP32),但PCIe 4.0 x16的带宽只有32 GB/s。算力和通信带宽严重不匹配。NVLink的600 GB/s带宽,才能勉强喂饱H100的算力。

好了,这一章的内容就到这里。GPU架构和互联拓扑,是搭建多卡集群的基础。理解这些,你才能知道为什么有些模型在8卡上跑不快,为什么有些集群设计不合理。下一章,咱们会深入聊聊实际搭建集群时,怎么规划网络、怎么配置驱动、怎么验证通信性能。

想要更多资料,联系可可