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增长极快,需要系统性优化。