vLLM本地部署教程:高性能大模型推理引擎怎么搭
什么是vLLM
vLLM是加州大学伯克利分校开发的高性能大语言模型推理和服务引擎。它的核心创新是PagedAttention技术,通过虚拟内存分页管理KV Cache,将GPU内存利用率从传统的60%提升到90%以上,单卡吞吐量提升2-4倍。
简单说:vLLM让你用最少的GPU跑最多的请求。它是目前生产环境部署大模型推理服务的事实标准。
vLLM核心优势
| 特性 | 说明 | 收益 |
|---|---|---|
| PagedAttention | 分页管理KV Cache | GPU内存利用率90%+ |
| 连续批处理 | 请求即来即处理 | 吞吐量提升2-4倍 |
| 推测解码 | 小模型猜token大模型验证 | 推理速度提升1.5-3倍 |
| OpenAI兼容API | 直接兼容/v1/chat/completions | 已有代码零改动切换 |
| 广泛模型支持 | LLaMA/Qwen/Mistral/DeepSeek等 | 主流开源模型全覆盖 |
一、环境准备
硬件要求
- GPU:至少1张NVIDIA GPU(推荐A100 80GB或以上,最低RTX 3090 24GB)
- 内存:32GB以上
- 硬盘:100GB以上(模型文件较大)
- CUDA:11.8或12.1
软件环境
# 检查CUDA版本
nvidia-smi
# 创建虚拟环境
conda create -n vllm python=3.10 -y
conda activate vllm
二、安装vLLM
# 方式1:pip安装(推荐)
pip install vllm
# 方式2:从源码编译(需要自定义CUDA算子时用)
git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install -e .
# 验证安装
python -c "import vllm; print(vllm.__version__)"
提示:如果安装报错,通常是CUDA版本不匹配。确保你的CUDA版本与vLLM要求的版本一致。可以参考 Ollama本地部署教程 作为替代方案,Ollama对硬件要求更低。
三、启动推理服务
3.1 基础启动
# 启动OpenAI兼容API服务
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--host 0.0.0.0 \
--port 8000 \
--tensor-parallel-size 1
参数说明:
--model:HuggingFace模型ID或本地模型路径--tensor-parallel-size:多卡张量并行数(单卡设1,双卡设2)--host 0.0.0.0:允许外部访问--port 8000:服务端口
3.2 多卡部署
# 2张GPU张量并行
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-72B-Instruct \
--tensor-parallel-size 2 \
--host 0.0.0.0 \
--port 8000
3.3 量化部署(节省显存)
# AWQ量化模型
python -m vllm.entrypoints.openai.api_server \
--model TheBloke/Llama-2-13B-AWQ \
--quantization awq \
--host 0.0.0.0 \
--port 8000
四、调用API
vLLM启动后完全兼容OpenAI API格式,你的现有代码零改动即可切换:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="not-needed" # vLLM默认不需要key
)
response = client.chat.completions.create(
model="Qwen/Qwen2.5-7B-Instruct",
messages=[
{"role": "user", "content": "用Python写一个快速排序"}
],
max_tokens=512,
temperature=0.7
)
print(response.choices[0].message.content)
curl调用
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-7B-Instruct",
"messages": [{"role": "user", "content": "你好"}],
"max_tokens": 128
}'
五、性能优化
5.1 启用推测解码
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--speculative-model Qwen/Qwen2.5-0.5B-Instruct \
--num-speculative-tokens 5
用小模型(0.5B)先猜5个token,大模型验证,推理速度提升1.5-3倍。
5.2 调整GPU内存利用率
--gpu-memory-utilization 0.95 # 默认0.9,调到0.95榨干显存
5.3 最大序列长度
--max-model-len 32768 # 支持长文本,注意显存消耗
六、生产环境部署
6.1 Docker部署
docker run --gpus all \
-p 8000:8000 \
--shm-size 10gb \
vllm/vllm-openai:latest \
--model Qwen/Qwen2.5-7B-Instruct \
--tensor-parallel-size 1
6.2 后台运行+日志
nohup python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--host 0.0.0.0 --port 8000 \
> vllm.log 2>&1 &
# 查看日志
tail -f vllm.log
七、模型推荐
| 模型 | 显存需求 | 适合场景 |
|---|---|---|
| Qwen2.5-7B-Instruct | 16GB | 通用对话、中文场景 |
| Qwen2.5-72B-Instruct | 140GB(2×80GB) | 高质量生成 |
| DeepSeek-V3 | 160GB(2×80GB) | 代码生成、推理 |
| Llama-3.1-8B-Instruct | 16GB | 英文场景 |
| Mistral-7B-Instruct-v0.3 | 16GB | 多语言 |
八、常见问题
Q: 显存不够怎么办?
三个方案:1)用量化模型(AWQ/GPTQ);2)减小--max-model-len;3)换小模型。也可以参考 Dify搭建RAG知识库 方案,用API代替本地部署。
Q: vLLM和Ollama有什么区别?
vLLM专注高性能推理服务,适合生产环境多用户并发;Ollama专注本地单用户使用,安装简单。企业部署用vLLM,个人使用用Ollama。
Q: 支持流式输出吗?
支持,API请求加"stream": true即可。