在 Ubuntu 22 部署 vLLM + Qwen3 32B 模型
1. 简介
在本篇博客中,我们将详细介绍如何在 Ubuntu 22 上部署 vLLM 和 Qwen3 32B 模型。vLLM 是一个高效的语言模型推理引擎,能够帮助用户在多个硬件平台上运行大规模的 AI 模型,而 Qwen3 32B 是一款具有 32 亿参数的预训练语言模型,适用于各种自然语言处理任务。通过结合 vLLM,我们能够优化推理过程,并有效提高运行性能。
2. 环境准备
2.1 系统要求
- 操作系统:Ubuntu 22.04 或更高版本
- 内存:至少 16 GB(推荐 32 GB 及以上)
- 存储:至少 200 GB 可用空间(根据模型大小可适当调整)
- GPU:支持 CUDA 的 NVIDIA 显卡(推荐使用 RTX 4090 24G*4 显存以上的显卡)
2.2 安装依赖
在开始之前,我们需要确保系统中安装了一些基本工具和库:
sudo apt update
sudo apt install -y python3-pip python3-dev git build-essential libssl-dev libffi-dev
sudo apt install -y python3-venv
2.3 安装 CUDA 和 cuDNN(可选)
如果你有 NVIDIA 显卡,并且想要利用 GPU 加速推理,需要安装 CUDA 和 cuDNN。你可以参考 NVIDIA 官网 进行安装,确保匹配你的显卡型号和操作系统版本。
2.4 安装 PyTorch 和其他必要的 Python 库
vLLM 和 Qwen3 模型都依赖于 PyTorch。你可以使用以下命令安装它:
pip install torch torchvision torchaudio
如果你希望在 GPU 上运行 PyTorch,可以通过如下命令安装支持 CUDA 的版本:
# 安装 PyTorch 并支持 CUDA 11.3
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html
3. 安装 vLLM
vLLM 是一个为大规模语言模型推理提供优化的工具,以下是安装步骤:
3.1 克隆 vLLM 仓库
git clone https://github.com/vllm-project/vllm.git
cd vllm
3.2 安装依赖
在 vLLM 仓库中,首先创建一个虚拟环境,然后安装所需依赖:
python3 -m venv vllm-env
source vllm-env/bin/activate
pip install -r requirements.txt
3.3 安装 vLLM
vLLM 安装完成后,我们可以通过以下命令进行测试:
python -m vllm
如果安装成功,你将看到 vLLM 的欢迎信息。
4. 下载 Qwen3 32B 模型
Qwen3 是一款由 AI 研究团队发布的大规模语言模型。要在 vLLM 上部署它,我们需要首先下载 Qwen3 32B 模型权重。
4.1 下载 Qwen3 32B 权重
推荐从modelscope下载模型,请参照如下部署进行下载:
# 通过如下命令安装ModelScope
pip install modelscope
# 下载模型文件到指定本地文件夹,假设你下载模型文件到 /mnt/workspace/models/Qwen3-32B
modelscope download --model Qwen/Qwen3-32B --local_dir /mnt/workspace/models/Qwen3-32B
4.2 加载 Qwen3 模型
在 vLLM 环境下加载 Qwen3 32B 模型权重:
#!/bin/bash# 设置 API 请求的密钥
# 这个密钥需要从 OpenAI 或其他提供商获取,并将其存储在环境变量中
# 这里假设你已经通过环境变量 `OPEN_API_KEY` 设置了密钥
export VLLM_API_KEY=$OPEN_API_KEY# 配置 PyTorch CUDA 内存分配策略,启用可扩展段内存分配
# 这个设置有助于避免内存碎片,特别是在较大模型推理时
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True# 启动 vLLM API 服务,使用本地下载的 Qwen3-32B 模型
# `vllm.entrypoints.openai.api_server` 是 vLLM 中的 API 服务器入口,允许与模型进行交互
python3 -m vllm.entrypoints.openai.api_server \# 指定 Qwen3 32B 模型的本地路径# 你需要将这里的路径替换为你实际的模型存储路径--model /mnt/workspace/models/Qwen3-32B \ # 设置 tensor-parallel 分片数,指定模型的并行分布方式# 使用 4 片进行模型分割以提升推理性能--tensor-parallel-size 4 \# 设置 API 服务监听的端口# 这里将请求的地址设置为 9999,用户可以通过 http://localhost:9999 进行访问--port 9999 \# 禁用请求日志记录,减少日志占用的磁盘空间# 在生产环境中通常推荐关闭日志记录,以防日志文件过大--disable-log-requests \# 启用远程代码执行的信任,允许加载并执行远程提供的代码# 在实际使用时,需要确保远程代码是可信的,否则可能存在安全风险--trust-remote-code \# 设置模型最大输入长度# 这个参数设置了每次推理时输入文本的最大长度,8196 表示最多可处理 8196 个 token--max-model-len 8196 \# 设置 GPU 显存使用率的上限,0.9 表示最多使用 90% 的 GPU 显存# 如果显存不足,可以调整此参数降低占用,防止 GPU 内存溢出--gpu-memory-utilization 0.9 \# 强制启用 Eager Execution 模式,这对于调试非常有用# 在生产环境中,通常建议禁用 Eager Execution 来提升性能,但对于调试来说,启用该模式能够更好地跟踪模型运行状态--enforce-eager \# 设置交换空间的大小(单位:GB)# 交换空间可以帮助缓解内存不足的情况,将部分数据交换到硬盘# 16 GB 的交换空间应当足以处理中型模型推理,但过大的交换空间可能会拖慢推理速度--swap-space 16 \# 设置数据类型为 bfloat16,这是在深度学习中常用的混合精度计算模式# bfloat16 格式能在保持模型精度的同时显著减少显存占用,提高推理速度--dtype bfloat16
5. 配置与优化
5.1 设置 GPU 加速
在启动 vLLM 的时候,需要指定 CUDA 设备 来让其使用 GPU 加速推理。vLLM 提供了 --device 参数,可以指定使用哪一块 GPU。如果你的系统有多个 GPU,可以使用设备编号来选择特定的 GPU。
--device cuda:0 \ # 设置使用 GPU 0(如果你有多个 GPU,可以更换为cuda:1、cuda:2等)
关键参数说明:
- device cuda:0:这个参数指定 vLLM 使用 GPU 0 进行加速。如果你有多个 GPU,可以将 cuda:0 改为 cuda:1、cuda:2,或者使用 cuda 来让 vLLM 自动选择一个可用的 GPU。
- gpu-memory-utilization 0.9:这个参数设置 GPU 显存的最大使用比例。设置为 0.9 表示最多使用 90% 的 GPU 显存。根据显存大小和模型大小,适当调整此值。
5.2 配置 vLLM 优化参数
为了最大限度地提高性能,vLLM 提供了多个优化选项。你可以调整以下参数来优化推理速度和内存使用:
- batch_size:调整批处理大小,影响推理速度和内存占用。
- precision:使用半精度浮动(FP16)来提高性能。
5.3 调优内存和性能
在 GPU 加速的过程中,还可以进行一些额外的性能调优:
- gpu-memory-utilization:根据模型大小和显存大小,调整 GPU 显存的使用比例。过高的显存占用可能导致内存溢出,过低可能导致性能不足。
- tensor-parallel-size:增加并行度可以加速大模型的推理,但也会消耗更多的 GPU 显存和计算资源。你可以根据硬件情况调整这个参数。一般来说,如果显存足够,可以增加此值来加速推理。
- swap-space:如果显存不足,vLLM 会使用交换空间(swap space)。增加交换空间有助于处理更大的模型,但可能会影响推理速度。
6. 运行 Qwen3 模型
现在,你已经成功安装并配置了 vLLM 和 Qwen3 32B 模型。接下来,我们将展示如何运行一个简单的推理任务:
6.1 进行文本生成
你可以通过 vLLM 轻松地使用 Qwen3 进行文本生成:
curl http://127.0.0.1:9999/v1/completions \-H "Content-Type: application/json" \-H "Authorization: Bearer xxxxxxxxxxxx" \-d '{"model": "/mnt/workspace/models/Qwen3-32B","prompt": "法国的首都是哪里?","temperature": 0.5,"max_tokens": 1024,"stream":false}'
6.2 输出与结果
输出结果会是模型根据输入文本生成的接续内容。你可以通过调整 max_length
或 temperature
等参数来控制生成文本的长度和多样性。
7. 常见问题与故障排除
7.1 GPU 未被识别
- 检查是否安装了 NVIDIA 驱动和 CUDA。
- 确认 PyTorch 是否正确识别 GPU:
torch.cuda.is_available()
。 - 使用
nvidia-smi
命令检查 GPU 是否正常运行。
7.2 模型加载失败
- 确保模型路径正确,文件没有损坏。
- 确认有足够的磁盘空间和内存来加载大模型。
7.3 内存溢出
- 调整
batch_size
,降低批量处理大小。 - 如果使用 GPU,尝试使用半精度计算(FP16)。
8. 总结
在 Ubuntu 22 上部署 vLLM + Qwen3 32B 可以显著提高大规模语言模型的推理性能。通过 vLLM 提供的优化选项,你能够高效地利用 GPU 加速推理任务,提升工作效率。
希望这篇博客能帮助你顺利完成部署,享受更快、更高效的 AI 模型推理体验!如果有任何问题,欢迎在评论区提问。