在GPU实例上部署通义千问QwQ-32B推理模型

更新时间:2025-03-17 01:49:51

通义千问QwQ-32B是阿里云开源的320亿参数推理模型,通过大规模强化学习在数学推理、编程及通用任务中实现性能突破,支持消费级显卡本地部署,兼顾高效推理与低资源消耗。本文将介绍如何利用vLLM作为通义千问QwQ-32B模型的推理框架,在一台阿里云GPU实例上构建通义千问QwQ-32B的推理服务。

背景介绍

随着人工智能应用对推理能力的需求日益增长,阿里云于20253月发布并开源了通义千问QwQ-32B模型。该模型基于冷启动策略,通过两轮大规模强化学习(RL)显著提升数学推理、代码生成及通用任务表现,性能接近6710亿参数的DeepSeek-R1模型,但参数量仅为其约1/20。相较于DeepSeek-R1OpenAI o1-mini,QwQ-32B在权威基准测试中表现更优,同时支持消费级显卡本地部署,大幅降低硬件门槛。

image

估算模型所需配置

模型的参数量越大,其处理数据和生成内容的复杂性也随之增加,且运行所需的计算资源也会相应增多。每个模型在计算和存储需求上存在差异,以下列出了QwQ-32B所需的硬件配置。

模型名称

模型版本

模型大小

vCPU

内存

GPU显存

系统盘

推荐实例规格

模型名称

模型版本

模型大小

vCPU

内存

GPU显存

系统盘

推荐实例规格

QwQ-32B

32B(320亿参数)

123 GB

16核以上处理器

64 GB RAM

4*24 GB

至少200 GB空闲空间

ecs.gn7i-4x.16xlarge

核心工具介绍

  • NVIDIA GPU驱动:用来驱动NVIDIA GPU的程序,本文以Driver版本 550.127.08为例。

  • vLLM:是一个有助于更高效地完成大语言模型推理的开源库,本文以其v0.7.2版本为例。

  • Open WebUI:基于Web的交互界面,提供类似ChatGPT的用户体验,支持对话记录管理、多模型切换及插件扩展,适合非技术用户直接操作。

操作步骤

步骤一:准备环境

  1. 创建GPU实例并正确安装驱动。具体操作,请参见创建GPU实例。关键参数说明如下。

    • 实例规格:本文以实例规格为ecs.gn7i-4x.16xlarge(内存256 GiB、GPU显存4*24 GB以及64 vCPU)。更多信息,请参见GPU计算型(gn/ebm/scc系列)

    • 镜像:选择公共镜像,本文以Alibaba Cloud Linux 3.2104 LTS 64位版本的镜像为例。

      GPU实例上部署通义千问QwQ-32B模型,需要提前在该实例上安装GPU驱动且驱动版本应为550及以上版本,建议您通过ECS控制台购买GPU实例时,同步选中安装GPU驱动。实例创建完成后,会自动安装Tesla驱动、CUDA、cuDNN库等,相比手动安装方式更快捷。

      image

    • 系统盘:建议系统盘大小设置200 GiB以上。

    • 公网IP:选中分配公网IPv4地址,带宽计费方式选择按使用流量,建议带宽峰值选择100 Mbps,以加快模型下载速度。

    • 安全组:开放228080端口。

  2. 安装Docker。

    1. 远程连接GPU实例。

      具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

    2. 执行以下命令,安装Docker环境。此处以Alibaba Cloud Linux 3系统为例,其他系统安装方式请参见安装Docker

      #添加Docker软件包源
      sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
      sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
      #Alibaba Cloud Linux3专用的dnf源兼容插件
      sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
      #安装Docker社区版本,容器运行时containerd.io,以及Docker构建和Compose插件
      sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      #启动Docker
      sudo systemctl start docker
      #设置Docker守护进程在系统启动时自动启动
      sudo systemctl enable docker
    3. 通过查看Docker版本命令,验证Docker是否安装成功。

      sudo docker -v

      如下图回显信息所示,表示Docker已安装成功。image

  3. 安装NVIDIA容器工具包。

    Alibaba Cloud Linux/CentOS
    Ubuntu/Debian
    #配置生产存储库
    curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
      sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
    #安装 NVIDIA Container Toolkit 软件包
    sudo yum install -y nvidia-container-toolkit
    #重启docker
    sudo systemctl restart docker
    #配置生产存储库
    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
    #从存储库更新软件包列表
    sudo apt-get update
    #安装 NVIDIA Container Toolkit 软件包
    sudo apt-get install -y nvidia-container-toolkit
    #重启docker
    sudo systemctl restart docker
  4. 执行以下命令,查看Docker是否已启动。

    sudo systemctl status docker

    如下图回显所示,表示Docker已启动。

    running

  5. 购买数据盘并完成挂载。

    由于模型体积较大,通义千问QwQ-32B模型的文件大小约为123 GB。建议数据盘的大小预留为模型大小的1.5。因此,建议您单独购买用于存储下载模型的数据盘,推荐选择500 GiB以上的数据盘,并以/mnt作为挂载点。具体操作,请参见挂载数据盘

步骤二:部署和运行通义千问QwQ-32B推理模型

  1. 执行以下命令,拉取推理镜像。

    sudo docker pull egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.7.2-sglang0.4.3.post2-pytorch2.5-cuda12.4-20250224
  2. 下载模型文件,您可以访问阿里云魔搭社区Modelscope选择模型,在模型详情页获取名称。

    # 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以QwQ-32B为例
    MODEL_NAME="QwQ-32B"
    # 设置本地存储路径。确保该路径有足够的空间来存放模型文件(建议预留模型大小的1.5倍空间),此处以/mnt/QwQ-32B为例
    LOCAL_SAVE_PATH="/mnt/QwQ-32B"
    
    # 如果/mnt/QwQ-32B目录不存在,则创建它
    sudo mkdir -p ${LOCAL_SAVE_PATH}
    # 确保当前用户对该目录有写权限,根据实际情况调整权限
    sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
    
    # 启动下载,下载完成后自动销毁
    sudo docker run -d -t --network=host --rm --name download \
    -v ${LOCAL_SAVE_PATH}:/data \
    egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.7.2-sglang0.4.3.post2-pytorch2.5-cuda12.4-20250224 \
    /bin/bash -c "git-lfs clone https://www.modelscope.cn/models/Qwen/${MODEL_NAME}.git /data"
  3. 执行以下命令,实时监控下载进度,等待下载结束。

    sudo docker logs -f download

    下载模型耗时较长,请您耐心等待。当下载任务完成后,会停止输出新的日志,您可以随时按下Ctrl+C退出,这不会影响容器的运行,即使退出终端也不会中断下载。

  4. 启动模型推理服务。

    # 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以QwQ-32B为例
    MODEL_NAME="QwQ-32B"
    # 设置本地存储路径。确保该路径有足够的空间来存放模型文件,此处以/mnt/QwQ-32B为例
    LOCAL_SAVE_PATH="/mnt/QwQ-32B"
    
    # 定义服务运行时监听的端口号。可以根据实际需求进行调整,默认使用30000端口
    PORT="30000"
    
    # 定义使用的GPU数量。这取决于实例上可用的GPU数量,可以通过nvidia-smi -L命令查询
    # 这里假设使用8个GPU
    TENSOR_PARALLEL_SIZE="4"
    
    # 确保当前用户对该目录有读写权限,根据实际情况调整权限
    sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
    
    # 启动Docker容器并运行服务
    sudo docker run -d -t --network=host --gpus all \
        --privileged \
        --ipc=host \
        --cap-add=SYS_PTRACE \
        --name ${MODEL_NAME} \
        --ulimit memlock=-1 \
        --ulimit stack=67108864 \
        -v ${LOCAL_SAVE_PATH}:/data \
        egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.7.2-sglang0.4.3.post2-pytorch2.5-cuda12.4-20250224 \
        /bin/bash -c "pip config set global.index-url http://mirrors.cloud.aliyuncs.com/pypi/simple/ && \
        pip config set install.trusted-host mirrors.cloud.aliyuncs.com && \
        pip install --upgrade pip && \
        pip install packaging && \
        pip install transformers -U && \
        vllm serve /data \
        --port ${PORT} \
        --served-model-name ${MODEL_NAME} \
        --tensor-parallel-size ${TENSOR_PARALLEL_SIZE} \
        --max-model-len=16384 \
        --enforce-eager \
        --dtype=half"
  5. 运行以下命令,检查服务是否正常启动。

    sudo docker logs ${MODEL_NAME}

    在日志输出中寻找类似以下的消息,表示服务已经成功启动并在端口30000上监听。

    INFO:     Uvicorn running on http://0.0.0.0:30000 (Press CTRL+C to quit)

步骤三:启动Open WebUI

  1. 执行以下命令,拉取基础环境镜像。

    sudo docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/python:3.11.1
  2. 执行以下命令,启动Open WebUI服务。

    #设置模型服务地址
    OPENAI_API_BASE_URL=http://127.0.0.1:30000/v1
    
    # 创建数据目录,确保数据目录存在并位于/mnt下
    sudo mkdir -p /mnt/open-webui-data
    
    #启动open-webui服务
    sudo docker run -d -t --network=host --name open-webui \
    -e ENABLE_OLLAMA_API=False \
    -e OPENAI_API_BASE_URL=${OPENAI_API_BASE_URL} \
    -e DATA_DIR=/mnt/open-webui-data \
    -e HF_HUB_OFFLINE=1 \
    -v /mnt/open-webui-data:/mnt/open-webui-data \
    alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/python:3.11.1 \
    /bin/bash -c "pip config set global.index-url http://mirrors.cloud.aliyuncs.com/pypi/simple/ && \
    pip config set install.trusted-host mirrors.cloud.aliyuncs.com && \
    pip install --upgrade pip && \
    pip install open-webui==0.5.10 && \
    mkdir -p /usr/local/lib/python3.11/site-packages/google/colab && \
    open-webui serve"
  3. 执行以下命令,实时监控下载进度,等待下载结束。

    sudo docker logs -f open-webui

    在日志输出中寻找类似以下的消息:

    INFO:     Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)

    这表示服务已经成功启动并在端口8080上监听。

  4. 在本地物理机上使用浏览器访问http://<ECS公网IP地址>:8080,首次登录时,请根据提示创建管理员账号。image.png

  5. Open WebUI界面中进行问答测试。

    image

  6. 如果您希望您部署的Open WebUI对普通用户开放访问,请按照以下步骤进行操作。

    1. 单击右上角的头像,选择管理员面板

      image

    2. 进入管理员后台,在顶部菜单栏单击设置

    3. 在左侧导航栏单击通用,打开允许新用户注册的开关,设置默认用户角色用户

      image

    4. 在左侧导航栏单击模型,单击模型后的image按钮。

      image

    5. 在可见性的下拉列表中,选择Public,单击保存并更新

      image

    6. 配置完成后,新用户通过访问http://<ECS公网IP地址>:8080,即可注册登录您部署的Open WebUI,与通义千问QwQ-32B推理模型进行对话问答了。

      image

  • 本页导读 (1)
  • 背景介绍
  • 估算模型所需配置
  • 核心工具介绍
  • 操作步骤
  • 步骤一:准备环境
  • 步骤二:部署和运行通义千问QwQ-32B推理模型
  • 步骤三:启动Open WebUI