↓ Skip to main content

KV 缓存优化分别减少了什么成本?

·114 words·1 min
Jinyu Chen
Author
Jinyu Chen
问题驱动的个人知识库

判断归属:AI 候选。 定义与文献事实注明来源;例子、推导和组织方式是本次整理的解释,尚未经过用户逐项确认。

Different-costs
#

KV 缓存用存储换掉历史计算,但“缓存优化”不是单一操作。必须先指明重复的是哪项工作、浪费的是哪些字节、经过哪条链路,以及是否允许改变数值结果。以下是按机制建立的分析框架,不是最新论文性能排名。

缓存对象也要区分:预处理缓存保留分词等变换的结果;完整输出缓存保留已经生成的回答;KV 缓存保留模型的中间状态。前者需匹配输入与变换规则,回答复用还需满足完整请求及所依赖数据等条件,不能仅因问题文字相同就断言输出仍适用。它们跳过的计算环节不同。以下分类只讨论 KV。

目标代表机制直接改变什么不自动保证什么
避免同一前缀重算请求内 KV 复用、跨请求前缀共享需要重新执行的前缀计算命中率和端到端加速
减少分配浪费按块按需分配、共享块已分配与实际数据间的空隙每个 token 的 KV 元素更少
减少实际数据量量化、结构改变、保留部分状态元素字节数或保存的向量数所有任务精度不变
扩展设备可承载状态卸载至其他存储层数据所在位置和设备驻留量访问延迟下降
提高访问与执行效率预取、批处理、算子组织等待和传输重叠、硬件利用突破物理带宽上限

后三行是一般成本分析;本文没有用未核验的论文倍数为它们背书。

Paging
#

连续大块预留可能为尚未生成的 token 占据显存,序列结束后也可能留下难利用的空隙。PagedAttention 将逻辑上的连续 KV 序列分成固定 token 数的块,通过块表映射到非连续物理空间,按需分配,并允许适当的共享。原论文 §4.1–4.2支持这项机制。

分页不改变“每个 token 有哪些 KV”。例如理论数据为100单位,而连续预留占200单位,分块可以减少后100单位的浪费;不能由此声称理论 KV 从100变成50。最后一块仍可能有未用空间,块大小也影响元数据及访问组织。

Prefix-sharing
#

如果多个请求在同一模型条件下共享相同前缀,其前缀 KV 已经相同。RadixAttention 用 token 序列的 radix tree 管理缓存,支持查找、复用和淘汰;机制见SGLang §3 与附录 A.1。这既可能避免重复 prefill,也可能让请求共享状态。

收益取决于可命中的前缀长度、缓存能否保留到下一次使用及调度。相同后缀若前面的上下文不同,其隐状态通常不同,不能直接复用;相同自然语言含义更不等于相同 KV。复用是由数据依赖保证的,不是由相似度保证的。

Capacity-and-transfer
#

压缩降低需保存或读取的有效字节数,但量化误差、状态删除、重建开销和元数据应一起计入。重新排列 K/V 对与删除 K/V 对不同:只有同时保持注意力掩码、位置偏置和逻辑位置对应关系一致,同步置换才保持原有加权聚合;删除元素通常改变 softmax 分母及输出。

卸载可以腾出设备显存,但之后每次访问可能经过较慢链路。可用一个粗略成本式识别问题:

ttransfer≈r ℓ+DBWeff, t_{\mathrm{transfer}}\approx r\,\ell+\frac{D}{\mathrm{BW}_{\mathrm{eff}}},

其中 rr 为串行交互轮数、ℓ\ell 为每轮等待、DD 为数据量。这是分析模型,省略排队、协议重叠和拓扑竞争。减小 DD、减少 rr、提高有效带宽解决不同项;如果等待主导,单纯加带宽不会同比降低总时间。预取可隐藏一部分等待,但仍要传输相应字节。

Evaluation
#

比较方案时,应同时记录模型和上下文长度、并发与请求分布、硬件/链路、数值精度、缓存命中及测量指标。首 token 延迟反映 prefill 等工作,逐 token 延迟反映 decode 的稳态表现,吞吐还受批量、调度与内存容量影响。只给一个加速倍数无法判断机制是否适合另一种负载。

前置依赖:KV 的大小与单步成本给出可用于检查数量级的公式。开放方向:基础机制的可检验边界保留需要实际测量的任务,未经核验的论文数字不在本页传播。

Revision
#

2026-10-12:将重复的论文名列表重组为成本分类;移除缺少实验条件与可靠出处的性能倍数,区分分页、前缀复用、压缩及卸载。分类与成本模型均为 AI 候选。