🧠 LLM ACCELERATION EXPLAINER

什么是大模型的 KV Cache(键值缓存)

一句话搞懂:大模型写字时的“显存便利贴”,让它不用每写一个字就把整本书从头重新算一遍!
❌ 没有 KV Cache (没有便签本)

健忘症写手

写第 100 个字时,必须把前 99 个字全部从第 1 页重新算一遍
字 1 重算: 字1+字2 重算: 字1+字2+字3 重算: 字1+字2+字3+字4 💥
计算量 O(N²) 爆炸 越往后写越奇慢无比 90% 都在做无用功
VS
✅ 拥有 KV Cache (随手记便签)

学霸笔记流

写过的内容算完直接贴在显存墙上,每次只算当前这 1 个新字!
显存便利贴墙 (KV Cache) KV₁ KV₂ KV₃ +新字
计算量 O(1) 恒定极快 字字丝滑秒出 以显存空间换计算时间

🔍 30秒搞懂:Transformer 里的 Q、K、V 是什么?

就像在图书馆查资料的一套标准动作

Q

Query(查询)

“你在搜索框里输入的关键词”

代表当前正在生成的这个词想去向前面的词打听什么信息(比如主语是谁、时态是什么)。

K

Key(键 / 索引标签)缓存进显存

“书架上贴的分类标签与书名”

代表每个历史词暴露给外界的特征。Q 会和所有的 K 计算相似度,决定对谁更关注。

V

Value(值 / 真正内容)缓存进显存

“书本里真正写着的文章正文”

代表每个历史词真正的含义与上下文语义。根据 Q 和 K 匹配的分数加权提取 V。

🎮 互动实验:亲手对比“有无 KV Cache”的计算量

切换模式并点击「生成下一个词」,观察重算次数与显存占用的真实变化

📝 正在吐字生成 (Text Output) 3 / 8 词
💾 GPU 显存便签板 (KV Cache) 已存 3 个词的 KV
3 次
当前这 1 步计算的词数 (FLOPs)
6 次
累计总计算量 (Total Compute)
~1.2 MB
KV Cache 显存占用 (VRAM Used)
🐘

1. KV Cache 唯一的缺点是什么?

吃显存太狠! 随着对话越来越长、并发用户越来越多,KV Cache 会无休止地膨胀。在 128k 超长上下文中,KV Cache 占用的显存甚至会远远超过大模型本身的权重大小

🚀

2. 工业界如何给 KV Cache 减肥?

MQA / GQA(分组查询注意力):多个 Q 共用一套 K/V 便签,直接把 Cache 体积砍掉 75%!
PagedAttention(vLLM):像操作系统虚拟内存分页一样管理显存碎片。
KV 8bit/4bit 量化:把浮点数便签压缩存储。

🔄

3. Prefill 和 KV Cache 是什么关系?

Prefill 阶段负责批量创建并写满初始的 Prompt KV Cache。
Decode 阶段负责边读旧缓存、边往后追加新生成的 1 条 KV Cache。
两者相辅相成,构成了现代 LLM 极速推理的基石!