解码 · 部署 · 应用模块七 · 解码加速概念约 12 分钟
全量解码 vs 增量解码:KV 缓存
为什么生成第 1000 个词不用重算前 999 个
学完这节你能:
- 理解自回归生成的重复计算问题
- 掌握 KV 缓存的原理
- 知道 KV 缓存吃显存
自回归生成每次只多产出一个词。若每步都把整段序列重新前向(全量解码),计算量爆炸。增量解码用 KV 缓存避免重算。
- 观察:生成新词时,前面所有词的 Key、Value 每步都一样,没必要重算。
- KV 缓存:把已生成 token 的 K、V 存起来;每步只算新词的 Q、K、V,与缓存拼接做注意力。
- 代价:缓存大小 ∝ 层数 × 头数 × 序列长度 × head_dim,序列越长越吃显存(回想高效注意力那节)。
🔑 KV 缓存是「用显存换计算」:把 O(n²) 的重复计算降到每步 O(n),代价是缓存占显存。它也是 MQA/GQA/量化 KV 等优化要解决的对象。
自测KV 缓存(KV cache)的作用是:
// 带走一句话
增量解码用 KV 缓存存历史 K/V,每步只算新词,避免 O(n²) 重算;代价是缓存随序列长度吃显存。
独立练习
做到这些,才算完成本节
- 合上正文,用自己的话解释核心概念。
- 写出一个相似概念,并说明两者最关键的区别。
学习记录
记录本节阅读进度
建议先独立回答自测。读完记录不等于已经掌握。