@Mayhem4Markets: https://x.com/Mayhem4Markets/status/2069090022117019928

X AI KOLs Following 工具

摘要

两大主流LLM服务框架SGLang和vLLM的详细技术对比,涵盖KV缓存管理(RadixAttention vs PagedAttention)的架构差异、吞吐量、延迟以及自托管环境的部署考量。

https://t.co/ywBfdzjV7V
查看原文
查看缓存全文

缓存时间: 2026/06/23 19:53

SGLang vs vLLM:自托管部署的技术对比

现在,有两个框架主导着 LLM 服务:SGLang 和 vLLM。这两个引擎都提供与 OpenAI 兼容的 API,支持连续批处理,并能运行各种 GPU。

但在管理 GPU 内存、处理共享上下文以及组织代码库的方式上,它们做出了根本不同的取舍。如何选择,与其说是看原始速度,不如说是取决于工作负载形态和硬件限制。

对于使用工作站或服务器级 GPU 配置硬件的人,决定权落在几个具体问题上:

  • 你的提示词是否像在聊天机器人、编程助手和 RAG 流程中那样,跨轮次共享大型前缀?SGLang 的 RadixAttention 在这方面明显优于 vLLM 的 PagedAttention。

  • 你是否需要最广泛的模型兼容性、量化格式支持和硬件可移植性?vLLM 在这方面占优。

  • 你是否需要低开销的结构化输出?SGLang 胜出。

  • 你是否需要 Kubernetes 原生部署或企业支持?vLLM 更为成熟。

本文涵盖架构、性能、部署和社区差异,重点放在单 GPU 和多 GPU 工作站及服务器环境下的自托管部署。

PagedAttention 与 RadixAttention 服务不同的工作负载形态

vLLM 和 SGLang 的核心架构差异在于每个引擎如何管理 KV 缓存,即文本生成期间存储每 token 注意力计算的 GPU 内存结构。KV 缓存随序列长度线性增长,是 LLM 服务中的主要内存瓶颈。

vLLM 的 PagedAttention 源自 UC Berkeley 在 2023 年 SOSP 上发表的一篇论文,它借用了操作系统中虚拟内存分页的概念。KV 缓存被划分为固定大小的块(页面),这些块可以独立分配、释放和重映射。这消除了为每个序列的最坏情况长度预留连续内存的需要。在 32 个请求的批次中,如果 30 个在 10 个 token 内完成,2 个在 500 个 token 内完成,就不再浪费内存于填充分配。与朴素的静态分配相比,已发表的结果是近乎零的内存浪费。

SGLang 的 RadixAttention 源自 LMSYS 在 2024 年的一篇论文,它将 KV 缓存组织为基数树(一种压缩字典树)。当新请求到达时,SGLang 在树中找到最长匹配前缀,并仅为差异后缀计算注意力。三个请求都以“What is the capital of”开头,但分别以“France”、“Germany”和“Weather today”结尾,它们共享公共前缀的 KV 缓存条目。共享前缀在 GPU 内存中存储一次,并在所有三个请求中重用。

实际差异取决于工作负载。在具有唯一提示词且无共享上下文的基准测试中,两个引擎的吞吐量差距缩小到接近零。在提示词共享前缀的工作负载上,SGLang 的 RadixAttention 在标准基准测试中实现 30% 更高的吞吐量,在重前缀的 RAG 流水线和多轮对话中可达 6.4 倍。一个从 vLLM 迁移到 SGLang 的多轮聊天机器人,在相同硬件上通常能看到 30% 或更高的吞吐量提升。

vLLM 提供自动前缀缓存(APC)作为可选功能。它使用基于块的哈希前缀匹配,需要精确的 token 序列匹配才能触发缓存命中。APC 必须通过 –enable-prefix-caching 标志启用,并且通常需要手动调优才能获得最佳缓存利用率。相比之下,RadixAttention 默认运行,无需配置,并自动检测部分前缀重叠。

吞吐量、延迟和批处理性能

2026 年第二季度发布的基准测试显示了这两个引擎在当前硬件上的表现。IoT Digital Twin Q2 基准测试在 8x H200 SXM(每 GPU 141GB HBM3e)上测试了 Llama-3.3-70B(4 位)。在高并发下,vLLM 峰值约为 5,300 tokens/秒,SGLang 约为 5,450 tokens/秒,两个引擎根据并发水平和批次大小在狭窄范围内交替领先。

在具有较小模型的 H100 80GB 硬件上,SGLang 显示出更大优势。Turion Q2 2026 基准测试发现,SGLang 在 50 个并发请求下,在多达 30B 参数的模型上领先。在 70B 及更大的模型上,差距缩小到个位数百分比。在高并发(100+ 请求)下,vLLM 的尾部首次 token 时间(TTFT)开始滞后,而 SGLang 的 p95 TTFT 在重负载下保持更紧。

2026 年初发布的 SemiAnalysis InferenceXv2 基准测试在 GB300 NVL72 硬件上测试了 SGLang 和 DeepSeek R1。结果显示,与 H200 基线相比,性能提升 25 倍,这得益于 SGLang 的 piecewise CUDA 图(自 v0.5.10 起默认)以及针对 DeepSeek 模型的 HiSparse 稀疏注意力集成。

在工作站级硬件上,VRLA Tech 的 2026 年基准测试在 vLLM 上使用 Qwen3-Coder-30B(AWQ,8K 上下文)显示了硬件扩展曲线:RTX 5090 大约提供 4,570 tokens/秒,而 RTX PRO 6000 Blackwell 在相同工作负载下达到约 8,425 tokens/秒。RTX PRO 6000 可以单卡容纳 FP8 下的 70B 模型,而 RTX 5090 无法做到。

通过 VRLA Tech

通过 VRLA Tech

对于单 GPU 部署,这些高端差异会压缩。在两个引擎上,GPU 在调度器或缓存管理器之前成为瓶颈。架构差异在规模下最为重要:多 GPU 配置、高并发以及具有高前缀重用率的工作负载,在这些工作负载中,如果前缀重叠超过 60%,SGLang 的 RadixAttention 相对于 vLLM 可以提供 3-5 倍的有效预填充延迟改善。

硬件支持与可移植性

vLLM 在所有开源推理引擎中支持最广泛的硬件。支持 NVIDIA GPU、AMD GPU、Intel Gaudi、AWS Trainium、Google TPU、Apple Silicon、IBM Spyre、华为昇腾以及 x86/ARM/PowerPC CPU。这种广度对于在非 NVIDIA 硬件上的自托管部署,或者对于需要跨不同云提供商部署而无需更改推理栈的团队来说很重要。

SGLang 主要支持 NVIDIA 和 AMD GPU,另外还支持 Intel Xeon CPU、Google TPU 和昇腾 NPU。它尚不支持 Apple Silicon 或 AWS Trainium。对于在 AMD GPU 或 Mac 上运行模型的用户,vLLM 是更安全的选择。

两个框架都支持张量、流水线、数据、专家和上下文并行以实现分布式推理。对于多 GPU 设置,两个引擎都可以跨设备分布模型层。vLLM 的张量并行实现经过更多实战检验,已在更多样的硬件配置上投入生产更长时间。

模型支持与兼容性

vLLM 在 Hugging Face 上支持超过 200 种模型架构,包括纯解码器 LLM(Llama、Qwen、Gemma)、混合专家模型(MiniMax、Mixtral、DeepSeek、Qwen-MoE)、混合注意力和状态空间模型(Mamba、Qwen3.5+)、多模态模型(LLaVA、Qwen-VL、Pixtral)、嵌入模型(E5-Mistral、GTE、ColBERT)以及奖励模型。这种广度是 vLLM 拥有更大贡献者基础和更长开发时间线的直接结果。

SGLang 支持广泛但略窄的范围。SGLang 通过为重大新版本(尤其是 DeepSeek 模型)提供首日支持来弥补。SGLang 在 2026 年 4 月发布当天就为 DeepSeek-V4 推理提供了支持,并配备了针对该模型混合稀疏注意力架构和 FP4 专家权重的专用内核。

对于自托管部署,两个引擎都能与最流行的开放模型配合使用。只有当需要小众或非常新的模型架构时,差异才重要。在这种情况下,vLLM 更可能已经支持它。

量化与内存效率

截至 2026 年中期,两个引擎都支持广泛且重叠的量化格式集合。vLLM 支持 FP8、MXFP8/MXFP4、NVFP4、INT8、INT4、GPTQ/AWQ、GGUF、compressed-tensors、ModelOpt、TorchAO、AutoAWQ、BitsAndBytes、GPTQModel、Intel Neural Compressor、LLM Compressor 和 AMD Quark。SGLang 支持 fp8、mxfp4、blockwise_int8、w8a8_int8、w8a8_fp8、awq、gptq、compressed-tensors、gguf、modelopt_fp8、modelopt_fp4、torchao、bitsandbytes、awq_marlin、gptq_marlin 以及 AMD 特定方法,包括 quark_int4fp8_moe、quark_mxfp4 和 petit_nvfp4。在格式广度方面的实际差异与前几年相比已大幅缩小。

两个引擎都处理 FP4 量化。vLLM 原生支持 NVFP4 和 MXFP4。SGLang 在 Blackwell GPU 上通过 modelopt_fp4 支持 NVFP4,并通过 nvfp4_online 进行在线转换,此外还有针对 AMD 硬件的额外 FP4 路径(CDNA4 上的 quark_mxfp4,MI250/MI300X 上的 petit_nvfp4)。对于最常见用例(24-48GB GPU 上 4 位的 7B-13B 模型),两个引擎在使用 AWQ 或 GPTQ 格式时表现同样出色。

有意义的差异不在于支持哪些格式,而在于每个引擎在约束解码期间如何处理结构化输出。SGLang 将语法掩码计算与 GPU 执行重叠,因此即使在高批次大小下,JSON 模式或函数调用的吞吐量损失也近乎为零。vLLM 的 xgrammar 和 guidance 集成在 CPU 侧应用语法掩码,在超过 8 个并发请求的批次大小下会造成明显的瓶颈。

在内存效率方面,PagedAttention 和 RadixAttention 的架构差异针对不同的浪费来源。PagedAttention 消除了因填充序列和提前结束请求而浪费的 GPU 内存,使 vLLM 能够在相同 GPU 上服务比朴素实现更多的并发用户。RadixAttention 在提示词共享上下文时减少了每个请求的有效内存占用,这有利于聊天机器人、RAG 和代理型工作负载,其中系统提示词和对话历史会在多轮中重用。

安装与设置复杂度

两个引擎都通过 pip 安装,并与标准 Python 环境兼容。vLLM 推荐使用 uv pip install vllm,并为大多数配置提供预构建的 wheels。SGLang 通过 pip install sglang 安装,也分发预构建的 wheels。两个引擎都需要 CUDA 和 PyTorch,并且在首次使用时编译自定义 CUDA 内核。

熟悉 Python 虚拟环境的工程师可以在 10-15 分钟内让任一引擎运行起来。主要的安装差异在于 vLLM 更广泛的硬件支持意味着更少遇到不支持的 GPU 架构的边缘情况。

vLLM 拥有更成熟的 Docker 工具,提供官方镜像、Kubernetes 的 Helm charts 以及广泛的生产部署文档。SGLang 支持 Docker 部署,也可以部署在 Kubernetes 上,但指南不够全面。对于在单台机器上运行于反向代理后的设置,两个引擎在使用 Docker Compose 时同样有效。

API 兼容性与集成

两个引擎都提供与 OpenAI 兼容的 API,这意味着任何与 OpenAI API 兼容的工具(Factory Droid、OpenCode、Hermes Agent、LangChain、LlamaIndex、Open WebUI、SillyTavern)都可以不加修改地使用任一引擎。端点、请求格式和响应格式与 OpenAI 的聊天补全和补全规范匹配。

vLLM 还额外支持 Anthropic Messages API 和 gRPC 端点,这对于与 Anthropic 兼容工具集成的团队或构建高性能 gRPC 服务的团队很重要。对于大多数自托管部署,与 OpenAI 兼容的 API 已经足够。

SGLang 提供了一个名为 SGLang DSL 的 Python 前端语言,用于定义结构化生成逻辑。它支持链式生成调用、控制流、多模态输入、并行性和外部工具交互。这个 DSL 是 SGLang 的特色功能,也是该项目得名 SGLang(结构化生成语言)的原因。

对于构建代理型工作流和多步推理链的用户,DSL 消除了原本需要手动编排多个 API 调用的样板代码。vLLM 没有提供等效功能;它是一个服务引擎,而不是生成编程框架。

结构化输出与约束解码

SGLang 在结构化输出生成方面具有明显优势。其压缩有限状态机方法,结合 v0.4 版本中的重叠掩码生成,比以往方法提供了高达 10 倍的 JSON 解码速度。由于掩码计算与 GPU 执行重叠,即使在高批次大小下,结构化输出开销也极小。

vLLM 通过 xgrammar 或 guidance 集成支持结构化输出,但在高批次大小下开销明显。对于结构化输出是核心需求的部署(函数调用、JSON 模式、工具使用),SGLang 是更好的选择。

推测解码与高级特性

两个框架都支持推测解码,即使用较小的草稿模型预测 token,然后由较大的目标模型并行验证的技术。vLLM 支持 n-gram、suffix、EAGLE 和 DFlash 推测解码。SGLang 支持 DFlash 和 Spec V2,后者于 2026 年 6 月推出,是下一代的推测解码。

两者都支持分离式预填充与解码,即将预填充阶段(处理输入提示词)与解码阶段(逐个生成 token)分开。这允许不同的 GPU 专注于每个阶段,从而提高大规模部署中的吞吐量。对于单 GPU 设置,分离无关紧要,因为两个阶段都在同一设备上运行。

两个引擎都支持多 LoRA 批处理,允许同时服务基础模型的多个微调版本,而无需加载单独的副本。对于为不同任务维护多个 LoRA 适配器的用户,此功能可成比例地减少 VRAM 需求。

SGLang 作为训练后端

SGLang 还有一个 vLLM 不具备的额外角色。它充当强化学习训练的 rollout 后端,被包括 AReaL、Miles、verl 和 Tunix 在内的框架使用。在 RL 训练期间,策略模型生成响应(rollouts),然后由奖励模型评分,这些 rollouts 需要快速的推理。

SGLang 的推理速度和针对 DeepSeek 的优化使其成为训练前沿模型(包括 DeepSeek-V4 本身)的首选后端。这种同时作为服务引擎和训练后端的双重用途为 SGLang 带来了开发优势:由训练需求驱动的优化也使服务路径受益,反之亦然。

社区与生态系统健康

vLLM 拥有更大的社区,GitHub 星标超过 17,000,贡献者超过 2,000 人,并设有专门的用户论坛。它起源于加州大学伯克利分校的 Sky Computing Lab,已被包括 AWS、Google Cloud 和 Azure 在内的众多公司采纳为默认推理后端。该项目设有一个来自学术机构和公司的维护者委员会。

SGLang 拥有超过 15,000 个 GitHub 星标和快速增长的社区。它托管在 LMSYS 旗下,LMSYS 是 Chatbot Arena 背后的非营利组织。SGLang 的采用名单包括 xAI(Grok 3)、AMD、NVIDIA、Intel、LinkedIn、Cursor、Oracle Cloud 等,已有超过 400,000 个 GPU 在生产中运行 SGLang。该项目在 2025 年获得了 a16z 开源 AI 资助,并于 2025 年 3 月加入了 PyTorch 生态系统。

对于自托管部署,社区规模对故障排除很重要。vLLM 更大的用户群意味着更多的 Stack Overflow 答案、GitHub 问题解决方案和社区指南。SGLang 的社区较小但活跃,设有专门的 Slack 频道和每周开发者会议。

为自托管部署选择 SGLang 还是 vLLM

对于任何为 LLM 推理配置 GPU 服务器或工作站的人,决策框架很简单。

当你的工作负载涉及多轮对话、聊天机器人、编程助手或 RAG 流程,且提示词共享大量前缀时,选择 SGLang。RadixAttention 的优势直接转化为这些工作负载上的更低延迟和更高吞吐量。当结构化输出是你工作流的核心部分时,也选择 SGLang。

当你需要最广泛的硬件支持、最大的模型生态系统或企业级部署工具(Kubernetes、官方 Helm charts、全面的 Docker 文档)时,选择 vLLM。当你需要在非 NVIDIA 硬件(Apple Silicon、AWS Trainium、Intel Gaudi)上部署时,也选择 vLLM。

在大多数情况下,从推理错误的恢复能力、对模型库的支持广度以及部署文档的成熟度来看,vLLM 是更安全的选择。但如果你正在运行具有高前缀重用的实际工作负载,SGLang 的吞吐量优势足够显著,值得评估。

最佳方法是在你的确切硬件和工作负载上对两个引擎进行基准测试。两个引擎都易于安装,因此过渡成本很低。部署决策不是永久的;一旦安装,你可以在 15 分钟内从一个切换到另一个。影响你选择的因素应该是你的具体用例,而不是基准测试论文中的抽象数字。

相似文章

大语言模型与本地AI硬件的推理引擎(2026版)

X AI KOLs

本文提供了一份全面的指南,针对2026年本地AI硬件上的大语言模型推理引擎,解释了如何根据硬件策略、工作负载和服务模型进行选择,并涵盖了诸如llama.cpp、MLX、ExLlamaV2/3、vLLM、SGLang、TensorRT-LLM和NVIDIA Dynamo等引擎。