KV Cache

别名:KV 缓存 / Key-Value Cache

自回归推理时缓存历史 token 的 Key/Value,避免每生成一个 token 都重算整段上下文。

更新于 2026/11/03
LLM推理显存

一句话定义

KV Cache 是在 Decoder-only 模型推理时,把每一层历史 token 的 Key 和 Value 存下来,生成新 token 时直接复用,而不是重新计算整段上下文。

为什么需要它

自回归生成每次只产出下一个 token。如果没有缓存,生成第 t 个 token 时,模型要把前面 t-1 个 token 的 K/V 全部重算一遍。序列越长,重复计算越多,推理成本会迅速膨胀。

有了 KV Cache,新 token 只需要计算自己的 Q、K、V;历史部分直接读缓存,然后把自己的 K/V 追加到缓存末尾。

KV Cache 在解码阶段复用历史 Key/Value

显存怎么算

KV Cache 的大小大致为:

2 × 层数 × KV 头数 × head_dim × 序列长度 × batch × 精度字节数

其中前面的 2 表示 Key 和 Value 两份。它随序列长度和 batch 线性增长,因此长上下文、高并发场景下,KV Cache 往往是显存占用的主要来源之一。

常见优化

  • MQA / GQA:让多个 Query 头共享少量 KV 头,直接减少缓存体积。
  • PagedAttention:把 KV Cache 切成固定大小的块,按需分配,减少显存碎片。
  • 量化缓存:用 FP8、INT8 等更低精度存储 K/V,以精度换显存。
  • 前缀缓存:相同系统提示词或文档前缀只计算一次,跨请求复用。

常见误区

  • KV Cache 只加速 Decode 阶段;Prefill 阶段仍然要处理完整输入。
  • 它缓存的是每层的 K 和 V,不是整个模型的隐藏状态。
  • 缓存不是“免费”的:省了计算,但会额外占用显存。长上下文场景需要和 Attention 的计算量一起权衡。

相关概念

  • Attention:K/V 的来源,也是缓存机制服务的计算过程。
  • Transformer:KV Cache 依附于每一层注意力结构存在。