Skip to main content
PromptQuorum
主页/本地LLM进阶/vLLM详解:基于PagedAttention的高吞吐量推理服务(2026)
Overview & Reference

vLLM详解:基于PagedAttention的高吞吐量推理服务(2026)

·13分钟阅读·Hans Kuepper 作者 · PromptQuorum创始人,多模型AI调度工具 · PromptQuorum

**vLLM是一个免费、开源(Apache 2.0)的高吞吐量LLM推理与服务库,起源于UC Berkeley的Sky Computing Lab,如今由庞大的开源社区维护。** 其关键技术差异化点是PagedAttention,它以非连续的固定大小块(page)管理注意力KV缓存——类似操作系统管理虚拟内存的思路——使GPU无需为每个请求过度预留内存,就能容纳更多并发请求的状态。结合continuous batching,这让vLLM能够从一块GPU(或张量并行的多GPU配置)中,以比朴素服务循环更少的内存浪费服务众多并发用户。vLLM内置OpenAI兼容的API服务器(vllm serve),支持AWQ、GPTQ、FP8等量化格式,专为生产环境和多租户服务而构建——而不是Ollama和LM Studio等工具所面向的单用户点选场景。

vLLM是一个免费、Apache 2.0许可的LLM推理与服务库,起源于UC Berkeley的Sky Computing Lab,如今由庞大的开源社区维护。其核心技术贡献是PagedAttention——一种针对注意力键值(KV)缓存的内存管理技术,相比朴素的注意力实现,能让GPU用相同的内存服务多得多的并发请求,并结合continuous batching(连续批处理)让GPU在众多并发请求间保持忙碌,而不是按固定批次逐一处理。vLLM内置OpenAI兼容的API服务器,面向多用户的生产环境服务——这是一种与Ollama或LM Studio等单用户桌面应用不同的工具。

vLLM详解:基于PagedAttention的高吞吐量推理服务(2026)

关键要点

  • 免费、Apache 2.0许可的开源项目,起源于UC Berkeley的Sky Computing Lab
  • PagedAttention以固定大小、非连续的块管理KV缓存,减少GPU内存浪费
  • continuous batching处理众多并发请求,而不是一次处理一个固定批次
  • 内置OpenAI兼容的API服务器,通过vllm serve命令启动
  • 支持AWQ、GPTQ、FP8等量化格式
  • 支持跨多GPU的张量并行和流水线并行服务
  • 主要且支持最完善的硬件是NVIDIA GPU;AMD、Intel等后端也存在,但覆盖范围较窄
  • 不是单用户桌面应用——没有图形安装程序,也不像llama.cpp和Ollama那样针对CPU-only或Apple Silicon设计

📍 简单一句话

vLLM是一个免费、Apache 2.0许可的推理与服务库,起源于UC Berkeley的Sky Computing Lab,使用PagedAttention和continuous batching从一块GPU高效服务众多并发LLM请求,并内置OpenAI兼容的API服务器。

💬 简单来说

vLLM不是桌面聊天应用,而是服务器软件:把它指向一个模型,它就会暴露一个API,供许多用户或应用同时调用,比简单的逐个请求处理方案更高效地利用GPU内存。

📌: 本文基于vLLM官方GitHub仓库和公开文档撰写,而非独立基准测试。文中未包含具体的吞吐量或延迟数字,因为本文未对其进行独立测量,且这些数字会因GPU、模型、批次大小和vLLM版本而有很大差异。

vLLM是什么?

vLLM是一个免费、Apache 2.0许可的库和服务器,用于大规模执行大语言模型推理。它起源于UC Berkeley的Sky Computing Lab的一个研究项目,此后发展成为使用最广泛的开源LLM服务引擎之一,来自学术和产业机构的数千名开发者为其贡献代码。与主要为在自己机器上与模型对话的单一用户而构建的工具不同,vLLM旨在从共享的GPU容量中尽可能高效地服务来自多个用户或应用的众多并发请求。

  • 起源于UC Berkeley的Sky Computing Lab,如今是一个由社区治理的开源项目
  • Apache 2.0许可:源代码根据许可条款公开可用,可用于使用、修改和再分发
  • 以Hugging Face Transformers兼容格式加载模型,覆盖广泛的架构——Llama、Mistral、Qwen、DeepSeek及许多其他模型系列——大多数模型无需单独的转换步骤
  • 专为高效服务众多并发请求而构建,而不仅仅是快速处理单次对话
  • GitHub上被引用最多的开源LLM服务项目之一

PagedAttention是什么,为何重要?

PagedAttention是vLLM最广为人知的内存管理技术。在生成过程中,Transformer模型会为每个活跃请求的每个token存储一份注意力键值(KV)缓存——通常这份缓存会作为每个请求一个大的连续内存块来分配,并按该请求可能的最大长度来定尺寸,这意味着只要请求提前结束或短于预留的最大长度,就会浪费GPU内存。PagedAttention则将KV缓存拆分为可以非连续分配、并可在请求间共享的小型固定大小块(page)——借鉴了操作系统管理虚拟内存的思路。

  • 减少因为请求实际长度短于其最大长度而过度预留KV缓存空间造成的内存浪费
  • 允许在共享相同前缀(例如相同系统提示词)的请求之间共享内存块
  • 相比朴素的连续分配方式,让GPU能用相同的内存容纳更多并发请求的KV缓存
  • 与continuous batching协同工作,使vLLM能够随着请求的到达和完成,动态地向正在执行的批次中添加或移除请求,而不必等待固定批次完全结束后才开始下一批

vLLM需要什么硬件?

vLLM主要且支持最完善的目标是搭载CUDA的NVIDIA GPU,大多数生产部署都运行在NVIDIA硬件上。该项目也记录了其他后端,但覆盖范围和性能并不相同。

NVIDIA GPU(CUDA)

详情:
主要且最成熟的目标。跨多个NVIDIA GPU的张量并行和流水线并行服务有完善的文档记录,并在生产环境中广泛使用。

AMD GPU(ROCm)

详情:
记录为通过ROCm支持AMD硬件的后端,但实际采用情况和社区覆盖范围比CUDA路径更窄。

Intel GPU和Gaudi加速器

详情:
项目为Intel硬件记录的额外后端;应视为比NVIDIA GPU更小众、经过更少验证的部署路径。

Google TPU

详情:
为Google Cloud TPU硬件记录的后端,面向已经在该基础设施上运行的团队。

CPU(x86 / ARM / PowerPC)

详情:
存在纯CPU后端,但这不是vLLM的目标用例——该项目是为GPU服务而构建的,文档中CPU执行速度明显慢于GPU后端。

Apple Silicon(Mac)

详情:
不是官方维护的一流路径。社区维护的项目(例如Metal后端插件)增加了部分Apple Silicon支持,但覆盖范围和成熟度远远落后于vLLM对NVIDIA GPU的支持。

如果目标是在单台Mac或纯CPU机器上运行模型,vLLM不是为此设计的工具——llama.cpp以及基于它构建的Ollama、LM Studio等工具直接面向CPU和Apple Silicon硬件,更适合这种场景。

vLLM支持哪些量化格式?

vLLM支持以降低的数值精度服务模型,以降低内存占用,并在许多情况下提高吞吐量,采用的是多种成熟的量化格式,而非单一的专有格式。

AWQ

详情:
Activation-aware Weight Quantization是一种广泛使用的4比特权重量化方法,社区在Hugging Face上发布了大量预量化模型。

GPTQ

详情:
一种训练后量化方法,通常以预量化的模型检查点形式分发,同样典型为4比特精度。

FP8

详情:
8比特浮点精度,在具备硬件FP8支持的较新一代NVIDIA GPU上受支持——相比FP16/BF16,用一定的精度换取更低的内存占用和更快的执行速度。

INT8 / INT4

详情:
项目在AWQ和GPTQ之外记录的更低精度整数量化路径,用于进一步降低内存占用。

本文未包含针对各格式独立测量的质量损失数字——这些数字因模型架构和任务而异。用自己的提示词比较几种格式的输出,是判断该权衡是否适合你的工作负载的最可靠方式。

vLLM的OpenAI兼容服务器提供什么?

运行vllm serve会启动一个实现OpenAI API协议的HTTP服务器,因此已经基于OpenAI API构建的应用和SDK通常只需更改基础URL和模型名称,就能指向自托管的vLLM实例。

  • 兼容OpenAI的聊天补全和补全端点,可作为基于OpenAI API的客户端代码的直接替代
  • 可配置的主机和端口(服务器默认监听http://localhost:8000
  • 在服务器启动时设置的引擎参数,用于张量并行大小、GPU内存利用率目标和量化格式
  • 支持在同一个已加载的基础模型上服务多个LoRA适配器
  • 对兼容请求格式支持结构化输出和函数/工具调用

如何安装和运行vLLM?

vLLM以Python包形式分发,通常在具备NVIDIA GPU和兼容CUDA驱动的Python环境中用pip安装。

  1. 1
    确认已安装受支持的NVIDIA GPU和当前版本的CUDA驱动(如果目标是AMD/Intel/TPU等后端,请查阅项目文档中的对应安装说明)。
  2. 2
    创建Python虚拟环境,然后安装vLLM:pip install vllm
  3. 3
    使用来自Hugging Face的模型启动OpenAI兼容服务器,例如:vllm serve meta-llama/Llama-3.1-8B-Instruct
  4. 4
    对于预量化模型,传入相应的参数,例如:vllm serve TheBloke/Llama-2-13B-AWQ --quantization awq
  5. 5
    如需多GPU服务,添加张量并行参数,例如:vllm serve <model> --tensor-parallel-size 2将模型拆分到两块GPU上。
  6. 6
    默认情况下服务器监听http://localhost:8000;使用任意兼容OpenAI API的客户端库或curl向其/v1/chat/completions端点发送请求。
  7. 7
    只需更改基础URL和模型名称,即可让现有的OpenAI API客户端代码指向你的自托管服务器。

运行vLLM需要GPU吗?

除测试之外的任何用途都需要——vLLM主要且支持最完善的目标是NVIDIA GPU。虽然存在纯CPU后端,但文档中说明其速度明显更慢,且不是项目的重点。

我可以用量化模型运行vLLM吗?

可以——vLLM支持AWQ、GPTQ、FP8等格式,许多以这些格式预量化的模型已发布在Hugging Face上,可以用相应的--quantization参数进行服务。

vLLM与Ollama、LM Studio相比如何?

Ollama和LM Studio面向的是与vLLM不同的问题:快速、简单地为一个人提供一个可以在自己机器上对话的模型。而vLLM的目标是尽可能高效地从共享GPU容量中服务众多并发用户或应用。对于大多数用例而言,这两类工具并不是彼此的近似替代品。

  • Ollama和LM Studio通常构建在llama.cpp或类似引擎以及GGUF模型格式之上,针对包括纯CPU机器和Apple Silicon在内的消费级硬件上的单用户使用进行了优化
  • vLLM构建在PagedAttention和continuous batching之上,针对高并发GPU服务进行了优化,而不是针对普通硬件上的单用户响应速度
  • Ollama一条命令即可安装,无需GPU;vLLM需要Python环境,在大多数部署中需要NVIDIA GPU,并需要命令行配置
  • LM Studio增加了图形化的桌面聊天界面;vLLM没有图形界面——通过其OpenAI兼容API或命令行参数访问
  • vLLM和基于llama.cpp的工具都可以暴露OpenAI兼容API,因此为该API构建的前端工具往往可以与两者中的任何一个配合使用

vLLM与TGI、TensorRT-LLM相比如何?

vLLM、Hugging Face的Text Generation Inference(TGI)和NVIDIA的TensorRT-LLM都面向同一个大方向的任务——大规模的生产环境LLM服务——但设计和取舍各不相同。

vLLM

详情:
Apache 2.0许可,基于Python,围绕PagedAttention和continuous batching构建。直接加载兼容Hugging Face Transformers的模型,架构覆盖范围广,并支持多厂商GPU后端(以NVIDIA为主;AMD、Intel、TPU也有文档记录)。

TGI

详情:
Hugging Face自家的服务引擎,Apache 2.0许可,同样支持continuous batching和多种量化格式。与Hugging Face Hub及其生态系统紧密集成。

TensorRT-LLM

详情:
NVIDIA的引擎,专为NVIDIA GPU构建。模型会预先编译成针对目标GPU优化的TensorRT引擎,这在该特定硬件上可能带来强劲性能,代价是需要一个编译步骤,且跨硬件灵活性不如vLLM或TGI。

本文未对这三款引擎进行相互独立基准测试,也不主张其中某一款普遍更快——吞吐量在很大程度上取决于模型、硬件、批次特征以及各引擎的版本。关于三者在部署和许可方面更详细的比较,请参见企业推理服务器指南

谁适合使用vLLM?

vLLM适合在GPU基础设施上为众多并发用户或应用提供模型服务的团队,而不适合那些只想在自己电脑上尽快与模型对话的人。

vLLM与替代方案一览

这些工具在单用户使用与生产环境服务这一光谱上处于不同的位置。

vLLM

界面与安装:
通过pip安装的Python包;用vllm serve启动的OpenAI兼容API服务器。大多数部署需要NVIDIA GPU和CUDA。
最适合:
生产环境中高吞吐量、多用户的GPU服务。

Ollama

界面与安装:
CLI和REST API,普遍被报告在大多数平台上以llama.cpp作为后端。一条命令即可安装;一条命令即可拉取并运行模型。
最适合:
为单一用户提供最快获得本地可用模型的路径,无需构建步骤或GPU。

LM Studio

界面与安装:
面向Mac、Windows和Linux的图形化桌面应用。下载安装后,在应用内浏览并下载模型。
最适合:
想要点选式本地聊天应用的非技术用户。

llama.cpp

界面与安装:
CLI、内置Web UI,以及通过llama-server提供的OpenAI兼容API。从源码构建或使用预构建二进制文件;可在CPU或GPU上运行。
最适合:
引擎层面的直接控制、嵌入式/边缘部署,以及CPU或Apple Silicon硬件。

本文未对这些工具的速度或输出质量进行独立基准测试,也不主张其中某一款技术上更优——上表仅涵盖有文档记录的架构、安装和访问模式方面的事实。关于按硬件划分的吞吐量数字,请参见llama.cpp vs. Ollama vs. vLLM比较企业推理服务器指南

本文未涵盖哪些内容?

这是一篇基于vLLM公开文档和代码仓库撰写的解释性文章,而非实际的基准测试报告。

  • 没有独立测量的吞吐量、延迟或每秒请求数数字——这些在很大程度上取决于GPU、模型、批次组成和vLLM版本
  • 没有针对特定量化格式独立验证的质量损失百分比——这些因模型架构和任务而异
  • 没有对vLLM代码库逐行进行的安全审计——它是开源的、Apache 2.0许可,因此代码本身可供审查
  • 未完整覆盖所有受支持的硬件后端、引擎参数或部署编排选项(Kubernetes、云特定配置)——本文聚焦于大多数团队首先会评估的概念和参数
  • 未涵盖商业支持协议或vLLM的托管服务,因为vLLM本身是一个社区开源项目,而不是带有支持合同的厂商产品

尝试vLLM时的常见错误

使用vLLM时的大多数摩擦,都源于把它当作单用户桌面工具而非生产服务器软件来对待。

常见问题

vLLM是什么?

vLLM是一个免费、Apache 2.0许可的库和服务器,用于高吞吐量LLM推理,起源于UC Berkeley的Sky Computing Lab。它使用PagedAttention和continuous batching从一块GPU高效服务众多并发请求。

vLLM是免费的吗?

是的。vLLM是根据Apache 2.0许可发布的免费开源软件,自行运行无需订阅或账户。

PagedAttention是什么?

PagedAttention是vLLM用于管理注意力KV缓存的技术,它使用小型、固定大小、非连续的块,而不是为每个请求分配一整块大的连续内存,从而减少GPU内存浪费,并允许在共享相同前缀的请求之间共享内存。

vLLM需要GPU吗?

对于任何真实的工作负载都需要——vLLM主要且支持最完善的目标是NVIDIA GPU。虽然存在纯CPU后端,但文档中说明其速度明显更慢,且不是项目的重点;Apple Silicon支持仅限于社区维护的附加组件,而不是一流路径。

vLLM支持哪些量化格式?

vLLM支持多种格式,包括AWQ、GPTQ、FP8和INT8/INT4,许多以这些格式预量化的模型已发布在Hugging Face上。

vLLM比Ollama更好吗?

"更好"取决于任务:vLLM是为高并发的生产环境GPU服务而构建的,而Ollama是为在无需GPU的情况下最快获得单用户本地模型而构建的。对大多数用例而言,它们并不是彼此的近似替代品——参见上方的比较表。

vLLM能跨多块GPU服务模型吗?

可以。vLLM支持跨多块GPU的张量并行和流水线并行服务,可在服务器启动时通过--tensor-parallel-size等参数进行配置。

vLLM有OpenAI兼容的API吗?

有。运行vllm serve会启动一个实现OpenAI API协议的服务器,因此许多为OpenAI API构建的应用只需更改基础URL和模型名称,就能指向自托管的vLLM实例。

vLLM与TensorRT-LLM有何不同?

TensorRT-LLM是NVIDIA的引擎,它会将模型预先编译成针对特定NVIDIA GPU优化的引擎。vLLM则直接加载兼容Hugging Face Transformers的模型,无需预编译步骤,并记录了对NVIDIA GPU之外后端的支持,代价是硬件专属优化程度较低,但换来了更高的灵活性和更快的迭代速度。

来源

← 返回 本地LLM进阶