llm推理中的GPU工作原理

📅 2026/7/7 9:42:12
llm推理中的GPU工作原理
LLM推理过程中存在的内存瓶颈生成一个 token 时GPU超过99%的时间在等待内存访问不到1%的时间用于数学运算decode受内存限制比例接近300:1Memory Wall问题计算能力与内存带宽之间的差距持续扩大GPU vs CPU不同的设计哲学CPU针对单线程快速执行进行优化核心策略是预测与预取芯片大部分硅面积用于预测机制——猜测线程下一步操作提前准备数据通常同时运行数十个快速线程目标让单个线程几乎不需要停下来等待GPU的设计目标GPU做出完全相反的权衡针对海量并行、相同操作的工作负载核心这块芯片整天做的工作是在数十亿个数字上重复执行相同的少量算术运算。这就是矩阵乘法的形态而Transformer几乎全部由矩阵乘法组成。H100的具体配置指标数值流式多处理器SM数量132个每SM最大线程数2048个全芯片活跃线程数270,000线程速度单独看都很慢关键当任务是相同的操作应用于十亿个元素时10万个慢速线程并行工作远胜于少数几个快速线程。流式多处理器SM架构每个SM是重复132次的相同设计理解一个就理解了整个GPU算术单元┌─────────────────────────────────────────┐ │ 流式多处理器 (SM) │ ├─────────────────────────────────────────┤ │ CUDA核心标量单元 │ 张量核心 │ │ 128个 │ 4个 │ │ 每周期执行1次乘加操作 │ 操作整个矩阵 │ ├─────────────────────────────────────────┤ │ 调度器 × 4 │ │ 寄存器文件256KB │ │ 共享内存/L1缓存最多228KB │ └─────────────────────────────────────────┘张量核心几乎贡献了H100全部的峰值吞吐量接近1000万亿次运算/秒而非128个CUDA核心存储层级层级位置容量访问延迟寄存器SM内部256KB单周期共享内存/L1SM内部最多228KB纳秒级L2缓存芯片级共享50MB—HBMGPU芯片外80GB数百周期从顶部到底部带宽下降约100倍延迟上升约1000倍。Warps与SIMT架构线程束warp 32个线程的固定分组SM上2048个线程总是以32个一组的形式工作从不单独行动所有32个线程同一时刻执行同一条指令各自处理不同数据SIMT单指令多线程Nvidia称之为SIMTSingle Instruction, Multiple Threads┌────────────────────────────────────────┐ │ 指令获取与解码一次 │ └─────────────────┬──────────────────────┘ │ ┌─────────▼─────────┐ │ 32个线程同步执行 │ ├────┬────┬────┬────┤ │ T0 │ T1 │ T2 │... │ (各自数据) └────┴────┴────┴────┘优势控制开销几乎消失节省的芯片面积可用于算术运算。线程束发散Warp Divergence当同一线程束内的线程需要执行不同代码路径时# 示例场景ifcondition:path_a()# 部分线程执行else:path_b()# 其余线程执行问题硬件无法同时运行两个分支只能顺序执行执行if路径else线程被屏蔽空闲执行else路径if线程被屏蔽空闲代价一个均衡的if-else使吞吐量减半嵌套分支影响更大。这是GPU编程的两大禁忌之一另一个是非合并内存访问。延迟隐藏Memory WallGPU各代之间的发展趋势芯片年份带宽 (TB/s)峰值算力 (TOPS)A1002020~2—H10020223.35989B2002024~8—算力增长快于带宽增长两条曲线持续分离这个扩大中的差距就是存储墙。延迟隐藏Latency HidingGPU不避免停顿而是隐藏停顿当 warp 1发起HBM加载请求 → 调度器切换到 warp 2 warp 2执行 → 调度器切换到 warp 3 ... → warp 1数据返回时其他线程已占据数百个周期每个SM最多容纳64个线程束切换线程束零成本——寄存器内容保留在寄存器文件中无需保存/恢复只要有足够的活跃线程束SM永远不会真正空闲非合并访问Uncoalesced AccessGPU硬件无法获取单个值必须移动整个数据块cache line访问类型描述效率合并访问32个线程访问相邻地址数据在同一块中高效1次事务非合并访问32个线程访问分散地址可能需要32次事务浪费大量带宽示例# 合并访问高效data[i]# 线程0data[i1]# 线程1data[i2]# 线程2...# 非合并访问低效data[scattered_indices[tid]]# 地址分散数据布局与算术运算同样关键。张量核心与低精度计算单元类型操作方式CUDA核心标量每次乘两个数加第三个一周期一个结果张量核心矩阵一条指令完成两个小矩阵相乘并加到结果矩阵这就是**矩阵乘累加MMA**操作张量核心只做这一件事。设计Transformer超过90%的算术运算都在矩阵乘法中一个只做矩阵乘法但做得极快的单元是最高效的硅投入。低精度格式演进格式年份精度位相比上代吞吐量FP16Volta (2017)16位基准FP8Hopper (2022)8位~2倍FP4Blackwell (2024)4位~2倍双重收益更少位数 每个周期可处理更多数字更少位数 内存总线传输量减少为什么模型能容忍低精度浮点数结构┌──────────┬──────────┐ │ 指数 │ 尾数 │ │ (范围) │ (精度) │ └──────────┴──────────┘深度学习依赖范围而非精度。例如BF16保留了FP32的全部8个指数位范围相同但将尾数从23位削减到7位。安全机制乘法以低精度运行但结果累加回FP32防止误差累积。营销提示Nvidia宣称的9X加速混合了精度收益、更快互联和理想基准。实际工作中每代真实收益约为2-4倍。算术强度与屋顶模型屋顶模型Roofline Model判断操作是内存受限还是计算受限的核心工具算力峰值 /| / | / | / | ← 计算受限区 / | / | /──────┤ ← 脊点算术强度 295 ops/byte / | / | ← 内存受限区 / | / | /___________| 带宽峰值H100算力峰值989 TOPS带宽峰值3.35 TB/s脊点989 / 3.35 ≈295 ops/byte应用宽解码wide decode算术强度极低深度处于内存受限区预填充prefill算术强度较高接近或处于计算受限区H200实验H200与H100使用相同的计算芯片仅升级了内存规格H100H200内存80GB HBM3 3.35 TB/s141GB HBM3E 4.8 TB/s峰值算力相同相同结果对于内存受限的LLM推理任务这是真实的加速——直接证明推理受带宽限制而非算力限制。多GPU扩展NVLink与NVSwitch单芯片的局限前沿模型权重达数百GB超出单芯片容量80-140GB必须分布在多个GPU上。两种互联方式方案带宽典型配置NVLink域内600-1800 GB/sDGX (8 GPU) / NVL72 (72 GPU)InfiniBand数百Gb/s跨机架NVLink演进A100600 GB/s/GPUH100900 GB/s/GPUBlackwell1.8 TB/s/GPU张量并行与通信张量并行将每层矩阵乘法分割到多个GPU各GPU在每层必须交换结果每token数十次。NVLink域内通信代价低InfiniBand这是真正的瓶颈NVL72系统GB20072 GPU放在单个液冷机架中全部位于单一NVLink域内显著扩大了快速邻里范围减少对慢速网络的依赖竞争对手对比Google TPU架构差异完全放弃SM模型围绕一个**巨型脉动数组systolic array**构建固定网格的乘累加单元数据以节律方式流经芯片无需往返寄存器文件优势非常适合密集矩阵乘法局限其他任务效率低仅通过Google Cloud租用AMD MI300X对比项MI300XH100HBM容量192GB80GB适用场景需要更大单卡容量的模型—理论上可容纳需要两个H100的模型。但现实选择大多数团队仍选择Nvidia。决定性因素软件生态CUDA历经近二十年积累的库和工具链是当前所有AI的底层依赖。AMD的ROCm仍在追赶中。对于大多数团队这层成熟度才是真正的约束而非硬件规格。附录术语英文解释流式多处理器Streaming Multiprocessor (SM)GPU的基本计算单元线程束Warp32个同步执行的线程组单指令多线程SIMT同一指令并行运行于多个线程线程束发散Warp Divergence同一线程束执行不同分支路径高带宽内存HBM堆叠在GPU旁边的显存合并访问Coalesced Access线程访问相邻内存地址算术强度Arithmetic Intensity每字节内存传输的算术操作数屋顶模型Roofline Model性能上限分析工具矩阵乘累加MMATensor Core执行的核心操作内存墙Memory Wall计算与内存带宽差距扩大的问题延迟隐藏Latency Hiding通过线程切换掩盖内存访问延迟总结并行策略通过大量慢速线程27万实现高吞吐量延迟隐藏用线程切换掩盖HBM访问的数百周期延迟存储墙算力增长快于带宽推理多处于内存受限区数据局部性合并访问、四层存储层级精心设计以保持算力单元饱和工作精度换取吞吐FP16→FP8→FP4持续提升有效算力软件壁垒CUDA生态是比硬件规格更关键的竞争因素