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

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. 系统内核版本

Plain 复制代码
6.8.0-90-generic

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

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

1. 安装步骤

Bash 复制代码
# 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命令验证驱动是否正常工作,若输出如下信息则说明安装成功。

完整验证输出
Bash 复制代码
+-----------------------------------------------------------------------------------------+
| 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命令查看版本时,提示"未找到命令",说明工具未安装,需进行后续安装操作:

shell 复制代码
nvidia-ctk --version
# 输出
nvidia-ctk:未找到命令

2. 安装步骤

shell 复制代码
# 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的联动状态:

shell 复制代码
# 同时验证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)

执行结果:

Plain 复制代码
NVIDIA driver OK
NVIDIA Container Toolkit not configured

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

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

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

shell 复制代码
# 配置Docker运行时关联nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker

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

Plain 复制代码
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.

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

Plain 复制代码
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运行时已添加:

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

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

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

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

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

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

Plain 复制代码
 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依赖,执行以下命令安装:

shell 复制代码
# 安装nvidia-container-runtime依赖
udo apt install nvidia-container-runtime -y

执行过程输出:

Plain 复制代码
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
  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运行时生效:

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

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

Plain 复制代码
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是否正常工作:

Bash 复制代码
# 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

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

Plain 复制代码
# 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

Bash 复制代码
# 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的支持最稳定。

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

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

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

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

Bash 复制代码
# 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依赖

Bash 复制代码
# 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(基础型)。

Bash 复制代码
# 下载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是否正常工作,避免后续部署出现问题。

Bash 复制代码
# 确保已激活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__}')"
预期输出
Plain 复制代码
GPU数量: 8
vLLM版本: 0.8.4

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

版本1:基础稳定版(8卡并行,适合快速落地)
Bash 复制代码
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:高性能优化版(更高显存利用率,支持更长序列)
Bash 复制代码
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生态工具)
Bash 复制代码
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的显存、温度和功耗状态,确保部署正常无异常。

Bash 复制代码
# 每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让服务在后台运行,避免终端断开导致服务停止

    Bash 复制代码
    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 生成)

相关推荐
ulias21211 小时前
Linux系统中的权限问题
linux·运维·服务器
青花瓷12 小时前
Ubuntu下OpenClaw的安装(豆包火山API版)
运维·服务器·ubuntu
问简13 小时前
docker 镜像相关
运维·docker·容器
Dream of maid14 小时前
Linux(下)
linux·运维·服务器
齐鲁大虾14 小时前
统信系统UOS常用命令集
linux·运维·服务器
Benszen14 小时前
Docker容器化技术实战指南
运维·docker·容器
ZzzZZzzzZZZzzzz…14 小时前
Nginx 平滑升级:从 1.26.3 到 1.28.0,用户无感知
linux·运维·nginx·平滑升级·nginx1.26.3·nginx1.28.0
renhongxia115 小时前
ORACLE-SWE:量化Oracle 信息信号对SWE代理的贡献
人工智能·深度学习·学习·语言模型·分类
一叶知秋yyds15 小时前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
专吃海绵宝宝菠萝屋的派大星16 小时前
使用Dify对接自己开发的mcp
java·服务器·前端