如何在 Docker 环境中部署 VLLM
本指南将详细介绍如何在 Windows 和 Linux 系统上使用 Docker 部署 vLLM 大模型服务,并提供跨平台测试方案。
系统要求
硬件要求
- NVIDIA GPU (建议 RTX 3060 或更高)
- 显存要求:
- Qwen/Qwen3-0.6B: 至少 8GB (本地测试)
- Qwen/QwQ-32B: 至少 64GB(生产使用)
- 内存: 16GB 或更高
软件要求
- 操作系统:
- Windows 10/11 (专业版/企业版)
- Linux (Ubuntu 20.04+/CentOS 7+)
- Docker Engine 20.10+
- NVIDIA 驱动 535+
- NVIDIA Container Toolkit
准备工作
1. 安装必要组件
Windows 环境:
# 安装 WSL2 (Windows 子系统) |
Linux 环境:
# 安装 Docker |
2. 验证环境
# 验证 Docker 安装 |
Docker 部署
1. 创建 docker-compose.yml 文件
# version: '3.8' |
Windows 用户注意:
- 将
$HOME/.cache/huggingface替换为C:/Users/Devops/.cache/huggingface - 确保路径使用正斜杠
/而非反斜杠\
2. 启动服务
# 下载 vLLM 镜像 |
3. 验证服务
# 检查容器状态 |
模型下载与管理
1. 手动下载模型 (可选)
# 安装 huggingface_hub |
2. 使用 vLLM 自动下载
vLLM 会在首次启动时自动下载模型,但建议提前下载以避免超时。
服务测试
1. 使用 curl 测试
curl http://localhost:28000/v1/completions \ |
2. 使用 HTML 测试界面
创建 vllm-test.html 文件:
|
跨平台测试方案
Windows 环境测试
浏览器安全限制:
- Chrome/Firefox 默认阻止跨域请求
- 解决方案:
- 使用
file:///协议直接打开 HTML 文件 - 或使用以下命令启动 Chrome 禁用安全限制:
chrome.exe --user-data-dir="C:/Temp" --disable-web-security
- 使用
替代方案:
- 使用 Postman 或 Insomnia 测试 API
- 使用 Python 脚本测试:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:28000/v1", api_key="token-abc123")
completion = client.completions.create(
model="Qwen/Qwen3-0.6B",
prompt="你好,介绍一下你自己",
max_tokens=100
)
print(completion.choices[0].text)
Linux 环境测试
浏览器测试:
- 可直接使用 Firefox 打开 HTML 文件
- 或部署简单 HTTP 服务器:然后访问
python3 -m http.server 8000
http://localhost:8000/vllm-test.html
命令行测试:
# 使用 httpie 工具
http POST http://localhost:28000/v1/completions \
model="Qwen/Qwen3-0.6B" \
prompt="你好" \
max_tokens:=50
常见问题解决
1. 模型下载失败
症状: 容器日志显示下载超时或失败
解决方案:
- 手动下载模型到缓存目录
- 设置 HTTP 代理:
environment:
- HF_HUB_ENABLE_HF_TRANSFER=1
- http_proxy=http://your-proxy:port
- https_proxy=http://your-proxy:port
2. GPU 内存不足
症状: CUDA out of memory 错误
解决方案:
- 降低
--gpu-memory-utilization值 (如 0.5) - 使用更小模型 (如 Qwen3-0.6B 替代 QwQ-32B)
- 添加
--enforce-eager参数减少内存占用
3. 跨域问题 (CORS)
症状: HTML 测试界面无法访问 API
解决方案:
- 启动 vLLM 时添加 CORS 参数:
command:
- --model
- Qwen/Qwen3-0.6B
- --cors-allow-origins "*" - 或使用 Nginx 反向代理配置 CORS
4. Windows 路径问题
症状: 卷挂载失败
解决方案:
- 使用绝对路径并确保 Docker Desktop 已启用 “Shared Drives”
- 示例:
volumes:
- C:/Users/Devops/.cache/huggingface:/root/.cache/huggingface
性能优化建议
量化:
command:
- --model
- Qwen/Qwen3-0.6B
- --quantization
- awq # 或 gptq批处理优化:
command:
- --max-num-batched-tokens
- "4096"并行推理:
command:
- --tensor-parallel-size
- "2" # 使用2个GPU