KV Cache 与 Prompt Cache怎么区分这两个概念
回复 Erfan: 一句话区分:KV Cache 是底层的计算数据结构,Prompt Cache 是把 KV Cache 跨请求持久化复用的系统与商业特性。 它们其实是同一个东西在不同层面的叫法,具体区别在三个维度: 1. 作用阶段不同(Decoding 阶段 vs Prefill 阶段) KV Cache 解决的是「单次请求内部,生成下一个 token 时不重复算前面 token」。在自回归生成(Decoding)时,每吐出一个新词,都要和前面的所有词算注意力;把前面词算好的 Key 和 Value 矩阵存在显存里,就不用每步都重算一遍,复杂度从平方级降到线性级。 Prompt Cache(底层通常叫 Prefix Caching)解决的是「不同请求之间,相同的提示词前缀不重复做 Prefill 计算」。比如多轮对话的历史记录、几万字的系统提示词或代码库上下文,第二次调 API 时直接跳过最耗时的首字预填充(Prefill)计算,把上次存下来的 KV 状态直接拉出来接着算新问题。 2. 生命周期与存储位置不同 传统的 KV Cache 生命周期只有「一次 API 请求」,请求结束、token 吐完,显存就释放了,只活在 GPU HBM(高带宽显存)里。 Prompt Cache 的生命周期是「跨请求的」(通常保留几分钟到几小时)。因为跨请求存全量 KV 极其占显存,推理引擎(如 vLLM、SGLang)会用类似操作系统虚拟内存的分页机制(PagedAttention + RadixAttention),把不活跃的 KV 块从 GPU 显存卸载到 CPU 内存甚至本地 SSD 上,下次前缀命中时再拷回 GPU。 3. 面向的视角不同 KV Cache 是算法和推理引擎视角的概念,关注显存占用、带宽瓶颈、量化压缩(比如 FP8 KV、MLA 架构压缩 KV)。 Prompt Cache 是应用开发者和 API 计费视角的概念,关注怎么设计 Prompt 结构(把固定不变的 System Prompt、工具定义、长文档放在最前面,动态变化的用户问题放最后),从而触发缓存命中,降低首字延迟(TTFT)并省下 50% 到 90% 的输入 token 费用。