SGLang 与 vLLM 全面对比:架构差异、性能边界与选型建议

本文摘要SGLang 与 vLLM 全面对比:架构差异、性能边界与选型建议本文来源: Tiny点(公众号:Tiny点) 原文链接: https://mp.weixin.qq.com/s/U62WRblKY6Njoo-0II1k7g 发布时间: 2026-09-03 10:21作者: Tiny点  发布时间: 2026-09-03 10:21在大模型推理服务领域,vLLM 和 SGLang 是目前最受关注的...

SGLang 与 vLLM 全面对比:架构差异、性能边界与选型建议

本文来源: Tiny点(公众号:Tiny点)
原文链接: https://mp.weixin.qq.com/s/U62WRblKY6Njoo-0II1k7g
发布时间: 2026-09-03 10:21

SGLang 与 vLLM 全面对比:架构差异、性能边界与选型建议

作者: Tiny点  发布时间: 2026-09-03 10:21


在大模型推理服务领域,vLLM 和 SGLang 是目前最受关注的两个开源框架。它们都支持 Continuous Batching、前缀缓存、Chunked Prefill、量化、推测解码、多卡并行、结构化输出以及 OpenAI 兼容 API,也都在向超大规模 MoE、长上下文、多模态和 Prefill/Decode 分离部署演进。

因此,如果仍然把两者概括成 “vLLM 使用 PagedAttention,SGLang 使用 RadixAttention”,很容易得出过时甚至错误的结论。PagedAttention 和 RadixAttention 并不是互斥方案:前者主要解决 KV Cache 的物理内存管理,后者主要解决跨请求前缀的组织、查找与复用。当前的 SGLang 同样具有分页式 KV Cache,当前的 vLLM 也已经支持自动前缀缓存。

两者真正的差异,更多体现在设计起点、缓存组织、调度策略、模型适配节奏和工程生态上。

本文依据 2026 年 9 月的公开项目状态整理。SGLang 与 vLLM 更新速度很快,具体模型、硬件和功能支持应以使用版本的官方文档为准。

一、先给结论

如果希望快速做出选择,可以先参考下面的概括。

对比维度SGLangvLLM
设计起点结构化语言模型程序与高性能运行时通用、高吞吐的大模型推理引擎
代表性技术RadixAttention、缓存感知调度、重叠调度PagedAttention、块式 KV Cache、通用调度引擎
前缀复用以 Radix Tree 表达不同长度、不同分支的共享前缀以 KV Block 哈希实现自动前缀缓存
通用服务能力很强很强,生态和第三方集成通常更广
重复前缀与 Agent 工作负载是重点优化方向已具备完整能力,需要结合版本实测
新模型专项优化通常跟进很快,尤其重视新型 MoE、MLA 和 RL Rollout覆盖面广,新模型和新硬件适配同样活跃
结构化生成项目早期核心能力之一已支持基于 xgrammar、guidance 等方案的结构化输出
分布式推理TP、PP、DP、EP、上下文并行及分离式部署TP、PP、DP、EP、上下文并行及分离式部署
硬件生态NVIDIA、AMD、TPU、CPU、Ascend 等NVIDIA、AMD、Intel GPU、CPU、TPU 及多种硬件插件
扩散模型提供 SGLang Diffusion,用于图像与视频生成核心定位仍以语言和多模态理解模型推理为主
更适合优先考虑的场景Agent、多轮会话、共享长前缀、RL Rollout、前沿模型专项优化通用模型服务、广泛模型兼容、成熟生态、低迁移风险

这张表不是性能排行榜。对于同一个模型,最终结果可能因为 GPU 型号、输入输出长度、并发量、量化方式、Attention Backend、前缀重复率和调度参数而完全不同。框架选型应以实际业务流量回放为准。

二、两者解决的是同一个问题,但出发点不同

2.1 vLLM:从显存利用率出发构建通用推理引擎

vLLM 最具代表性的设计是 PagedAttention。传统推理系统通常为每个请求预留连续的 KV Cache 空间,但请求的实际输出长度无法提前准确预测,容易造成内部碎片、外部碎片和过度预留。

vLLM 将 KV Cache 划分为固定大小的 Block。一个请求在逻辑上连续的 Token,可以映射到物理上不连续的显存块。请求增长时按需分配新块,结束后再把块归还给空闲池。这种思路类似操作系统的分页内存管理,其核心目标是把有限显存变成可动态分配、回收和共享的资源池。

在此基础上,vLLM 逐步形成了完整的通用服务系统,包括请求预处理、Continuous Batching、Chunked Prefill、前缀缓存、抢占、CUDA Graph、推测解码、分布式执行和多种服务协议。今天的 vLLM 已经远不只是一个 Attention Kernel,而是一套覆盖模型加载、调度、缓存、执行和 API 服务的推理平台。

2.2 SGLang:从语言模型程序与跨请求复用出发

SGLang 最初面向的是结构化语言模型程序。Agent、RAG、多轮对话、Tree-of-Thought 和结构化生成往往不是一次独立调用,而是一系列具有共同前缀、分支关系和约束条件的模型调用。

例如,一个 Agent 可能在每轮请求中都携带相同的系统提示词、工具定义和历史消息;一组 RAG 请求可能共享同一份长文档,只在末尾追加不同问题。如果每次都重新执行完整 Prefill,会产生大量重复计算。

SGLang 的代表性技术 RadixAttention 使用 Radix Tree,也就是压缩前缀树,组织 Token 序列与 KV Cache 之间的映射关系。它不只判断 “两个完整 Prompt 是否相同”,还可以表达公共系统提示词、公共文档和不同问题之间的多层前缀关系。新请求到达时,运行时执行最长前缀匹配,只对没有命中的后缀进行 Prefill。

随着项目发展,SGLang Runtime(SRT)已经成为可以独立使用的生产级推理引擎。即使完全不使用早期的前端 DSL,也可以通过 OpenAI 兼容 API、原生接口或离线 Engine 使用它。

三、PagedAttention 与 RadixAttention 到底有什么区别

这是比较两者时最容易混淆的地方。

PagedAttention 主要回答:KV Cache 在显存里怎样放置和分配?

RadixAttention 主要回答:哪些请求拥有相同前缀,这些前缀缓存怎样查找、共享、保留和淘汰?

可以把 KV Cache 系统粗略分成两个层次:

Token 前缀与请求关系
        │
        │  Radix Tree 或 Block Hash 等索引机制
        ▼
逻辑 KV Cache 映射
        │
        │  分页、块表、引用计数和空闲池
        ▼
GPU / CPU / SSD 中的物理 KV 数据

SGLang 的 Radix Tree 更擅长显式表示不同长度和不同分支的共享前缀;vLLM 的自动前缀缓存则通常按 KV Block 计算内容哈希,逐块查找可复用的最长前缀。两种实现都能避免重复 Prefill,只是索引粒度、缓存组织、淘汰方式以及它们与调度器的结合方式不同。

这也意味着,不能简单地说 “有 RadixAttention 才支持前缀缓存”,也不能说 “有 PagedAttention 就自动解决了跨请求复用”。分页管理和前缀索引属于两个相关但不同的问题。

四、调度与请求执行差异

4.1 两者都采用 Continuous Batching

传统静态批处理要求同一批请求一起开始、一起结束。由于各请求的输出长度不同,短请求完成后会留下空闲计算位置。

Continuous Batching 会在每个调度周期重新组织批次:已结束的请求立即退出,新请求可以补入,未结束请求继续 Decode。SGLang 和 vLLM 都把它作为提升 GPU 利用率的基础能力。

两者也都支持 Chunked Prefill,将超长 Prompt 拆成多个片段执行,以免一次大 Prefill 长时间阻塞正在 Decode 的请求。实际体验取决于 Token Budget、最大并发、块大小、Chunk 大小和 Prefill/Decode 调度策略,不能只看功能列表。

4.2 SGLang 更强调缓存感知与 CPU—GPU 重叠

SGLang 会把前缀命中情况纳入调度考虑。假设等待队列中有多条请求共享一个长系统提示词,让它们在缓存仍然存在时相邻执行,可以提高命中率;如果它们被大量无关请求隔开,公共缓存可能已经被淘汰。

SGLang 还长期强调 Overlap Scheduling:GPU 执行当前批次时,CPU 并行准备后续批次,包括解析结果、分配缓存和构造元数据,以减少两个 GPU 批次之间的调度空隙。

4.3 vLLM 更强调通用调度与模块化扩展

vLLM 的 Scheduler、KV Cache Manager、Model Runner 和 Executor 分工清晰。调度器以 Token Budget 和 KV Block 为核心管理 waiting、running、preempted 等请求状态,并通过可扩展的执行后端支持单卡、多卡和多节点部署。

近年来 vLLM 也在持续降低 CPU 调度开销,并引入异步调度、Rust 前端、分离式推理和新的 Model Runner。因此,“SGLang 调度快、vLLM 调度慢” 并不是长期成立的结论。对于短输出、高并发、GPU 计算很快的场景,CPU 开销确实可能成为瓶颈,但需要用目标版本和目标模型测量。

五、功能和生态对比

5.1 模型覆盖

vLLM 的优势之一是模型覆盖面和 Hugging Face 生态兼容性。其官方项目说明列出了 200 多种模型架构,范围包括 Decoder-only LLM、MoE、混合 Attention/状态空间模型、多模态模型、Embedding、Reranker、Reward 和分类模型。

SGLang 同样支持主流的 Llama、Qwen、DeepSeek、Kimi、GLM、Gemma、Mistral 等模型,并且对新型 MoE、MLA、线性 Attention 和超大规模模型投入了大量专项优化。对于刚发布的前沿模型,SGLang 经常把 Day-0 支持和特定硬件性能作为重点方向。

如果使用的是常见主流模型,两者往往都能运行;如果使用冷门架构、自定义模型或刚发布的新模型,应直接检查对应版本的 Supported Models、Release Notes 和已知限制,而不是仅依据项目总模型数做判断。

5.2 结构化输出、工具调用和推理模型

SGLang 从项目早期就关注 JSON、正则表达式和 Grammar 约束生成,并在原始设计中引入了用于加速结构化生成的压缩有限状态机。它也提供用于表达复杂语言模型程序的前端能力。

vLLM 目前同样支持结构化输出、Tool Calling 和 Reasoning Parser,并可以结合 xgrammar、guidance 等后端工作。对于普通的 JSON Schema 输出,两者的功能差距已经明显缩小。真正需要验证的是目标模型的 Chat Template、工具调用格式、推理内容解析器以及流式输出行为是否符合业务协议。

5.3 多模态与扩散模型

两者都支持视觉语言模型等多模态推理,并对图像预处理、视觉编码器缓存和多模态批处理进行优化。

SGLang 还提供 SGLang Diffusion,覆盖部分图像与视频生成模型。它使 SGLang 的项目边界从自回归语言模型服务扩展到了扩散模型服务。不过,语言模型运行时和扩散模型运行时的计算模式并不相同,选型时应分别测试,不能因为品牌相同就假定二者拥有相同的性能特征。

5.4 分布式与超大模型

两者都已经覆盖 Tensor Parallel、Pipeline Parallel、Data Parallel、Expert Parallel 和 Context Parallel 等多种并行方式,也都支持 Prefill/Decode 分离及更复杂的分离式架构。

SGLang 在大规模 MoE、DeepSeek 系列、Expert Parallel、分层 KV Cache、RL Rollout 和机架级系统上非常活跃;vLLM 则拥有广泛的分布式部署用户、硬件插件和上下游平台集成。到了多节点规模,框架名称通常不是唯一决定因素,网络拓扑、NCCL/RDMA、Expert Placement、KV 传输、容错和监控能力同样重要。

5.5 部署和工程生态

两者都提供 OpenAI 兼容服务,因此基础 Chat Completions 或 Completions 应用迁移成本通常不高。但只要业务使用了 Tool Calling、LoRA、多模态输入、Prompt Logprobs、Embedding、并行采样或特殊解码参数,就需要逐项验证协议细节。

vLLM 出现更早,用户规模、教程、第三方集成和运维经验通常更丰富,许多云平台、模型平台和 Kubernetes 推理方案会首先提供 vLLM 模板。SGLang 的社区增长很快,并在前沿模型推理、RL 后训练和高重复前缀负载中形成了很强的影响力。

六、谁的性能更好

最准确的答案是:取决于模型、硬件、流量形态和指标,没有对所有场景都成立的赢家。

6.1 SGLang 可能更有优势的负载

  • 大量请求共享长系统提示词、工具定义或固定文档;
  • 多轮 Agent 会话具有稳定且不断增长的历史前缀;
  • Tree-of-Thought、并行分支、RAG 或 RL Rollout 中存在大量前缀分叉;
  • 使用 SGLang 已深度优化的前沿 MoE、MLA 或特定硬件组合;
  • 需要把缓存感知调度、分层缓存和会话生命周期结合起来。

这些场景更容易发挥 RadixAttention 和相关缓存策略的价值,但收益仍然取决于缓存能否在下一次复用前保留下来。如果前缀几乎不重复,或者缓存因显存压力频繁被淘汰,优势会明显下降。

6.2 vLLM 可能更适合的负载

  • 希望以较低工程风险部署常见 Hugging Face 模型;
  • 业务请求差异较大,前缀复用不是主要性能来源;
  • 依赖现有云平台、网关、监控系统或 Kubernetes 生态集成;
  • 需要广泛的模型架构、量化格式和硬件插件支持;
  • 团队已经积累了 vLLM 参数调优与生产运维经验。

需要注意的是,vLLM 已支持自动前缀缓存、分层 KV Cache 和分离式推理。如果业务共享前缀很多,也不能仅凭“RadixAttention”这个名称就直接判定 SGLang 一定更快。

6.3 吞吐领先不等于用户体验更好

推理服务至少需要同时观察以下指标:

  • TTFT(Time to First Token):从提交请求到收到首个 Token 的时间;
  • TPOT(Time per Output Token)或 ITL:生成阶段相邻 Token 的平均间隔;
  • 端到端延迟:完整请求完成时间;
  • 吞吐量:每秒请求数或每秒 Token 数;
  • 尾延迟:P95、P99 等高分位延迟;
  • Goodput:满足既定 TTFT 和 TPOT 服务等级的有效吞吐;
  • 显存占用与缓存命中率:决定系统能承载的并发和复用效果;
  • 稳定性:长时间压测中是否出现 OOM、请求饥饿、超时或吞吐抖动。

某个配置可能拥有最高 Token 吞吐,却让低并发请求等待更久;也可能拥有很低的平均延迟,但在长 Prompt 混入后出现严重 P99 抖动。线上系统不应只依据单一吞吐数字选型。

七、怎样做一次公平的对比测试

如果要为实际项目选型,建议使用相同请求集做流量回放,并严格控制以下变量:

  1. 使用完全相同的模型仓库和 Revision;
  2. 使用相同精度、量化方式和 KV Cache 数据类型;
  3. 使用相同 GPU、驱动、CUDA/ROCm 和网络拓扑;
  4. 对齐 Tensor Parallel、Pipeline Parallel 等并行配置;
  5. 记录 Attention Backend、GEMM/MoE Kernel 和 CUDA Graph 配置;
  6. 使用相同的输入长度、输出长度和请求到达分布;
  7. 分别测试无共享前缀、固定系统提示词、共享长文档和多轮会话;
  8. 同时测试低并发延迟、饱和吞吐和过载后的尾延迟;
  9. 先完成模型预热和 Kernel 编译,再进入正式统计;
  10. 检查输出正确性,避免把异常结束或少生成 Token 误算成性能提升。

建议至少设计四组测试流量:

流量类型目的
随机独立 Prompt测试通用 Continuous Batching 和模型执行效率
相同 System Prompt + 不同问题测试基础前缀缓存能力
长文档 + 多问题测试长前缀命中、TTFT 和缓存淘汰
多轮 Agent/工具调用测试会话增长、结构化输出和复杂协议行为

只有当测试数据接近真实生产流量时,结果才具有决策价值。

八、选型建议

如果团队需要一个覆盖面广、资料丰富、第三方集成成熟的通用推理后端,vLLM 通常是稳妥的默认起点。它适合从标准 OpenAI API 服务开始,再逐步扩展量化、多卡部署、LoRA 和分离式推理。

如果业务天然包含大量重复前缀,例如长系统提示词、固定知识库、多轮 Agent、树状搜索或 RL Rollout,SGLang 值得优先进入候选名单。它围绕前缀复用和语言模型程序形成的设计,对这类工作负载具有很强的针对性。

如果目标是刚发布的超大 MoE、多模态或新硬件,应放弃抽象层面的“框架站队”,直接比较两边在该模型、该硬件和该版本上的官方支持状态、正确性与 Benchmark。新模型的最优实现经常随着版本更新而改变。

对于重要生产系统,一个更现实的策略是保留统一的 OpenAI 兼容接入层,把 vLLM 和 SGLang 都视为可替换后端。通过模型路由或独立 Deployment,让不同模型和流量使用更合适的引擎,比要求所有业务统一到一个框架更灵活。

结语

vLLM 和 SGLang 正在快速吸收彼此以及整个推理社区的优秀设计。vLLM 不再只有 PagedAttention,SGLang 也不只是 RadixAttention;前缀缓存、连续批处理、推测解码、分离式推理和多种并行方式已经逐渐成为双方共有的基础能力。

两者最值得关注的区别,不是“谁拥有某个功能”,而是该功能与调度器、缓存系统、模型实现和硬件 Kernel 结合得有多深,以及这种组合是否适合自己的业务流量。

简而言之:通用部署与生态兼容可以优先评估 vLLM;共享前缀、Agent、RL 和前沿模型专项优化可以重点评估 SGLang;最终选择则应由真实流量下的 TTFT、TPOT、Goodput、显存效率和稳定性共同决定。

参考资料

  • SGLang 官方文档
  • SGLang GitHub
  • SGLang: Efficient Execution of Structured Language Model Programs
  • vLLM 官方文档
  • vLLM GitHub
  • Efficient Memory Management for Large Language Model Serving with PagedAttention

本文转载自微信公众号「Tiny点」,仅供学习交流使用。

觉得内容不错?我要

打赏杯咖啡或蜜雪冰城吧
微信扫一扫
微信赞赏码
支付宝扫一扫
支付宝赞赏码
评论 暂无评论
请登录后参与评论