目录
- 项目背景与定位
- 核心架构差异
- 结构化输出与约束解码
- 分布式推理与并行策略
- [投机采样(Speculative Decoding)](#投机采样(Speculative Decoding))
- 量化支持
- 硬件与生态支持
- 性能基准测试数据
- 模型支持范围
- 部署与运维
- 社区与生态
- 主要不同点汇总表
- 选型决策指南
1. 项目背景与定位
vLLM
- 来源:加州大学伯克利分校 Sky Computing Lab,2023 年 6 月开源
- 论文:SOSP 2023《Efficient Memory Management for Large Language Model Serving with PagedAttention》
- 定位:通用高吞吐量 LLM 推理服务框架,"易用性优先,兼容性最广"
- 里程碑:2025 年 1 月发布 V1 重构版本(alpha);2025 年 5 月加入 PyTorch 基金会;目前部署超过 30 万 GPU,日处理数万亿 tokens
SGLang
- 来源:LMSYS 团队(同样源于 UC Berkeley),2024 年初开源
- 论文:《SGLang: Efficient Execution of Structured Language Model Programs》(arXiv 2312.07104)
- 定位:面向复杂多步骤 LLM 工作流的高性能推理引擎,"结构化生成 + 高吞吐量"
- 里程碑:2025 年 3 月加入 PyTorch 生态;2025 年 6 月获 a16z 开源 AI Grant(第三批);目前驱动超过 40 万 GPU,被 xAI、NVIDIA、AMD、LinkedIn 等在生产中使用
核心设计哲学差异
| vLLM | SGLang | |
|---|---|---|
| 核心理念 | 最大化 GPU 内存利用率,通用场景吞吐最优 | 前后端协同设计,针对结构化/多步骤工作流极致优化 |
| 设计出发点 | 解决 KV Cache 内存碎片和浪费问题 | 解决多次生成调用间 KV Cache 无法复用的问题 |
| 抽象层次 | 推理引擎(Runtime) | 推理引擎 + 前端 DSL(Domain Specific Language) |
2. 核心架构差异
2.1 KV Cache 管理:PagedAttention vs RadixAttention
这是两个框架最根本的技术差异,决定了各自的适用场景上限。
vLLM --- PagedAttention
问题背景:传统 LLM 推理需要为每个序列预分配连续的 KV Cache 显存空间,由于序列长度在推理前未知,通常按最大长度预留,导致严重的显存浪费(内部碎片),也限制了同时服务的并发数。
核心思路:借鉴操作系统虚拟内存的分页(Paging)机制。
工作原理:
- 将 KV Cache 划分为固定大小的"物理块"(Block,通常 16 或 32 个 token 的 KV)
- 为每个序列维护一个"块表"(Block Table),记录逻辑块到物理块的映射,类似操作系统的页表
- 物理块不必连续,可以分散在显存的任意位置
- 支持写时复制(Copy-on-Write):Beam Search 等需要分叉的场景中,多个序列可以共享同一个物理块,只在需要写入时才复制
效果:
- 显存利用率从传统方法的约 60% 提升至 95%+
- 显著增加了可并发服务的序列数
- 显存浪费(内部碎片)几乎消除
抢占机制:当显存不足时,vLLM 采用"先来后到"原则:优先服务早到的请求,抢占最后到达的请求。被抢占序列的 KV Cache 有两种处理方式:
- Swapping:将 KV Cache 换出到 CPU 内存,等显存释放后换回
- Recomputation:直接丢弃,等资源充足时重新计算
vLLM V1 的改进(2025 年 1 月):
- 统一了 Prefill 和 Decode 两个阶段的调度,消除了中间的冗余状态传递
- 引入 Zero-Copy DMA 传输:通过 Pin Memory + 直接 DMA,消除 GPU 与 CPU 之间的冗余张量拷贝
- 集成 FlashAttention 3,降低 Attention 计算的内存带宽压力
- 引入 Pulsar 调度策略:在延迟和吞吐之间动态寻求 Pareto 最优,而非简单地最大化吞吐
SGLang --- RadixAttention
问题背景:vLLM 的 PagedAttention 在单次请求完成后,会丢弃该请求的全部 KV Cache。当多个请求共享相同的前缀(如相同的 System Prompt、Few-shot 示例、RAG 检索结果)时,每次请求都要重新计算这些共享部分,造成大量重复计算。
核心思路 :将 KV Cache 作为一个持久化的 LRU 缓存来管理,用**基数树(Radix Tree,即前缀树)**作为索引结构,实现跨请求的 KV Cache 复用。
数据结构:
- 基数树的每个节点存储一段 token 序列对应的 KV Cache 指针
- 从根节点开始,共享的前缀 token 序列沿树向下共享同一路径
- 新请求到来时,从根节点开始做最长前缀匹配(Longest Prefix Matching)
- 匹配到的节点:KV Cache 直接复用,无需重新计算 Prefill
- 未匹配的后缀:只对这部分新 token 做 Prefill 计算
缓存管理:
- 采用 LRU(最近最少使用)策略进行淘汰:当显存压力上升时,从叶节点开始递归释放最久未使用的子树
- 调度器在分配请求时感知缓存状态(Cache-Aware Scheduling),优先将有相同前缀的请求批处理在一起,最大化缓存命中率
多级复用示例(以 Few-shot 问答为例):
请求 A: [System Prompt] + [Example 1] + [Example 2] + [Question A]
请求 B: [System Prompt] + [Example 1] + [Example 2] + [Question B]
没有 RadixAttention: A 和 B 各自计算全部 Prefill
有 RadixAttention: System Prompt + Example 1 + Example 2 的 KV Cache 只计算一次
A 和 B 只需各自计算 [Question] 部分的 Prefill
代价:RadixAttention 的缓存本身占用 GPU 显存。当所有请求前缀完全不重叠时(如批量内容审核场景,每条文本完全独立),缓存带来的开销反而降低可用显存,使其优势消失乃至产生负收益。
两者对比总结:
| 特性 | PagedAttention (vLLM) | RadixAttention (SGLang) |
|---|---|---|
| 解决的核心问题 | 单次请求内的显存碎片 | 跨请求的重复 Prefill 计算 |
| 缓存生命周期 | 请求结束即释放 | 跨请求持久化,LRU 淘汰 |
| 索引结构 | Block Table(逻辑→物理块映射) | Radix Tree(前缀树) |
| 优势场景 | 独立短请求、显存极度受限 | 共享前缀的多请求场景 |
| 前缀重叠高时 | 每次重新计算 Prefill | 命中缓存,直接复用,可提速 6x+ |
| 前缀无重叠时 | 性能正常 | 缓存开销导致轻微劣势 |
注意:SGLang 同样实现了 PagedAttention(作为其 Token Attention 的基础),RadixAttention 是在 PagedAttention 之上的进一步抽象。两者并不互斥,SGLang 同时拥有两者的能力。
2.2 调度器设计:串行调度 vs 零开销重叠调度
调度器是推理系统中连接"请求管理"和"GPU 计算"的核心枢纽,其设计对 GPU 利用率和整体吞吐量影响巨大。
vLLM 的调度器(V0 与 V1 演进)
V0 架构(串行,存在 CPU 瓶颈):
GPU 计算 → [等待] → CPU 调度 → [等待] → GPU 计算 → [等待] → CPU 调度 → ...
整个推理流程是串行的:GPU 推理完成 → 结果传回 CPU → CPU 做调度决策(分配 KV Block、选下一批请求)→ 数据传回 GPU → GPU 开始下一次推理。CPU 调度阶段 GPU 空闲,在 2024 年的第三方评测中,这部分 CPU 开销在某些场景下占到总推理时间的 50%+。
V1 架构改进:
- 重构了引擎核心,消除了 Prefill 和 Decode 之间的状态传递冗余
- 引入 Pin Memory 和异步数据传输,减少 CPU-GPU 同步等待
- 增加了 Chunked Prefill:将长输入的 Prefill 拆分成小块,与 Decode 交织执行,避免 Prefill 阶段完全阻塞 Decode 请求的响应
Continuous Batching:vLLM 的核心调度策略。不等一个 Batch 内所有序列都生成完毕再换下一批,而是在每个 decode step 结束时动态检查哪些序列已完成(或被抢占),立即将新请求加入批次,保持 GPU 持续满负荷。相比静态批处理,吞吐量可提升约 23 倍。
SGLang 的零开销重叠调度(Zero-Overhead Batch Scheduler)
设计目标:让 CPU 调度开销完全"消失"在 GPU 计算时间里,GPU 利用率趋近 100%。
SGLang 推理的四个阶段(串行时的瓶颈):
- 从等待队列中调度,涉及 Radix Tree 最长前缀匹配
- 为每个请求分配 Token 所需的显存资源
- 执行 GPU 推理(Forward Pass)
- 检查完成条件,移除已完成请求,发送结果给 Detokenizer
重叠调度的实现:
时间轴:
GPU: [Batch N 推理] ─────────────────────────── [Batch N+1 推理] ─────────────
CPU: [Batch N 后处理 + Batch N+1 调度] ← 与 GPU 并行
当 GPU 正在执行第 N 批次的推理时,CPU 同步进行:
- 第 N 批次的后处理(完成条件检查、结果 detokenize)
- 第 N+1 批次的调度(Radix Tree 前缀匹配、显存分配、请求组装)
当 GPU 完成第 N 批次时,第 N+1 批次的准备工作已经就绪,GPU 几乎无需等待即可开始下一批。
此外,SGLang 的约束解码(Structured Output 的 mask 计算)也与 GPU 推理并行执行,进一步消除了结构化输出场景下的额外 CPU 延迟。
效果:在持续高负载的工作负载下,GPU 利用率接近 100%,相比 V0 时代的 vLLM 有显著优势(vLLM V1 已大幅缩小了这一差距)。
2.3 Prefill-Decode 分离(PD Disaggregation)
这是大规模集群部署中非常关键的架构优化,将计算密集的 Prefill 阶段和内存带宽密集的 Decode 阶段拆分到不同的 GPU Worker 池中,使每类工作负载都能独立优化和独立扩展。
| 特性 | vLLM | SGLang |
|---|---|---|
| 是否支持 | 支持 | 支持,且实现更成熟 |
| MoE 模型支持 | 功能完整 | 更成熟,有 DeepSeek 专属优化 |
| Transfer 后端 | 支持 | 支持 Mooncake、NIXL 多种后端 |
| 代表性成果 | H200 集群 2.2k tok/s/GPU | GB200 NVL72 上 Prefill 3.8x、Decode 4.8x(vs H100) |
| 大规模案例 | 多节点生产部署 | 96 个 H100 上 52,300 input tok/s/节点 |
SGLang 在 PD 分离上发布了更多详细的大规模实验报告(96 GPU、GB200 NVL72 集群),文档更完善,社区中的真实案例更多。
3. 结构化输出与约束解码
结构化输出(强制模型生成合法 JSON、XML、正则匹配的字符串等)是 Agent 系统的关键能力,也是 SGLang 的核心差异化优势之一。
vLLM 的实现
vLLM 通过集成 Outlines 库实现 guided decoding,支持:
- JSON Schema 约束
- 正则表达式约束
- EBNF 语法约束
实现方式 :在每个 decode step 生成 logits 后,通过有限状态机(FSM)计算当前状态下合法的 token 集合(mask),将非法 token 的 logits 设为 -inf 再做 softmax 采样。
性能瓶颈:mask 的计算是在 CPU 上串行进行的,且发生在 GPU 推理完成之后,形成串行瓶颈。在每 step 都需要约束的场景中,会显著增加延迟。
SGLang 的实现
SGLang 从论文阶段就把结构化输出作为核心设计目标,实现了两项关键优化:
压缩有限状态机(Compressed FSM):
- 传统 FSM 对每个 token 逐一检查是否合法,开销与词表大小(通常 3 万 - 10 万)线性相关
- SGLang 的压缩 FSM 将连续的合法 token 区间合并,状态跳转直接跳到下一个约束"决策点",跳过中间必然合法的 token
- 对于 JSON 生成等场景(如连续输出字符串内容),可以一次跳过大量 token,实现"跳步解码"(Jump-Forward Decoding),将 JSON 解码速度提升约 3x
并行 Mask 计算:
- SGLang 的零开销调度器将 mask 计算与 GPU 推理并行执行
- GPU 做第 N step 推理时,CPU 同步计算第 N+1 step 的 token mask
- 完全消除了 mask 计算带来的额外延迟
综合效果:
- 典型 JSON Schema 约束输出:SGLang 吞吐量约为 vLLM 的 2x
- 函数调用(Function Calling)等需要严格格式的场景:差距更大
- 无约束场景:两者差距不显著
4. 分布式推理与并行策略
两者都支持标准的分布式推理策略,但在某些关键特性上有差异。
并行策略支持
| 并行策略 | vLLM | SGLang |
|---|---|---|
| Tensor Parallelism (TP) | ✅ | ✅ |
| Pipeline Parallelism (PP) | ✅ | ✅ |
| Expert Parallelism (EP,MoE 专用) | ✅,支持 Wide-EP + EPLB | ✅,支持 Large-Scale EP |
| Data Parallelism (DP) | ✅ | ✅,支持 DP Attention(MLA 模型专用优化) |
| Sequence Parallelism | 部分支持 | 部分支持 |
MoE 模型的 Expert Parallelism
这是当前最受关注的特性,因为 DeepSeek 系列等 MoE 模型已成为主流。
vLLM 的 Wide-EP + EPLB:
- 实现了 DeepSeek 风格的专家并行负载均衡器(EPLB,Expert Parallel Load Balancer)
- 通过滑动窗口统计 Expert 的负载,动态调整 logical-to-physical expert 映射
- 支持 All-to-All 通信的多种后端(NCCL、PyNVCCL、DeepEP)
- 实测在 H200 多节点集群上 DeepSeek 推理吞吐 2.2k tok/s/GPU
SGLang 的 Large-Scale EP:
- 同样支持 DeepSeek EPLB 风格的负载均衡
- 在 PD 分离场景中,Prefill 实例使用 DeepEP normal mode,Decode 实例使用低延迟 mode,各自独立优化
- 已有 96 个 H100 GPU 上的生产级部署案例,文档和博客更详细
多节点通信
两者都支持 NCCL,vLLM 还支持 Gloo,用于非 GPU 间的通信回退。SGLang 支持 Mooncake 和 NIXL 作为 PD 分离的 KV Cache 传输后端,后者在跨节点 KV Cache 传输性能上更优。
Cache-Aware Load Balancer(SGLang 独有)
在多节点分布式部署中,SGLang 实现了感知缓存的负载均衡器:不是简单地按负载将请求均匀分发到各个 Worker,而是预测每个 Worker 对某个请求的 Radix Tree 缓存命中率,将请求路由到最可能命中缓存的 Worker,从而最大化整体缓存命中率。这对于有大量共享前缀的场景(如多用户访问同一个 RAG 知识库)有显著收益。
5. 投机采样(Speculative Decoding)
投机采样通过"草稿模型猜测多个 token → 目标模型一次性验证"的方式,在不改变输出质量的前提下显著降低延迟。
| 特性 | vLLM | SGLang |
|---|---|---|
| Draft Model 方式 | ✅ 支持独立草稿模型 | ✅ 支持独立草稿模型 |
| EAGLE / EAGLE-2 | ✅ | ✅ |
| Medusa(多头预测) | ✅ | ✅ |
| MTP(Multi-Token Prediction,DeepSeek R1 专用) | ✅ | ✅,2025 年初加入,DeepSeek 专属优化更深 |
| Draft 与 Verify 的批调度 | 标准实现 | 与零开销调度器集成,并行效率更高 |
DeepSeek V3/R1 引入的 MTP(Multi-Token Prediction)机制使得投机采样在 MoE 模型上的收益更大。SGLang 对此有专属优化,是其在 DeepSeek 模型推理中性能领先的重要原因之一。
6. 量化支持
| 量化格式 | vLLM | SGLang |
|---|---|---|
| FP8(W8A8) | ✅ | ✅ |
| FP4(NVFP4,Blackwell 专用) | ✅(通过 Cutlass) | ✅(通过 FlashInfer NVFP4 GEMM) |
| INT8(W8A8) | ✅ | ✅ |
| INT4 / AWQ | ✅ | ✅ |
| GPTQ | ✅ | ✅ |
| GGUF | ❌(不支持,需用 llama.cpp) | ❌ |
| KV Cache INT8/INT4 量化 | ❌(仅支持 FP8 KV) | ❌(仅支持 FP8 KV) |
| BitsAndBytes | ✅ | 部分支持 |
注:KV Cache 的 INT8/INT4 量化目前只有 LMDeploy 的 TurboMind 后端支持,vLLM 和 SGLang 均不支持,这是它们相比 LMDeploy 的一个短板。
Blackwell 架构(B200/B300/GB200)的 NVFP4 量化是目前性能提升最显著的量化方式,两者都在积极跟进,但需要配套的 Cutlass 或 FlashInfer kernel 支持,稳定性随版本持续改善。
7. 硬件与生态支持
硬件支持对比
| 硬件平台 | vLLM | SGLang |
|---|---|---|
| NVIDIA H100 / H200 | ✅ | ✅ |
| NVIDIA A100 | ✅ | ✅ |
| NVIDIA Blackwell (B200/B300/GB200) | ✅ | ✅ |
| NVIDIA RTX 系列(消费级) | ✅(5090 等) | ✅ |
| AMD MI300X / MI355 | ✅ | ✅ |
| Google TPU | ✅(v4/v5) | ✅(2025 年 10 月加入 SGLang-Jax 后端) |
| AWS Trainium | ✅ | ❌ |
| Intel Gaudi | ✅ | ❌ |
| Intel Xeon CPU | 部分支持 | ✅ |
| 华为 Ascend NPU | 社区支持 | ✅(官方支持) |
| Apple Silicon | ❌ | ❌ |
结论:vLLM 的硬件支持更广泛,特别是 AWS Trainium 和 Intel Gaudi 等非主流加速器。如果你的部署环境不是纯 NVIDIA/AMD,vLLM 几乎是唯一选择。
生态集成
| 生态 | vLLM | SGLang |
|---|---|---|
| Kubernetes / KServe | ✅ 深度集成 | ✅ |
| Kubeflow | ✅ | ✅ |
| LangChain | ✅ | ✅(通过 OpenAI 兼容接口) |
| LlamaIndex | ✅ | ✅ |
| OpenAI 兼容 API | ✅ | ✅ |
| RL 后训练(verl、AReaL 等) | 部分支持 | ✅ 原生 rollout 后端 |
| Ray Serve | ✅ | ✅ |
| Hugging Face Hub | ✅ 原生 | ✅ |
| PyTorch 基金会 | ✅(2025 年 5 月) | ✅(2025 年 3 月) |
| TGI 替代推荐 | ✅(HuggingFace 官方推荐,TGI 已进入维护模式) | ✅ |
8. 性能基准测试数据
以下数据来自多个第三方测试机构(2025 Q3 - 2026 Q2),测试模型主要为 Llama 3.3 70B Instruct FP8,硬件为 NVIDIA H100 SXM5 80GB。请注意,不同测试方法和配置可能导致结果差异,应以实际业务场景测试为准。
吞吐量(Throughput,tokens/s)
| 测试来源 | vLLM | SGLang | SGLang 领先 |
|---|---|---|---|
| PremAI / DeployBase | 12,553 tok/s | 16,215 tok/s | +29% |
| Morph LLM(2026.04) | 12,500 tok/s | 16,200 tok/s | +29% |
| Spheron(H100 SXM5,并发 100) | ~11,800 tok/s | ~14,200 tok/s | ~+20% |
首 Token 延迟(TTFT,Time to First Token)
- SGLang 的 TTFT 比 vLLM 低约 15%,主要受益于零开销调度器减少了 GPU 等待 CPU 的时间
- 在有前缀缓存命中的场景,SGLang 的 TTFT 优势更大(因为跳过了大量 Prefill 计算)
前缀缓存命中场景(Prefix-Heavy Workloads)
| 前缀重叠比例 | vLLM 提升 | SGLang 提升 |
|---|---|---|
| 无重叠(独立请求) | 基准 | 基本持平(±5%) |
| 中等重叠(50%) | 基准 | +2~3x |
| 高重叠(90%+ ,Agent / RAG 典型场景) | 基准 | +4~6.4x |
结构化输出性能(JSON Schema 约束)
- 无约束 vs JSON 约束,vLLM:吞吐下降约 30-40%
- 无约束 vs JSON 约束,SGLang:吞吐下降约 10-15%(压缩 FSM + 并行 mask 计算)
- 结论:JSON 约束场景 SGLang 吞吐约为 vLLM 的 1.5~2x
显存占用(Llama 3.3 70B FP8,H100 80GB)
两者显存占用基本相当。SGLang 的 RadixAttention 缓存会额外占用显存,在缓存命中率低的场景可能比 vLLM 多占 5-10% 的显存。
大规模集群(多节点,MoE 模型)
| 部署规模 | 框架 | 吞吐量 |
|---|---|---|
| 96x H100,DeepSeek V3,PD 分离 | SGLang | 52,300 input tok/s / 22,300 output tok/s(每节点) |
| H200 多节点,DeepSeek,Wide-EP | vLLM | 2,200 tok/s / H200 GPU |
| GB200 NVL72,DeepSeek V3/R1 | SGLang | Prefill 26,156 tok/s/GPU,Decode 13,386 tok/s/GPU(H100 的 3.8x / 4.8x) |
9. 模型支持范围
两者对主流开源模型的支持都非常广泛,以下列出差异点。
vLLM 的广度优势
- 支持更多冷门或实验性模型架构(因为社区贡献者更多,约为 SGLang 的 3 倍)
- 对多模态模型的支持更广(视频、音频等)
- 对 LoRA 的支持更成熟,包括 Multi-LoRA 动态切换
SGLang 的深度优势
- DeepSeek 系列:首日(Day-0)支持,含专属 MoE 优化(DeepGEMM、DeepEP、EPLB),针对 MLA(Multi-head Latent Attention)架构有专项 DP Attention 优化
- 扩散模型(Diffusion Model):2025 年 11 月加入扩散模型加速支持(WAN、Qwen-Image)
- Reward Model:支持 Skywork 等奖励模型,方便 RLHF 场景
共同支持的重要模型家族
Llama 系列、Qwen 系列、Mistral 系列、Gemma 系列、GPT 系列(通过 OpenAI 兼容格式)、Phi 系列、Yi 系列等。
10. 部署与运维
安装与启动
两者都支持 pip 安装和 Docker 镜像,启动命令风格相似(均兼容 OpenAI API Server 格式):
bash
# vLLM 启动示例
vllm serve meta-llama/Llama-3.3-70B-Instruct \
--tensor-parallel-size 4 \
--gpu-memory-utilization 0.9 \
--max-model-len 32768
# SGLang 启动示例
python -m sglang.launch_server \
--model-path meta-llama/Llama-3.3-70B-Instruct \
--tp 4 \
--mem-fraction-static 0.9 \
--context-length 32768
稳定性与升级
- vLLM:以"稳定性是特性"为核心原则,API 兼容性好,更新很少造成破坏性变更,更适合希望"稳定运行"的生产团队
- SGLang:迭代速度更快,性能版本频繁,偶尔有 breaking changes,适合愿意追新特性的团队
可观测性
两者都暴露 Prometheus 指标,包括:
- 请求延迟(TTFT、ITL、E2E)
- 吞吐量(tokens/s)
- KV Cache 使用率
- GPU 利用率
SGLang 额外暴露 Radix Tree 缓存命中率指标,便于监控前缀缓存效果。
Kubernetes 部署
两者都有完善的 Helm Chart 和 Kubernetes Operator 支持。通过 KServe(已成为 CNCF 孵化项目)可以将两者统一纳管,实现自动扩缩容、金丝雀发布等能力。
11. 社区与生态
| 维度 | vLLM | SGLang |
|---|---|---|
| GitHub Stars(2026 年 6 月估算) | ~50,000+ | ~18,000+ |
| 贡献者数量 | SGLang 的 3 倍以上 | 快速增长中 |
| Issue / PR 数量 | 极多(社区庞大,部分 Issue 积压) | 较多,维护者响应较快 |
| 资金背景 | a16z、ZhenFund;加入 PyTorch 基金会 | a16z(第三批 Open Source AI Grant) |
| 主要使用公司 | 各大云厂商、Mistral、Meta 等 | xAI、NVIDIA、AMD、LinkedIn、字节跳动等 |
| RL 后训练框架 | 部分集成 | verl、AReaL、slime、Tunix、Miles 等主流框架首选 |
| 文档质量 | 非常完善 | 完善,核心特性文档详细 |
| 中文社区 | 活跃 | 较活跃 |
12. 主要不同点汇总表
| 维度 | vLLM | SGLang | 备注 |
|---|---|---|---|
| KV Cache 策略 | PagedAttention(请求级) | RadixAttention(跨请求持久化) | 最核心差异 |
| 调度器 | Continuous Batching,V1 有改进 | 零开销重叠调度,CPU/GPU 并行 | SGLang 理论更优 |
| 结构化输出 | 支持,基于 Outlines | 原生压缩 FSM + 并行 mask,更快 | SGLang 明显领先 |
| 前缀缓存收益 | 有限(仅 Block 级共享) | 极高(RadixAttention 任意粒度) | 场景依赖强 |
| PD 分离成熟度 | 支持,文档较少 | 支持,大规模案例更多 | SGLang 略优 |
| 硬件支持广度 | 更广(TPU、Trainium、Gaudi) | 较广(NVIDIA、AMD、TPU、Ascend) | vLLM 明显领先 |
| MoE 专项优化 | Wide-EP + EPLB | Large-Scale EP + DeepSeek 专属 | 基本持平,SGLang 案例更丰富 |
| 标准吞吐量 | ~12,500 tok/s(H100,70B) | ~16,200 tok/s(H100,70B) | SGLang +29% |
| 社区规模 | 更大(贡献者 3x) | 较小但快速增长 | vLLM 明显领先 |
| 稳定性 | 极高,破坏性变更少 | 较高,迭代快偶有 breaking change | vLLM 更稳 |
| RL 训练后端 | 部分支持 | 主流框架首选 rollout 后端 | SGLang 明显领先 |
| 易用性 | 非常好,文档最全 | 好,文档完善 | 基本持平 |
| 量化支持 | 齐全 | 齐全 | 基本持平 |
| 多模态 | 更广泛 | 支持,含扩散模型 | vLLM 略优 |
13. 选型决策指南
优先选 SGLang 的场景
- Agent 系统:系统 Prompt 固定,多个用户请求共享大量前缀;工具调用需要严格 JSON 格式
- RAG 应用:检索文档作为前缀被多次复用,RadixAttention 直接命中缓存
- 多轮对话服务:对话历史形成共享前缀,随着轮数增加缓存命中率越高
- DeepSeek 系列模型:SGLang 有专属的 MLA、EP、MTP 优化
- RL 后训练(Post-Training):需要高效 rollout 的场景,verl 等框架默认推荐 SGLang
- 前缀敏感型 Batch 任务:如 Few-shot 评估,大量请求共享相同的 few-shot 示例
- 需要极致结构化输出性能:API 响应、函数调用、数据抽取等必须输出合法 JSON 的场景
优先选 vLLM 的场景
- 独立短请求的高并发服务:内容审核、批量翻译、广告文案生成等,每条请求完全独立,无前缀重叠
- 多硬件环境:需要在 AWS Trainium、Intel Gaudi 或非主流 GPU 上部署
- 稳定性要求极高的生产环境:不希望因框架更新引入不稳定因素
- 需要大社区支持:团队较小,希望遇到问题能快速找到解决方案
- 丰富的模型多样性:需要部署各种冷门或实验性架构
- Kubernetes / KServe 深度集成:vLLM 是 KServe 的默认推理后端
都适合 / 都优先的场景
- DeepSeek V4 等新模型:两者均提供 Day-0 官方支持
- 标准 LLM 聊天服务(无前缀复用需求):性能差距在 5% 以内,可以任选
- NVIDIA H100/H200 生产环境:两者都有成熟的大规模部署案例
终极建议
2026 年没有错的选择,只有更合适的选择。
如果你的团队有精力运维和跟进两个框架,完全可以双栈部署:将 Agent、RAG、多轮对话流量路由到 SGLang,将独立批处理请求路由到 vLLM。这也是 xAI、字节跳动等大厂的实际做法。
如果只能选一个,没有特殊场景需求的情况下,vLLM 是更保守稳妥的选择 ;有明确的 Agent/RAG/结构化输出需求,SGLang 可能带来可观的成本节省(同等硬件,吞吐量最高高出 30%+,意味着可以少买 30% 的 GPU)。
本报告数据截止 2026 年 6 月,两个框架均处于快速迭代期,建议在实际选型前针对自己的业务场景做基准测试。