SGLang
sglang 是一个同时覆盖 前端语言(Frontend Language)、高性能推理运行时(Runtime) 与 部署网关(Deployment Gateway) 的系统实体。官方文档把它定位为面向 大语言模型(Large Language Model, LLM) 与 多模态模型(Multimodal Model) 的高性能 serving framework;而当前文档库中已有页面更多聚焦它的 runtime 内核,如 sglang-scheduler、kv-cache 与 sglang-online-weight-updates。因此,更准确的理解不是“一个 RL rollout 引擎”或“一个 prompt DSL”,而是一套从应用接口到推理基础设施的完整栈。
它是什么
- 从官方文档看,SGLang 至少有三层身份:前端语言、SGLang Runtime(SRT) 和对外暴露的 API / Router。
- 前端语言负责组织多轮对话、控制流、并行调用、多模态输入与外部交互。
- SRT 负责模型加载、请求调度、KV cache 管理、并行执行与性能优化。
- 对外接口上,它同时提供 OpenAI 兼容 API(OpenAI-Compatible API)、原生 API(Native API)、离线推理引擎(Offline Engine),并可通过 模型网关(Model Gateway) 做多实例路由。
- 官方文档的能力面还覆盖文本生成、多模态、embedding、rerank、reward 等模型类型;因此当前 raw 文章虽然集中讨论 runtime 深处,但它们并不构成 SGLang 的全部。
官方文档补足的能力面
1. 多接口而不是单一引擎
- SGLang 可以作为 HTTP server 对外暴露 OpenAI 兼容接口,降低从托管模型到自部署模型的迁移成本。
- 也可以绕过 HTTP,直接使用离线引擎做 batch inference 或自定义 server。
- 对更贴近运行时的集成场景,它还保留
/generate、/flush_cache、/get_server_info、/update_weights等原生接口。 - 因此它既适合做线上 serving,也适合嵌入训练、评测、agent 或数据处理流水线。
2. 运行时优化的中心仍然是 scheduler 与 cache
- 官方文档把高吞吐主要归因于 prefix caching、continuous batching、paged attention、chunked prefill、prefill-decode disaggregation 等机制。
- 这和当前文档库的拆分是吻合的:sglang-scheduler 解释请求如何被 admission 与 batching,kv-cache 解释 prefix 复用与缓存组织为什么能成立。
- 进一步地,HiCache 把 prefix cache 从 GPU 扩展到 CPU 与分布式存储,说明 SGLang 的 cache 设计已经从“单机显存优化”延伸到“跨层级缓存体系”。
3. 它会围绕模型结构做专门适配
- 官方文档中的优化项不只是一组通用 kernel 开关,还包括 投机解码(Speculative Decoding)、量化(Quantization)、多 LoRA 批处理(Multi-LoRA Batching)、以及 TP/PP/EP/DP 等并行能力。
- 对特定模型结构,SGLang 还会给出专门运行时路径,例如当前文档库已整理到 llm-parallelism 中的 DP attention。
- 这意味着 SGLang 不是“模型无关的统一黑盒”,而是会随着主流模型结构演化,不断把新结构折叠进运行时。
4. 它也在补齐 agent 与 reasoning 工作负载
- 官方文档专门提供 结构化输出(Structured Outputs)、工具调用解析(Tool Parser)、推理内容解析(Reasoning Parser) 等能力。
- 这些能力的意义不是“让 prompt 写法更复杂”,而是让 reasoning model、tool use 和多轮 agent workflow 能够直接运行在同一套 serving 基座上。
- 这和 multi-turn-rl 的问题意识是一致的:真实工作负载不再只是一次性 completion,而是包含暂停、恢复、工具调用和长尾请求管理的复杂交互。
5. 在 RL / post-training 里,它是可操作的 rollout backend
- 官方文档现在明确把 SGLang 写成 RL 与 post-training 的基础设施,并给出 sleep/wake、权重 refit、pause/continue generation、deterministic inference、cache-aware router 等接口。
- 这使当前文档库里来自 raw 的几篇文章不再显得像“私有魔改”,而是和官方产品方向一致:sglang-online-weight-updates 讨论的在线更新、sglang-scheduler 讨论的吞吐调度,都对应公开能力。
- 和 slime 的关系也因此更清楚:slime 偏训练系统,SGLang 偏 rollout / serving runtime,但两者在 RL 主循环里是耦合设计。
能力地图
1. 支持的模型与硬件范围
- 官方首页把 SGLang 描述为面向 LLM 与 多模态模型(Multimodal Models) 的高性能 serving framework。
- 它的支持范围不只限于 text generation,还覆盖 embedding、rerank、reward model,文档里甚至单独分出了 SGLang Diffusion。
- 硬件层面,官方文档明确覆盖 NVIDIA GPU、AMD GPU、CPU server、TPU、Ascend NPU、XPU 等平台。
- 因而把 SGLang 仅理解为“某几个开源大模型的 CUDA 推理器”并不准确,它更像可跨模型类型、跨硬件后端演进的 serving 平台。
2. 编程接口与使用形态
- OpenAI 兼容 API 是最低迁移成本的入口,文档明确把它定位为从 OpenAI 服务迁移到自部署模型的平滑路径。
- 原生 API 更贴近运行时能力,除了生成接口外,还暴露模型信息、服务信息、flush cache、update weights、embedding、rerank、score、reward classify 等端点。
- 离线引擎(Offline Engine) 适合不想引入 HTTP server 的场景,官方给出的两个典型用法是 offline batch inference 与在 engine 之上自建 server。
- 前端语言(Frontend Language) 则不是简单模板系统,而是支持 multi-turn dialog、control flow、parallelism、constrained decoding、batching、streaming 与 multi-modal generation 的编排层。
3. 推理优化与部署能力
- 官方首页把 SGLang 的 fast runtime 核心能力概括为:RadixAttention prefix caching、zero-overhead CPU scheduler、continuous batching、paged attention、chunked prefill、speculative decoding、prefill-decode disaggregation,以及 TP/PP/EP/DP 等并行能力。
- 在缓存层,HiCache 进一步把 prefix cache 从 GPU 扩展到 CPU 与分布式存储;这说明它的 cache 设计已经从单机显存管理扩展到层级式缓存体系。
- 在模型适配层,它还提供 quantization、quantized KV cache、多 LoRA batching、DP router、long-context pipeline parallelism 等能力。
- 在部署层,SGLang Model Gateway 不只是简单 router。官方文档把它定义为用于大规模 LLM 部署的 model-routing gateway,强调异构协议路由、cache-aware load balancing、worker lifecycle 管理、可观测性与可靠性控制。
4. agent、reasoning 与 RL 工作负载
- Structured Outputs 支持 JSON schema、regex、EBNF 约束,而且同一套能力可以在 OpenAI-compatible API、Native API 与 Offline Engine 中使用。
- Tool Parser 把 function calling 做成运行时能力,并支持
tool_choice等强约束模式,而不是只靠 prompt 约定工具调用格式。 - Reasoning Parser 进一步把 reasoning model 的
<think> ... </think>一类内容从普通回答中分离出来,方便服务层面做结构化处理。 - Deterministic Inference 则直接服务于 RL 与调试:官方文档强调它能减少 logprob 抖动、提升复现性,并且兼容 chunked prefill、CUDA graph 与部分 radix cache 路径。
- 因此,SGLang 现在承接的工作负载已经不仅是“高吞吐补全”,而是面向 agent、tool use、reasoning 和 post-training 的统一执行底座。
在当前文档库中的阅读位置
- 如果你想理解 SGLang 的系统内核,先看 kv-cache 与 sglang-scheduler。
- 如果你关心它为什么会进入 RL 系统,接着看 sglang-online-weight-updates 与 multi-turn-rl。
- 如果你想理解它如何适配不同模型与并行策略,再看 llm-parallelism。
- zhaochenyang20-rl-systems-reading-guide 适合作为把这些页面串起来的入口。
一个更准确的简化理解
- 把 SGLang 只看成“推理引擎”太窄,因为它还有前端语言、API 面和路由层。
- 把它只看成“prompt DSL”也太窄,因为真正决定它工程价值的是 SRT、cache、scheduler 与部署能力。
- 更准确的理解是:SGLang 是一套围绕 LLM serving、agent execution 与 RL rollout 共同演化的运行时栈,而当前文档库已经覆盖了其中最关键的 runtime 内核部分。
Comments