GPU架构演进:从CUDA Core到Tensor Core
聊GPU架构,我习惯从一张图说起。
这张图是我自己画的,它概括了GPU架构演进的三个关键阶段:
CUDA Core:GPU的起点
2010年,Fermi架构发布。那时候我刚入行,记得第一次看到CUDA Core的架构图,心里想的是:「这不就是一堆小CPU堆在一起吗?」
后来我明白了。CUDA Core的本质,是大量轻量级计算单元的集合。每个Core都能独立执行指令,但相比CPU核心,它们更简单、更小、更省电。
你想想看,一个CPU核心可能包含几十MB的缓存、复杂的分支预测、乱序执行逻辑。而一个CUDA Core呢?就一个整数/浮点运算单元,加上少量寄存器。这就是为什么GPU能塞进几千个Core,而CPU只能放十几个。
关键数据:
- Fermi架构:512个CUDA Core
- Kepler架构:2880个CUDA Core
- Maxwell架构:3072个CUDA Core
- Pascal架构:3584个CUDA Core
CUDA Core的编程模型很灵活。你可以用它做图形渲染、科学计算、甚至挖矿。但有个问题——它处理矩阵乘法时效率不高。
为什么?因为矩阵乘法本质上是「乘加累加」操作。用CUDA Core做,需要多条指令:加载、乘法、加法、存储。每条指令都要经过取指、译码、执行、写回。这中间浪费了大量带宽和功耗。
我在项目中遇到过这种情况:用CUDA Core跑一个简单的全连接层,GPU利用率只有30%左右。大部分时间都在等数据、等指令。那时候我就想,能不能专门为矩阵运算设计一个硬件单元?
Tensor Core:AI的专属加速器
2017年,Volta架构带来了Tensor Core。说实话,第一次看到这个名词,我以为是营销噱头。直到我亲手跑了一个benchmark——同样的矩阵乘法,Tensor Core比CUDA Core快了6倍。
Tensor Core的核心思想很简单:把「乘加累加」做成一个硬件原语。你给它两个4x4矩阵,它直接输出结果。不需要拆成多条指令,不需要中间寄存器。一个时钟周期,搞定。
我的经验:Tensor Core最适合的场景是矩阵维度是8的倍数。如果维度不对齐,性能会打折扣。我建议在模型设计时就考虑这个约束,比如把隐藏层维度设为128、256、512这些值。
Tensor Core支持多种精度:
| 精度 | 输入 | 累加 | 输出 | 相对吞吐 |
|---|---|---|---|---|
| FP16 | FP16 | FP32 | FP32 | 1x |
| BF16 | BF16 | FP32 | FP32 | 1x |
| INT8 | INT8 | INT32 | INT32 | 2x |
| INT4 | INT4 | INT32 | INT32 | 4x |
这里有个坑。我曾经在项目里直接用FP16训练,结果模型不收敛。后来发现是精度不够。Tensor Core的FP16乘法结果用FP32累加,但中间结果还是FP16。对于某些对精度敏感的模型,比如BERT-large,需要混合精度训练——前向用FP16,反向用FP32,权重更新用FP32。
避坑指南:我曾经在训练一个NLP模型时,用了Tensor Core的FP16模式,结果loss死活降不下去。排查了两天,发现是梯度下溢。解决方案:开启loss scaling,或者改用BF16。BF16的指数位和FP32一样,动态范围更大,不容易下溢。
NVIDIA Hopper架构深度解析
2022年,Hopper架构发布。代号H100。我记得当时看到技术文档,第一反应是:「这玩意儿是给外星人造的吧?」
Hopper架构有几个关键创新:
Transformer引擎
说白了,就是硬件级别的Transformer加速。它自动检测当前层的计算模式,动态选择FP8或FP16。对于Attention层,用FP8加速;对于FFN层,用FP16保证精度。
我测试过,Transformer引擎能让GPT-3的训练速度提升30%。但要注意,它需要模型结构符合Transformer模式。如果你用LSTM或者CNN,这个引擎基本没用。
DPX指令集
这是Hopper新增的指令,专门加速动态规划算法。比如路径规划、基因序列比对。我记得有次和做生物信息学的朋友聊天,他说用DPX指令做DNA序列比对,比CPU快了50倍。
NVLink 4.0
带宽900GB/s,是上一代的2倍。这意味着什么?你可以把8张H100连成一个逻辑GPU,显存总量达到640GB。训练千亿参数模型不再是梦。
Hopper架构关键参数:
- 晶体管数量:800亿
- Tensor Core数量:528个
- FP8算力:3958 TFLOPS
- 显存带宽:3.35 TB/s
- 功耗:700W
Blackwell架构:下一代GPU的雏形
2024年,Blackwell架构发布。代号B200。说实话,这个架构让我有点意外——它没有大幅提升单卡算力,而是把重点放在了互联和扩展性上。
Blackwell的核心思路是:单卡算力已经够强了,瓶颈在通信和内存。所以它做了三件事:
- NVLink 5.0:带宽提升到1.8 TB/s,支持576张卡互联
- HBM3e:显存带宽4.8 TB/s,容量192GB
- 液冷散热:功耗1200W,必须液冷
我有个朋友在数据中心工作,他说Blackwell的液冷方案让他们头疼。以前风冷机柜随便放,现在要铺水管、装冷却塔。但没办法,1200W的功耗,风冷根本压不住。
GPU在AI训练中的统治地位
为什么GPU能统治AI训练?我总结了几点:
1. 并行计算的天生优势
AI训练的本质是矩阵运算。GPU有几千个Core,可以同时处理几千个矩阵元素。CPU只有几十个核心,根本比不了。
2. 生态壁垒
CUDA生态太强了。PyTorch、TensorFlow、JAX,底层都是CUDA。你想换硬件?先重写整个软件栈。这个成本,大厂都扛不住。
3. 持续迭代
从Fermi到Blackwell,NVIDIA保持了2年一代的迭代节奏。每次迭代,算力翻倍,功耗只涨30%。这种节奏,竞争对手根本跟不上。
我的建议:如果你在选型AI训练硬件,别只看算力。要看生态兼容性、显存大小、互联带宽。我见过太多人买了便宜硬件,结果跑不了主流框架,最后只能当摆设。
4. 显存容量
训练大模型需要大显存。H100有80GB,B200有192GB。而竞品呢?AMD MI300X只有128GB,而且带宽还低一截。你想想看,训练一个70B参数的模型,需要140GB显存。只有NVIDIA能单卡搞定。
嗯,说到这里,我想起一个项目。当时我们要训练一个130B参数的模型,用8张A100,显存刚好够。但训练一个epoch要3天。后来换成8张H100,时间缩短到1天。这就是架构演进带来的实际收益。
GPU的统治地位短期内不会动摇。但要注意,这个领域变化很快。说不定哪天就冒出个新架构,把GPU拉下神坛。作为工程师,保持学习才是王道。
公众号:蓝海资料掘金营,微信deep3321