Skip to content

KV Cache 为什么能加速大模型推理?

3 分钟速学卡

30 秒口述: 自回归生成每一步都会用当前 Query 关注全部历史 Token,而历史 Token 的 K/V 在模型权重固定时不会改变。KV Cache 在 Prefill 和后续 Decode 中保存各层历史 K/V,下一步只计算新 Token 的 Q/K/V,再读取缓存完成注意力,避免反复投影全部前缀。它用随层数、KV 头数、序列长度、批量和精度增长的显存换计算时间,并没有让每步 Attention 变成 O(1),也不能省掉 Prefill。

  • 本质: KV Cache 用显存保存历史 K/V,换掉自回归解码中的重复前缀投影。
  • 核心机制: Prefill 建缓存,Decode 增量追加和读取;缓存省历史 K/V 重算,不省完整前缀读取。
  • 关键判断: 显存随长度、层数、KV 头、并发和精度增长;优化必须联合 TTFT、TPOT、吞吐、显存与质量评测。
  • 项目落地: 示例项目:容量测试按真实输入/输出长度与并发分桶,记录 TTFT、TPOT、吞吐、P95/P99、KV 占用、驱逐和 OOM。入口按 Token 与 KV 预算准入,断连要取消计算并释放块,长短请求混批要防止尾延迟放大。
  • 边界与坑: “KV Cache 缓存模型答案”:它缓存的是各层 K/V 张量;“用了缓存每步就是 O(1)”:新 Q 仍读取长度不断增长的历史 K/V。

目录

面试官为什么问

这道题考推理阶段、张量维度和容量规划。优秀回答要区分 Prefill 与 Decode,并能解释省了什么、没省什么、付出什么

小白先看懂

厨师连续制作一盘寿司:第一片前先把整张订单和配料准备好,像 Prefill;之后每做一片,都复用贴好标签的历史配料盒,只补充新配料,像 KV Cache。无需每次重新切全部旧配料,但货架会越占越满,而且仍要查看哪些旧配料与当前步骤相关。

配料盒对应各层历史 K/V,当前动作对应新 Q。类比没有表示多层多头张量、内存带宽、分页管理和并发调度。

图:教学图片|KV Cache 为什么能加速大模型推理?

替代文本: 16:9 中文教学信息图,寿司店首次备料和逐片出餐,右侧映射 Prefill、KV 货架、Decode 和不断增长的缓存。

KV Cache 为什么能加速大模型推理?教学图片

读图结论: KV Cache 省历史投影,不省 Prefill 和历史读取。速度换显存。

这张图片用于解释 KV Cache 的增量复用与显存代价。精确公式、参数、失败分支和事实边界仍以正文与 Mermaid 为准。

图片生成记录: model=gpt-image-2generated=2026-07-15prompt_version=v1reviewed=2026-07-16review_basis=user-confirmed查看生成 Prompt

图:Prefill 建缓存与 Decode 增量复用

替代文本: Prefill 并行处理完整 Prompt 并为每层建立 K/V;每个 Decode 步只计算新 Token 的 Q/K/V,把新 K/V 追加到缓存,再用新 Q 读取全部历史 K/V 生成下一 Token。

图表加载中…

读图结论: KV Cache 省去历史 K/V 的重复投影,但每步仍读取更长历史,缓存容量也持续增长。

核心原理

忽略分配器碎片和元数据,KV Cache 理论字节数近似:

Bytes2×L×B×hkv×t×dh×s

其中 2 表示 K 和 V,(L) 是层数,(B) 是批量或并发序列数,(h_{kv}) 是 KV 头数,(t) 是缓存长度,(d_h) 是头维度,(s) 是每元素字节数。GQA/MQA 通过减少 KV 头降低缓存量,但质量和算子支持需验证。

项目和生产视角

示例项目: 容量测试按真实输入/输出长度与并发分桶,记录 TTFT、TPOT、吞吐、P95/P99、KV 占用、驱逐和 OOM。入口按 Token 与 KV 预算准入,断连要取消计算并释放块,长短请求混批要防止尾延迟放大。

可比较分页 KV、量化、GQA/MQA 和前缀缓存,但它们优化的层次不同。本文没有具体硬件和实测结论。

常见错误回答

  • “KV Cache 缓存模型答案”:它缓存的是各层 K/V 张量。
  • “用了缓存每步就是 O(1)”:新 Q 仍读取长度不断增长的历史 K/V。
  • “缓存能省掉 Prefill”:首次完整上下文仍需计算。
  • “缓存越大越好”:显存、并发、碎片和尾延迟会受影响。

递进追问

  1. Prefill 与 Decode 的计算形态有何不同?
  2. 如何估算单请求 KV Cache 字节数?
  3. MHA、GQA、MQA 对缓存量有何影响?
  4. Paged Attention 解决什么资源问题?
  5. KV Cache 与 Prompt Cache 有什么区别?

关联阅读

总结

一句话记忆: KV Cache 用显存保存历史 K/V,换掉自回归解码中的重复前缀投影。

  • Prefill 建缓存,Decode 增量追加和读取。
  • 缓存省历史 K/V 重算,不省完整前缀读取。
  • 显存随长度、层数、KV 头、并发和精度增长。
  • 优化必须联合 TTFT、TPOT、吞吐、显存与质量评测。