当前位置: 首页 > news >正文

在 Ubuntu 22 部署 vLLM + Qwen3 32B 模型

1. 简介

在本篇博客中,我们将详细介绍如何在 Ubuntu 22 上部署 vLLMQwen3 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 加速推理,需要安装 CUDAcuDNN。你可以参考 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_lengthtemperature 等参数来控制生成文本的长度和多样性。

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 模型推理体验!如果有任何问题,欢迎在评论区提问。

http://www.dtcms.com/a/272390.html

相关文章:

  • EPLAN 电气制图(六):电机正反转副勾主电路绘制
  • STM32第十九天 ESP8266-01S和电脑实现串口通信(2)
  • 代理模式——Java
  • 机器学习14——线性回归
  • 前端项目vue3项目集成eslint@9.x跟prettier
  • android TabLayout 标题栏切换 事件拦截
  • 【前端】jQuery动态加载CSS方法总结
  • 2025Datawhale AI夏令营第一期-(1)用AI预测新增用户
  • 01-RabbitMQ消息队列
  • ResolvableType 解密Java泛型反射
  • day01 - 数组part01
  • 【高等数学】第三章 微分中值定理与导数的应用——第二节 洛必达法则
  • 关闭实时防护
  • Qt Creator控件及其用途详细总结
  • LeetCode经典题解:49、字母异位词分组
  • 游戏开发问题记录
  • 数字孪生技术为UI前端赋能:实现产品设计的快速原型验证
  • 小程序开发平台,自主开发小程序源码系统,多端适配,带完整的部署教程
  • Day57
  • 从零开始搭建深度学习大厦系列-2.卷积神经网络基础(5-9)
  • Redis性能基准测试
  • 影刀 RPA:实时追踪网页变化,第一时间推送通知
  • 知微传感Lkam系列线扫轮廓仪SDK例程篇:设置工作逻辑
  • Ubuntu 20.04 下**安装 FFmpeg 5.1
  • TCP 保活(KeepAlive)机制详解
  • 汽车功能安全-软件集成和验证(Software Integration Verification)【验证方法用例导出方法输出物】10
  • Java入门之JDK下载和安装
  • Thrust库介绍与使用
  • 《汇编语言:基于X86处理器》第7章 整数运算(1)
  • 机器人接入AI的发展前景:从开发者视角看技术融合与生态构建