KV Cache深入:显存与速度的平衡


一句话总结

KV Cache缓存已计算的Key-Value张量避免重复计算,是加速自回归生成的核心技术,但其显存占用随序列长度线性增长,是推理的主要瓶颈。

核心概念

自回归生成中,每个新token需要attend到所有历史token的Key和Value。KV Cache将这些中间结果缓存起来,将复杂度从O(n²)降到O(n)。显存占用公式:2 × 层数 × 隐藏维度 × 序列长度 × 批大小 × 精度字节数。优化方向:Multi-Query Attention(MQA)让所有注意力头共享KV,显存减少到1/h;Grouped-Query Attention(GQA)折中方案,每组共享KV。滑动窗口注意力限制KV Cache的最大长度。

为什么重要

对于70B模型处理4K长度序列,单条请求的KV Cache就可能占用数GB显存。在高并发场景下,KV Cache往往比模型权重本身占用更多显存,成为限制批大小和并发量的瓶颈。

实践要点

使用GQA架构(Llama-2/3均采用)可显著降低KV Cache;量化KV Cache到INT8/FP8可减半显存;PagedAttention(vLLM)解决KV Cache碎片化问题;合理设置最大序列长度避免过度预分配。

常见误区

误区一:KV Cache只影响显存——它还影响内存带宽,是decode阶段的速度瓶颈。误区二:更大的GPU显存就能解决问题——高并发下KV Cache增长极快,需要系统性优化。