Prefix Caching
大语言模型推理优化技术,将多个请求共享的相同前缀部分(如系统提示词)的KV计算结果持久化缓存,实现跨请求复用,从而减少重复计算、降低延迟并提升吞吐量
时间轴 (近 90 天)
部分推理框架支持多级前缀树匹配,能命中不同请求间的公共祖先节点,从而提高前缀共享率。
工程上应对前缀失效的常见做法是将动态内容(用户输入、当前时间、检索结果)后置到静态前缀之后,形成“稳定前缀 + 可变后缀”的请求结构。
前缀复用(Prefix Caching)依赖严格条件:被复用的部分必须从序列第一个 token 开始就完全相同,否则缓存失效并导致整段重算。
固定上下文的成本可近似为:固定前缀 token 数 × 调用次数 × 缓存读取单价。
Prefix Caching实现请求间KV复用,vLLM采用block hash,SGLang采用radix tree
PagedAttention 支持多个请求共享相同前缀的 KV Cache(Prefix Caching)
vLLM 使用 Prefix Caching(前缀缓存)技术来复用相同前缀请求的 KV Cache
vLLM当前实现存在bug:在前缀缓存中会把最后一个约16 token的缓存块直接丢弃并重新计算,即使请求命中了缓存
前缀缓存通过复用已计算的KV Cache,可节省50%-80%的prefill阶段计算量,vLLM通过基数树结构实现细粒度缓存命中匹配
当前缀缓存与DFlash2投机解码同时启用时,总吞吐量下降约37%,甚至比完全不开投机解码还要慢
全部知识事实 (8)
前缀复用(Prefix Caching)依赖严格条件:被复用的部分必须从序列第一个 token 开始就完全相同,否则缓存失效并导致整段重算。
50%待验证部分推理框架支持多级前缀树匹配,能命中不同请求间的公共祖先节点,从而提高前缀共享率。
50%待验证工程上应对前缀失效的常见做法是将动态内容(用户输入、当前时间、检索结果)后置到静态前缀之后,形成“稳定前缀 + 可变后缀”的请求结构。
50%待验证固定上下文的成本可近似为:固定前缀 token 数 × 调用次数 × 缓存读取单价。
50%待验证Prefix Caching实现请求间KV复用,vLLM采用block hash,SGLang采用radix tree
50%待验证PagedAttention 支持多个请求共享相同前缀的 KV Cache(Prefix Caching)
50%待验证vLLM 使用 Prefix Caching(前缀缓存)技术来复用相同前缀请求的 KV Cache
50%待验证前缀缓存通过复用已计算的KV Cache,可节省50%-80%的prefill阶段计算量,vLLM通过基数树结构实现细粒度缓存命中匹配
50%