外观
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 省历史投影,不省 Prefill 和历史读取。速度换显存。
这张图片用于解释 KV Cache 的增量复用与显存代价。精确公式、参数、失败分支和事实边界仍以正文与 Mermaid 为准。
图片生成记录: model=gpt-image-2,generated=2026-07-15,prompt_version=v1,reviewed=2026-07-16,review_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 理论字节数近似:
其中 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”:首次完整上下文仍需计算。
- “缓存越大越好”:显存、并发、碎片和尾延迟会受影响。
递进追问
- Prefill 与 Decode 的计算形态有何不同?
- 如何估算单请求 KV Cache 字节数?
- MHA、GQA、MQA 对缓存量有何影响?
- Paged Attention 解决什么资源问题?
- KV Cache 与 Prompt Cache 有什么区别?
关联阅读
总结
一句话记忆: KV Cache 用显存保存历史 K/V,换掉自回归解码中的重复前缀投影。
- Prefill 建缓存,Decode 增量追加和读取。
- 缓存省历史 K/V 重算,不省完整前缀读取。
- 显存随长度、层数、KV 头、并发和精度增长。
- 优化必须联合 TTFT、TPOT、吞吐、显存与质量评测。