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 优化的目标不是只减少显存,还要在吞吐、延迟和命中率之间做工程权衡。
后续实验计划
- 计算不同模型规格下的理论 KV Cache。
- 使用 profiling 工具验证实际显存占用。
- 比较 fp16、fp8 KV Cache 与 offloading 的影响。