AI News HubLIVE
站内改写2 分钟阅读

什么是GPU内存以及为什么它对LLM推理至关重要

本文全面解析GPU内存(VRAM)在大型语言模型(LLM)推理中的作用,涵盖模型权重、KV缓存和框架开销的内存消耗,提供内存计算公式,解释为何模型“理论上”能运行却遭遇OOM,并介绍量化、张量并行、KV缓存优化等策略,以及BentoML推理平台如何简化这些优化。

GPU内存(VRAM)是大型语言模型(LLM)推理中不可或缺的资源。它不仅决定了模型能否加载,更影响着推理的吞吐量、延迟、最大上下文长度以及并发处理能力。很多团队在部署LLM时常常遇到这样的问题:明明模型权重看起来刚好能放进GPU显存,但一旦开始推理,显存立刻爆满,出现OOM(内存耗尽)错误。本文基于BentoML的技术博客,详细解读GPU内存的工作原理、LLM推理中的内存消耗模式以及优化策略。

GPU内存的基础知识 GPU内存通常指专用VRAM,例如HBM3或GDDR6X,它们以极高的带宽(如NVIDIA H200的4.8 TB/s)为GPU提供数据。VRAM是GPU独有的,不与CPU共享,存储模型权重、激活值和KV缓存。需要注意的是,集成GPU(如Intel Iris或Apple M系列)可能使用共享系统内存,而数据中心GPU(如A100或H200)完全依赖专用VRAM。所谓共享GPU内存,是指GPU在VRAM不足时从系统RAM中动态划分的内存,但对于LLM推理,我们通常只关心专用VRAM。

LLM推理中的内存消耗 推理过程中,GPU内存主要消耗在三个方面:

  1. 模型权重:加载所有参数所需的内存。例如,一个70B参数的FP16模型需要140 GB。权重内存可通过参数量乘以每个参数字节数估算。
  2. KV缓存:在预填充和解码阶段,每处理一个token都会生成并存储键值对。KV缓存大小随序列长度、批量大小和层数线性增长,计算公式为:2 × batch_size × seq_len × num_layers × hidden_dim × bytes_per_parameter / 1024³。
  3. 框架和CUDA开销:包括CUDA内核、PyTorch分配器碎片化以及临时激活内存,具体大小取决于框架和GPU。

为什么模型“看起来能装下”却仍然OOM? 许多团队过去习惯于部署小型模型,单个GPU可以容纳多个模型。但LLM的行为截然不同:它们不仅加载权重,还会在运行时动态增长内存。即使模型权重刚好能放进VRAM,KV缓存也会随着输入长度和生成token数迅速膨胀。例如,一个需要60 GB权重的模型,在80 GB的GPU上处理长上下文(如32k token)时,KV缓存会轻易吃掉剩余空间,导致OOM。此外,高并发场景下多个请求的KV缓存叠加,也会迅速耗尽内存。因此,真正的瓶颈并非权重,而是运行时内存的增长。

优化GPU内存使用的策略 针对上述问题,业界积累了多种优化策略:

  • 量化:降低权重精度(如FP16→INT4),可减少4倍内存占用。现代量化方法(GPTQ、AWQ)精度损失极小,适合聊天机器人、RAG等场景。
  • 分布式推理:使用张量并行将模型切分到多个GPU,但需注意通信开销会增加延迟。
  • KV缓存优化:包括前缀缓存(重用系统提示等共享部分)、KV感知路由(将同一请求的token调度到同一GPU,提高缓存命中率,测试中吞吐量提升12倍)和KV缓存卸载(将不常用块移至CPU内存或磁盘)。

BentoML推理平台将这些优化内置在产品中,用户无需手动配置复杂工程,即可直接享受高效推理。