λLLM Wiki

SGLang

sglang 是一个同时覆盖 前端语言(Frontend Language)高性能推理运行时(Runtime)部署网关(Deployment Gateway) 的系统实体。官方文档把它定位为面向 大语言模型(Large Language Model, LLM)多模态模型(Multimodal Model) 的高性能 serving framework;而当前文档库中已有页面更多聚焦它的 runtime 内核,如 sglang-schedulerkv-cachesglang-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,还覆盖 embeddingrerankreward 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 只看成“推理引擎”太窄,因为它还有前端语言、API 面和路由层。
  • 把它只看成“prompt DSL”也太窄,因为真正决定它工程价值的是 SRT、cache、scheduler 与部署能力。
  • 更准确的理解是:SGLang 是一套围绕 LLM serving、agent execution 与 RL rollout 共同演化的运行时栈,而当前文档库已经覆盖了其中最关键的 runtime 内核部分。

Comments