统一基数缓存:混合模型前缀缓存的单一树结构

统一基数缓存:混合模型前缀缓存的单一树结构

引言

前缀缓存通过复用共享token前缀的KV值来加速推理。在全注意力机制下,共享前缀的KV一旦计算完成,后续追加token时仍保持有效。后续相同前缀的请求可直接复用这些KV,而非在prefill阶段重新计算。SGLang使用以token序列为键的radix树来追踪这一映射。

混合模型打破了单一复用规则。请求可能同时包含全注意力KV、滑动窗口注意力KV和循环状态,每种都有不同的复用边界。全注意力KV可在整个匹配前缀上复用,滑动窗口注意力KV仅覆盖尾部窗口,循环状态仅在精确前缀检查点有效。它们共享token前缀,但复用边界不同

Unified Radix Cache shared token topology, component reuse semantics, HiCache tiers, and sidecars

核心亮点

  • 单一树取代缓存类矩阵:全注意力、滑动窗口和Mamba检查点共享一个radix拓扑,组件各自执行不同复用语义。
  • 钩子保持树核心通用:组件控制匹配、分割、插入、锁定和驱逐,新混合组合无需新树实现。
  • HiCache原生集成组件生命周期:多轮基准测试中,L3使DeepSeek-V4-Flash和Inkling-Small的命中率分别保持在98%和96.8%。
  • 会话活动引导驱逐:SWE-bench测试中,会话感知配置比普通LRU HiRadixCache的TTFT降低2.9%至16.6%。

单一树与可组合组件

Unified Radix Cache将共享前缀映射到单一radix拓扑,每个复用规则对应一个TreeComponent。FULL组件始终存在,SWA用于混合滑动窗口,MAMBA用于循环层。DeepSeek-V4组合FULL+SWA,Kimi-K3组合FULL+MAMBA,Inkling则同时使用三种组件。

How match_prefix chooses a boundary accepted by every component

安全复用边界的查找

前缀匹配时,UnifiedTreeCore沿FULL路径遍历,每个节点作为候选边界。只有当所有活跃组件的验证器都接受时,边界才推进。组件投票将遍历深度与可复用前缀深度分离。

DeepSeek-V4 components and their derived HiCache sidecars

跨内存层的原生HiCache

组件决定可复用内容,HiCache决定负载存放位置。Unified Radix Cache在GPU L1、Host L2和外部L3层间保持相同组件身份。DeepSeek-V4中FULL与SWA为组件,其他池作为sidecar跟随源池索引。

HiCache multi-turn benchmarks for DeepSeek-V4 and InklingSession-aware eviction across FULL, SWA, and MAMBA componentsSWE-bench cache hit ratios and TTFT for DeepSeek-V4-Pro and Qwen3.5-397B-A17BExperimental Rust and Python tree-core TTFT across FULL, SWA, and hybrid SSM models
本文来自 LMSYS 博客,赢政天下(winzheng.com)进行了全文翻译。 点击这里查看原文 如果转载中文,请注明出处,谢谢支持!