vLLM Linux 双卡部署大模型服务器指南
1. 环境准备
1.1 硬件要求
- GPU: 2 张 NVIDIA GPU(推荐 RTX 3090/4090 或更高)
- 显存: 每张 GPU 至少 24GB(以支持 Qwen3.5-9B-GPTQ-4bit 模型)
- 内存: 至少 32GB
- 存储: 至少 50GB 可用空间
1.2 软件依赖
bash
# 安装 NVIDIA 驱动(需适配 CUDA 版本)
sudo apt-get install nvidia-driver-535
# 安装 CUDA Toolkit 12.x
# 参考 NVIDIA 官方文档
1.3 创建 Conda 环境
bash
# 创建并激活虚拟环境
conda create -n vllm-qwen python=3.13 -y
conda activate vllm-qwen
# 安装 vLLM(支持 GPTQ 量化)
pip install vllm
2. 模型准备
2.1 下载模型
将模型文件放置到指定目录:
/home/zadyd/桌面/vllm_server/models/DavidWen2025/Qwen3___5-9B-GPTQ-4bit/
2.2 模型文件结构
Qwen3___5-9B-GPTQ-4bit/
├── config.json
├── generation_config.json
├── model-00001-of-00002.safetensors
├── model-00002-of-00002.safetensors
├── tokenizer.json
└── quantize_config.json
3. 启动脚本配置
3.1 创建启动脚本 start_server.sh
bash
#!/bin/bash
# vLLM 双卡部署 Qwen3.5-9B-GPTQ-4bit (TP=2)
MODEL_PATH="/home/zadyd/桌面/vllm_server/models/DavidWen2025/Qwen3___5-9B-GPTQ-4bit"
API_KEY="sk-vllm-2024"
MODEL_NAME="qwen3.5-9b"
source ~/miniconda3/etc/profile.d/conda.sh
conda activate vllm-qwen
python -m vllm.entrypoints.openai.api_server \
--model ${MODEL_PATH} \
--tensor-parallel-size 2 \ # 双卡部署
--dtype float16 \ # 数据类型
--kv-cache-dtype fp8 \ # KV缓存使用FP8压缩
--gpu-memory-utilization 0.85 \ # GPU显存使用率
--max-model-len 262144 \ # 最大上下文窗口(262K tokens)
--port 8000 \ # 服务端口
--host 0.0.0.0 \ # 允许外部访问
--trust-remote-code \ # 信任远程代码
--enforce-eager \ # 强制eager模式
--api-key ${API_KEY} \ # API密钥
--served-model-name ${MODEL_NAME} \ # 模型名称
--enable-auto-tool-choice \ # 启用自动工具选择
--tool-call-parser qwen3_xml \ # Qwen3 XML工具解析器
--stream-interval 1 \ # 流式响应间隔(防止超时)
--distributed-timeout-seconds 300 # 分布式超时时间
3.2 赋予执行权限
bash
chmod +x start_server.sh
4. 启动服务器
4.1 直接启动
bash
bash start_server.sh
4.2 后台运行(使用 nohup)
bash
nohup bash start_server.sh > vllm.log 2>&1 &
4.3 检查启动状态
bash
# 查看进程
ps aux | grep vllm
# 查看日志
tail -f vllm.log
5. API 访问方式
5.1 本地访问
bash
URL: http://localhost:8000/v1
5.2 局域网访问
bash
# 服务器IP: 192.168.110.123
URL: http://192.168.110.123:8000/v1
5.3 认证信息
| 参数 | 值 |
|---|---|
| API Key | sk-vllm-2024 |
| 模型名称 | qwen3.5-9b |
6. API 使用示例
6.1 使用 OpenAI Chat Completions API
python
from openai import OpenAI
client = OpenAI(
base_url="http://192.168.110.123:8000/v1",
api_key="sk-vllm-2024"
)
response = client.chat.completions.create(
model="qwen3.5-9b",
messages=[
{"role": "user", "content": "你好"}
],
max_tokens=2048
)
print(response.choices[0].message.content)
6.2 使用 Anthropic Messages API
python
import requests
response = requests.post(
"http://192.168.110.123:8000/v1/messages",
headers={
"Authorization": "Bearer sk-vllm-2024",
"Content-Type": "application/json"
},
json={
"model": "qwen3.5-9b",
"messages": [
{"role": "user", "content": [{"type": "text", "text": "你好"}]}
],
"max_tokens": 2048
}
)
print(response.json())
6.3 使用 cURL 测试
bash
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Authorization: Bearer sk-vllm-2024" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.5-9b",
"messages": [{"role": "user", "content": "你好"}],
"max_tokens": 100
}'
7. 关键参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
--tensor-parallel-size |
张量并行数(双卡设为2) | 1 |
--dtype |
数据类型(float16/bfloat16) | float16 |
--kv-cache-dtype |
KV缓存类型(fp8可节省显存) | fp8 |
--gpu-memory-utilization |
GPU显存使用率 | 0.85 |
--max-model-len |
最大上下文长度(Qwen3.5支持262K) | 2048 |
--stream-interval |
流式响应间隔(防止客户端超时) | 1 |
--distributed-timeout-seconds |
分布式操作超时时间 | 300 |
8. 常见问题与解决方案
8.1 模型响应中断
问题: 模型说话说到一半就没响应了
原因: 流式响应间隔过长,客户端超时断开
解决方案 : 添加 --stream-interval 1 参数
8.2 显存不足
问题: CUDA out of memory
解决方案:
bash
# 降低显存使用率
--gpu-memory-utilization 0.7
# 使用FP8 KV缓存
--kv-cache-dtype fp8
8.3 端口被占用
问题: Address already in use
解决方案:
bash
# 更换端口
--port 8001
# 或关闭占用进程
lsof -ti:8000 | xargs kill -9
8.4 API Key 错误
问题: Unauthorized
解决方案: 确保请求头包含正确的 API Key
bash
-H "Authorization: Bearer sk-vllm-2024"
9. 监控与日志
9.1 查看实时日志
bash
tail -f vllm.log
9.2 检查服务器状态
bash
curl http://localhost:8000/health
9.3 查看可用模型
bash
curl http://localhost:8000/v1/models
10. 安全建议
-
防火墙配置: 限制端口访问
bashsudo ufw allow from 192.168.110.0/24 to any port 8000 -
API Key 管理: 使用强密钥,定期更换
-
HTTPS: 生产环境建议配置 SSL/TLS
附录:启动成功日志示例
(APIServer pid=1914529) INFO 05-08 17:54:08 [api_server.py:602] Starting vLLM server on http://0.0.0.0:8000
(APIServer pid=1914529) INFO: Started server process [1914529]
(APIServer pid=1914529) INFO: Application startup complete.
文档版本 : v1.0
创建日期 : 2026年5月
适用模型: Qwen3.5-9B-GPTQ-4bit