🎯核心定义
Prompt Caching = 复用相同前缀 prompt 已计算好的 KV 缓存,跳过重复的 Prefill 计算。典型可复用前缀: 系统提示 (system prompt)、Few-shot 示例、多轮对话的早期轮次、多租户共享的公共指令块 —— 这些前缀占一次请求 token 的 50-90%,却每请求重算一遍纯属浪费。RadixAttention (SGLang 核心): 把所有活跃请求的 KV 块组织进一棵基数树 (RadixTree),树上每个节点 = 一段公共前缀,根为空,路径 = 从根到节点的 token 序列;新请求沿树做最长前缀匹配 (longest prefix match),命中的节点直接复用其 KV,只对「未命中的后缀」做 Prefill(计算量正比于未命中 token 数)。请求结束或变化时树动态分裂/合并: 公共前缀继续共享、差异分支分裂。效果: 命中前缀的请求 TTFT 可降 80%+(若 90% token 命中且 prefill 占 TTFT 的 90%,TTFT ≈ 原来的 1/10);多轮对话每轮只增量计算新增 token;多租户共享系统提示时单请求成本大幅下降。缓存淘汰: 树节点带引用计数与最后访问时间,显存容量不足时按 LRU 淘汰最久未访问的分支(类似操作系统页面置换),淘汰后再次命中需重算 prefill。对比 vLLM 的 automatic prefix caching: vLLM 按固定长度 block 做哈希前缀匹配(基于 token 的 n-gram 块哈希),实现简单;RadixAttention 用树精确复用任意长度的最长公共前缀,命中粒度更细、长共享前缀场景收益更高。
⚡解决的核心痛点
Prefill 是算力密集阶段,长 prompt 的重复 prefill 浪费 GPU 算力并拉高 TTFT;前缀 KV 复用让重复计算归零 —— 数值上命中率 80-90% 时 prefill 算力需求降一个数量级、TTFT 降 80%+,多轮/多租户场景单位 token 成本显著下降,是长上下文时代推理成本优化最直接的杠杆之一。