KV Cache缓存机制
一句话总结
KV Cache通过缓存已计算的Key和Value向量,避免自回归生成时的重复计算,是大模型高效推理的基础机制。
核心概念
自回归生成中,每生成一个新token都需要对之前所有token计算注意力。如果每次都重新计算所有token的K、V向量,计算量随序列长度平方增长。KV Cache的做法是:首次(prefill阶段)计算所有输入token的K、V并缓存,此后每个解码步只计算新token的Q、K、V,将新K、V追加到缓存中,用完整缓存计算注意力。这将每步计算复杂度从O(n)降到O(1)(仅一个token的前向传播)加O(n)的注意力计算。
为什么重要
KV Cache是大模型推理框架(vLLM、TGI、TensorRT-LLM)的核心组件。没有KV Cache,生成1000个token需要重复计算约50万次K、V变换。KV Cache的大小直接决定了最大batch size和序列长度,是推理系统设计的核心约束。
实践要点
KV Cache内存 = 2 * 层数 * KV头数 * 头维度 * 序列长度 * batch_size * 数据精度。以LLaMA-2 70B为例,8个KV头、128维、80层,4096长度的单条KV Cache约占640MB(fp16)。vLLM使用PagedAttention动态分配KV Cache,避免内存碎片。可通过量化KV Cache(如FP8/INT8)进一步压缩。
常见误区
误区一:认为KV Cache只是简单的空间换时间。实际上它改变了推理的计算模式和系统架构。误区二:忽视KV Cache的内存管理问题,不同请求的序列长度不同导致内存碎片化严重。误区三:不区分prefill和decode阶段的不同计算特征,前者是计算密集型后者是内存密集型。