Back to notes

KV Cache 为什么会吃显存?

梳理 KV Cache 的数据结构、显存估算方式,以及长上下文为什么会放大问题。

Updated Jun 20, 2026 1 min read

KV Cache 存什么

KV Cache 保存每一层 attention 计算产生的 key 和 value。生成新 token 时,模型复用历史 key/value,避免重复计算整个上下文。

显存占用公式

一个简化估算:

KV memory = batch_size * sequence_length * num_layers * hidden_size * 2 * bytes_per_element

其中 2 表示 key 和 value 两份缓存。

batch size、layer 数、head 数、sequence length 的影响

  • batch_size 增加会线性放大 KV Cache。
  • num_layers 越多,每层都需要保存 KV。
  • sequence_length 是长上下文成本的核心变量。
  • KV head 数和 head dimension 决定每个 token 的缓存大小。

为什么长上下文会放大问题

长上下文会让每个请求持有更大的缓存。即使 decode 每步只生成一个 token,系统仍然需要读取并管理越来越长的历史缓存。

KV Cache 优化的目标不是只减少显存,还要在吞吐、延迟和命中率之间做工程权衡。

后续实验计划

  1. 计算不同模型规格下的理论 KV Cache。
  2. 使用 profiling 工具验证实际显存占用。
  3. 比较 fp16、fp8 KV Cache 与 offloading 的影响。