记忆的代价:KV Cache 军备竞赛

谱系双栏(架构侧 + 系统侧,统一 KV bytes/token 口径)· 大海捞针只留可回源离散点 · Repeat After Me 的 Dⁿ vs log_D|S| · 可变成本 vs 固定成本交叉点账本

2026-10-19 全量重建:旧版三条题眼(Engram 的「KV 归零」、Mamba-3 的 34%、Repeat After Me 的 2^d)回源后全部口径错位,已按论文正文逐条更正;未能回源的数字一律置灰或留白。

口径更正:旧版一列「复杂度」把三种量混为一谈 —— MHA 标 O(n²) 是 prefill 计算口径,MLA 标 O(n·d_c) 是 decode 口径,MQA/GQA 的 O(n²/h) 更是把 显存当成了 FLOPs。本页统一只给 KV Cache bytes / token;prefill FLOPs 与 decode FLOPs 是另外两个量,不再合成一列。

🧠 架构侧 · 改的是 KV 公式

按真实年份升序排列(旧版把 2023 排在 2024 之后,却画着一条时间轴连接线)

🧠
MHA 多头注意力2017 · Google(Transformer)📖 已回源

每层每头各存一套 K 与 V。所有 KV 军备竞赛的起点。

2 · L · h · d_h · b

L 层数 / h KV 头数 / d_h 每头维度 / b 每元素字节

🔴 旧版错在哪:旧版标 O(n²) 是 prefill 计算口径,不是显存口径

👁️
MQA 多查询注意力2019 · Google(Shazeer)📖 已回源

把 KV 压到「头数分之一」。PaLM 系列采用。

2 · L · d_h · b

所有 query 头共享 1 套 KV

🔴 旧版错在哪:旧版标 O(n²/h) —— 错把显存当 FLOPs:MQA/GQA 只减 KV 显存,attention 计算 FLOPs 仍是 O(n²·d)

📦
GQA 分组查询注意力2023 · Google(Ainslie 等)📖 已回源

MHA 与 MQA 的折中。Llama 3 用 32 query 头共享 8 组 KV。

2 · L · g · d_h · b

g = KV 组数,1 ≤ g ≤ h

🔴 旧版错在哪:旧版 org 写「Meta (Llama 2)」—— Llama 2 是采用方,提出方是 Google;复杂度同样错用 FLOPs 口径

🌊
SSM / Mamba2023 · CMU / Princeton📖 已回源

彻底抛弃 KV,用固定大小隐状态压缩历史。代价是精确检索需要额外机制。

0(固定状态)

状态大小与序列长度无关

🔴 旧版错在哪:旧版时间轴把 2023 排在 2024(MLA)之后却画着连接线

🌀
MLA 多头潜在注意力2024 · DeepSeek-V2📖 已回源

只缓存一个低秩潜在向量 c,K/V 推理时还原。近无损地把 KV 砍一个数量级。

L · (d_c + d_rope) · b

d_c 压缩潜在维度 / d_rope 解耦 RoPE 维度;K、V 都由同一个 c 还原,故不 ×2

🔴 旧版错在哪:旧版标 O(n·d_c) 是 decode 口径,与 MHA 的 O(n²)(prefill 口径)跨阶段拼在同一列

🧬
混合交错 5:12025 · B. Yang 等(Mamba-3 采用)📖 已回源

用 1/6 的 KV 换回接近满血的精确检索。混合架构必然存在的实证。

(1/6) × 该模型的 full-attention KV

每 5 层 SSM 配 1 层 NoPE self-attention

🦬
Mamba-32026 · CMU / Princeton📖 已回源

指数梯形离散化、复值状态更新(解锁 state tracking)、MIMO。真实失败模式是 SWDE/FDA 类非结构化抽取,不是合成 NIAH。

0(固定状态)

复值状态更新 + MIMO,不引入 KV

🗄️
Engram 条件记忆2026 · DeepSeek(arXiv:2601.07372)📖 已回源

把「局部依赖重建」外包给 O(1) 查表,让 attention 腾出容量做全局上下文 —— 因此间接提升长上下文检索,但不削减 KV。

不改变 KV 公式 —— 它是参数记忆,不是 KV 压缩

100B N-gram embedding 参数表,O(1) 查表

🔴 旧版错在哪:旧版写「把静态知识存进 DRAM 哈希表,KV Cache 趋近于零」—— 论文全文零命中 KV cache 削减数字,且卸载的是 100B 模型权重而非上下文 KV

🛠️ 系统侧 · 不改公式,改的是浪费

旧版 4 个 Tab 全是架构侧,系统侧完全缺席 —— 2026 年 KV 的主战场其实在这里

📄
PagedAttention / 块状分配2023 · vLLM⚠️ 待验证

KV 能被「管理」的前提。常见引用称显存浪费从 60–80% 降到 <4%。

不减 bytes/token,减的是「浪费」

把 KV 切成固定块按需分配,消除预留式连续显存的碎片

🔁
前缀缓存复用(块级哈希 / RadixAttention)2024 · SGLang / vLLM / LMCache📖 已回源

2026 年真正决定 LLM 账单的不是上下文长度,是前缀命中率。详见本站「KV 房租」实验室。

命中部分按读价计费(各家 0.025×–0.1×)

相同前缀的 KV 块跨请求复用

🎚️
KV 量化(FP8 / INT4 / INT2)2024 · KIVI / KVQuant 等⚠️ 待验证

FP8 已是 2026 线上默认;KIVI / KVQuant 走 INT4 / INT2。

b: 2(FP16)→ 1(FP8)→ 0.5(INT4)→ 0.25(INT2)

直接乘在 bytes/token 公式的 b 上

🔀
Prefill / Decode 分离部署2025 · 工业界通用做法⚠️ 待验证

两阶段的瓶颈不同,混部会互相拖累。本站不给出具体加速倍数(未回源)。

prefill 算力受限 / decode 带宽受限

两阶段资源画像不同,拆开部署各自扩缩

🪜
KV 卸载三级:HBM → DRAM → NVMe2026 · Engram 论文明确的多级缓存层级📖 已回源

Engram 论文把 100B 参数表放 host DRAM,实测吞吐损失 ≤2.8% —— 靠确定性寻址 + 预取与首个 block 计算重叠。

容量换带宽

HBM 最快最小 / DRAM 居中 / NVMe SSD 最大最慢

· 本工具不调用任何 LLM,也不联网;所有数值来自下方常量(逐条回源)或浏览器内公式计算。

· 📖 = 论文 / 官方文档正文可逐字定位;💳 = 厂商定价页;⚠️ = 未能回源,已置灰降级;🧮 = 本站按公式算出。

· 「KV bytes / token」是本工具统一口径;prefill FLOPs 与 decode FLOPs 是另外两个量,不再合成一列「复杂度」。

· 一手源:arXiv:2601.07372 · arXiv:2603.15569 · arXiv:2402.01032v2

· 数据快照日:2026-10-19。本工具不联网、不调用 LLM,全部数值来自本页常量与浏览器内计算。