vLLM 简介
什么是 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% 以上
主要特性
快速上手
安装
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