2. GPU硬件架构解析:NVIDIA GPU架构(Ampere、Hopper、Blackwell)、CUDA核心与Tensor Core、显存与带宽、NVLink与NVSwitch
聊GPU硬件架构,很多人一上来就盯着算力看。我个人的习惯是,先看数据通路,再看计算单元。说白了,GPU就是个超级搬运工加计算工厂——数据搬得快不快,计算单元能不能喂饱,这才是关键。
这一节,我们重点拆解NVIDIA三代架构:Ampere、Hopper、Blackwell。我会结合我在实际集群部署中踩过的坑,帮你把CUDA核心、Tensor Core、显存带宽、NVLink这些概念串起来。
2.1 三代架构演进:从Ampere到Blackwell
先看一张我画的架构演进图,帮你建立整体认知。
这张图我画了三代架构的核心参数。你注意看,每一代都在做同一件事:把计算单元堆上去,把显存带宽拉起来,把卡间互联速度提上去。但具体怎么做的,各有各的门道。
2.2 CUDA核心与Tensor Core:到底有什么区别?
很多初学者搞不清CUDA Core和Tensor Core的区别。我打个比方:CUDA Core是通用工人,什么活都能干;Tensor Core是专用机床,只干矩阵乘法这一件事,但干得飞快。
2.2.1 CUDA Core:通用计算的主力
CUDA Core本质上是一个浮点/整数运算单元。每个SM(Streaming Multiprocessor)里有一堆CUDA Core。以A100为例,每个SM有64个FP32 CUDA Core,总共108个SM,算下来6912个。
实际干活的时候,这些CUDA Core以32个为一组(一个Warp)执行指令。我刚开始调优时犯过一个错:以为线程数越多越好。后来发现,Warp调度才是关键——如果分支发散太多,性能直接腰斩。
避坑指南:我曾经在一个项目里,把Warp内的线程全部分支处理不同数据。结果性能比单线程还差。后来改成让每个Warp处理连续数据,性能提升了4倍。记住:Warp内尽量别分支。
2.2.2 Tensor Core:AI计算的加速引擎
Tensor Core是NVIDIA从Volta架构开始引入的。它专门做矩阵乘加运算(D = A × B + C)。你想想看,深度学习里全连接层、卷积层、注意力机制,哪个不是矩阵乘法?
到了Hopper架构,Tensor Core进化到了第四代,支持FP8、INT8等多种精度。我实测过,用FP8做推理,比FP32快了将近8倍,精度损失却不到0.1%。
我的建议:训练时用混合精度(FP16/BF16),推理时用FP8甚至INT8。别一上来就FP32,那是浪费算力。我见过太多团队,模型跑不动了才想起来降精度。
2.3 显存与带宽:数据搬运的命脉
算力再强,数据搬不进来也是白搭。显存带宽决定了GPU的"进食速度"。
| 架构 | 显存类型 | 容量 | 带宽 | 我的评价 |
|---|---|---|---|---|
| Ampere A100 | HBM2e | 40/80 GB | 2.0 TB/s | 够用,但大模型有点紧 |
| Hopper H100 | HBM3 | 80 GB | 3.35 TB/s | 带宽翻倍,容量还是80G |
| Blackwell B200 | HBM3e | 192 GB | 8.0 TB/s | 这才是大模型的标配 |
你看这个表,Blackwell的带宽是A100的4倍。为什么?因为大模型训练时,参数和梯度要在显存和计算单元之间来回倒腾。带宽不够,GPU就在那干等。
我记得有一次调一个175B参数的模型,A100的80G显存根本放不下,只能做模型并行。但模型并行又引入了通信开销。后来换了H100,带宽高了,通信时间缩短了30%。
注意:显存带宽和显存容量是两个概念。容量决定你能装多大的模型,带宽决定你算得快不快。别只看容量,带宽不够一样卡死你。
2.4 NVLink与NVSwitch:把GPU连成超级计算机
单卡再强,也有极限。多卡互联才是集群的基石。NVLink和NVSwitch就是干这个的。
2.4.1 NVLink:GPU之间的高速通道
NVLink是NVIDIA的点对点互联技术。每一代都在升级带宽:
- NVLink 3(A100): 12条链路,每条50GB/s,总共600GB/s
- NVLink 4(H100): 18条链路,每条50GB/s,总共900GB/s
- NVLink 5(B200): 18条链路,每条100GB/s,总共1.8TB/s
我个人的经验是,NVLink最大的价值在于让多卡之间的AllReduce操作变得极快。训练大模型时,梯度同步是最耗时的环节之一。NVLink带宽高了,同步时间就短了。
2.4.2 NVSwitch:全互联的交换机
NVSwitch解决了多卡互联的拓扑问题。没有NVSwitch,8卡之间要全互联,得搞复杂的环形或树形拓扑。有了NVSwitch,所有GPU都能直接通信。
以DGX H100为例,里面装了4个NVSwitch,每个NVSwitch连接18条NVLink。8张H100之间任意两张都能以900GB/s的带宽通信。这叫什么?这叫全互联。
实战经验:我曾经在一个集群里,因为没有用NVSwitch,8卡之间通信走了PCIe交换机。结果训练速度比预期慢了40%。后来换成NVSwitch拓扑,通信延迟从微秒级降到了纳秒级。所以,多卡训练,NVSwitch不是可选项,是必选项。
2.5 架构选择:到底该买哪一代?
这个问题我经常被问到。我的建议很简单:
- 小模型(< 10B参数): A100完全够用,性价比最高
- 中等模型(10B-70B): H100是甜点,带宽和算力都够
- 大模型(> 70B参数): 直接上Blackwell,192G显存+8TB/s带宽,省心
但有一点要注意:架构升级不只是硬件的事。你的代码也得跟着升级。比如Hopper的Transformer引擎,需要你用FP8精度才能发挥最大性能。代码不优化,买了新卡也跑不出应有的速度。
好了,这一节的内容就到这里。记住:理解GPU架构,核心是理解数据怎么流动、计算怎么执行、卡间怎么通信。把这三点搞透了,你就能做出正确的架构选型和性能优化决策。
最后一个小技巧:拿到新卡后,先用nvidia-smi看显存带宽和NVLink状态。我每次部署新集群,第一件事就是跑一遍带宽测试。别信宣传数据,实测才是硬道理。