GPU基础架构:从硬件组成到计算核心

要理解大模型推理的性能边界,首先必须深入GPU的物理世界。GPU并非一个简单的"大芯片",而是一个由流式多处理器(SM)、高带宽显存、多级缓存和专用计算单元构成的复杂并行系统。大模型推理的每一次生成,本质上是将Transformer的矩阵乘法、注意力计算和激活函数映射到这些硬件资源上的过程。本节将拆解GPU的硬件组成、计算核心差异以及内存层次结构,帮助你建立从硬件到性能的完整认知框架。

GPU硬件架构总览 GPU 芯片(如 NVIDIA H100 / A100) SM 阵列(Streaming Multiprocessor) SM 0 CUDA Cores ×128 Tensor Core ×4 Shared Mem 256KB L1 Cache SM 1 CUDA Cores ×128 Tensor Core ×4 Shared Mem 256KB L1 Cache SM 2 CUDA Cores ×128 Tensor Core ×4 Shared Mem 256KB L1 Cache … SM n (最多 132 个) L2 Cache(40-50 MB,片上共享) 所有SM共享,缓存权重与中间激活值 显存控制器(HBM3/HBM2e) 5120-bit 位宽 HBM 显存(80GB) 带宽 2-3.35 TB/s 内存层次结构 寄存器文件(Register File) 256KB / SM,延迟 < 1ns 共享内存(Shared Memory) 228KB / SM,延迟 ~20ns L1 / L2 Cache L1: 256KB/SM, L2: 50MB, 延迟 200-300ns HBM 显存(全局内存) 80GB, 延迟 ~400-500ns, 带宽 3.35TB/s 关键性能指标 FP16: 989 TFLOPS FP32: 67 TFLOPS INT8: 1979 TOPS

2.1 流式多处理器(SM):GPU的计算心脏

SM(Streaming Multiprocessor)是GPU最基本的计算单元,相当于CPU中的"核中核"。以NVIDIA H100 SXM为例,一颗芯片集成了132个SM,每个SM内部包含128个FP32 CUDA核心、4个第四代Tensor Core、64个FP64单元以及独立的L1缓存和共享内存。大模型推理时,一个Transformer层的计算会被切分成多个block,每个block被调度到一个SM上执行。SM的数量直接决定了GPU的并行度——132个SM意味着理论上可以同时运行132个block,每个block内又可以包含1024个线程。

核心原理:SM采用SIMT(单指令多线程)架构,以32个线程为一组(称为warp)执行指令。当执行矩阵乘法时,warp中的线程各自负责计算输出矩阵的一个元素。这种设计使得GPU能够通过大量线程的并行执行来隐藏内存访问延迟——当一个warp等待数据从显存返回时,调度器立即切换到另一个就绪的warp,从而保持计算单元始终忙碌。

2.2 CUDA核心与Tensor Core:通用计算与专用加速

CUDA核心是GPU的通用计算单元,擅长处理标量运算和逻辑控制流。在Transformer推理中,LayerNorm、激活函数(GELU、SiLU)、残差连接等操作主要由CUDA核心完成。而Tensor Core则是专为矩阵乘加运算设计的硬件加速器,它能在单个时钟周期内完成4×4矩阵的乘加操作。以H100的第四代Tensor Core为例,其支持FP16、BF16、FP8、INT8等多种精度,FP16下的峰值算力达到989 TFLOPS(稀疏度2:4),是FP32算力(67 TFLOPS)的14倍以上。

计算单元 适用场景 精度支持 相对性能
CUDA Core LayerNorm、激活函数、元素级操作 FP32/FP64 1×(基准)
Tensor Core(第4代) GEMM(矩阵乘法)、注意力QKV投影 FP16/BF16/FP8/INT8 14×(FP16 vs FP32)
Tensor Core(稀疏) 剪枝后的稀疏模型推理 FP16/BF16/FP8 28×(2:4稀疏)

在实际推理中,FlashAttention等优化技术正是利用Tensor Core的高吞吐特性,将注意力计算中的QK^T和PV矩阵乘法映射到Tensor Core上执行。而CUDA核心则负责处理softmax中的指数运算和归一化。这种异构计算分工使得GPU能够同时发挥通用计算的灵活性和专用加速的高效性。

2.3 GPU内存层次结构:数据流动的阶梯

GPU的内存层次从快到慢、从小到大依次为:寄存器文件、共享内存、L1/L2缓存、HBM显存。理解这个层次结构对推理优化至关重要,因为内存带宽往往比算力更早成为瓶颈。以LLaMA-70B模型为例,其权重总量约140GB(FP16),远超单卡80GB显存,必须进行张量并行或流水线并行。即使模型能装入单卡,每次生成也需要读取全部权重——假设batch size为1,生成一个需要从HBM读取140GB数据,在3.35TB/s的带宽下,理论最短耗时约42ms,而实际计算时间可能仅需几毫秒。

实战经验:在推理优化中,优先考虑减少HBM访问次数,而非提升算力利用率。常用的手段包括:
① KV Cache复用:避免重复计算历史的键值对;
② 算子融合:将多个操作合并为单个kernel,减少中间结果的显存读写;
③ 量化:将FP16权重转为INT8/FP8,直接减半或减少至1/4的显存带宽需求。

2.4 案例拆解:为什么A100推理LLaMA-7B比H100慢3倍?

我们以一个实际场景来理解硬件差异对推理性能的影响。假设在A100(40GB,带宽1.5TB/s,FP16算力312 TFLOPS)和H100(80GB,带宽3.35TB/s,FP16算力989 TFLOPS)上分别部署LLaMA-7B(FP16,权重14GB),batch size=1,生成长度为128个。

初始现象:H100的生成速度约为45 /s,A100约为15 /s,差距达到3倍,远超算力比(989/312≈3.2倍)。

分析过程:

  1. 计算量估算:每个的预填充阶段需要约2×14GB=28GFLOPs(每参数2次浮点运算),解码阶段每个约28GFLOPs。
  2. 带宽瓶颈判断:解码阶段每个必须读取全部14GB权重。A100耗时14GB/1.5TB/s≈9.3ms,H100耗时14GB/3.35TB/s≈4.2ms。加上计算时间(A100:28GFLOPs/312TFLOPS≈0.09ms,H100:28GFLOPs/989TFLOPS≈0.03ms),带宽占比超过98%。
  3. 结论:推理性能几乎完全由显存带宽决定,H100的带宽优势(2.23倍)直接转化为生成速度优势(3倍,额外收益来自L2缓存命中率提升)。

优化操作:在A100上采用INT8量化(权重降至7GB),带宽耗时降至4.7ms,生成速度提升至约21 /s。虽然仍低于H100,但已接近其FP16性能的50%。

风险提示:量化会引入精度损失,尤其对低比特(INT4/INT8)敏感的小模型。建议在量化后使用验证集评估困惑度(Perplexity)变化,若超过5%则需考虑混合精度方案(如保留敏感层的FP16权重)。

2.5 常见误区与总结

误区一:"GPU算力越高,推理越快。"实际上,大模型推理是带宽密集型任务,算力利用率往往不足30%。误区二:"显存越大越好。"显存容量决定能否装下模型,但带宽决定生成速度,两者需平衡考虑。误区三:"所有算子都应该用Tensor Core。"对于元素级操作(如激活函数),Tensor Core无法发挥优势,反而可能因数据格式转换增加开销。