主题
🚀 vLLM 高性能推理
Ollama 是够用,vLLM 是够快——生产环境的不二选择
为什么需要 vLLM
Ollama 简单但不快。vLLM 的核心优势:
- PagedAttention:显存利用率翻倍,同样显存跑更大模型
- 连续批处理:多个请求一起处理,吞吐量是 Ollama 的 5-10 倍
- 兼容 OpenAI API:改一行代码就能从 OpenAI 切到自建模型
安装
bash
# 需要 CUDA 环境就绪
pip install vllm确认版本:
bash
python -c "import vllm; print(vllm.__version__)"启动推理服务
bash
# 启动 Qwen2.5 7B 推理服务
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--host 0.0.0.0 \
--port 8000 \
--max-model-len 8192 \
--gpu-memory-utilization 0.9关键参数:
| 参数 | 含义 | 建议 |
|---|---|---|
--model | 模型名或路径(HuggingFace ID) | 首次会下载,体积大 |
--max-model-len | 最大上下文长度 | 越长吃越多显存 |
--gpu-memory-utilization | 显存使用上限比例 | 0.85-0.9,留一点给系统 |
--tensor-parallel-size | 多卡张量并行 | 有几张卡就设几 |
--dtype | 推理精度 | auto 自动选,可设 float16 |
调用 API
完全兼容 OpenAI 格式:
python
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="not-needed" # vLLM 不强制鉴权
)
response = client.chat.completions.create(
model="Qwen/Qwen2.5-7B-Instruct",
messages=[{"role": "user", "content": "解释什么是 PagedAttention"}]
)
print(response.choices[0].message.content)bash
# 或者用 curl
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-7B-Instruct",
"messages": [{"role": "user", "content": "你好"}]
}'显存优化
AWQ/GPTQ 量化模型
bash
# 用量化模型显存直接减半
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct-AWQ \
--quantization awq限制并发
bash
# 防止多用户同时请求撑爆显存
--max-num-seqs 16 # 同时处理最多16个请求
--max-num-batched-tokens 4096 # 单批最大 token 数多卡部署
bash
# 两张 24GB 卡,跑 34B 模型
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-32B-Instruct \
--tensor-parallel-size 2 \
--gpu-memory-utilization 0.85--tensor-parallel-size 就是使用 GPU 的数量。
vLLM vs Ollama 对比
| 维度 | Ollama | vLLM |
|---|---|---|
| 上手难度 | ⭐ 一条命令 | ⭐⭐⭐ 需要配环境 |
| 推理速度 | 中等 | 快(5-10倍吞吐) |
| 显存效率 | 一般 | 高(PagedAttention) |
| API 兼容 | 自有格式 | OpenAI 兼容 |
| 并发能力 | 弱 | 强(连续批处理) |
| 适用场景 | 开发/个人用 | 生产/多人用 |
结论:开发用 Ollama,上线用 vLLM。
🎯 本章要点
- vLLM 的核心是 PagedAttention(显存效率)+ 连续批处理(高吞吐)
- API 完全兼容 OpenAI 格式,改一行 base_url 就能切模型
- 显存不够用量化模型(AWQ/GPTQ),多卡用
--tensor-parallel-size - Ollama 适合开发,vLLM 适合生产
加载练习题中...