Files
ProjectAGiPrompt/32-WDD-AI服务器/2-vllm安装.md
2026-06-08 09:28:55 +08:00

6.0 KiB
Raw Blame History

好的,以下是完整的阶段二vLLM + Qwen3-30B-A3B 量化部署方案


阶段二vLLM 部署 Qwen3-30B-A3B

内存约束分析

你的服务器限制16GB 显存 + 16GB 内存。各量化版本的显存需求:

量化格式 模型大小 显存需求含KV Cache 能否单卡运行
BF16 原版 ~60GB ~65GB
FP8 ~30GB ~32GB
INT8 (GPTQ-Int8) ~30GB ~32GB
AWQ INT4 ~16GB ~17-18GB ⚠️ 需调参
W4A16 (GPTQ INT4) ~15GB ~16GB 推荐

结论:必须使用 INT4 量化版本,且需要配合 --cpu-offload-gb 将少量溢出部分卸载到内存 。 huggingface


第一步:安装 Miniconda 环境

# 下载 Miniconda走代理
export http_proxy=http://192.168.233.206:7899
export https_proxy=http://192.168.233.206:7899

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /tmp/miniconda.sh
bash /tmp/miniconda.sh -b -p /opt/miniconda3


conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r

# 初始化 bash
/opt/miniconda3/bin/conda init bash

echo 'export PATH="/opt/miniconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc


# 3. 切换为清华 conda 源(避免后续因访问 Anaconda 官方源速度慢)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

# 创建 Python 3.11 环境(配合 CUDA 13.0
conda create -n vllm python=3.11 -y
conda activate vllm

第二步:安装 vLLM清华 pip 源)

CUDA 13.0 对应的 Driver 580直接使用最新 vLLM 即可 vllm.hyper

# 配置清华 pip 镜像(永久生效)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 安装 vLLM清华源无需代理
pip install vllm

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

第三步:安装 ModelScope 并下载模型

国内使用 ModelScope 下载,速度远比 HuggingFace 快 blog.csdn

pip install modelscope

# 下载 AWQ INT4 量化版ModelScope 国内源,约 16GB
python - <<'EOF'
from modelscope import snapshot_download
model_dir = snapshot_download(
    'swift/Qwen3-30B-A3B-AWQ',
    cache_dir='/data/models'
)
print(f"模型已下载至: {model_dir}")
EOF

模型存储路径约 16GB确保 /data/models 所在分区空间充足(你的 / 挂载点还有 467GB 可用)。


第四步:启动 vLLM 服务

由于 AWQ INT4 模型加载后约占 17GB略超 16GB 显存,需要将约 2GB 溢出卸载到内存CPU Offload blog.csdn

conda activate vllm

# 关键参数说明见下方
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
VLLM_USE_MODELSCOPE=True \
nohup vllm serve swift/Qwen3-30B-A3B-AWQ \
  --host 0.0.0.0 \
  --port 8000 \
  --dtype float16 \
  --gpu-memory-utilization 0.88 \
  --max-model-len 8192 \
  --cpu-offload-gb 2 \
  --max-num-seqs 4 \
  --enable-prefix-caching \
  --served-model-name Qwen3-30B-A3B \
  --trust-remote-code > /var/log/vllm.log 2>&1 &


export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
export  VLLM_USE_MODELSCOPE=True 

vllm serve swift/Qwen3-30B-A3B-AWQ \
  --host 0.0.0.0 \
  --port 8000 \
  --dtype float16 \
  --gpu-memory-utilization 0.90 \
  --max-model-len 4096 \
  --max-num-seqs 2 \
  --cpu-offload-gb 2 \
  --enforce-eager \
  --disable-log-stats \
  --served-model-name Qwen3-30B-A3B \
  --trust-remote-code

echo "vLLM 已在后台启动,查看日志: tail -f /var/log/vllm.log"

参数说明

参数 原因
--gpu-memory-utilization 0.92 充分利用 16GB 显存
--max-model-len 8192 限制上下文长度以节省 KV Cache 显存
--cpu-offload-gb 2 将 2GB 模型权重卸载到 16GB 内存(速度略降)
--max-num-seqs 4 低并发限制,节省显存
PYTORCH_CUDA_ALLOC_CONF expandable_segments:True 防止显存碎片化 OOM

第五步:验证服务是否启动成功

# 等待约 60-120 秒模型加载完毕
tail -f /var/log/vllm.log

# 看到如下日志说明启动成功:
# INFO: Uvicorn running on http://0.0.0.0:8000

# 查看已加载模型
curl http://localhost:8000/v1/models

若显存仍然不足的备用方案

# 进一步降低上下文长度和并发
vllm serve swift/Qwen3-30B-A3B-AWQ \
  --max-model-len 4096 \
  --cpu-offload-gb 4 \
  --max-num-seqs 2 \
  --gpu-memory-utilization 0.90 \
  ...(其余参数同上)

确认 curl http://localhost:8000/v1/models 返回模型信息后,告诉我,我将给出阶段三:完整的 API 调用方式OpenAI 兼容接口、Python SDK、流式输出等

1. 彻底删除旧环境

conda deactivate conda env remove -n vllm -y

2. 创建新环境

conda create -n vllm python=3.11 -y conda activate vllm

3. 设置清华源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

5. 安装 torch走代理

export http_proxy=http://192.168.233.206:7899 export https_proxy=http://192.168.233.206:7899 pip install torch torchvision torchaudio
--index-url https://download.pytorch.org/whl/cu128
--no-cache-dir

6. 安装 vllm 和 modelscope关闭代理走清华源

unset http_proxy https_proxy pip install vllm modelscope --no-cache-dir

7. 一次性验证

python -c " import torch print('CUDA:', torch.cuda.is_available()) print('GPU:', torch.cuda.get_device_name(0)) import vllm print('vllm:', vllm.version) import modelscope print('modelscope:', modelscope.version) print('ALL OK') "