通義千問QwQ-32B是阿里云在2025年3月發(fā)布的開源320億參數(shù)推理模型,簡稱“千問QwQ-32B”。通義千問QwQ-32B在數(shù)學(xué)推理、編程及通用任務(wù)中實(shí)現(xiàn)性能突破,支持消費(fèi)級(jí)顯卡本地部署,兼顧高效推理與低資源消耗。本文將介紹如何利用vLLM作為通義千問QwQ-32B模型的推理框架,在一臺(tái)阿里云GPU實(shí)例上構(gòu)建通義千問QwQ-32B的推理服務(wù)。
一、背景介紹
通義千問QwQ-32B模型基于冷啟動(dòng)策略,通過兩輪大規(guī)模強(qiáng)化學(xué)習(xí)(RL)顯著提升數(shù)學(xué)推理、代碼生成及通用任務(wù)表現(xiàn),性能接近6710億參數(shù)的DeepSeek-R1模型,但參數(shù)量僅為其約1/20。相較于DeepSeek-R1和OpenAI o1-mini,QwQ-32B在權(quán)威基準(zhǔn)測(cè)試中表現(xiàn)更優(yōu),同時(shí)支持消費(fèi)級(jí)顯卡本地部署,大幅降低硬件門檻。
1、估算模型所需配置
模型的參數(shù)量越大,處理數(shù)據(jù)和生成內(nèi)容的復(fù)雜性也會(huì)增加,且運(yùn)行所需的計(jì)算資源也會(huì)相應(yīng)增多。每個(gè)模型在計(jì)算和存儲(chǔ)需求上存在差異,以下列出了QwQ-32B所需的硬件配置。
2、核心工具介紹
NVIDIA GPU驅(qū)動(dòng):用來驅(qū)動(dòng)NVIDIA GPU的程序,本文以Driver版本 550.127.08為例。
vLLM:是一個(gè)有助于更高效地完成大語言模型推理的開源庫,本文以其v0.7.2版本為例。
Open WebUI:基于Web的交互界面,提供類似ChatGPT的用戶體驗(yàn),支持對(duì)話記錄管理、多模型切換及插件擴(kuò)展,適合非技術(shù)用戶直接操作。
二、操作步驟
1、準(zhǔn)備環(huán)境
阿里云官網(wǎng):點(diǎn)擊訪問
首先需要訪問阿里云官網(wǎng)創(chuàng)建GPU實(shí)例,并正確安裝驅(qū)動(dòng)。關(guān)鍵參數(shù)說明如下。
(1)實(shí)例規(guī)格:本文以實(shí)例規(guī)格為ecs.gn7i-4x.16xlarge(內(nèi)存256 GiB、GPU顯存4*24 GB以及64 vCPU)。
(2)鏡像:選擇公共鏡像,本文以Alibaba Cloud Linux 3.2104 LTS 64位版本的鏡像為例。
在GPU實(shí)例上部署通義千問QwQ-32B模型,需要提前在該實(shí)例上安裝GPU驅(qū)動(dòng)且驅(qū)動(dòng)版本應(yīng)為550及以上版本,建議通過ECS控制臺(tái)購買GPU實(shí)例時(shí),同步選中安裝GPU驅(qū)動(dòng)。實(shí)例創(chuàng)建完成后,會(huì)自動(dòng)安裝Tesla驅(qū)動(dòng)、CUDA、cuDNN庫等,相比手動(dòng)安裝方式更快捷。
(3)系統(tǒng)盤:建議系統(tǒng)盤大小設(shè)置200 GiB以上。
(4)公網(wǎng)IP:選中分配公網(wǎng)IPv4地址,帶寬計(jì)費(fèi)方式選擇按使用流量,建議帶寬峰值選擇100 Mbps,以加快模型下載速度。
(5)安全組:開放22和8080端口。
2、安裝Docker
首先遠(yuǎn)程連接GPU實(shí)例。,然后執(zhí)行以下命令,安裝Docker環(huán)境。此處以Alibaba Cloud Linux 3系統(tǒng)為例,其他系統(tǒng)安裝方式請(qǐng)參見安裝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社區(qū)版本,容器運(yùn)行時(shí)containerd.io,以及Docker構(gòu)建和Compose插件 sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin #啟動(dòng)Docker sudo systemctl start docker #設(shè)置Docker守護(hù)進(jìn)程在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng) sudo systemctl enable docker
通過查看Docker版本命令,驗(yàn)證Docker是否安裝成功。
sudo docker -v
如下圖回顯信息所示,表示Docker已安裝成功。
3、安裝NVIDIA容器工具包
Alibaba Cloud Linux/CentOS: #配置生產(chǎn)存儲(chǔ)庫 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
Ubuntu/Debian:
#配置生產(chǎn)存儲(chǔ)庫 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 #從存儲(chǔ)庫更新軟件包列表 sudo apt-get update #安裝 NVIDIA Container Toolkit 軟件包 sudo apt-get install -y nvidia-container-toolkit #重啟docker sudo systemctl restart docker
執(zhí)行以下命令,查看Docker是否已啟動(dòng)。
sudo systemctl status docker
如下圖回顯所示,表示Docker已啟動(dòng)。
購買數(shù)據(jù)盤并完成掛載。
由于模型體積較大,通義千問QwQ-32B模型的文件大小約為123 GB。建議數(shù)據(jù)盤的大小預(yù)留為模型大小的1.5倍。因此,建議單獨(dú)購買用于存儲(chǔ)下載模型的數(shù)據(jù)盤,推薦選擇500 GiB以上的數(shù)據(jù)盤,并以/mnt作為掛載點(diǎn)。
三、部署和運(yùn)行通義千問QwQ-32B推理模型
1、執(zhí)行以下命令,拉取推理鏡像。
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、下載模型文件,可以訪問阿里云魔搭社區(qū)Modelscope選擇模型,在模型詳情頁獲取名稱。
# 定義要下載的模型名稱。MODEL_NAME需要訪問Modelscope選擇模型,在模型詳情頁獲取名稱,腳本以QwQ-32B為例 MODEL_NAME="QwQ-32B" # 設(shè)置本地存儲(chǔ)路徑。確保該路徑有足夠的空間來存放模型文件(建議預(yù)留模型大小的1.5倍空間),此處以/mnt/QwQ-32B為例 LOCAL_SAVE_PATH="/mnt/QwQ-32B" # 如果/mnt/QwQ-32B目錄不存在,則創(chuàng)建它 sudo mkdir -p ${LOCAL_SAVE_PATH} # 確保當(dāng)前用戶對(duì)該目錄有寫權(quán)限,根據(jù)實(shí)際情況調(diào)整權(quán)限 sudo chmod ugo+rw ${LOCAL_SAVE_PATH} # 啟動(dòng)下載,下載完成后自動(dòng)銷毀 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、執(zhí)行以下命令,實(shí)時(shí)監(jiān)控下載進(jìn)度,等待下載結(jié)束。
sudo docker logs -f download
下載模型耗時(shí)較長,請(qǐng)耐心等待。當(dāng)下載任務(wù)完成后,會(huì)停止輸出新的日志,可以隨時(shí)按下Ctrl+C退出,這不會(huì)影響容器的運(yùn)行,即使退出終端也不會(huì)中斷下載。
啟動(dòng)模型推理服務(wù)。
# 定義要下載的模型名稱。MODEL_NAME需要訪問Modelscope選擇模型,在模型詳情頁獲取名稱,腳本以QwQ-32B為例 MODEL_NAME="QwQ-32B" # 設(shè)置本地存儲(chǔ)路徑。確保該路徑有足夠的空間來存放模型文件,此處以/mnt/QwQ-32B為例 LOCAL_SAVE_PATH="/mnt/QwQ-32B" # 定義服務(wù)運(yùn)行時(shí)監(jiān)聽的端口號(hào)??梢愿鶕?jù)實(shí)際需求進(jìn)行調(diào)整,默認(rèn)使用30000端口 PORT="30000" # 定義使用的GPU數(shù)量。這取決于實(shí)例上可用的GPU數(shù)量,可以通過nvidia-smi -L命令查詢 # 這里假設(shè)使用8個(gè)GPU TENSOR_PARALLEL_SIZE="4" # 確保當(dāng)前用戶對(duì)該目錄有讀寫權(quán)限,根據(jù)實(shí)際情況調(diào)整權(quán)限 sudo chmod ugo+rw ${LOCAL_SAVE_PATH} # 啟動(dòng)Docker容器并運(yùn)行服務(wù) 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"
運(yùn)行以下命令,檢查服務(wù)是否正常啟動(dòng)。
sudo docker logs ${MODEL_NAME}
在日志輸出中尋找類似以下的消息,表示服務(wù)已經(jīng)成功啟動(dòng)并在端口30000上監(jiān)聽。
INFO: Uvicorn running on http://0.0.0.0:30000 (Press CTRL+C to quit)
四、啟動(dòng)Open WebUI
1、執(zhí)行以下命令,拉取基礎(chǔ)環(huán)境鏡像。
sudo docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/python:3.11.1
2、執(zhí)行以下命令,啟動(dòng)Open WebUI服務(wù)。
#設(shè)置模型服務(wù)地址 OPENAI_API_BASE_URL=http://127.0.0.1:30000/v1 # 創(chuàng)建數(shù)據(jù)目錄,確保數(shù)據(jù)目錄存在并位于/mnt下 sudo mkdir -p /mnt/open-webui-data #啟動(dòng)open-webui服務(wù) 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、執(zhí)行以下命令,實(shí)時(shí)監(jiān)控下載進(jìn)度,等待下載結(jié)束。
sudo docker logs -f open-webui
在日志輸出中尋找類似以下的消息:
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
這表示服務(wù)已經(jīng)成功啟動(dòng)并在端口8080上監(jiān)聽。
4、在本地物理機(jī)上使用瀏覽器訪問http://<ECS公網(wǎng)IP地址>:8080,首次登錄時(shí),請(qǐng)根據(jù)提示創(chuàng)建管理員賬號(hào)。
5、在Open WebUI界面中進(jìn)行問答測(cè)試。
-
廣告合作
-
QQ群號(hào):4114653