判断归属: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 分母及输出。
卸载可以腾出设备显存,但之后每次访问可能经过较慢链路。可用一个粗略成本式识别问题:
其中 为串行交互轮数、 为每轮等待、 为数据量。这是分析模型,省略排队、协议重叠和拓扑竞争。减小 、减少 、提高有效带宽解决不同项;如果等待主导,单纯加带宽不会同比降低总时间。预取可隐藏一部分等待,但仍要传输相应字节。
Evaluation#
比较方案时,应同时记录模型和上下文长度、并发与请求分布、硬件/链路、数值精度、缓存命中及测量指标。首 token 延迟反映 prefill 等工作,逐 token 延迟反映 decode 的稳态表现,吞吐还受批量、调度与内存容量影响。只给一个加速倍数无法判断机制是否适合另一种负载。
前置依赖:KV 的大小与单步成本给出可用于检查数量级的公式。开放方向:基础机制的可检验边界保留需要实际测量的任务,未经核验的论文数字不在本页传播。
Revision#
2026-10-12:将重复的论文名列表重组为成本分类;移除缺少实验条件与可靠出处的性能倍数,区分分页、前缀复用、压缩及卸载。分类与成本模型均为 AI 候选。
