跳到主要内容

GPU 架构与算力

理解 GPU 硬件架构是进行大模型训练和推理优化的基础。不同代际的 GPU 在算力、显存、互联带宽上有显著差异,直接影响训练效率和可部署的模型规模。

NVIDIA GPU 架构演进

Volta 架构(2017):V100

V100 是深度学习训练的里程碑产品,首次引入 Tensor Core,专为矩阵乘法加速设计。

核心规格:

  • FP16 算力:125 TFLOPS(Tensor Core)
  • 显存:16GB / 32GB HBM2
  • 显存带宽:900 GB/s
  • NVLink 带宽:300 GB/s(双向)

V100 奠定了大规模分布式训练的基础,GPT-2、BERT 等早期大模型均在 V100 集群上训练。

Ampere 架构(2020):A100

A100 是目前(2024 年)仍被广泛使用的主力训练卡,相比 V100 有数倍性能提升。

核心规格:

  • FP16 算力:312 TFLOPS(Tensor Core,稀疏)/ 77.6 TFLOPS(密集)
  • BF16 算力:312 TFLOPS(稀疏)
  • TF32 算力:156 TFLOPS(稀疏)
  • 显存:80GB HBM2e
  • 显存带宽:2 TB/s
  • NVLink 3.0 带宽:600 GB/s(双向)
  • PCIe 4.0 接口

GPT-3、LLaMA、PaLM 等主流大模型均在 A100 集群上完成训练。

Hopper 架构(2022):H100

H100 是 NVIDIA 面向下一代 AI 的旗舰产品,引入了 FP8 训练支持和 Transformer Engine。

核心规格:

  • FP8 算力:3958 TOPS(Tensor Core,稀疏)
  • FP16 算力:989 TFLOPS(稀疏)/ 494 TFLOPS(密集)
  • BF16 算力:989 TFLOPS(稀疏)
  • 显存:80GB HBM3(SXM5)
  • 显存带宽:3.35 TB/s(SXM5)
  • NVLink 4.0 带宽:900 GB/s(双向)
  • 新增:NVSwitch 3.0,支持 8 卡全互联

Transformer Engine:H100 的核心创新,可以在 FP8 和 BF16 之间动态切换精度,在保持训练稳定性的同时,最大化利用 FP8 算力。

出口管制变体:H800 / H20

受美国对华出口管制(Entity List 政策)影响,NVIDIA 推出了降规格版本:

  • H800:降低 NVLink 带宽(NVLink 3.0,400 GB/s),算力保持 H100 水平
  • H20:进一步削减,FP16 算力约 148 TFLOPS,但显存 96GB,显存带宽 4 TB/s(HBM3),定位推理

国内云厂商(阿里云、腾讯云、百度智能云)主要部署 H800 集群用于大模型训练。

核心指标对比

型号FP16 算力(密集)BF16 算力显存显存带宽NVLink 带宽
V100125 TFLOPS不支持32 GB900 GB/s300 GB/s
A10077.6 TFLOPS77.6 TFLOPS80 GB2 TB/s600 GB/s
H100 SXM494 TFLOPS494 TFLOPS80 GB3.35 TB/s900 GB/s
H20148 TFLOPS148 TFLOPS96 GB4 TB/s400 GB/s

注意:训练性能不仅取决于算力,显存带宽对 Transformer 推理性能影响更大(带宽密集型操作)。

CUDA 编程基础

理解 CUDA 编程模型有助于理解深度学习框架的底层行为。

并行层次结构

CUDA 将 GPU 计算组织为三层:

  • Thread(线程):最小执行单元,对应一次标量计算
  • Block(块):一组 Thread(最多 1024 个),同一 Block 内的 Thread 可以通过 Shared Memory 共享数据,并进行 __syncthreads() 同步
  • Grid(网格):所有 Block 的集合,一个 Kernel Launch 对应一个 Grid
// CUDA Kernel 示例:向量加法
__global__ void vector_add(float* a, float* b, float* c, int n) {
int idx = blockIdx.x * blockDim.x + threadIdx.x;
if (idx < n) {
c[idx] = a[idx] + b[idx];
}
}

// 启动 Kernel:1024 个 Block,每 Block 256 个 Thread
int blocks = (n + 255) / 256;
vector_add<<<blocks, 256>>>(a, b, c, n);

Warp 与 SIMT

实际执行中,Block 内的 32 个 Thread 组成一个 Warp,以 SIMT(Single Instruction, Multiple Thread)方式执行相同指令。分支(if/else)会导致 Warp 内部分 Thread 执行不同路径,称为 Warp Divergence,严重影响性能。

内存层次

  • 全局内存(Global Memory / HBM):最大但延迟最高,所有 Thread 可访问
  • 共享内存(Shared Memory / SRAM):每个 Block 独享,速度极快(约 19 TB/s),容量小(约 48-164 KB/SM)
  • 寄存器(Registers):每个 Thread 独享,速度最快
  • L1/L2 Cache:自动管理,缓解全局内存访问延迟

高效的 CUDA 编程核心是最大化共享内存利用率,最小化全局内存访问次数

Tensor Core

Tensor Core 是 NVIDIA 为矩阵乘法专门设计的硬件单元,从 Volta 架构(2017)开始引入。

每个 Tensor Core 在一个时钟周期内完成 4×4 矩阵的乘加操作(D = A × B + C)。相比传统 CUDA Core 的标量乘加,吞吐量提升约 16 倍(理论峰值)。

为了充分利用 Tensor Core,矩阵维度必须是 8 或 16 的倍数(视精度而定),且数据需要对齐排布。PyTorch 的 torch.compile() 和 Flash Attention 等优化库都自动调用 Tensor Core。

NVLink 是 NVIDIA 开发的 GPU 间高速互联总线,专为深度学习优化:

  • A100:NVLink 3.0,总带宽 600 GB/s(双向)
  • H100:NVLink 4.0,总带宽 900 GB/s(双向)
  • NVSwitch 芯片:支持 8 张 GPU 的全互联(NVLink Switch)

NVLink 的带宽是 PCIe 4.0 x16(64 GB/s 双向)的约 10-14 倍,对于 ZeRO 等需要频繁通信的分布式训练至关重要。

PCIe

  • PCIe 4.0 x16:约 64 GB/s 双向带宽
  • PCIe 5.0 x16:约 128 GB/s 双向带宽
  • 成本远低于 NVLink,消费级 GPU(RTX 4090)只有 PCIe 接口

InfiniBand(多机互联)

多机训练中,节点间通信依赖高速网络:

  • InfiniBand HDR(200G):常用于 A100 集群,约 200 Gbps/端口
  • InfiniBand NDR(400G):H100 集群标准,约 400 Gbps/端口
  • RDMA(Remote Direct Memory Access):绕过 CPU,直接 GPU 到 GPU 传输,延迟极低

与普通以太网(10/25/100 Gbps)相比,InfiniBand 的优势在于极低延迟(约 1μs)和对 RDMA 的原生支持。

算力估算

估算训练一个模型所需的算力:

经验公式:总 FLOPs ≈ 6 × N × D

其中 N 为模型参数量,D 为训练 Token 数,系数 6 来自前向(2)+ 反向(4,约等于前向的 2 倍)。

示例:训练 7B 参数模型,使用 1 万亿 Token:

  • 总 FLOPs = 6 × 7×10⁹ × 10¹² = 4.2×10²² FLOP
  • 使用 1000 张 A100(77.6 TFLOPS,MFU=50%):
    • 有效算力 = 1000 × 77.6×10¹² × 0.5 = 3.88×10¹⁶ FLOPS
    • 训练时间 = 4.2×10²² / 3.88×10¹⁶ ≈ 108 万秒 ≈ 12.5 天

国产替代芯片

在出口管制背景下,国产 AI 芯片加速发展:

华为昇腾(Ascend)

  • Ascend 910B:性能对标 A100,支持 Atlas 800T A2 训练服务器
  • CANN 软件栈:华为自研,部分支持 PyTorch 前端(通过 Ascend Extension for PyTorch)
  • MindSpore 框架:华为自研深度学习框架,生态较封闭

主要挑战:CUDA 生态兼容性差,需要代码修改,部分算子性能与 NVIDIA GPU 有差距。

寒武纪(Cambricon)

  • MLU370:训练/推理一体芯片
  • BANG 编程语言:类 CUDA 的异构编程语言
  • 主要客户:国内云厂商和部分行业客户

国产芯片在生态成熟度(驱动、框架支持、算子库)上与 NVIDIA 仍有较大差距,但政策支持力度持续加大,是中长期的重要方向。