SGLang¶
SGLang 以高吞吐和 Prefix Cache 效率著称,是 RadixAttention 和 HiCache 的原始提出者。
内容时效性
SGLang 更新极快,下述特性可能已迭代。请以项目的最新文档和 Release Notes 为准。
KVCache 架构¶
RadixAttention¶
SGLang 的核心 KVCache 创新:使用压缩 Radix Tree 组织 KV Block。
- 任意 token 边界匹配:不需要像 vLLM APC 那样对齐 block_size,可以在任意 token 边界命中 prefix
- Cache-aware 负载均衡:将请求路由到已有最长共同 prefix 的副本,最大化命中率
- HiRadixCache:HiCache 的 Radix Tree 扩展,支持多级 tier 和 SLRU 淘汰策略
Block Manager¶
与 vLLM 类似的分页管理设计,但在以下方面有差异:
- Block 命中的边界更灵活(RadixAttention 的特性)
- SLRU(Segmented LRU)淘汰:比纯 LRU 更好地保护热门 prefix block 不被驱逐
主要特性¶
HiCache(分层 KVCache)¶
HiCache 是 SGLang 的分层 KV offload 解决方案:
- 三层存储:GPU HBM → Host DRAM → NVMe
- 自适应 prefill delayer:延迟 prefill 执行以批量复用 offloaded KV
生产实测数据:
| 部署场景 | 指标 | 效果 |
|---|---|---|
| Novita AI | TTFT | −56% |
| Novita AI | 吞吐 | 2× |
| Ant Group (DeepSeek-R1-671B) | TTFT | −84% |
HiSparse¶
稀疏 KV cache 与 offload 的结合:
- 在 GLM-5.1-FP8 256 并发下实现 3–5× 吞吐提升
- LRU offload 不活跃的 KV 到 host memory
适用边界: HiSparse 的收益来自高并发长上下文下 HBM 容量释放,而不是单请求加速。官方示例包含 top_k=2048、device_buffer_size=4096/6144、host_to_device_ratio=8/10 等入口参数;miss count 由 sparse locality 和 hot buffer size 决定,miss 频繁时 host-to-device swap 会落在 decode critical path。
来源:主站 reading HiSparse:稀疏注意力真正缺的那层内存系统
ShadowRadix¶
超长上下文扩展支持(DeepSeek-V4 实测):
- 上下文从 4K 扩展到 900K
- decode 吞吐仅从 266 → 240 tok/s(< 10% 下降)
PD 分离¶
SGLang 的 disaggregated serving 实现:
- GPU Staging Buffer(PR #19890):将 scatter head slices gather 为 contiguous memory,再做 bulk RDMA transfer
- Qwen3.5 Prefill TP4 + Decode DEP4 下:TPS/GPU 提升约 5×
- 支持 TP 不对称的 Prefill/Decode 节点配置
KV 量化¶
- FP8 KV Cache:原生支持
- TurboQuant 集成(PR #23135):3.88× 压缩,保持 93–105% decode 吞吐
- Tokenspeed MLA(PR #24925):支持 FP8 KV cache + MLA 架构
- FP4 KV Cache:
fp4_e2m1路径可与 MHA/MLA pool 叠加,BF16 → FP4 支持约 3.56× 更长上下文或更多并发(含 scale buffer)
存储池类型体系¶
SGLang main 分支的 KV pool 已显式分化为 MHA/GQA、MLA、DSA、DeepSeek-V4、SWA、FP4、Host 等类型。池类型由模型配置在启动时决定,运行时不会随请求切换:
| Pool | 适配架构 | 关键点 |
|---|---|---|
MHATokenToKVPool |
MHA/GQA | 标准 [S,H,D] K/V 双 buffer |
MLATokenToKVPool |
DeepSeek MLA | [S,1,kv_cache_dim] 合并 latent KV |
DSATokenToKVPool |
DeepSeek sparse MLA | MLA buffer + indexer buffer |
DeepSeekV4SingleKVPool |
DSV4 | SWA、C4、C128 多级压缩与辅助状态 |
SWAKVPool |
Hybrid SWA | full_kv_pool 与 swa_kv_pool 双池 |
HostKVCache |
HiCache L2 | page_first / layer_first 等四种 host layout |
来源:主站 field-note SGLang KV Cache 存储池架构
Tair + SGLang:DeepSeek V4 的三层寻址¶
DeepSeek V4 的混合注意力使同一 token 产生多种物理 KV 形态。Tair + SGLang 的方案将 Shadow Radix、HiCache、HiSparse 组合成三层:
| 层 | 作用 |
|---|---|
| Shadow Radix | 一棵逻辑前缀树映射多套物理 KV 形态 |
| HiCache | GPU / CPU / storage 三层保存可复用历史 KV |
| HiSparse | Decode 阶段对 sparse KV 做冷热分离 |
多轮对话场景中,Prefill 吞吐提升 3×,Decode BatchSize 提升 5–10×。这说明混合注意力落地后,prefix cache 不能只记录 token 前缀,还必须记录对应的物理 KV 形态。
来源:主站 reading Tair + SGLang 为 DeepSeek V4 重建 KV 寻址层
Attention Backend¶
- 深度集成 FlashInfer,是 SGLang 最优化的 attention kernel 路径
- FlashAttention 作为备选
与 vLLM 的关键差异¶
| 维度 | vLLM | SGLang |
|---|---|---|
| Prefix Cache 边界 | Block 对齐(16 token) | 任意 token 边界(RadixAttention) |
| 淘汰策略 | LRU | SLRU(更好保护热 block) |
| Offload | 多级 tier(PR #40020) | HiCache(三层,adaptive prefill delay) |
| Attention Backend | FlashAttention / FlashInfer / Triton | 主要 FlashInfer |
| PD 分离状态 | 进行中(MultiConnector) | 生产可用(GPU Staging Buffer) |
关联章节¶
- RadixAttention 的原理:Prefix Cache §RadixAttention
- HiCache 与分层存储:存储层级
- 框架总览与对比表:框架对比
- 稀疏 KV 生命周期:KV 稀疏化
版本历史¶
| 版本 | 日期 | 说明 |
|---|---|---|
| v0.2 | 2026-06-02 | 新增 HiSparse 调优边界、SGLang 多 KV pool 类型体系、FP4 路线与 Tair + SGLang DeepSeek V4 三层寻址 |
| v0.1 | 2026-05-14 | 从框架对比总览拆分,整理 RadixAttention / HiCache / ShadowRadix / PD 等核心特性 |