vLLM: 轻松实现大模型快速推理和部署(62.6k stars)

175 阅读3分钟

vLLM: 轻松实现大模型快速推理和部署(62.6k stars)

【AI大模型教程】

背景介绍

vLLM 是一个开源的大语言模型(LLM)推理与服务引擎,由 加州大学伯克利分校 Sky Computing Lab 发起开发,现已成为社区驱动项目,并被正式纳入 PyTorch 生态系统项目。

它的目标是让 大模型推理更快、更省显存、更易部署,并且可以直接提供 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 倍