KV Cache 才是大模型推理能跑起来的底层逻辑
很多人在聊推理成本,但很少有人深挖 KV Cache 到底是怎么把计算量给砍下来的。如果不搞清楚这个机制,你很难理解为什么长文本会导致显存爆炸,以及为什么推理速度在生成后期会变慢。
说白了,AI 推理的性价比博弈,本质上就是计算量和显存占用之间的权衡。
下一篇
数据中心电力冗余是个巨大的坑 →
简单来说,大模型在生成每一个 token 时,都要回顾之前所有的 token。如果每次都重新计算一遍之前的注意力权重,计算量是 $O(n^2)$ 级别,显存和算力根本扛不住。KV Cache 的核心就是把之前计算过的 Key 和 Value 向量直接存在显存里,下次直接调用,把重复计算给省掉了。
但这个“省钱”技巧是有代价的,它直接把计算压力转嫁给了显存。
在实际部署大模型时,经常会遇到这种显存溢出(OOM)的情况:
RuntimeError: CUDA out of memory. Tried to allocate 2.5GB (GPU 0), but only 1.2GB is free.这时候排查方向就不能只盯着模型权重,得看 KV Cache 占了多少。对于 7B 规模的模型,随着 Context Window 增加,KV Cache 增长的速度非常惊人。如果要优化这块,可以尝试以下几个实操方向:
- 量化 KV Cache:把 FP16 的缓存压到 INT8 甚至 INT4,直接给显存瘦身。
- 使用 PagedAttention:像 vLLM 这种框架通过类似操作系统虚拟内存的分页管理,解决了缓存碎片化问题,极大提升了吞吐量。
- 调整 RoPE 旋转位置编码:在处理超长文本时,关注一下外推能力,防止缓存过大导致精度崩塌。
说白了,AI 推理的性价比博弈,本质上就是计算量和显存占用之间的权衡。
