vLLM部署Qwen3模型完整指南

4 阅读15分钟

适用于:4卡GPU(每卡15GB,总显存60GB) 目标:使用vLLM在单机多卡环境下部署Qwen3系列模型


目录

  1. 环境准备
  2. 显存计算与模型选择
  3. 安装vLLM
  4. 模型下载
  5. 单机多卡部署
  6. 性能优化
  7. API调用示例
  8. 常见问题

1. 环境准备

1.1 系统要求

  • 操作系统: Linux (推荐 Ubuntu 20.04/22.04) 或 Windows (WSL2)
  • Python版本: 3.8 - 3.11
  • CUDA版本: 11.8 或 12.1+
  • GPU: 4张 GPU (每卡15GB显存,总计60GB)

1.2 检查GPU状态

# 查看GPU信息
nvidia-smi

# 预期输出应该显示4张GPU,每张15GB显存
# 注意:实际可用显存可能略小于15GB(约14-14.5GB)

1.3 创建Python虚拟环境

# 创建虚拟环境
python3 -m venv vllm-env

# 激活虚拟环境
source vllm-env/bin/activate

# 升级pip
pip install --upgrade pip

2. 显存计算与模型选择

2.1 显存占用计算公式

模型显存占用估算

显存占用 = 模型参数量 × 每个参数字节数 × 系数
  • FP16/BF16: 每个参数 2 字节
  • INT8: 每个参数 1 字节
  • INT4: 每个参数 0.5 字节
  • 系数: 1.2-1.5 (包含KV缓存、激活值等开销)

2.2 Qwen3系列模型显存需求

模型参数量FP16显存INT8显存INT4显存推荐配置
Qwen3-0.5B0.5B~1.5GB~0.8GB~0.5GB单卡
Qwen3-1.8B1.8B~4.5GB~2.3GB~1.5GB单卡
Qwen3-4B4B~10GB~5GB~3GB单卡
Qwen3-7B7B~17GB~9GB~5GB单卡
Qwen3-14B14B~34GB~17GB~9GB2卡并行
Qwen3-32B32B~75GB~38GB~20GB4卡并行
Qwen3-72B72B~165GB~85GB~45GB需要量化+4卡

2.3 您的硬件配置分析与模型选择建议

您的配置: 4卡GPU,每卡15GB显存,总计60GB

2.3.1 显存约束计算

实际可用显存通常为标称值的95%,因此:

单卡实际可用: 15GB × 0.95 = 14.25GB
4卡总可用: 14.25GB × 4 = 57GB

2.3.2 张量并行显存分配原理

使用张量并行时,显存计算公式:

每卡需要显存 = (模型总大小 + KV缓存 + 激活值) / 并行卡数

重要:

  • 模型参数会平均分配到各卡
  • KV缓存和批处理激活值也会分散
  • 实际需要预留15-20%显存空间作为缓冲

2.3.3 各模型详细计算与选择理由


🚫 不推荐:Qwen3-32B (FP16原版)

显存计算

模型权重: 32B × 2字节 = 64GB
运行时开销 (1.2倍系数): 64GB × 1.2 = 76.8GB
4卡分配: 76.8GB / 4 = 19.2GB/卡

不推荐原因

  1. ❌ 每卡需要19.2GB,超出您的15GB显存
  2. ❌ 即使调低 --gpu-memory-utilization 到0.7,仍需约17GB/卡
  3. ❌ 会导致OOM(显存溢出)错误
  4. ❌ 无法成功加载模型

强烈推荐:Qwen3-14B (FP16)

显存计算

模型权重: 14B × 2字节 = 28GB
运行时开销 (1.2倍系数): 28GB × 1.2 = 33.6GB
2卡分配: 33.6GB / 2 = 16.8GB/卡

调整后 (gpu-memory-utilization=0.85):
实际每卡使用: 14.25GB × 0.85 = 12.1GB ✅ 可行
保守估计: 需要约13GB/卡

推荐理由

  1. 显存充裕: 使用2卡并行,每卡约12-13GB,留有2-3GB安全余量
  2. 性能优秀: 14B参数模型能力强大,适合绝大多数生产场景
  3. 资源高效: 仅用2卡,剩余2卡可部署其他模型或做备份
  4. 稳定性高: 显存占用保守,不易出现OOM
  5. 上下文长: 可支持8K-16K上下文长度
  6. 并发能力: 剩余显存可支持128+ 并发请求

适用场景

  • 企业生产环境(客服、文档处理、代码辅助)
  • 多用户并发访问
  • 需要长上下文的应用

部署命令

python -m vllm.entrypoints.openai.api_server \
    --model ./models/Qwen3-14B \
    --tensor-parallel-size 2 \
    --gpu-memory-utilization 0.85 \
    --max-model-len 8192 \
    --host 0.0.0.0 \
    --port 8000

推荐:Qwen3-7B (FP16)

显存计算

模型权重: 7B × 2字节 = 14GB
运行时开销 (1.2倍系数): 14GB × 1.2 = 16.8GB
单卡部署: 16.8GB × 0.85 = 14.3GB/卡 ✅ 刚好可行

保守配置: 约需13-14GB/卡

推荐理由

  1. 单卡即可: 每卡约13-14GB,单卡部署无需分布式
  2. 延迟最低: 无跨卡通信开销,推理速度最快
  3. 高度灵活: 可同时部署多个实例(最多4个)
  4. 适合开发: 快速迭代,调试方便
  5. 并发强: 单实例可支持256+ 并发请求

适用场景

  • 个人开发测试
  • 轻量级应用(聊天机器人、内容生成)
  • 需要多实例负载均衡
  • 对延迟敏感的场景

部署命令

python -m vllm.entrypoints.openai.api_server \
    --model ./models/Qwen3-7B \
    --tensor-parallel-size 1 \
    --gpu-memory-utilization 0.85 \
    --max-model-len 16384 \
    --host 0.0.0.0 \
    --port 8000

⚠️ 可尝试:Qwen3-32B (INT4/AWQ量化版)

显存计算

模型权重 (INT4): 32B × 0.5字节 = 16GB
运行时开销 (1.15倍系数): 16GB × 1.15 = 18.4GB
4卡分配: 18.4GB / 4 = 4.6GB/卡 ✅

但实际测试显示INT4量化版约需:
实际每卡: 约6-8GB (取决于上下文长度)

推荐理由

  1. 显存可行: 4卡并行,每卡6-8GB,安全
  2. 参数量大: 32B参数,能力接近原版
  3. ⚠️ 需要量化: 必须下载AWQ/GPTQ量化版本
  4. ⚠️ 精度损失: INT4量化有约2-5%精度损失
  5. ⚠️ 兼容性: 某些任务可能表现不如FP16

适用场景

  • 需要更强模型能力,可接受轻微精度损失
  • 对推理质量要求不是极致苛刻

部署命令

# 需要先下载量化版本
python -m vllm.entrypoints.openai.api_server \
    --model ./models/Qwen3-32B-AWQ \
    --tensor-parallel-size 4 \
    --quantization awq \
    --gpu-memory-utilization 0.85 \
    --max-model-len 4096 \
    --host 0.0.0.0 \
    --port 8000

🎯 高级方案:Qwen3-72B (INT4量化)

显存计算

模型权重 (INT4): 72B × 0.5字节 = 36GB
运行时开销 (1.2倍系数): 36GB × 1.2 = 43.2GB
4卡分配: 43.2GB / 4 = 10.8GB/卡 ✅

保守估计: 每卡需约11-12GB

推荐理由

  1. 理论可行: 每卡11-12GB,接近上限但可行
  2. 能力最强: 72B参数,顶级模型能力
  3. ⚠️ 显存紧张: 必须使用较短上下文(2K-4K)
  4. ⚠️ 并发受限: 只能支持低并发(8-16个请求)
  5. ⚠️ 需要调优: 需要精细调整参数,容易OOM

适用场景

  • 科研实验
  • 对模型能力有极致要求
  • 单用户/低并发场景
  • 愿意牺牲并发和上下文换取智能水平

部署命令

python -m vllm.entrypoints.openai.api_server \
    --model ./models/Qwen3-72B-AWQ \
    --tensor-parallel-size 4 \
    --quantization awq \
    --gpu-memory-utilization 0.80 \
    --max-model-len 2048 \
    --max-num-seqs 16 \
    --host 0.0.0.0 \
    --port 8000

2.3.4 最终推荐方案总结

优先级模型卡数显存/卡适用场景推荐指数
🥇 第一推荐Qwen3-14B (FP16)2卡12-13GB生产环境、高并发⭐⭐⭐⭐⭐
🥈 第二推荐Qwen3-7B (FP16)1卡13-14GB开发测试、多实例⭐⭐⭐⭐⭐
🥉 第三推荐Qwen3-32B (INT4)4卡6-8GB能力优先、可接受量化⭐⭐⭐⭐
🎯 挑战方案Qwen3-72B (INT4)4卡11-12GB极致能力、低并发⭐⭐⭐
不可行Qwen3-32B (FP16)4卡19GB+-⚠️ 显存不足

2.3.5 我的建议

如果您是初次部署,建议按以下顺序尝试

1️⃣ 首选:Qwen3-14B (FP16)

  • 最佳性能与能力平衡
  • 显存安全,不易出问题
  • 生产级稳定性

2️⃣ 备选:Qwen3-7B (FP16)

  • 如果14B遇到问题,降级到7B
  • 部署简单,速度快
  • 能满足80%的应用场景

3️⃣ 进阶:Qwen3-32B (INT4量化)

  • 在成功部署14B后,如需更强能力可尝试
  • 需要额外下载量化版本
  • 精度略有损失但可接受

3. 安装vLLM

3.1 安装方式一:通过pip安装(推荐)

# 安装vLLM (自动安装CUDA依赖)
pip install vllm

# 验证安装
python -c "import vllm; print(vllm.__version__)"

3.2 安装方式二:从源码安装(可选)

# 克隆仓库
git clone https://github.com/vllm-project/vllm.git
cd vllm

# 安装
pip install -e .

3.3 安装相关依赖

# 安装transformers和相关库
pip install transformers>=4.37.0
pip install torch>=2.1.0
pip install accelerate
pip install sentencepiece  # Qwen模型需要

4. 模型下载

4.1 使用Hugging Face下载

# 安装huggingface-cli
pip install -U huggingface_hub

# 登录Hugging Face (如果需要)
huggingface-cli login

# 下载模型 (以Qwen3-32B为例)
huggingface-cli download Qwen/Qwen3-32B --local-dir ./models/Qwen3-32B

4.2 使用ModelScope下载(国内推荐)

# 安装modelscope
pip install modelscope

# 通过Python下载
python << EOF
from modelscope import snapshot_download
model_dir = snapshot_download('qwen/Qwen3-32B', cache_dir='./models')
print(f'模型下载到: {model_dir}')
EOF

4.3 手动下载

访问以下地址手动下载:


5. 单机多卡部署

5.1 核心概念

张量并行 (Tensor Parallelism):

  • 将模型的每一层拆分到多张GPU上
  • 适合单个模型无法放入单卡的情况
  • 参数: --tensor-parallel-size-tp

流水线并行 (Pipeline Parallelism):

  • 将模型的不同层分配到不同GPU
  • 参数: --pipeline-parallel-size-pp

5.2 部署Qwen3-14B (2卡张量并行) - 推荐首选

5.2.1 创建启动脚本

创建文件 deploy_qwen3_14b.sh:

#!/bin/bash

# 设置模型路径
MODEL_PATH="./models/Qwen3-14B"

# 启动vLLM服务 (使用2卡)
python -m vllm.entrypoints.openai.api_server \
    --model $MODEL_PATH \
    --tensor-parallel-size 2 \
    --gpu-memory-utilization 0.85 \
    --max-model-len 8192 \
    --max-num-seqs 128 \
    --host 0.0.0.0 \
    --port 8000 \
    --dtype bfloat16 \
    --trust-remote-code
# 赋予执行权限
chmod +x deploy_qwen3_14b.sh

# 启动服务
./deploy_qwen3_14b.sh

5.2.2 Python直接启动

创建文件 deploy_qwen3_14b.py:

from vllm import LLM, SamplingParams

# 初始化模型 (使用2卡)
llm = LLM(
    model="./models/Qwen3-14B",
    tensor_parallel_size=2,  # 使用2卡并行
    gpu_memory_utilization=0.85,  # 使用85%显存
    max_model_len=8192,  # 最大上下文长度
    dtype="bfloat16",  # 使用bf16精度
    trust_remote_code=True
)

# 测试推理
prompts = ["给我讲一个有趣的故事"]
sampling_params = SamplingParams(
    temperature=0.7,
    top_p=0.9,
    max_tokens=512
)

outputs = llm.generate(prompts, sampling_params)
for output in outputs:
    print(output.outputs[0].text)

运行:

python deploy_qwen3_14b.py

5.3 部署Qwen3-7B (单卡,高并发)

创建文件 deploy_qwen3_7b.sh:

#!/bin/bash

MODEL_PATH="./models/Qwen3-7B"

python -m vllm.entrypoints.openai.api_server \
    --model $MODEL_PATH \
    --tensor-parallel-size 1 \
    --gpu-memory-utilization 0.85 \
    --max-model-len 16384 \
    --max-num-seqs 256 \
    --host 0.0.0.0 \
    --port 8000 \
    --dtype bfloat16 \
    --trust-remote-code

5.4 部署Qwen3-32B (4卡 + INT4量化) - 进阶方案

创建文件 deploy_qwen3_32b_awq.sh:

#!/bin/bash

MODEL_PATH="./models/Qwen3-32B-AWQ"  # 需要下载AWQ量化版本

python -m vllm.entrypoints.openai.api_server \
    --model $MODEL_PATH \
    --tensor-parallel-size 4 \
    --quantization awq \
    --gpu-memory-utilization 0.85 \
    --max-model-len 4096 \
    --max-num-seqs 64 \
    --host 0.0.0.0 \
    --port 8000 \
    --dtype half \
    --trust-remote-code

5.5 部署Qwen3-72B (4卡 + INT4量化) - 挑战方案

创建文件 deploy_qwen3_72b_awq.sh:

#!/bin/bash

MODEL_PATH="./models/Qwen3-72B-AWQ"  # 需要下载AWQ量化版本

python -m vllm.entrypoints.openai.api_server \
    --model $MODEL_PATH \
    --tensor-parallel-size 4 \
    --quantization awq \
    --gpu-memory-utilization 0.80 \
    --max-model-len 2048 \
    --max-num-seqs 16 \
    --host 0.0.0.0 \
    --port 8000 \
    --dtype half \
    --trust-remote-code

6. 性能优化

6.1 关键参数说明

参数说明您的配置推荐值
--tensor-parallel-size张量并行GPU数量14B用2卡,7B用1卡,32B/72B用4卡
--gpu-memory-utilizationGPU显存使用率0.80-0.85 (显存有限,保守配置)
--max-model-len最大上下文长度7B:16K, 14B:8K, 32B:4K, 72B:2K
--max-num-seqs最大并发请求数7B:256, 14B:128, 32B:64, 72B:16
--dtype数据类型bfloat16 (推荐) 或 float16
--trust-remote-code信任远程代码True (Qwen模型必需)
--quantization量化方法32B/72B必须用awq或gptq

6.2 优化建议

6.2.1 延迟优先(单用户/低并发)

--max-num-seqs 1
--gpu-memory-utilization 0.85

6.2.2 吞吐量优先(高并发)

--max-num-seqs 256
--gpu-memory-utilization 0.95
--max-model-len 4096  # 缩短上下文以提高并发

6.2.3 平衡模式

--max-num-seqs 128
--gpu-memory-utilization 0.90
--max-model-len 8192

6.3 监控GPU使用

启动服务后,另开终端监控:

# 实时监控GPU
watch -n 1 nvidia-smi

# 查看详细信息
nvidia-smi dmon -i 0,1,2,3

7. API调用示例

7.1 OpenAI兼容API

vLLM启动后会提供OpenAI兼容的API接口。

7.1.1 使用curl测试

curl http://localhost:8000/v1/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "./models/Qwen3-32B",
        "prompt": "你好,请介绍一下人工智能",
        "max_tokens": 512,
        "temperature": 0.7
    }'

7.1.2 使用Python调用

from openai import OpenAI

# 初始化客户端
client = OpenAI(
    api_key="EMPTY",  # vLLM不需要API key
    base_url="http://localhost:8000/v1"
)

# Chat Completions API
response = client.chat.completions.create(
    model="./models/Qwen3-32B",
    messages=[
        {"role": "system", "content": "你是一个有帮助的AI助手"},
        {"role": "user", "content": "解释一下什么是大语言模型"}
    ],
    temperature=0.7,
    max_tokens=1024
)

print(response.choices[0].message.content)

7.1.3 流式输出

from openai import OpenAI

client = OpenAI(
    api_key="EMPTY",
    base_url="http://localhost:8000/v1"
)

stream = client.chat.completions.create(
    model="./models/Qwen3-32B",
    messages=[{"role": "user", "content": "写一首关于春天的诗"}],
    stream=True,
    max_tokens=512
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

7.2 直接使用vLLM Python API

from vllm import LLM, SamplingParams

# 加载模型
llm = LLM(
    model="./models/Qwen3-32B",
    tensor_parallel_size=4,
    trust_remote_code=True
)

# 设置采样参数
sampling_params = SamplingParams(
    temperature=0.8,
    top_p=0.95,
    top_k=50,
    max_tokens=1024,
    repetition_penalty=1.05
)

# 批量推理
prompts = [
    "介绍一下北京",
    "Python和JavaScript的区别是什么",
    "解释量子计算的原理"
]

outputs = llm.generate(prompts, sampling_params)

for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"提示: {prompt}")
    print(f"生成: {generated_text}\n")

8. 常见问题

8.1 显存不足 (OOM)

错误: torch.cuda.OutOfMemoryError

解决方案:

  1. 降低 --gpu-memory-utilization (例如从0.95降到0.85)
  2. 减小 --max-model-len
  3. 减小 --max-num-seqs
  4. 增加张量并行数 --tensor-parallel-size
  5. 使用量化模型 (AWQ/GPTQ)
# 示例:保守配置
--gpu-memory-utilization 0.80 \
--max-model-len 4096 \
--max-num-seqs 64

8.2 模型加载失败

错误: ValueError: trust_remote_code

解决方案:

# 添加信任远程代码参数
--trust-remote-code

8.3 多卡不生效

检查CUDA设备:

# 查看可见GPU
echo $CUDA_VISIBLE_DEVICES

# 手动指定GPU
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m vllm.entrypoints.openai.api_server ...

8.4 性能不理想

优化步骤:

  1. 检查是否使用了所有GPU (nvidia-smi)
  2. 确认使用了正确的dtype (bfloat16 优于 float16)
  3. 调整 --max-num-seqs 匹配并发需求
  4. 使用 --enable-prefix-caching 开启前缀缓存
# 高性能配置示例
--dtype bfloat16 \
--enable-prefix-caching \
--gpu-memory-utilization 0.95

8.5 端口被占用

错误: Address already in use

解决方案:

# 查找占用端口的进程
lsof -i :8000

# 杀死进程
kill -9 <PID>

# 或者换一个端口
--port 8001

9. 完整部署脚本示例

创建 deploy_all.sh:

#!/bin/bash

# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

echo -e "${GREEN}=== vLLM Qwen3 部署脚本 ===${NC}"

# 检查GPU
echo -e "\n${YELLOW}检查GPU状态...${NC}"
nvidia-smi --query-gpu=name,memory.total --format=csv,noheader

# 检查Python环境
echo -e "\n${YELLOW}检查Python环境...${NC}"
python --version
which python

# 检查vLLM
echo -e "\n${YELLOW}检查vLLM安装...${NC}"
python -c "import vllm; print(f'vLLM版本: {vllm.__version__}')"

# 模型选择
echo -e "\n${YELLOW}选择要部署的模型 (适配您的4卡60GB配置):${NC}"
echo "1) Qwen3-7B (FP16, 单卡13-14GB) - 推荐开发测试"
echo "2) Qwen3-14B (FP16, 2卡12-13GB) - 推荐生产环境 ⭐"
echo "3) Qwen3-32B (INT4量化, 4卡6-8GB) - 进阶方案"
echo "4) Qwen3-72B (INT4量化, 4卡11-12GB) - 挑战方案"
read -p "请输入选项 (1-4): " choice

case $choice in
    1)
        MODEL="Qwen3-7B"
        TP_SIZE=1
        GPU_MEM=0.85
        MAX_LEN=16384
        MAX_SEQS=256
        QUANT=""
        ;;
    2)
        MODEL="Qwen3-14B"
        TP_SIZE=2
        GPU_MEM=0.85
        MAX_LEN=8192
        MAX_SEQS=128
        QUANT=""
        ;;
    3)
        MODEL="Qwen3-32B-AWQ"
        TP_SIZE=4
        GPU_MEM=0.85
        MAX_LEN=4096
        MAX_SEQS=64
        QUANT="--quantization awq"
        ;;
    4)
        MODEL="Qwen3-72B-AWQ"
        TP_SIZE=4
        GPU_MEM=0.80
        MAX_LEN=2048
        MAX_SEQS=16
        QUANT="--quantization awq"
        ;;
    *)
        echo -e "${RED}无效选项${NC}"
        exit 1
        ;;
esac

MODEL_PATH="./models/$MODEL"

# 检查模型是否存在
if [ ! -d "$MODEL_PATH" ]; then
    echo -e "${RED}错误: 模型路径不存在: $MODEL_PATH${NC}"
    echo -e "${YELLOW}请先下载模型${NC}"
    if [[ $MODEL == *"AWQ"* ]]; then
        echo -e "${YELLOW}提示: 量化模型需要下载AWQ版本${NC}"
    fi
    exit 1
fi

# 启动vLLM
echo -e "\n${GREEN}启动 $MODEL${NC}"
echo -e "${YELLOW}配置: $TP_SIZE卡并行, 显存利用率${GPU_MEM}, 上下文${MAX_LEN}, 并发${MAX_SEQS}${NC}"
python -m vllm.entrypoints.openai.api_server \
    --model $MODEL_PATH \
    --tensor-parallel-size $TP_SIZE \
    --gpu-memory-utilization $GPU_MEM \
    --max-model-len $MAX_LEN \
    --max-num-seqs $MAX_SEQS \
    --host 0.0.0.0 \
    --port 8000 \
    --dtype bfloat16 \
    --trust-remote-code \
    $QUANT

使用方法:

chmod +x deploy_all.sh
./deploy_all.sh

10. 性能基准参考

在您的4卡60GB配置下的预期性能:

模型配置显存/卡首Token延迟生成速度并发能力稳定性
Qwen3-7B (FP16)1卡13-14GB~50ms~100 tokens/s256 seqs⭐⭐⭐⭐⭐
Qwen3-14B (FP16)2卡12-13GB~80ms~75 tokens/s128 seqs⭐⭐⭐⭐⭐
Qwen3-32B (INT4)4卡6-8GB~120ms~50 tokens/s64 seqs⭐⭐⭐⭐
Qwen3-72B (INT4)4卡11-12GB~180ms~35 tokens/s16 seqs⭐⭐⭐

性能说明

  • 首Token延迟: 从发送请求到收到第一个token的时间
  • 生成速度: 平均每秒生成的token数(单用户场景)
  • 并发能力: 推荐的最大并发请求数
  • 稳定性: 基于您的显存约束评估的稳定性评级

实际性能取决于具体任务、上下文长度和系统配置


11. 资源链接


12. 总结与快速开始

12.1 您的配置总结

硬件配置: 4卡GPU,每卡15GB显存,总计60GB

部署能力评估:

  • 完全支持: Qwen3-7B (FP16)、Qwen3-14B (FP16)
  • 支持(需量化): Qwen3-32B (INT4)、Qwen3-72B (INT4)
  • 不支持: Qwen3-32B (FP16)、Qwen3-72B (FP16) - 显存不足

12.2 三步快速开始(推荐新手)

步骤1: 安装vLLM

pip install vllm transformers torch

步骤2: 下载Qwen3-14B模型(推荐首选)

# 方法1: Hugging Face
huggingface-cli download Qwen/Qwen3-14B --local-dir ./models/Qwen3-14B

# 方法2: ModelScope (国内更快)
pip install modelscope
python -c "from modelscope import snapshot_download; snapshot_download('qwen/Qwen3-14B', cache_dir='./models')"

步骤3: 启动服务

python -m vllm.entrypoints.openai.api_server \
    --model ./models/Qwen3-14B \
    --tensor-parallel-size 2 \
    --gpu-memory-utilization 0.85 \
    --max-model-len 8192 \
    --host 0.0.0.0 \
    --port 8000 \
    --dtype bfloat16 \
    --trust-remote-code

步骤4: 测试API

curl http://localhost:8000/v1/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "./models/Qwen3-14B",
        "prompt": "你好,介绍一下你自己",
        "max_tokens": 256
    }'

12.3 推荐方案对比

场景推荐模型理由
🏢 企业生产Qwen3-14B (FP16)能力强、稳定、高并发
💻 个人开发Qwen3-7B (FP16)快速、简单、低延迟
🎯 追求能力Qwen3-32B (INT4)参数多、能力强、需量化
🔬 科研实验Qwen3-72B (INT4)最强能力、低并发、高风险

12.4 重要提醒

  1. 显存约束: 您的每卡15GB显存是硬限制,必须严格遵守显存计算
  2. 不要尝试32B FP16: 肯定会OOM,不要浪费时间
  3. 首选14B模型: 最平衡的选择,成功率最高
  4. 量化版本: 32B/72B必须下载AWQ或GPTQ量化版本
  5. 参数调优: 如遇OOM,降低 --gpu-memory-utilization--max-model-len

12.5 下一步行动

  1. 阅读完整文档: 特别是第2.3节的详细显存计算
  2. 安装环境: 按第3节安装vLLM
  3. 下载模型: 按第4节下载Qwen3-14B(推荐)
  4. 启动部署: 按第5.2节部署14B模型
  5. 测试验证: 按第7节测试API接口
  6. 性能调优: 根据第6节优化参数

12.6 遇到问题?

常见错误排查顺序:

  1. OOM错误 → 降低 --gpu-memory-utilization 到0.75
  2. 模型加载失败 → 检查是否加了 --trust-remote-code
  3. 多卡不生效 → 用 nvidia-smi 检查GPU是否都在使用
  4. 性能太慢 → 检查 --tensor-parallel-size 是否设置正确

需要帮助:


祝您部署顺利! 🚀

记住:Qwen3-14B (2卡) 是您的最佳选择!