什么是 vLLM?

vLLM(Virtual Large Language Model)是由加州大学伯克利分校开发的一个高效 LLM 推理和服务框架,于 2023 年发布。它的核心目标是解决大语言模型在生产环境中推理效率低、吞吐量不足的问题。


核心技术:PagedAttention

vLLM 最大的创新是 PagedAttention 算法,灵感来源于操作系统的虚拟内存分页管理

传统 KV Cache 的问题

┌─────────────────────────────────────┐
│  传统方式:为每个请求预分配连续内存    │
│                                     │
│  Request 1: [██████████░░░░░░░░░░]  │  ← 大量内存碎片浪费
│  Request 2: [████░░░░░░░░░░░░░░░░]  │
│  Request 3: [████████░░░░░░░░░░░░]  │
└─────────────────────────────────────┘

PagedAttention 的解决方案

┌─────────────────────────────────────┐
│  PagedAttention:非连续块状内存管理   │
│                                     │
│  Block Pool: [B1][B2][B3][B4][B5]   │
│                                     │
│  Req1 → B1, B3                      │  ← 按需分配,几乎零浪费
│  Req2 → B2                          │
│  Req3 → B4, B5                      │
└─────────────────────────────────────┘

内存利用率从约 60% 提升至 96% 以上


主要特性

特性

说明

🚀 高吞吐量

比 HuggingFace Transformers 快 14-24x

💾 PagedAttention

高效 KV Cache 内存管理

🔄 Continuous Batching

动态请求批处理,GPU 利用率更高

CUDA/ROCm 支持

支持 NVIDIA 和 AMD GPU

🤝 OpenAI 兼容 API

开箱即用,无缝替换

🌐 分布式推理

Tensor Parallelism、Pipeline Parallelism

📦 模型支持广泛

LLaMA、Mistral、Qwen、GPT、Falcon 等主流模型


快速上手

安装

pip install vllm

离线批量推理

from vllm import LLM, SamplingParams

llm = LLM(model="meta-llama/Llama-3-8b-instruct")

sampling_params = SamplingParams(
    temperature=0.8,
    top_p=0.95,
    max_tokens=512
)

prompts = ["介绍一下人工智能的发展历史", "什么是量子计算?"]
outputs = llm.generate(prompts, sampling_params)

for output in outputs:
    print(output.outputs[0].text)

启动 OpenAI 兼容服务

python -m vllm.entrypoints.openai.api_server \
    --model meta-llama/Llama-3-8b-instruct \
    --port 8000 \
    --tensor-parallel-size 2  # 使用 2 张 GPU

调用服务

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="none")

response = client.chat.completions.create(
    model="meta-llama/Llama-3-8b-instruct",
    messages=[{"role": "user", "content": "你好!"}]
)
print(response.choices[0].message.content)

核心机制:Continuous Batching

传统静态批处理:
  Batch: [Req1✓, Req2✓, Req3⏳, Req4⏳]  ← 必须等所有请求完成才能处理新请求

Continuous Batching:
  Step1: [Req1, Req2, Req3, Req4]
  Step2: [Req1✓→Req5, Req2, Req3, Req4]   ← 请求完成立即填充新请求
  Step3: [Req5, Req2✓→Req6, Req3, Req4]

这大幅降低了请求排队等待时间,GPU 几乎始终处于满负荷工作状态。


性能对比

吞吐量 (tokens/s,以 A100 为例)
                                        
HuggingFace TGI  ████████░░░░░░░░░░░░  
HuggingFace TF   ████░░░░░░░░░░░░░░░░  
vLLM             ████████████████████  ← 显著领先

适用场景

  • 🏭 生产级 LLM 服务部署

  • 🔬 大规模批量数据处理

  • 💬 高并发聊天应用

  • 🧪 模型评估与基准测试


总结

vLLM 通过 PagedAttention + Continuous Batching 的组合,从根本上改变了 LLM 推理的效率瓶颈,已成为业界最主流的 LLM 服务框架之一,广泛应用于各大云厂商和 AI 公司的生产环境。

📎 官方仓库:github.com/vllm-project/vllm