KV Cache 的隐性成本:为什么推理服务器在算力耗尽前就内存溢出
大模型推理服务中,显存往往在 GPU 算力被吃满之前就告急,症结在于 KV Cache 的显存占用。本文给出显存预算的量化公式,把 KV Cache 开销拆解为模型参数量、序列长度、并发请求数等变量的函数,并针对三种典型流量模式——长上下文、突发并发、混合负载——分别给出对应的优化策略。核心结论是:在有限 VRAM 下提升吞吐,关键不是堆算力,而是把显存预算用在刀刃上,通过量化、分页缓存与显存回收等工程手段,让 KV Cache 不再成为推理服务的瓶颈。
在部署大模型推理服务时,工程师最常遇到的诡异现象是:GPU 的计算利用率还没跑满,服务却已经因为显存溢出(OOM)而崩溃。直觉上,算力不够可以排队等待,但显存不够就是硬性的物理上限,一旦越线整个进程直接退出,没有任何缓冲余地。这种现象的幕后推手,正是被长期忽视的 KV Cache。在大模型推理中,每一层 Transformer 的键值(Key 和 Value)张量都需要在解码阶段被反复读取,如果每次生成新 token 都重新计算,算力成本会呈指数级爆炸。因此主流推理框架选择把这些张量暂存在显存里,也就是 KV Cache,用显存换算力。但代价是,KV Cache 占用的显存会随着上下文长度和并发请求数线性增长,而且它无法像模型权重那样被量化压缩,这就让显存成了推理服务最脆弱的环节。要理解这个问题的量级,可以先看显存预算的基本公式。
一个批处理中的 KV Cache 总占用,大致等于批大小乘以序列长度,再乘以模型层数,最后乘以每个注意力头的维度与键值张量的数据类型字节数。从这个公式能直接读出三个杠杆:并发批大小、序列长度、以及模型本身的架构参数。比如一个 70B 参数、32 层、128 个注意力头的模型,在 FP16 精度下,单条序列每增长一个 token,就要多占用数百 KB 显存。当并发请求达到几十条、每条上下文长达数万 token 时,KV Cache 的占用会迅速超过模型权重本身,这正是推理服务器在算力耗尽前就内存溢出的根本原因。理解了显存预算的构成,接下来就要针对不同的流量模式选择对应的优化策略,因为不同场景下显存浪费的机制完全不同。第一种是长上下文模式,典型场景是文档问答、代码库分析这类需要喂入数万 token 的请求。这类负载的痛点是序列长度这个变量被拉到极大,KV Cache 随长度线性膨胀。
对应的核心优化是量化,把 KV Cache 从 FP16 压缩到 INT8 甚至 INT4,可以近乎按比例地削减显存占用,同时几乎不损失生成质量。第二种是突发并发模式,典型场景是促销、热点事件带来的瞬时请求洪峰。这类负载的痛点是批大小被瞬间推高,如果框架采用静态批处理,要么为了安全把批大小设得很小导致吞吐低下,要么一次接太多请求直接 OOM。对应的核心优化是分页 KV Cache,也就是 vLLM 等框架采用的 PagedAttention 技术。它把每条序列的 KV Cache 切分成固定大小的页,按需分配、用满回收,彻底消除了为防 OOM 而预留的显存碎片,显存利用率可以从不到 50% 提升到 90% 以上。第三种是混合负载模式,也就是长上下文和突发并发同时存在的真实生产环境。这类负载的痛点是没有一种单一策略能同时应对,需要组合拳。
此时除了量化和分页缓存,还需要引入显存回收机制和请求调度策略,比如对空闲请求的 KV Cache 做换出、根据请求优先级动态调整批大小,甚至在显存紧张时主动丢弃低优先级请求。通过这种分层治理,才能在混合负载下保持稳定的吞吐。从行业影响来看,KV Cache 的显存管理已经从一个工程细节,上升为推理服务竞争力的核心要素。对云厂商而言,谁能把单卡并发吞吐做高,谁就能在按量计费的市场上给出更低的价格,这直接决定了推理业务的利润率。对应用开发者而言,理解 KV Cache 的显存规律,能帮助他们在选型时更准确地预估单卡能支撑多少并发,避免生产环境出现不可预测的 OOM。对端侧 AI 而言,这个问题更加尖锐,因为边缘设备的显存或内存远比数据中心受限,量化和分页缓存这类技术在受限硬件上的收益被进一步放大。这也解释了为什么近期推理优化的研究热点,正从单纯追求模型精度,转向显存效率与吞吐的平衡。
展望未来,几个信号值得关注。一是量化技术的持续下沉,KV Cache 量化正在从 INT8 向更低精度演进,同时保持质量损失可控,这将进一步压缩显存占用。二是显存回收与调度机制的智能化,未来的调度器可能会根据实时流量预测,主动预判显存压力并提前做请求排队或换出,把 OOM 从被动应对变为主动规避。三是推理框架在架构层面把显存效率作为一等公民,而不是事后补丁,这意味着量化、分页、回收等能力会被更原生地整合。对从业者来说,真正值得警惕的认知误区是:把推理性能问题简单归咎于算力不足。事实是,在大多数生产场景中,限制吞吐的瓶颈不是 GPU 算得慢,而是显存被 KV Cache 占满导致并发上不去。谁能把显存预算用到极致,谁就能在同样的硬件上跑出更高的吞吐、更低的成本,这正是在大模型推理落地竞争中,真正拉开差距的地方。
Sources
FAQ
为什么大模型推理服务器常在算力耗尽前就发生显存溢出(OOM)?
解码阶段 KV Cache 会缓存每层 Transformer 的键值张量以换取算力,其占用随上下文长度与并发请求数线性增长,且无法像模型权重那样被量化压缩,因而在算力用尽前就占满显存导致进程退出。
为什么 KV Cache 的显存占用会成为推理服务的瓶颈?
当并发请求增多、每条上下文长达数万 token 时,KV Cache 占用会迅速超过模型权重本身,成为有限 VRAM 下限制吞吐的关键因素,直接决定单卡能支撑的并发规模与推理成本。
面对 KV Cache 的显存压力,未来的优化方向是什么?
量化技术正从 INT8 向更低精度演进,显存回收与调度将更智能化——根据实时流量预判压力、主动排队或换出,推理框架也会把显存效率作为一等公民原生整合。