Chengshuo Dai
Back to Blog

揭秘KV Cache:为什么大模型推理这么吃显存?

Inference Optimization

在本地部署开源模型的时候,我发现即使模型只有 7B,并发一高,显存瞬间就爆了。今天研究了一下推理优化,终于搞懂了罪魁祸首:KV Cache。

大模型生成文本是一个字一个字往外蹦的(自回归)。每次生成新词,都要把前面所有的词重新计算一遍 Attention,这太浪费算力了。所以工程师们发明了 KV Cache,把前面算过的 Key 和 Value 矩阵缓存下来。

算力是省下来了,但显存遭殃了。上下文越长,KV Cache 占用的显存就越大,而且是线性增长的!

看 vLLM 框架原理的时候,被 PagedAttention 的设计惊艳到了。它借鉴了操作系统的虚拟内存分页机制,把 KV Cache 切成一个个小块(Block)动态分配,解决了显存碎片化的问题。

"PagedAttention allows storing continuous keys and values in non-contiguous memory space."

这个跨界借鉴真的太牛了!搞 AI 到底还是离不开扎实的计算机基础(OS、体系结构)。先记住这个结论,以后有机会一定要去翻翻 vLLM 的源码。