SGLang 是什么:概念介绍
一、SGLang 是什么:概念介绍
SGLang(Structured Generation Language)是一个面向大语言模型与多模态模型的推理服务框架,由两层组成:底层的运行时(SGLang Runtime,简称 SRT)负责高吞吐批处理与显存管理,上层的前端 DSL 让开发者用一种接近 Python 的写法描述「多轮调用、分支、并行、约束输出」这类复杂生成流程,而不用手写调度逻辑。
它要解决两个问题。第一是前缀复用:在多轮对话、少样本提示、树状推理这类场景里,大量请求共享相同的前缀,重复计算是纯浪费,SGLang 用 RadixAttention 把共享前缀的 KV cache 组织成基数树,命中即复用。第二是结构化输出的工程成本:过去要模型严格输出 JSON 需要一堆后处理与重试,SGLang 把约束解码内置,用语法/正则直接限制输出空间。
与相邻方案的区别
| 维度 | SGLang | vLLM |
|---|---|---|
| 前缀复用机制 | RadixAttention,基数树组织缓存 | 前缀缓存(块级哈希) |
| 前端能力 | 自带 DSL,可直接写多步生成程序 | 以服务为主,复杂流程靠客户端编排 |
| 结构化输出 | 内置约束解码,深度集成 | 支持引导式解码 |
| 多模态 | 原生支持图像/视频等输入 | 支持,覆盖范围随版本演进 |
| 路由与集群 | 提供 Router 做多实例调度 | 靠上层网关或外部方案 |
| 生态与社区 | 较新,迭代快 | 更大,集成案例更多 |
核心术语
| 术语 | 含义 |
|---|---|
| RadixAttention | 用基数树管理 KV cache,让共享前缀只算一次 |
| SRT | 运行时本体,负责调度、显存、采样 |
| 前端 DSL | 描述生成流程的编程接口,支持分支、循环、并行 |
| 约束解码 | 用正则或语法限制输出,保证 JSON / 特定格式合法 |
| Router | 多实例部署时的请求路由组件,按缓存命中与负载分发 |
| TP / DP | 张量并行与数据并行,决定模型怎么摊到多卡上 |
| OpenAI 兼容服务 | 用 launch_server 起服务,下游按 OpenAI 协议调用 |
| 缓存命中率 | 前缀复用比例,是该框架收益的核心指标 |

