🟣 KV Cache:让 LLM 推理快 10 倍的小秘密
🟣 KV Cache:让 LLM 推理快 10 倍的小秘密
一个 LLM 模型如果关掉 KV Cache, 生成同样长度的文字会慢 10 倍以上。 但 99% 的用户从没听过它。 这是大模型推理工程最重要的优化之一。
🟣 AI 深度派专栏 · 第 S2-05 期 📅 2026年9月24日 ✍️ 小敏说 AI
💡 本文要点:本文讲清 KV Cache 是什么、为什么没它推理慢到不能用、它占多少显存、当下主流的压缩技术(MQA / GQA / MLA),以及它对”长上下文”模型的影响。
🎯 本文导读
- 🔹 LLM 推理在干什么
- 🔹 没 KV Cache 的世界
- 🔹 KV Cache 怎么省时间
- 🔹 它占多少显存
- 🔹 三代压缩:MQA → GQA → MLA
一、🔁 LLM 推理在干什么
LLM 生成文字是自回归的:每生成一个 Token,把前面所有 Token 重新过一遍模型,然后输出下一个。
Step 1: 输入 [我] → 输出 [是]
Step 2: 输入 [我, 是] → 输出 [小]
Step 3: 输入 [我, 是, 小] → 输出 [敏]
...
💬 关键观点:生成 1000 个 Token,模型理论上要 forward 1000 次。
二、😱 没 KV Cache 的世界
Transformer 的 Attention 每一层需要计算:
Attention(Q, K, V)
其中 K、V 是当前所有 Token 的 Key / Value 矩阵
如果不缓存:
| Step | 重复计算的 K/V |
|---|---|
| 1 | 1 个 Token 的 K/V |
| 2 | 重新算前 2 个 Token 的 K/V |
| 3 | 重新算前 3 个 Token 的 K/V |
| N | 重新算前 N 个 Token 的 K/V |
总计算量 = O(N²),N 越长越爆炸。
三、💡 KV Cache 的核心思想
把之前算过的 K、V 矩阵存起来,下一步直接用:
Step 1: 算 [我] 的 K/V → 存进 cache
Step 2: 只算 [是] 的新 K/V,加进 cache
Step 3: 只算 [小] 的新 K/V,加进 cache
...
🎯 一句话总结:每次只算”新 Token”的 K/V,旧的从内存里取。复杂度从 O(N²) → O(N)。
✅ 效果:生成第 N 个 Token 的计算量恒定,与上下文长度无关(线性增长)。
四、💾 它占多少显存
公式(每个 Token):
KV Cache size = 2 × num_layers × num_heads × head_dim × precision
举例(Llama 3 70B,FP16):
- 80 层 × 64 头 × 128 维 × 2 字节 × 2(K + V)= 2.6 MB / Token
如果上下文 32K:
- 32000 × 2.6 MB ≈ 80 GB!
⚠️ 重要提醒:KV Cache 经常比模型权重本身还大。这就是为什么长上下文推理 = 显存大户。
五、🗜 三代压缩演进
第一代:MHA(Multi-Head Attention)
- 每个 Head 都有独立 K / V
- 显存最大
第二代:MQA(Multi-Query Attention)
- 所有 Head 共享一组 K / V
- 显存 ÷ Head 数
- 代价:略损精度
第三代:GQA(Grouped-Query Attention)
- 折中:一组 Head 共享一份 K / V(Llama 3 用)
- 显存 ÷ Group 数
- 代价:几乎无损
DeepSeek 黑科技:MLA(Multi-head Latent Attention)
- 把 K / V 投影到低维潜空间再存
- DeepSeek V3 用,KV Cache 缩减 90%+
- 代价:略增计算
| 方案 | KV Cache 大小 | 用谁 |
|---|---|---|
| MHA | 100% | GPT-3 时代 |
| MQA | ~12% | PaLM |
| GQA | ~25% | Llama 3 / Qwen |
| MLA | <10% | DeepSeek V2/V3 |
六、🛠 工程实现要点
| 技术 | 解决什么 |
|---|---|
| PagedAttention(vLLM) | KV Cache 像虚拟内存分页管理 |
| 连续批处理 | 多用户混合批,不同长度共存 |
| Prefix Caching | 系统提示词的 KV Cache 复用 |
| 量化 KV | INT8 / INT4 存 K/V |
七、❌ 常见误区
| 误区 | 真相 |
|---|---|
| ❌ KV Cache 是”模型变聪明”的技巧 | ✅ 是推理优化,与能力无关 |
| ❌ 它和”训练”有关 | ✅ 只在推理时有 |
| ❌ KV Cache 越大越好 | ✅ 越大越占显存 |
| ❌ 1M 上下文 = 模型能力强 | ✅ KV Cache 撑得起才行 |
八、🎁 给非工程读者的 KV Cache 心法
🔑 KV Cache = LLM 推理的"短期记忆"
🔑 没它,推理慢 10 倍
🔑 它常常比模型本身还占显存
🔑 长上下文的真正瓶颈,是 KV Cache 不是模型
🔑 MLA 等技术,是把"长上下文"做便宜的关键
📮 今日话题:你觉得未来 100M 上下文窗口,是先靠 MLA 类技术还是新架构?
🔮 下一篇预告:s2ep06《Flash Attention:一个数学技巧把内存省 5 倍》
🟣 本系列是「小敏说 AI · AI 深度派专栏」第 S2-05 期。 关注公众号 小敏说 AI,回复「深度派」领取第二季合集。