vLLM: 轻松实现大模型快速推理和部署(62.6k stars)
背景介绍
vLLM 是一个开源的大语言模型(LLM)推理与服务引擎,由 加州大学伯克利分校 Sky Computing Lab 发起开发,现已成为社区驱动项目,并被正式纳入 PyTorch 生态系统项目。
- 项目主页:github.com/vllm-projec…
- 官方文档:docs.vllm.ai
它的目标是让 大模型推理更快、更省显存、更易部署,并且可以直接提供 OpenAI API 兼容接口,让用户可以像调用 OpenAI 的接口那样使用自己的模型。
为什么 vLLM 很重要?
运行大语言模型时,主要难点包括:
- 显存占用(特别是 Attention 的 KV 缓存)
- 并发请求的吞吐量与延迟
- 多硬件适配(GPU/TPU/CPU)
- 动态批处理与任务调度
vLLM 针对这些问题提出了一系列创新,例如 PagedAttention 算法、动态连续批处理(Continuous Batching)等,从而极大提升了推理效率。
核心特性
vLLM 推理速度快
-
高效的注意力机制:PagedAttention 是 vLLM 的核心创新之一。它像“虚拟内存”一样管理 Attention 的 Key/Value 缓存(KV cache),只在需要时加载,从而显著减少显存浪费。
-
对 CUDA Kernel 进行优化,包括FlashAttention、FlashInfer 等优化内核,进一步提升速度。
-
动态连续批处理(Continuous Batching)
:vLLM 可以动态合并不同请求到同一个批次中推理,即使请求在不同时间到达,也不会浪费 GPU 时间。这让它在高并发 API 服务场景中非常高效。
-
使用CUDA/HIP graph进行加速
-
推测性解码(Speculative decoding)
-
块状预填充(Chunked prefill)
-
量化:内置支持多种量化方案:GPTQ、AWQ、INT8、INT4、FP8 等
接口易用性
- OpenAI API 兼容接口: vLLM 自带一个 OpenAI 风格的接口服务。
- 多硬件支持:支持 NVIDIA GPU、AMD GPU(AMD ROCm)、Intel GPU(Intel XPU)、TPU、CPU 等多种硬件。同时支持张量并行(Tensor Parallel)、流水线并行(Pipeline Parallel)等分布式推理。
- 与流行的 HuggingFace 模型无缝集成
- 采用多种解码算法,包括并行采样(parallel sampling)、波束搜索(beam search)等,实现高吞吐量服务
- 支持分布式推理的张量、管道、数据和专家并行性
- 支持前缀缓存(Prefix Caching),复用相同提示词前缀的计算结果
- 多LoRa支持
实践
vLLM 是一个快速易用的 LLM 推理和服务库。只需几行代码,您就可以在本地以 OpenAI 兼容格式运行 LLM(例如 DeepSeek):
安装 vllm
参考官方文档:docs.vllm.ai/en/latest/g…
uv venv --python 3.12 --seedsource .venv/bin/activateuv pip install vllm --torch-backend=auto
服务化部署(Bash)
export CUDA_VISIBLE_DEVICES=0,1nohup vllm serve Qwen/Qwen3-4B-Instruct-2507 > server.log 2>&1 &disowncurl http://localhost:8000/v1/models
``````plaintext
curl http://localhost:8000/v1/completions -H "Content-Type: application/json" \ -d '{ "model": "Qwen/Qwen3-4B-Instruct-2507", "prompt": ["San Francisco is a", "The capital of Germany is"], "max_tokens": 7, "temperature": 0 }'
``````plaintext
{"id":"cmpl-274ae6a8ef17464fa11452e33b3c25cb","object":"text_completion","created":1762616312,"model":"Qwen/Qwen3-4B-Instruct-2507","choices":[{"index":0,"text":" city in California, United States,","logprobs":null,"finish_reason":"length","stop_reason":null,"token_ids":null,"prompt_logprobs":null,"prompt_token_ids":null},{"index":1,"text":" Berlin. Is this statement true?\n\n","logprobs":null,"finish_reason":"length","stop_reason":null,"token_ids":null,"prompt_logprobs":null,"prompt_token_ids":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":9,"total_tokens":23,"completion_tokens":14,"prompt_tokens_details":null},"kv_transfer_params":null}
服务化部署(Python)
vllm 支持与 OpenAI 兼容的接口进行服务请求
from openai import OpenAImodel_name = "Qwen/Qwen3-4B-Instruct-2507"# Modify OpenAI's API key and API base to use vLLM's API server.openai_api_key = "EMPTY"openai_api_base = "http://localhost:8000/v1"client = OpenAI( api_key=openai_api_key, base_url=openai_api_base,)# Single prompt completioncompletion = client.completions.create( model=model_name, prompt="San Francisco is a", max_tokens=7, temperature=0,)print("Completion result:", completion)# support multiple promptscompletion = client.completions.create( model=model_name, prompt=["San Francisco is a", "The capital of Germany is"], max_tokens=7, temperature=0,)print("Completion result for multiple prompts:", completion)
性能与优势
vLLM 在同等硬件条件下常常能比 HuggingFace 推理快 2~5 倍