怡心湖

GPU与AI的底层原理

GPU 与 AI 的关系,本质是"AI 计算图 ≈ 海量矩阵运算"​ 与 "GPU ≈ 为并行矩阵运算定制的吞吐机器"​ 的一次架构级吻合。下面从底层到上层拆开讲。

一、AI 计算的数学本质:全是矩阵

不管是 CNN、RNN 还是 Transformer,神经网络的前向/反向传播拆到底层就三类操作:

  • 矩阵乘(GEMM / GEMV)Y = X·W,Attention 的 QKV、FFN、卷积展开后都是它

  • 逐元素运算:ReLU、LayerNorm、Softmax、偏置加

  • 归约运算:sum、max、mean

一个 4096×40964096×4096 的矩阵乘约有 1370 亿次浮点操作,且彼此完全独立——这就是经典的"易并行(embarrassingly parallel)"负载。

反向传播(链式法则 + 梯度下降)也只是把上述矩阵乘再走一遍,并多算几个转置和逐元素导数,结构完全对称,所以同一套硬件能复用。


二、CPU 为什么不适合:架构目标不同

CPU 设计目标是低延迟、强控制

  • 少量(8–128)复杂核心,大量晶体管花在分支预测、乱序执行、大缓存

  • 内存带宽 ~50–100 GB/s(DDR5)

  • 跑"下一个 if 走哪边"很聪明,但跑"一亿次乘加"很浪费

AI 负载几乎无分支、访问模式规整、吃吞吐和带宽——CPU 大部分硅片在摸鱼。

三、GPU 底层架构:为吞吐牺牲延迟

1. 海量轻核 + SIMT

GPU 有上万简单核心(H100 有 16896 个 CUDA Core),按 SIMT(单指令多线程)​ 组织:

  • 32 个线程绑成一组叫 warp,同 warp 同指令、不同数据

  • 程序员写起来像"每个线程独立",硬件自动打包成向量执行(SIMT = 带线程抽象的 SIMD)

  • warp 内若 if 分支发散,两条路串行执行→性能坑

2. 执行层级(CUDA 模型)

Grid(一次 kernel 启动)
 └─ Block(映射到 1 个 SM,共享 shared memory)
    └─ Thread(最小单位,对应矩阵里一个元素/一小块)

SM(Streaming Multiprocessor)是真正算力单元,内含 CUDA Core、Tensor Core、寄存器堆、共享内存、调度器。H100 有 132 个 SM。

3. 显存层级与带宽(常被忽略的瓶颈)

  • 寄存器 > Shared Memory(SM 内,单周期级)> L1/L2 > HBM 全局显存

  • H100 HBM3e 带宽 3.35 TB/s,是 DDR5 的几十倍

  • 很多小模型/推理 batch=1 时不是算不动,是等显存——这叫 arithmetic intensity 不够

4. Tensor Core:矩阵乘的专用电路

从 Volta 开始,NVIDIA 在 SM 里塞了 Tensor Core,一条指令做一小块矩阵乘加:

D = A×B + C   (如 4×4×4 或更大 tile,FP16/BF16/FP8 输入,FP32 累加)

它不是用通用 ALU 凑出来的,而是脉动阵列式硬连线。代价是只吃固定形状矩阵运算,但吞吐爆炸:

  • H100 FP32 CUDA Core:~67 TFLOPS

  • H100 FP16 Tensor Core:~1979 TFLOPS

  • H100 FP8 Tensor Core:~3958 TFLOPS

关键点:低精度 ≠ 单纯省显存,它是同时换到更多 ALU、更高带宽利用率、Tensor Core 开启的三重加速。混合精度训练就是"乘法用 BF16/FP8,累加用 FP32"保稳定。


四、AI 框架怎么映射到 GPU

你写的 torch.nn.Linear 最终路径大致是:

  1. Python 层建计算图(PyTorch/JAX/TF)

  2. 落到 GEMM 调用 → cuBLAS(矩阵)或 cuDNN(卷积/norm/激活融合算子)

  3. cuBLAS 把大矩阵切块,丢给 SM 上的 Tensor Core 做 mma 指令

  4. 多卡训练再叠 NCCL(all-reduce 同步梯度)

框架用户完全不写 CUDA,但 99% 的算力来自底层 CUDA kernel + Tensor Core。

五、为什么训练比推理更吃 GPU

  • 训练:前向 + 反向 + 优化器更新,计算量是前向的 ~2–3 倍,且要存激活值(占显存大头,可用 activation checkpointing 用算力换显存)

  • 推理:只跑前向,但 batch 小容易 memory-bound;工程上靠 batching、算子融合、量化(INT8/FP8)、KV-cache 管理​ 把吞吐拉起来

算子融合典型例子:Conv+Bias+ReLU+BN 原本 4 次进出 HBM,融合成 1 个 kernel 在 shared mem 算完,显存流量砍掉 75%。

六、一句话串起来

AI 把智能问题变成矩阵乘问题;GPU 把矩阵乘问题变成上万线程 + Tensor Core + 高带宽显存的并行流水问题;CUDA/cuDNN 是把这两件事焊在一起的胶水。​ 这也是为什么 CPU 做调度控制、GPU 做算力底座,构成现代 AI 的异构计算骨架。

此文由 怡心湖 编辑,若您觉得有益,欢迎分享转发!:首页 > 常识论 » GPU与AI的底层原理

()
分享到: