8 卡 V100 服务器:基于 vLLM 的 Qwen 大模型高效部署实战

大家好,今天给大家带来一篇硬核实战文章——在浪潮NF5468M5服务器(8张Tesla V100 SXM2 32GB)上,通过vLLM部署大语言模型(以通义千问系列为例)的完整步骤。本文所有操作均为实际落地记录,步骤可复现,适合需要快速部署大模型进行推理的开发者和运维人员。

一、前期准备:服务器配置一览

在开始部署前,先明确我们的服务器硬件和系统基础信息,这是后续选择驱动、模型和部署参数的重要依据。

1. 硬件核心配置

组件 详细信息
服务器型号 浪潮(Inspur)NF5468M5
GPU 8块 NVIDIA Tesla V100 SXM2 32GB(Volta架构,HBM2显存,总计256GB)
CPU 2路 Intel Xeon Gold 6248R(48核96线程,基础3.0GHz,睿频3.7GHz)
内存 至少 32GB(推荐512GB/768GB)

2. 系统内核版本

6.8.0-90-generic

二、第一步:安装NVIDIA GPU驱动

大模型部署的核心前提是GPU驱动正常工作,尤其是V100这类专业计算卡,需要匹配稳定的驱动版本。

1. 安装步骤


# 1. 更新系统软件源
sudo apt update

# 2. 查看系统推荐的NVIDIA驱动版本
ubuntu-drivers devices

# 3. 安装稳定版驱动
sudo apt install -y nvidia-driver-575

# 4. 安装常用编辑器
sudo apt install -y vim

# 5. 重启服务器,使驱动生效
sudo reboot

2. 验证驱动安装结果

服务器重启后,执行nvidia-smi命令验证驱动是否正常工作,若输出如下信息则说明安装成功。

完整验证输出

+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 575.57.08              Driver Version: 575.57.08      CUDA Version: 12.9     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  Tesla PG503-216                On  |   00000000:1A:00.0 Off |                    0 |
| N/A   45C    P0             44W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   1  Tesla PG503-216                On  |   00000000:1B:00.0 Off |                    0 |
| N/A   43C    P0             42W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   2  Tesla PG503-216                On  |   00000000:3D:00.0 Off |                    0 |
| N/A   43C    P0             45W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   3  Tesla PG503-216                On  |   00000000:3E:00.0 Off |                    0 |
| N/A   50C    P0             45W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   4  Tesla PG503-216                On  |   00000000:88:00.0 Off |                    0 |
| N/A   45C    P0             44W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   5  Tesla PG503-216                On  |   00000000:89:00.0 Off |                    0 |
| N/A   43C    P0             45W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   6  Tesla PG503-216                On  |   00000000:B1:00.0 Off |                    0 |
| N/A   47C    P0             47W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   7  Tesla PG503-216                On  |   00000000:B2:00.0 Off |                    0 |
| N/A   43C    P0             44W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    1   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    2   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    3   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    4   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    5   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    6   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    7   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
+-----------------------------------------------------------------------------------------+

状态总结
项目 状态 说明
GPU 识别 ✅ 正常 8张Tesla V100-SXM2-32GB全部被识别
驱动版本 ✅ 匹配 575.57.08,完美兼容V100架构
CUDA 支持 ✅ 可用 内置支持CUDA 12.9,兼容vLLM/PyTorch
显存状态 ✅ 正常 每卡32768MiB(32GB),总计256GB
温度/功耗 ✅ 正常 空闲状态温度40℃,功耗45W,无异常
ECC 内存 ✅ 启用 无未纠正错误,数据计算更稳定

三、第二步:安装nvidia-container-toolkit工具

在部署大模型过程中,nvidia-container-toolkit工具(包含nvidia-ctk)是GPU容器化部署、GPU资源正常调用的重要依赖,默认系统未安装,需手动部署,以下是完整实操步骤(基于实际终端日志)。

1. 问题现象

执行nvidia-ctk命令查看版本时,提示“未找到命令”,说明工具未安装,需进行后续安装操作:

nvidia-ctk --version
# 输出
nvidia-ctk:未找到命令

2. 安装步骤

# 1. 导入NVIDIA容器工具包的GPG密钥并添加软件源
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 2. 启用experimental仓库(确保能获取对应版本工具)
sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 3. 更新软件源,加载新增的NVIDIA仓库
sudo apt-get update

# 4. 指定工具版本并安装(1.18.2-1版本,稳定兼容当前驱动和系统)
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.18.2-1
sudo apt-get install -y \
    nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
    nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
    nvidia-container-runtime=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
    libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
    libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}

3. 安装验证

执行上述命令后,系统会自动下载并安装4个相关软件包(libnvidia-container-tools、libnvidia-container1、nvidia-container-toolkit、nvidia-container-toolkit-base),安装完成后无报错即代表成功。

可再次执行nvidia-ctk --version命令,若能正常显示版本信息,说明工具已可正常使用。

备注:安装过程中若提示“有软件包未被升级”或“自动安装的依赖可卸载”,无需额外操作,不影响工具功能和后续大模型部署。

4. 工具配置与故障排查(实操补充)

安装完成后,需进一步配置工具,确保其与Docker联动正常,支持GPU容器化调用。以下是基于实际终端操作的完整配置、故障排查及验证步骤,与你执行的命令完全一致。

步骤1:验证当前配置状态

首先执行以下命令,检查NVIDIA驱动和nvidia-container-toolkit的联动状态:

# 同时验证NVIDIA驱动和容器工具包状态
nvidia-smi >/dev/null 2>&1 && echo "NVIDIA driver OK" || (echo "NVIDIA driver issue"; exit 1) && sudo docker info 2>/dev/null | grep -q "Runtime.*nvidia" && echo "NVIDIA Container Toolkit OK" || (echo "NVIDIA Container Toolkit not configured"; exit 1)

执行结果:

NVIDIA driver OK
NVIDIA Container Toolkit not configured

说明:NVIDIA驱动正常,但nvidia-container-toolkit未完成配置,无法与Docker联动,需进一步配置。

步骤2:配置nvidia-container-toolkit与Docker联动

执行以下命令,配置容器工具包关联Docker运行时,生成配置文件:

# 配置Docker运行时关联nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker

第一次执行输出(配置文件不存在,生成新配置):


INFO[0000] Config file does not exist; using empty config
INFO[0000] Wrote updated config to /etc/docker/daemon.json
INFO[0000] It is recommended that docker daemon be restarted.

第二次执行输出(加载已存在的配置文件,更新配置):


INFO[0000] Loading config from /etc/docker/daemon.json
INFO[0000] Wrote updated config to /etc/docker/daemon.json
INFO[0000] It is recommended that docker daemon be restarted.
步骤3:查看生成的Docker配置文件

配置完成后,查看自动生成的/etc/docker/daemon.json配置文件,确认nvidia运行时已添加:


# 查看Docker守护进程配置文件
(base) mzt@mzt-NF5468M5:/gpustack$ sudo cat /etc/docker/daemon.json 2>/dev/null || echo "文件 /etc/docker/daemon.json 不存在"

执行结果(配置文件正常生成,包含nvidia运行时):


{
    "runtimes": {
        "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
        }
    }
}
步骤4:检查Docker运行时,排查配置未生效问题

配置完成后,检查Docker运行时,发现nvidia运行时未显示,说明配置未生效,且缺少nvidia-container-runtime依赖:

# 查看Docker运行时详情
sudo docker info 2>/dev/null | grep -A5 -i runtime

执行结果(仅显示默认运行时,无nvidia运行时):

 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 1c4457e00facac03ce1d75f7b6777a7a851e5c41
 runc version: v1.3.4-0-gd6d73eb
 init version: de40ad0
 Security Options:
步骤5:安装缺失依赖nvidia-container-runtime

上述问题原因是缺少nvidia-container-runtime依赖,执行以下命令安装:

# 安装nvidia-container-runtime依赖
udo apt install nvidia-container-runtime -y

执行过程输出:


正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
  dctrl-tools libatomic1:i386 libdrm-amdgpu1:i386 libdrm-intel1:i386 libdrm-nouveau2:i386 libdrm-radeon1:i386 libedit2:i386
  libelf1:i386 libgl1:i386 libgl1-mesa-dri:i386 libglapi-mesa:i386 libglvnd0:i386 libglx-mesa0:i386 libglx0:i386 libicu70:i386
  libllvm15:i386 libpciaccess0:i386 libsensors5:i386 libstdc++6:i386 libxcb-dri2-0:i386 libxcb-glx0:i386 libxcb-shm0:i386
  libxcb-sync1:i386 libxcb-xfixes0:i386 libxfixes3:i386 libxml2:i386 libxshmfence1:i386 libxxf86vm1:i386
  nvidia-firmware-535-535.274.02
使用'sudo apt autoremove'来卸载它(它们)。
下列【新】软件包将被安装:
  nvidia-container-runtime
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 97 个软件包未被升级。
需要下载 6,316 B 的归档。
解压缩后会消耗 21.5 kB 的额外空间。
获取:1 https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2204/x86_64  nvidia-container-runtime 3.13.0-1 [6,316 B]
已下载 6,316 B,耗时 2秒 (4,057 B/s)
正在选中未选择的软件包 nvidia-container-runtime。
(正在读取数据库 ... 系统当前共安装有 219227 个文件和目录。)
准备解压 .../nvidia-container-runtime_3.13.0-1_all.deb  ...
正在解压 nvidia-container-runtime (3.13.0-1) ...
正在设置 nvidia-container-runtime (3.13.0-1) ...
步骤6:重新配置并重启Docker,使配置生效

安装依赖后,重新执行配置命令,并重启动Docker守护进程,确保nvidia运行时生效:


# 重新配置Docker运行时关联
(base) mzt@mzt-NF5468M5:/gpustack$ sudo nvidia-ctk runtime configure --runtime=docker
# 重启动Docker守护进程
(base) mzt@mzt-NF5468M5:/gpustack$ sudo systemctl restart docker

重新配置输出(配置文件加载正常):


INFO[0000] Loading config from /etc/docker/daemon.json
INFO[0000] Wrote updated config to /etc/docker/daemon.json
INFO[0000] It is recommended that docker daemon be restarted.
步骤7:最终验证配置是否成功

Docker重启后,再次检查运行时配置,并验证nvidia-container-toolkit是否正常工作:


# 1. 查看Docker运行时,确认nvidia运行时已添加
(base) mzt@mzt-NF5468M5:/gpustack$ sudo docker info | grep -A5 -i runtime

# 2. 再次验证驱动和容器工具包联动状态
(base) mzt@mzt-NF5468M5:/gpustack$ sudo docker info 2>/dev/null | grep -q "nvidia" \
    && echo "NVIDIA Container Toolkit OK" \
    || (echo "NVIDIA Container Toolkit not configured"; exit 1)

# 3. 查看GPU状态,确认驱动正常
(base) mzt@mzt-NF5468M5:/gpustack$ sudo nvidia-smi

最终验证输出(配置成功):


# Docker运行时查看结果(已包含nvidia运行时)
 Runtimes: io.containerd.runc.v2 nvidia runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 1c4457e00facac03ce1d75f7b6777a7a851e5c41
 runc version: v1.3.4-0-gd6d73eb
 init version: de40ad0
 Security Options:

# 容器工具包联动验证结果
NVIDIA Container Toolkit OK

# GPU状态输出(驱动正常,8张GPU全部识别)
Thu Jan 29 15:48:32 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 575.57.08              Driver Version: 575.57.08      CUDA Version: 12.9     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  Tesla PG503-216                On  |   00000000:1A:00.0 Off |                    0 |
| N/A   45C    P0             44W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   1  Tesla PG503-216                On  |   00000000:1B:00.0 Off |                    0 |
| N/A   43C    P0             42W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   2  Tesla PG503-216                On  |   00000000:3D:00.0 Off |                    0 |
| N/A   43C    P0             45W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   3  Tesla PG503-216                On  |   00000000:3E:00.0 Off |                    0 |
| N/A   50C    P0             45W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   4  Tesla PG503-216                On  |   00000000:88:00.0 Off |                    0 |
| N/A   45C    P0             44W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   5  Tesla PG503-216                On  |   00000000:89:00.0 Off |                    0 |
| N/A   43C    P0             45W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   6  Tesla PG503-216                On  |   00000000:B1:00.0 Off |                    0 |
| N/A   47C    P0             47W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   7  Tesla PG503-216                On  |   00000000:B2:00.0 Off |                    0 |
| N/A   43C    P0             44W /  300W |       5MiB /  32768MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    1   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    2   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    3   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    4   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    5   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    6   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
|    7   N/A  N/A            3132      G   /usr/lib/xorg/Xorg                        4MiB |
+-----------------------------------------------------------------------------------------+

总结:至此,nvidia-container-toolkit工具已完成安装、配置及验证,Docker已识别nvidia运行时,可正常支持GPU容器化部署,为后续大模型容器化运行(可选)做好准备。

四、第三步:安装Miniconda并创建隔离环境

在AI项目中,环境隔离是避免“依赖地狱”的关键,Miniconda作为轻量级的Python环境管理工具,是服务器端的最佳选择。

1. 安装Miniconda


# 1. 下载Miniconda3(Linux 64位,最新稳定版)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 2. 静默安装Miniconda到用户目录(无需sudo,避免权限问题)
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3

# 3. 初始化conda,使其在bash终端中生效
$HOME/miniconda3/bin/conda init bash

# 4. 刷新终端配置,立即启用conda命令
source ~/.bashrc

2. 创建并激活Python环境

推荐使用Python 3.10版本,兼容性最好,对vLLM和Transformers的支持最稳定。


# 1. 创建名为qwen3的conda环境,指定Python 3.10
conda create -n qwen3 python=3.10 -y

# 2. 激活该环境(后续所有操作均在该环境中执行)
conda activate qwen3

四、第三步:安装依赖并下载大模型

1. 安装系统依赖和NVIDIA仓库密钥


# 1. 更新系统软件源
sudo apt update

# 2. 安装必要的系统工具
sudo apt install -y wget gnupg

# 3. 下载并安装NVIDIA CUDA仓库密钥(确保后续依赖安装正常)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb

# 4. 再次更新软件源,加载NVIDIA仓库
sudo apt update

2. 接受conda许可并安装Python依赖


# 1. 接受conda许可协议(避免后续安装报错)
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r

# 2. 安装vLLM(0.8.4版本,稳定可靠,兼容Qwen系列模型)
pip install vllm==0.8.4

# 3. 安装并重新覆盖Transformers(4.44.2版本,匹配vLLM)
pip install "transformers==4.44.2" --force-reinstall

# 4. 安装modelscope(魔搭平台工具,方便下载Qwen模型)
pip install modelscope

3. 下载Qwen系列大模型

通过modelscope工具直接下载模型到本地,支持断点续传,推荐下载Qwen2.5-72B-Instruct(对话型)或Qwen3-32B(基础型)。


# 下载Qwen2.5-72B-Instruct到./models目录
modelscope download --model Qwen/Qwen2.5-72B-Instruct --local_dir ./models

# 可选:下载Qwen3-32B到./qwen3-32目录
modelscope download --model Qwen/Qwen3-32B --local_dir ./qwen3-32

注意:模型文件体积较大(72B模型约140GB左右),下载时间较长,建议在后台执行(可使用nohup),避免终端断开导致下载中断。

五、第四步:基于vLLM部署大模型API服务

vLLM是目前最先进的大模型推理引擎之一,支持高吞吐、低延迟的推理,尤其适合多卡并行部署,这里我们充分利用8张V100显卡进行张量并行部署。

1. 先验证环境可用性

在部署前,先验证GPU和vLLM是否正常工作,避免后续部署出现问题。


# 确保已激活qwen3环境
conda activate qwen3

# 1. 验证PyTorch是否能识别GPU
python -c "import torch; print(f'GPU数量: {torch.cuda.device_count()}')"

# 2. 验证vLLM版本是否正确
python -c "import vllm; print(f'vLLM版本: {vllm.__version__}')"
预期输出

GPU数量: 8
vLLM版本: 0.8.4

2. 部署命令(多个版本可选)

版本1:基础稳定版(8卡并行,适合快速落地)

python -m vllm.entrypoints.api_server \
    --model /home/mzt/models/Qwen2.5-72B-Instruct \  # 注意:指定具体模型子目录,避免加载失败
    --tensor-parallel-size 8 \
    --gpu-memory-utilization 0.9 \
    --dtype half \
    --max-model-len 32768 \
    --port 8000 \
    --host 0.0.0.0
版本2:高性能优化版(更高显存利用率,支持更长序列)

python -m vllm.entrypoints.api_server \
    --model /home/mzt/models/Qwen2.5-72B-Instruct \
    --tensor-parallel-size 8 \
    --gpu-memory-utilization 0.95 \
    --dtype half \
    --max-model-len 32768 \
    --port 8000 \
    --host 0.0.0.0 \
    --trust-remote-code \
    --swap-space 4 \
    --max-num-seqs 4 \
    --enforce-eager \
    --cpu-offload-gb 2 \
    --block-size 16 \
    --max-num-batched-tokens 65536 \
    --kv-cache-dtype fp8 \
    --enable-chunked-prefill \
    --max-long-partial-prefills 2 \
    --num-lookahead-slots 2 \
    --disable-custom-all-reduce
版本3:兼容OpenAI API格式(方便对接现有OpenAI生态工具)

python -m vllm.entrypoints.openai.api_server \
    --model /home/mzt/models/Qwen2.5-72B-Instruct \
    --tensor-parallel-size 8 \
    --gpu-memory-utilization 0.9 \
    --dtype half \
    --max-model-len 16384 \
    --port 8000 \
    --host 0.0.0.0 \
    --trust-remote-code \
    --swap-space 1 \
    --max-num-seqs 16 \
    --enforce-eager

3. 监控GPU运行状态

部署过程中,可打开另一个终端,执行以下命令实时监控GPU的显存、温度和功耗状态,确保部署正常无异常。


# 每2秒刷新一次nvidia-smi信息
watch -n 2 nvidia-smi

4. 核心参数详解

很多同学可能对部署命令中的参数不太理解,这里重点解释核心参数的作用和取值逻辑:

参数 常用值 详细说明
--model /home/mzt/models/Qwen2.5-72B-Instruct 模型本地完整路径,必须指定到具体模型子目录(包含config.json等文件),否则vLLM加载失败
--tensor-parallel-size 8 张量并行的GPU数量,这里对应8张V100,充分利用硬件资源,适合70B级大模型
--gpu-memory-utilization 0.9~0.95 GPU显存利用率,取值越高越节省显存,但稳定性略有下降,推荐0.9(稳定)或0.95(高性能)
--dtype half/bfloat16 模型推理精度,half(FP16)兼容V100,bfloat16更适合A100/H100,优先选择half
--max-model-len 16384/32768 模型最大上下文长度,Qwen2.5-72B原生支持32768,根据需求选择,越长越消耗显存
--host/--port 0.0.0.0/8000 服务监听地址和端口,0.0.0.0允许外部机器访问,8000为常用端口
--trust-remote-code - 必须开启,Qwen系列模型使用自定义代码,不开启会加载失败
--swap-space 1~4 每卡分配的CPU交换空间(GB),用于KV Cache溢出,避免OOM报错
--enforce-eager - 禁用CUDA Graph优化,解决部分模型/驱动兼容性问题,代价是吞吐下降10%~30%,仅必要时开启

六、部署成功验证与后续操作

1. 验证服务是否启动成功

当终端输出类似Started server on 0.0.0.0:8000的信息时,说明API服务已成功启动。此时可通过以下方式验证:

  1. 本地访问:curl http://localhost:8000/health,返回{"status": "healthy"}即正常

  2. 外部访问:curl http://192.168.15.122:8000/health(使用服务器IP),返回同上结果

2. 后续操作建议

  1. 后台运行服务:使用nohupscreen让服务在后台运行,避免终端断开导致服务停止

    
    nohup python -m vllm.entrypoints.api_server [你的部署参数] > qwen_deploy.log 2>&1 &
    
  2. 配置反向代理:如需对外提供服务,可使用Nginx配置反向代理,增加端口映射、访问控制等功能

  3. 压测与调优:根据实际业务场景,调整--max-num-seqs--max-num-batched-tokens等参数,平衡吞吐和延迟

  4. 模型更新与切换:如需切换其他模型,只需下载对应模型到本地,修改--model参数重新部署即可

七、常见问题排查

  1. 驱动加载失败:重启服务器后仍无法识别GPU,可重新安装驱动,或检查GPU是否插紧(物理机)

  2. OOM内存溢出:降低--gpu-memory-utilization取值,或减小--max-model-len,也可增加--swap-space大小

  3. 模型加载失败:确保--model参数指定到具体模型子目录,且模型文件下载完整(无缺失文件)

  4. 端口被占用:修改--port参数(如8001、8080),或使用netstat -tulpn | grep 8000查看占用进程并关闭


总结

  1. 部署前置条件是匹配硬件的稳定驱动(V100优先535版本),且需通过nvidia-smi验证GPU识别状态。

  2. 利用Miniconda创建隔离环境(Python 3.10)可避免依赖冲突,vLLM 0.8.4是部署Qwen系列模型的稳定选择。

  3. 8卡V100部署核心是开启张量并行(--tensor-parallel-size 8),并根据需求调整显存利用率和上下文长度等参数,确保性能与稳定性的平衡。

  4. 部署后可通过健康检查接口验证服务状态,后续可通过后台运行、反向代理等方式优化服务可用性。

本文的部署步骤均经过实际验证,可直接复现,如果你在部署过程中遇到问题,欢迎在评论区留言交流!

(注:文档部分内容可能由 AI 生成)

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐