粗浅理解大模型 Promot Cache
读完之前的 粗浅理解大模型 KV Cache,可能会有个误解,以为大模型定价的 输入(命中缓存)Token 、输入(未命中缓存)Token 、输出 Token 这三个价位中的两个缓存指的是 KV Cahce,但实际上这里的缓存指的是 Promot Cache (前缀缓存)。
先区分两种缓存
很多文章会直接把 Prompt Cache 和 KV Cache 混在一起,其实它们完全不是一个层面的东西。
KV Cache
KV Cache 是 Transformer 推理过程中使用的缓存。例如:
用户:介绍一下 Go 协程模型经过 Prefill 后,会得到这一段 Prompt 对应的所有 Key 和 Value,并保存在 GPU 显存中。
随后模型开始逐 Token 生成内容:
Go
↓
语言
↓
中
↓
...每生成一个 Token,就会把这个 Token 对应的 Key 和 Value 追加到缓存中。
因此,KV Cache 的生命周期通常只有一次会话(Session)。
聊天结束以后,这份 KV Cache 就会被释放。
Prompt Cache
Prompt Cache 则完全不同。它属于 API 服务层。
它缓存的不是某次聊天,而是 多个 API 请求中重复出现的 Prompt 前缀。
例如:
System Prompt:
你是一位 Go 专家。
回答必须使用中文。
所有代码必须符合 Go 官方规范。
(共10000 Token)如果你的 AI 应用每天都会使用这段 System Prompt,那么每一次请求都需要重新 Prefill 这 10000 个 Token。
这是非常浪费 GPU 算力的。
于是服务器会把这一整段 Prompt 对应的 KV 保存下来。
以后再次遇到完全相同的前缀,就可以直接恢复,而不需要重新计算。
Prompt Cache 的命中条件是什么?
Prompt Cache 并不是 "只要内容差不多就行。"
达到命中缓存的条件必须是:前缀必须一致(Prefix Match)。
例如:
第一次:
System Prompt
↓
你好
↓
介绍 Go第二次:
System Prompt
↓
你好
↓
介绍 Rust那么:
System Prompt
↓
你好这一整段仍然可以命中缓存。
只有:
介绍 Rust属于新增输入。
因此,Prompt Cache 更准确的名字其实就是:Prefix Cache(前缀缓存)
为什么这种设计对开发者很友好?
假设你开发一个 AI 客服,每天都会发送:
System Prompt
10000 Token一天 1000 次请求。
如果没有 Prompt Cache。那么,服务器需要处理 10000 × 1000 重复 Prefill。这是极大的资源浪费。
而有了 Prompt Cache,第一次:
10000 Token
↓
Cache Write之后 999 次:
10000 Token
↓
Cache Read你不仅 API 成本下降,模型响应速度(尤其是首 Token 时间,TTFT)也会明显缩短。
因此,对于:
- AI Agent
- 企业客服
- RAG
- Coding Assistant
- 长 Prompt 应用
Prompt Cache 几乎都是一项"一次投入,多次收益"的优化。
Prompt Cache 和 KV Cache 的关系
如果把两者放到一起理解,其实会非常清晰。
| KV Cache | Prompt Cache |
|---|---|
| Transformer 内部机制 | API 服务层机制 |
| 生命周期通常是一次会话 | 生命周期通常跨多个请求 |
| 每个 Session 独立维护 | 多个请求可以共享 |
| 聊天结束释放 | 缓存命中期间持续存在 |
| 为了解决 Decode 重复计算 | 为了解决 Prefill 重复计算 |
可以把 Prompt Cache 看成:把一次会话中的 KV Cache,提升到了整个 API 服务层,实现跨请求复用。
也正因为如此,现代 AI 应用都会尽量保持 System Prompt 稳定。
因为 Prompt 越稳定:
- Cache 命中率越高
- API 成本越低
- 首 Token 延迟(TTFT)越短
- GPU 算力利用率越高
总结
Prompt Cache 并不是替代 KV Cache,而是建立在 KV Cache 思想之上的服务层优化。
KV Cache 解决的是一次会话内的重复计算,而 Prompt Cache 则进一步把这些已经计算好的前缀扩展为跨请求可复用的共享缓存。
对于需要频繁发送长 System Prompt 的 AI 应用来说,Prompt Cache 不仅能降低 API 成本,还能显著减少模型的首 Token 延迟,因此已经成为现代 LLM 服务中非常重要的一项工程优化。
RoLingG | 博客
评论(0)