首篇系统性覆盖 KV cache 管理全栈的综述:构建 token/model/system 三层 taxonomy,分类梳理 100+ 方法(选择、预算分配、合并、量化、低秩分解、注意力分组、非 Transformer 架构、分页内存、调度、异构硬件),并汇总 23 个评测基准。
LLM 自回归推理中,KV cache 随序列长度线性增长,导致:

Paper Figure 1: 解码器 Transformer 架构示意。KV cache 在每一层、每个 head 独立累积,是内存和带宽的主要消耗者。
构建三层 taxonomy 组织 KV cache 管理策略:
| 层级 | 子类 | 核心思想 | 代表工作 |
|---|---|---|---|
| Token-level | Selection | 基于注意力稀疏性保留重要 token | H2O, StreamingLLM, SnapKV |
| Token-level | Budget Allocation | 非均匀分配 per-layer/per-head 预算 | PyramidKV, DuoAttention |
| Token-level | Merging | 合并冗余 KV pairs | D2O, KVMerger, MiniCache |
| Token-level | Quantization | 低比特压缩 KV 值 | KVQuant, KIVI, SmoothQuant |
| Token-level | Low-rank | SVD/张量分解降维 | LoRC, Palu, LESS |
| Model-level | Grouping/Sharing | GQA/MQA/跨层共享 | GQA, CLA, MLKV |
| Model-level | Architecture | 改变注意力机制或混合架构 | MLA, YOCO, Block Transformer |
| Model-level | Non-Transformer | SSM/RNN 替代方案 | Mamba, RWKV, RetNet |
| System-level | Memory Mgmt | OS 式分页/虚拟内存/前缀共享 | vLLM/PagedAttention, ChunkAttention |
| System-level | Scheduling | 前缀感知/抢占/层级调度 | RadixAttention, FastServe |
| System-level | Hardware-aware | 异构计算/I/O 优化/SSD 计算存储 | FlashAttention, NEO, InstInfer |
核心技术壁垒:将 KV cache 管理的三个层级(算法-模型-系统)统一到单一 taxonomy 中,揭示了各层级方法的互补性与组合爆炸问题 —— 跨层级集成(如量化+选择+调度联合优化)是当前研究空白,需要理解 attention 稀疏性在不同 workload 下的行为差异。
作为 survey 论文,本文不提供自身实验结果,但汇总已有方法的关键数据点:

Paper Figure 2: KV Cache 管理三层 taxonomy 全景。Token-level 无需架构修改,Model-level 需要重训,System-level 关注基础设施。三层方法正交可组合,但组合空间巨大。
本文的核心贡献是这棵 taxonomy tree。三层之间的关系:

Paper Figure 3: Token-level 优化子分类。Selection 是最成熟方向(21 种方法),quantization 和 merging 各有 10+ 种方案。
Token-level 五大子方向中,Selection 可进一步分为 static(一次性 prefill 后压缩)和 dynamic(解码过程中持续更新),dynamic 又分 permanent eviction 和 non-permanent(offload to CPU)两支。

Paper Figure 7: Model-level 优化子分类。从 MQA→GQA 到跨层共享再到非 Transformer 架构,压缩比逐步提升但代价也逐步增大(需更多重训)。

Paper Figure 8: 不同 QKV 共享技术比较。MHA → MQA → GQA → 跨层共享的演进路径清晰展示了 KV head 减少的递进策略。
本文为综述论文,形式化内容集中于 §2 的 KV cache 复杂度分析。
| 符号 | 定义 |
|---|---|
| $L$ | Transformer 层数 |
| $h$ | 每层注意力 head 数 |
| $t_c$ | 已缓存的 token 数 |
| $d_k, d_v$ | key/value 维度 |
| $d_x$ | 输入嵌入维度 |
| $\mathbf{\hat{K}}_i^{t-1}, \mathbf{\hat{V}}_i^{t-1}$ | 已缓存的 KV 矩阵 |
KV cache 节省的计算量(Eq. 10):
$$O(L \cdot h \cdot t_c \cdot t \cdot (d_k + d_v) + L \cdot h \cdot t_c \cdot (\Delta_1 + \Delta_2))$$
物理意义:节省的计算与缓存 token 数 $t_c$ 线性正比。第一项是 attention 计算节省($t_c$ 个 token 不需重新计算 QK + V 乘法),第二项是 QKV projection 和 output linear 层的节省。
KV cache 额外空间(Eq. 11):
$$O(L \cdot h \cdot t_c \cdot (d_k + d_v) \cdot \text{sizeof}(\text{Float16}))$$
物理意义:空间与 $L \cdot h \cdot t_c$ 线性增长。这是一个 time-space tradeoff —— 缓存越多 token,计算节省越大,但内存消耗也线性上升。当 $t_c$ 接近 GPU HBM 容量极限时,必须引入压缩/选择/offload 策略。
作为 survey 论文,本文的"实验"是对现有方法的系统对比与 benchmark 汇总。

Paper Table II: 21 种 KV cache selection 策略的系统比较。关键维度包括:是否保留 initial tokens(attention sink),是否永久驱逐,选择粒度(token/block/cluster/event),以及是否支持动态更新。
核心发现:

Paper Table III: KV cache budget allocation 策略比较。Layer-wise 分配(PyramidKV)与 head-wise 分配(AdaKV, DuoAttention)形成两大流派。
关键张力:PyramidKV 给下层更多预算 vs. retrieval-head 研究表明下层很少有 retrieval heads —— 这一矛盾暗示最优分配是 task-dependent 的。

Paper Figure 4: 注意力矩阵的稀疏性可视化。大部分 attention weight 集中在少数 token 上,验证了 KV cache selection 的基本假设 —— 只需保留 "Heavy Hitter" tokens 即可维持性能。
评测基准分三类:
| 步骤 | 论点 | 支撑 | 推进 |
|---|---|---|---|
| 1 | KV cache 是 LLM 推理的关键瓶颈 | §2.2.2 复杂度分析:空间 $O(L \cdot h \cdot t_c)$,bandwidth-bound 访问模式 | 需要系统性的优化框架 |
| 2 | 注意力具有内在稀疏性 | §4.1 Fig.4 实证 + Heavy Hitter 发现 + Attention Sink 现象 | Token-level selection/eviction 有理论基础 |
| 3 | Token-level 方法无需重训即可压缩 KV cache | §4: 5 大子方向(选择/预算/合并/量化/低秩)互补覆盖 | 但受限于固定架构,压缩比有天花板 |
| 4 | Model-level 修改可从根源减少 KV 需求 | §5: GQA → 跨层共享 → 非 Transformer 架构,MLKV 压缩至 GQA 的 1% | 但需重训,部署成本高 |
| 5 | System-level 优化在不改动模型/算法时仍有巨大空间 | §6: PagedAttention 消除碎片,RadixAttention 复用前缀,异构 offload 扩展容量 | 三层正交可组合 |
| 6 | 跨层级集成是最大未探索空间 | §8 结论:组合爆炸导致 cross-category integration underexplored | 未来工作的核心方向 |
论证逻辑:从问题(KV cache bottleneck)→ 观察(attention sparsity)→ 三层解法(token/model/system)→ gap(cross-layer integration)。每一层的讨论都以"Summary and Future Directions"收尾,指向跨层协同的缺失。
[实现未公开] — 本文为纯 survey,无自身代码实现。
| 方法 | 代码状态 | 仓库 |
|---|---|---|
| vLLM/PagedAttention | 开源 | vllm-project/vllm |
| FlashAttention | 开源 | Dao-AILab/flash-attention |
| StreamingLLM | 开源 | mit-han-lab/streaming-llm |
| H2O | 开源 | FMInference/H2O |
| SnapKV | 开源 | FasterDecoding/SnapKV |
| SGLang/RadixAttention | 开源 | sgl-project/sglang |
| Mamba | 开源 | state-spaces/mamba |
| RWKV | 开源 | BlinkDL/RWKV-LM |
| DeepSeek-V2 (MLA) | 开源 | deepseek-ai/DeepSeek-V2 |