vLLM 高性能推理
vLLM:高吞吐 LLM 推理服务、OpenAI API、量化部署
vLLM 高性能 LLM 推理服务
使用场景
需要部署生产级 LLM API、优化推理延迟/吞吐量,或在有限 GPU 内存下服务模型时使用。支持 OpenAI 兼容端点、量化(GPTQ/AWQ/FP8)和张量并行。
快速入门
vLLM 通过 PagedAttention(基于块的 KV 缓存)和连续批处理(混合预填充/解码请求)实现比标准 transformers 高 24 倍的吞吐量。
安装:
pip install vllm
基础离线推理:
from vllm import LLM, SamplingParams
llm = LLM(model="meta-llama/Llama-3-8B-Instruct")
sampling = SamplingParams(temperature=0.7, max_tokens=256)
outputs = llm.generate(["Explain quantum computing"], sampling)
print(outputs[0].outputs[0].text)
OpenAI 兼容服务器:
vllm serve meta-llama/Llama-3-8B-Instruct
# 用 OpenAI SDK 查询
python -c "
from openai import OpenAI
client = OpenAI(base_url='http://localhost:8000/v1', api_key='EMPTY')
print(client.chat.completions.create(
model='meta-llama/Llama-3-8B-Instruct',
messages=[{'role': 'user', 'content': 'Hello!'}]
).choices[0].message.content)
"
常见工作流
工作流 1:生产 API 部署
按此清单追踪进度:
部署进度:
- [ ] 步骤 1: 配置服务器设置
- [ ] 步骤 2: 测试有限流量
- [ ] 步骤 3: 启用监控
- [ ] 步骤 4: 部署到生产环境
- [ ] 步骤 5: 验证性能指标
步骤 1:配置服务器设置
# 基本启动
vllm serve Qwen/Qwen2-7B-Instruct
# 自定义端口和名称
vllm serve Qwen/Qwen2-7B-Instruct \
--host 0.0.0.0 \
--port 8000 \
--task completion
步骤 2:测试
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
response = client.chat.completions.create(
model="Qwen2-7B-Instruct",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
工作流 2:高吞吐批量推理
from vllm import LLM, SamplingParams
llm = LLM(
model="meta-llama/Llama-3-8B-Instruct",
tensor_parallel_size=2, # 两块 GPU
max_model_len=4096
)
sampling = SamplingParams(
temperature=0.8,
max_tokens=512,
stop=["\n\n", "User:"]
)
# 批量输入
prompts = [
f"Explain concept {i} in one sentence."
for i in range(100)
]
outputs = llm.generate(prompts, sampling)
for output in outputs:
print(output.outputs[0].text)
工作流 3:量化部署
# FP8 量化(需要 H100)
vllm serve meta-llama/Llama-3-70B-Instruct \
--quantization fp8
# AWQ 量化
vllm serve meta-llama/Llama-3-70B-Instruct \
--quantization awq \
--awq-algorithm module
# GPTQ 量化
vllm serve meta-llama/Llama-3-70B-Instruct \
--quantization gptq
工作流 4:多节点集群
# 在多节点集群启动
vllm serve meta-llama/Llama-3-8B-Instruct \
--tensor-parallel-size 8 \
--pipeline-parallel-size 2 \
--nnodes 2 \
--node-rank 0
核心概念
PagedAttention
PagedAttention 通过将 KV 缓存划分为固定大小的块(类似操作系统的分页),实现更高效的内存管理和更大的批处理大小。
- 减少 60-80% 的显存占用
- 支持更大 batch size
- 更高的吞吐量
连续批处理
新请求在正在处理的请求完成后立即加入执行,而不是等待当前批完成。
- GPU 利用率更高
- 平均延迟更低
- 吞吐量更高
支持的模型
vLLM 支持主流开源模型:
- LLaMA / Llama 2 / Llama 3
- Qwen / Qwen2 / Qwen2.5
- Mistral / Mixtral
- Phi-3
- DeepSeek
- Yi
- Command R
- Gemma
- Starcoder
- 以及其他 HuggingFace 格式模型
量化方法对比
| 方法 | 精度损失 | 速度 | 适用硬件 | 推荐场景 |
| FP8 | 极小 | 最快 | H100 | 生产部署(高端 GPU) |
| AWQ | 小 | 快 | 任意 | 生产部署(通用) |
| GPTQ | 中 | 中等 | 任意 | 快速实验 |
| INT8 | 小 | 快 | 任意 | 消费级 GPU |
| 问题 | 解决方案 |
| CUDA OOM | 减小 max_model_len,增加 tensor-parallel-size |
| 启动慢 | 使用 --enforce-eager 禁用 CUDA graph |
| 低吞吐量 | 使用连续批处理,增加 batch size |
| 量化后质量下降 | 使用 AWQ 或 FP8 替代 GPTQ |
| 长上下文 OOM | 减小 max-model-len 或使用更好的量化 |
安装指南
复制下方命令,在终端运行即可安装:
# 安装到当前项目
npx skills add vllm
# 全局安装 — 所有项目可用
npx skills add vllm -g
使用指南
安装完成后,在对话框中直接使用此技能。