@akshay_pachaar: 在LLM推理中,VRAM都去哪儿了?(GPU内存的4种使用方式)加载模型只是内存故事的一部分…
摘要
本文解释了在大语言模型(LLM)推理过程中GPU内存的使用方式,将其分解为四个关键组件:模型权重、KV缓存、激活值/工作区和运行时开销。文章强调了量化在优化内存使用以提升性能方面的重要性。
查看缓存全文
缓存时间: 2026/09/17 18:25
LLM推理过程中,VRAM都用到哪里了?
(GPU内存的四种用途)
加载模型只是内存故事的第一部分。
一旦推理开始,GPU内存会被分配到多个组件,其中一些会随着上下文长度、批处理大小和并发请求数的增加而持续增长。
这张图将其分为四个关键部分:
→ 模型权重是相对固定的部分。模型加载后,其内存占用基本保持不变。这里最大的调整变量是精度。从FP16/BF16转为INT8或INT4可以减少存储每个参数所需的字节数。
→ KV缓存会随着生成过程而增长。对于每个先前的token,模型会存储键和值张量,以便注意力机制可以重复使用它们,而无需重新计算整个序列。更长的上下文意味着更大的KV缓存,更多的并发请求意味着内存中存在更多活跃的缓存实例。
→ 激活值与工作区保存了运行注意力机制、MLP层、内核及其他计算时所需的临时中间值。这部分内存在不同推理步骤间会被复用,但其大小仍可能随序列长度、批处理大小以及执行的内核变化而变化。
→ 运行时开销来自模型本身之外的所有部分。CUDA内核、内存分配器、元数据、服务引擎缓冲区以及其他运行时结构都会消耗一些VRAM。这部分通常比其他部分小,但绝非为零。
这就是为什么“模型能装进GPU”和“工作负载能装进GPU”是两个不同的概念。
模型可能轻松加载,但当你增加上下文窗口、同时服务更多用户或加大批处理大小时,就可能会出现内存不足的情况。
这也解释了为什么量化带来的好处不止于能容纳更大的模型。减小权重占用空间可以腾出内存,用于更大的KV缓存、更多并发请求或更大的批处理。
这也是更广泛的GPU经验教训。
性能不仅取决于GPU能执行多少运算,还取决于什么数据占据了内存、推理过程中移动了多少数据,以及这些数据能被复用的频率。
我已经撰写了关于GPU实际工作原理以及为什么内存移动是LLM推理性能核心的完整解析。
文章全文如下。
相似文章
LLM的GPU内存计算 (2026版)
一份实用指南,解释了如何根据参数量和量化级别计算LLM的VRAM需求,以及KV缓存、激活值和批处理带来的额外开销。
@_avichawla: 一个棘手的LLM面试题:你在vLLM上部署推理模型,长序列时GPU内存总是不够用。于是你加入KV缓存压缩,驱逐了90%的缓存token。显存占用依旧,GPU仍然内存不足。为什么?
解释了为什么在vLLM上部署推理模型时,驱逐90%的KV缓存token无法释放GPU内存,原因是分页注意力碎片化。同时介绍了NVIDIA的TriAttention解决方案,可实现2.5倍加速和10.7倍内存缩减。
@_avichawla: LLM推理中的预填充与解码。你是否注意到,LLM的第一个令牌总是需要片刻才出现…
解释LLM推理的两个阶段——预填充和解码,详细说明GPU瓶颈如何从预填充时的计算受限转变为解码时的内存受限,以及KV缓存的重要性。
@akshay_pachaar:每个推理引擎都犯了同样的错误。像 vLLM 或 SGLang 这样的推理引擎,是位于你的请求与模型权重之间的软件……
LMCache 是一个开源的 KV 缓存管理层,它将缓存 I/O 与计算分离,可插入 vLLM、SGLang 和 TensorRT-LLM,通过并行化缓存查找和共享 GPU 内存,实现高达 14 倍的首 token 延迟降低和 4 倍的解码加速。
内存
解释了为什么由于KV缓存随上下文长度和并发用户数扩展,LLM推理越来越受内存带宽限制,以及像vLLM和PagedAttention这样的系统如何提高内存利用率。