Prefix Caching、Prompt Caching
要解决的问题
Agent、RAG、多轮对话中,系统提示 + 文档 + 工具定义 在成千上万请求间重复,却每次 Prefill 重算 KV,浪费算力与 TTFT。Prefix / Prompt Caching 对相同 token 前缀复用 KV Cache(或中间激活),使增量部分只做短 Prefill。
核心概念
| 术语 | 含义 |
|---|---|
| Prefix Cache | 以 token 序列为键,缓存其 KV blocks(vLLM、SGLang Radix) |
| Prompt Caching | 云 API(OpenAI、Anthropic)对稳定前缀计费折扣 + 低延迟 |
| Radix Tree | 多请求共享最长公共前缀的 KV 节点 |
命中时 TTFT 近似:
未命中则回退完整 5.2.1 KV Cache 构建。
方法 / 实现要点
- 哈希键:对 prefix token ids(或 block hash 链)索引;注意 tokenizer 一致 与 chat template。
- 与 PagedAttention:5.2.2 block 引用计数 + COW,释放时递减。
- SGLang RadixAttention:树结构合并公共前缀;适合高 QPS 同系统提示。
- API 层:客户端标记
cache_control(因厂商而异);仅对静态段启用。
工程实践
- 适用:固定 system prompt、重复 RAG corpus chunk、工具 schema;不适用每条都变的用户全文。
- 安全:多租户缓存需隔离 namespace,防跨用户 KV 泄漏(待 验证:依赖部署配置)。
- 成本模型:按 cached token 折扣 + 存储占用;ROI 用命中率和节省的 Prefill FLOPs 估算。
- 观测:
prefix_cache_hit_rate、P50 TTFT 分层(hit vs miss)。
代表工作
- vLLM Automatic Prefix Caching 文档
- SGLang: RadixAttention;Anthropic/OpenAI Prompt Caching 产品说明
- 论文方向:CacheBlend、Prompt Cache 等(2024–2025)
实践检查清单
- 固定评测/推理配置(温度、max_tokens、parser 版本)便于回归
- 记录硬件:GPU 型号、驱动、框架 commit
- 对比基线:未优化前 TTFT/TPOT 或 Acc
- 文档化失败案例:OOM、解析失败率、拒答率
- 交叉阅读本章「相关章节」避免孤立优化