模型 / 数据集
vllm-project/vllm avatar
vllm-project/vllm

vLLM 评测:PagedAttention 之外,推理引擎的吞吐与内存账本

适用于法学硕士的高吞吐量和内存高效的推理和服务引擎。

91,844 个 Star22,235 个 ForkPythonApache-2.0

秒懂

它是什么?
vLLM 是面向 LLM 的高吞吐推理与服务引擎,核心是 PagedAttention 对 KV 缓存的管理。本文拆解其机制、部署方式与适用边界,给出明确的采用建议。
适合谁用?
vLLM 适合需要高吞吐、显存受限的 LLM 服务场景,尤其是生产环境中的 OpenAI 兼容 API 部署。若你的模型不在 200+ 支持架构列表中,或需要 CPU 上的极致低延迟,则应先验证兼容性。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库在最近一天内有新的提交。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决的是显存碎片与批处理效率问题

vLLM 要解决的核心问题是 LLM 服务时的显存浪费。推理时,每个请求的 key 和 value 缓存会占用大量显存,传统方式按最大序列长度预分配,导致碎片和低利用率。vLLM 的 PagedAttention 将 KV 缓存分页管理,类似操作系统的虚拟内存,按需分配页面,从而提升显存利用率。这直接带来更高的吞吐,因为同一块显存能容纳更多并发请求。它面向的是需要大规模部署 LLM 服务的团队,比如 API 提供商、内部工具平台,以及任何在 GPU 上跑多个模型实例的开发者。

PagedAttention 与连续批处理:机制拆解

PagedAttention 是 vLLM 的基石,它把 KV 缓存分成固定大小的块,每个块可以独立存储和索引。推理时,注意力计算通过块索引而非连续内存访问,减少了碎片。连续批处理则允许新请求在旧请求完成时立即加入,而不是等待整个批次结束。vLLM 还实现了 chunked prefill,把长输入的预填充阶段切分成小块,避免阻塞解码。前缀缓存则复用相同前缀的计算结果,对多轮对话或共享系统提示词的场景特别有效。这些机制叠加,使得吞吐量显著高于传统的静态批处理。

安装与启动:从 uv 到 OpenAI 兼容 API

安装 vLLM 推荐用 `uv pip install vllm`,也可以直接用 pip。启动服务最简单的方式是命令行:`vllm serve <model>`,其中 `<model>` 可以是 Hugging Face 上的模型 ID。它默认提供 OpenAI 兼容的 API,这意味着你可以用现有的 OpenAI 客户端库直接连接。此外还支持 Anthropic Messages API 和 gRPC,方便不同生态的集成。对于分布式部署,vLLM 支持张量并行、流水线并行、数据并行、专家并行和上下文并行,配置方式在文档中说明。量化方面,支持 FP8、INT8、INT4、GPTQ/AWQ、GGUF 等多种格式,覆盖常见的压缩需求。

模型支持与硬件边界:200+ 架构的诱惑与陷阱

vLLM 声称支持 200+ 模型架构,包括 Llama、Qwen、Gemma 等主流解码器,Mixtral、DeepSeek-V3 等 MoE 模型,以及 Mamba、Qwen3.5 等混合注意力模型。多模态模型如 LLaVA、Qwen-VL 也在列。但支持列表并不等于开箱即用,每个架构的 kernel 优化程度不同,性能差异可能很大。硬件方面,vLLM 主要针对 NVIDIA GPU 优化,虽然支持 AMD、Intel GPU 和 CPU,但 README 中提到的 CUDA/HIP 图优化暗示了 NVIDIA 是首要目标。如果你用的是非主流硬件,比如华为 Ascend 或 Apple Silicon,需要依赖插件,成熟度未知。

性能优化的代价:CUDA 图与 kernel 依赖

vLLM 的高性能依赖深度定制的 CUDA kernel,包括 FlashAttention、FlashInfer、TRTLLM-GEN 等。它还使用 torch.compile 自动生成 kernel 和图级变换。这意味着每次新模型或新架构的适配都需要重新验证 kernel 正确性。对于研究团队,这可能是个负担:想快速实验一个新模型,却需要等待 vLLM 社区支持。另一方面,vLLM 的量化支持很广,但每种量化格式的精度和速度权衡不同,需要实际测试。文档没有提供性能基准,所以声称的“高吞吐”需要在自己的硬件上验证。

替代方案:TGI 与更轻量的选择

与 vLLM 最直接的竞争是 Hugging Face 的 Text Generation Inference(TGI)。TGI 也提供连续批处理和量化支持,但它的架构更偏向于 Hugging Face 生态,模型适配更直接。vLLM 的 PagedAttention 在显存利用率上通常更优,但 TGI 的部署更简单,尤其适合已有 Hugging Face 工作流的团队。另一个选择是使用 transformers 库的 pipeline,适合小规模实验,但吞吐远不及 vLLM。如果你需要的是低延迟而不是高吞吐,比如实时交互场景,vLLM 的批处理优化可能不是最优解,更轻量的服务可能更合适。

维护成本与许可证:Apache-2.0 的双刃剑

vLLM 采用 Apache-2.0 许可证,允许商用和修改,但需要保留版权声明。这意味着你可以自由集成到商业产品中,但若修改了核心代码,需要明确标注。维护成本方面,vLLM 迭代非常快,最近的版本发布间隔仅几周,例如 v0.28.0 在 2026 年 8 月 26 日发布,距离 v0.27.1 只有半个月。这种速度意味着新特性多,但升级可能需要适配 API 变化。同时,社区庞大,超过 2000 名贡献者,问题响应通常较快,但这也意味着你需要关注版本兼容性。如果你的团队没有 GPU 运维经验,学习曲线会集中在显存调优和 kernel 配置上。

编辑结论

vLLM 适合需要高吞吐、显存受限的 LLM 服务场景,尤其是生产环境中的 OpenAI 兼容 API 部署。若你的模型不在 200+ 支持架构列表中,或需要 CPU 上的极致低延迟,则应先验证兼容性。建议通过 `uv pip install vllm` 安装,并用 `vllm serve --model` 启动,先跑通 `--max-model-len` 与 `--gpu-memory-utilization` 参数,再决定是否采用。对于研究或小规模实验,TGI 或 Hugging Face 的 pipeline 可能更轻量。最终判断:vLLM 的工程成熟度与生态广度使其成为当前 LLM 服务的事实标准,但它的性能优势依赖 GPU 与 CUDA 图优化,非 NVIDIA 硬件需额外验证。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记