AI 部署评测

vLLM · Replicate · Modal · RunPod · 云厂商

vLLM 与 SGLan

vLLM 与 SGLang 对比:下一代推理框架在调度算法上的创新

2025年第一季度,MLCommons 最新 MLPerf Inference v5.0 基准测试显示,在 Llama 3.1 70B 模型推理任务中,采用 PagedAttention v2 调度算法的 vLLM 在吞吐量上较上一代提升了 37%,而 SGLang 在相同硬件配置下以 RadixAttentio…

2025年第一季度,MLCommons 最新 MLPerf Inference v5.0 基准测试显示,在 Llama 3.1 70B 模型推理任务中,采用 PagedAttention v2 调度算法的 vLLM 在吞吐量上较上一代提升了 37%,而 SGLang 在相同硬件配置下以 RadixAttention 前缀缓存机制实现了首 Token 延迟降低 42%【MLCommons,2025,MLPerf Inference v5.0】。中国信通院同期发布的《2025 年 AI 推理引擎技术白皮书》指出,国内 68% 的 MLOps 团队已将推理框架选型列为模型部署成本优化的首要环节【中国信通院,2025,AI 推理引擎技术白皮书】。这两组数据共同指向一个核心问题:当 GPU 租赁成本占推理总成本 70% 以上时,vLLM 与 SGLang 在调度算法上的差异,直接决定了企业每百万 Token 的推理账单。

调度算法架构对比:PagedAttention 与 RadixAttention

vLLM 的核心调度算法 PagedAttention 借鉴了操作系统虚拟内存的分页思想。它将 KV Cache 按固定大小分页管理,每个页 16 个 Token。当模型生成新 Token 时,系统动态分配空闲页,而非预分配连续内存块。这种机制在 Llama 2 7B 模型上可将内存利用率从 40% 提升至 95%【UC Berkeley,2023,vLLM 论文】。

SGLang 采用的 RadixAttention 则基于基数树(Radix Tree)数据结构。它将所有历史请求的 KV Cache 按 Token 序列前缀建立共享索引。当新请求的 Prompt 与历史请求共享前缀时,系统直接复用已缓存的中间状态,跳过多层 Transformer 的前向计算。

内存碎片处理差异

PagedAttention 通过页内紧凑存储减少外部碎片,但页内碎片(最后不满一页的 Token)仍会造成约 6% 的内存浪费。RadixAttention 的树形结构允许动态合并缓存块,内部碎片率可控制在 2% 以下【Stanford,2024,SGLang 技术报告】。

前缀缓存机制:SGLang 的差异化优势

多轮对话RAG 检索 场景下,SGLang 的 RadixAttention 展现出显著优势。当 100 个用户同时查询“2024 年 Q3 财报分析”这一相同前缀时,vLLM 需要为每个请求独立计算前 15 个 Token 的中间状态,而 SGLang 仅需计算一次,后续 99 个请求直接复用缓存。

实测数据显示,在 ShareGPT 数据集上模拟 1000 个并发请求,SGLang 的 首 Token 延迟 中位数为 38ms,vLLM 为 65ms,差距达 41%【LMDeploy,2025,推理框架基准测试】。但当请求前缀完全随机、无重叠时,RadixAttention 的树形检索开销会抵消部分优势,此时两者延迟差距缩小至 8% 以内。

缓存淘汰策略

vLLM 采用 LRU(最近最少使用)缓存淘汰,当显存不足时优先丢弃最久未访问的缓存页。SGLang 使用加权 LFU(最不经常使用),结合前缀出现频率与最近访问时间综合评分,在长尾分布的前缀场景中缓存命中率高出 12-15 个百分点。

批处理调度:连续批处理 vs 动态批处理

vLLM连续批处理(Continuous Batching)在 GPU 上维持一个持续运行的推理循环。每当有新请求到达,系统立即将其插入当前批次中正在执行的解码阶段。这种机制消除了传统批处理中等待批次填满的空闲时间,在低负载场景下可将 GPU 利用率从 30% 提升至 85%。

SGLang 采用 动态批处理(Dynamic Batching),在每次迭代前根据当前等待队列的请求特征重新组合批次。它允许将不同 Prefill 阶段的请求与不同 Decode 阶段的请求混合在同一批次中,通过精细化调度减少 GPU 计算单元的闲置。

吞吐量对比

在 NVIDIA A100 80GB 上部署 Llama 3 8B 模型,输入输出比 3:1 的典型场景下,vLLM 的连续批处理在 256 并发时达到 1,850 tokens/s 的吞吐量,SGLang 的动态批处理为 1,720 tokens/s【MLCommons,2025,MLPerf Inference v5.0】。但当输入输出比变为 1:3(长生成场景)时,SGLang 以 2,100 tokens/s 反超 vLLM 的 1,950 tokens/s。

显存管理策略:预分配与动态分配

vLLM 在服务启动时预分配一块连续的显存池,大小为模型最大序列长度 × 批处理大小 × 每 Token 缓存大小。这种策略避免了运行时频繁分配释放带来的开销,但会浪费约 15% 的显存用于预留未使用的缓存页【UC Berkeley,2023,vLLM 论文】。

SGLang 采用 按需动态分配,仅在请求到达时分配所需缓存空间。它的显存分配器支持碎片整理,当连续空闲显存不足时,通过移动已分配缓存块来合并空间。在 24GB 显存的 RTX 4090 上部署 Mistral 7B 模型时,SGLang 可支持的最大并发数比 vLLM 多 30%。

OOM 处理差异

vLLM 在显存不足时直接返回 OOM 错误,需要上层应用重试。SGLang 实现了优雅降级——当显存压力达到 90% 时,自动将新请求的 Prefill 阶段回退到 CPU,仅在 GPU 上执行 Decode,避免服务完全中断。这种机制在突发流量场景下将服务可用性从 98.2% 提升至 99.7%【SGLang 官方文档,2025】。

多 GPU 扩展性:张量并行与流水线并行

vLLM 原生支持 张量并行(Tensor Parallelism),在单机 8 卡 A100 环境下部署 Llama 3 70B 模型时,通过将注意力头分布到不同 GPU 上,实现了 7.2 倍的线性加速比。但它的流水线并行实现较为初级,跨机场景下通信开销占比达 23%。

SGLang 同时支持张量并行与 流水线并行(Pipeline Parallelism)。它将模型按层切分到不同 GPU,并引入异步通信机制——当 GPU 0 计算第 1-10 层时,GPU 1 预加载第 11-20 层的权重。在 4 节点 32 卡集群上部署 Llama 3 405B 模型时,SGLang 的端到端延迟比 vLLM 低 18%。

中国云环境适配

在中国大陆云厂商(阿里云 P100、腾讯云 V100)上测试时,vLLM 的 NCCL 通信库在 VPC 网络下表现稳定,延迟抖动低于 5%。SGLang 的异步通信在跨可用区部署时遇到 12% 的带宽波动,需要手动调整通信缓冲区大小才能恢复性能。

生态集成与工具链

vLLM 拥有更成熟的生态集成。它原生支持 OpenAI 兼容 API,可直接替换 FastChat、TGI 等框架。Hugging Face 的 TGI 团队在 2025 年 3 月宣布将 vLLM 作为默认后端,覆盖 85% 的开源模型推理需求【Hugging Face,2025,TGI 发布公告】。

SGLang结构化输出 能力是其差异化卖点。它原生支持 JSON Schema 约束解码,在生成结构化数据时无需额外后处理。在金融报表生成场景中,SGLang 的 JSON 输出准确率达 99.7%,vLLM 配合约束解码插件为 97.2%。

在跨境访问海外模型服务时,部分 MLOps 团队会使用 NordVPN 跨境访问 等工具保障与 Hugging Face Hub 及 AWS S3 模型的稳定连接,避免因网络中断导致的模型下载失败。

FAQ

Q1:vLLM 和 SGLang 哪个更适合生产环境部署?

两者各有侧重。如果你的业务以短 Prompt、高并发、输入输出比接近 1:1 的通用对话为主,vLLM 的连续批处理在 256 并发下吞吐量比 SGLang 高 7.5%。如果业务包含大量 RAG 检索或长文本生成(输出输入比 > 3:1),SGLang 的 RadixAttention 可将首 Token 延迟降低 41%【MLCommons,2025,MLPerf Inference v5.0】。

Q2:在 24GB 显存的消费级显卡上,哪个框架能跑更大的模型?

SGLang 的动态显存分配在 RTX 4090 上可支持的最大并发数比 vLLM 多 30%。例如部署 Mistral 7B 模型时,vLLM 最大支持 8 个并发请求,SGLang 可支持 10-11 个,且 OOM 优雅降级机制避免服务中断【SGLang 官方文档,2025】。

Q3:两个框架的 API 兼容性如何,迁移成本高吗?

vLLM 直接兼容 OpenAI API 格式,从 FastChat 或 TGI 迁移只需修改 endpoint URL。SGLang 提供 OpenAI 兼容端点和自定义 Python SDK,迁移时需重写部分调度逻辑。对于已有 vLLM 部署的团队,切换到 SGLang 的代码改动量约为 150-200 行。

参考资料

  • MLCommons,2025,MLPerf Inference v5.0 基准测试报告
  • 中国信通院,2025,AI 推理引擎技术白皮书
  • UC Berkeley,2023,Efficient Memory Management for Large Language Model Serving with PagedAttention
  • Stanford University,2024,SGLang: Efficient Execution of Structured Language Model Programs
  • Hugging Face,2025,Text Generation Inference 发布公告