SGLang
SGLang 是由 LMSYS 团队开发的开源大语言模型推理引擎,主打 LLM Program 的高效执行、RadixAttention 自动前缀缓存 与 结构化生成(Structured Generation)。截至 2026 年 10 月,SGLang 已发展到 v0.5.21,并在 2025-2026 年完成了从“结构化程序执行引擎”到“全场景推理运行时”的演进:HiCache 三层分层 KV 缓存、PD / EPD 分离式部署、DeepSeek-V3.2 稀疏注意力官方推荐引擎、面向 RL 后训练的 rollout 支持 等,在 Agent、多轮对话、JSON / Function Calling 等场景中具有显著优势。
一句话理解
SGLang 把一次 LLM 调用看作一段可以编译、调度、缓存、约束的程序,让复杂交互场景下的推理既快又可控。
如果说 vLLM 的核心命题是“让通用 LLM 推理更高吞吐”,那么 SGLang 的核心命题是“让 LLM 程序(多轮、结构化、带控制流)执行得更高效”。
本主题结构
学习目标
阅读完本主题后,你应该能够:
- 解释 SGLang 与 vLLM 在设计哲学上的差异
- 说明 RadixAttention 如何利用 Radix Tree 自动复用前缀
- 描述 HiCache 三层分层 KV 缓存(GPU HBM / 主机内存 / 分布式存储)的设计动机
- 描述结构化生成(regex / JSON schema / EBNF)的基本原理
- 画出 SGLang Runtime 的核心架构
- 定位 SGLang 源码中的关键模块与调用链
- 实现一个简化的 Radix Tree + FSM 约束采样 Demo
- 在生产环境中判断何时选择 SGLang,以及如何调优
与 vLLM 的关系
SGLang 与 vLLM 同源(都来自 LMSYS / Berkeley),但在工程目标上互补:
| 维度 | vLLM | SGLang |
|---|---|---|
| 核心问题 | 通用高吞吐 LLM 推理 | 复杂 LLM 程序的高效执行 |
| 缓存机制 | PagedAttention(Block Table) | RadixAttention(Radix Tree) |
| 结构化生成 | 通过第三方后端支持 | 原生深度集成(xgrammar / FSM) |
| 编程模型 | 单次 completion | gen / select / fork / run 等程序原语 |
| 适用场景 | 通用在线推理 | Agent、多轮对话、JSON/Function Calling |
建议先阅读 vLLM 详解,再学习 SGLang,会更容易理解二者在 KV cache 管理、调度、约束解码上的异同。