QwQ 是 Qwen 级数的推理模型。与传统的指令调优模型相比,能够思考和推理的 QwQ 可以在下游任务中实现显着增强的性能,尤其是难题。QwQ-32B 是中型推理模型,能够实现与最先进的推理模型(如 DeepSeek-R1、o1-mini)相比的竞争性能。
在这篇文章中,我将详细介绍在Ubuntu 22.04服务器(4 x 2080Ti 22G)上部署和运行QwQ-32B服务的详细流程!
☞☞☞ 定制同款Ubuntu服务器 ☜☜☜
☞☞☞ 定制同款Ubuntu服务器 ☜☜☜
升级和安装相关的依赖
操作系统更新
sudo apt update && sudo apt upgrade
安装git-all
sudo apt install git-all
安装curl
sudo apt install curl
验证是否安装成功
curl --version
下载和安装git-lfs
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash sudo apt-get install git-lfs
下载模型
我们可以在huggingface和魔搭社区下载QwQ-32B模型,国内以魔搭社区为例:
打开模型的下载页面:https://modelscope.cn/models/Qwen/QwQ-32B/files
点击“下载模型”
复制下载链接:
git clone https://www.modelscope.cn/Qwen/QwQ-32B.git
在Ubuntu服务器中的指定位置打开一个终端窗口,将下载链接粘贴进去回车,系统将自动下载好所有的模型和配置文件!下面的案例中,我在disk1磁盘中专门新建了一个LLM的目录用来存放所有的模型,cd到这个目录之后,直接将下载命令粘贴进来回车,下载完成之后你可以在该目录中看到“QwQ-32B”这个模型文件夹。
模型大小有64G,所以下载的时间会比较漫长,取决于你的网速情况!我大概下载了一个小时!
修改tokenizer_config.json文件
模型下载完成之后,我们还需要修改tokenizer_config.json文件,否则会在推理输出的时候丢失掉<think>标签,删除掉chat_template中的”<think>\n”,然后保存文件上传到服务器替换掉原来的tokenizer_config.json文件。
安装miniconda(如果已经安装过了这一步可以省略)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh
第二行命令输入之后,要一直按着“Enter”键阅读完它全部的license,知道出现了提示输入“yes”和“no”的输入框提示
我们直接输入“yes”进行确认!然后会然我们选择安装的路径,一般情况下我们直接按“Enter”键确认即可!
询问是否要初始化,直接输入“yes”确认
看到下面的“Thank you…”就标志着安装完成了!
激活conda模式
source ~/.bashrc
安装vLLM
新建一个单独的虚拟环境
首先要为vllm新建一个虚拟环境:
conda create -n vllm python=3.10 -y && conda activate vllm
安装vllm
继续在虚拟环境中执行下面的代码:
pip install vllm==0.7.3
安装NCCL(NVIDIA Collective Communications Library)库
安装与CUDA 12.x兼容的NCCL库,确保在使用CUDA进行加速计算时,可以利用NCCL提供的通信优化,运行下面这行代码
python -m cupyx.tools.install_library --library nccl --cuda 12.x
运行vllm server服务
在vllm虚拟环境激活的状态下,运行下面的vllm server命令:
vllm serve /mnt/disk1/LLM/QwQ-32B --served-model QwQ-32B --tensor-parallel-size 4 --max-model-len 32768 --dtype=half --trust-remote-code --gpu-memory-utilization 0.95 --max-num-seqs 5 --host=0.0.0.0 --port=4000
命令参数解析:
模型路径:/mnt/disk1/LLM/QwQ-32B
模型名称:–served-model QwQ-32B
显卡数量:–tensor-parallel-size 4
最大上下文长度:–max-model-len 32768
显存使用率:–gpu-memory-utilization 0.95
最大并发数:–max-num-seqs 5
运行成功之后你会看到vllm server给出了一个带端口号的IP地址和“Application startup complete.”的字样,证明已经运行成功了!
如果我们在任何一种webui调用这个api的话,就可以运行QwQ-32B的模型来进行推理了!下面以谷歌浏览器插件“Page Assist”调用QwQ-32B模型推理为例:
可以看得出来“QwQ-32B”模型的思考过程没有丢失<think>标签,并且推理结果也是正确的!
推理速度也是比较快的,稳定在26.2tokens/s左右。不过跟deepseek-r1的蒸馏模型(比如DeepSeek-R1-Distill-Qwen-32B)相比,QwQ-32B模型的显存占有率是一直在上升的,这意味着并发数可能会受到影响。
总结
测试结果:
第一题:3.9和3.11哪个更大?(✔)
第二题:1块钱一瓶可乐,两个空瓶可以再换一瓶可乐,假设你有20元钱,最多可以喝到几瓶可乐?(✔)
第三题:明天的昨天是昨天的哪天?(✔)
第四题:鲁迅为什么要打周树人?(✔)
第五题:冰箱里有10个鸡蛋,我敲了两个,煎了两个,吃了两个,还剩几个?(✔)
第六题:在平面四边形ABCD中,AB=AC=CD=1,angle ADC=30^{circ}, angle DAB =120^{circ}。将 triangle ACD 沿 AC 翻折至 triangle ACP,其中 P 为动点。求二面角 A-CP-B 的 余弦值的最小值。(✘)
第七题:一个汉字具有左右结构,左边是木,右边是乞。这个字是什么?只需回答这个字即可。(✘)
第八题:请用我给你的4个数字,通过加、减、乘、除、括号,组成一个运算,使得结果为 24。注意:数字需要全部使用我提供的数字:4468(✔)
总体来说表现还是十分亮眼的!但是比起满血版的deepseek-r1来还是有差距的!至于QwQ-32B和DeepSeek-R1-Distill-Qwen-32B相比究竟谁强谁弱,我们后面会专门做一期全面的测试!总而言之,QwQ-32B让我们在低成本的设备上运行大模型有了更多的选择!这是已经非常好的事!
原创文章,作者:朋远方,如若转载,请注明出处:https://caovan.com/zaiubuntufuwuqi4x2080ti22gshangbushuqwq-32b-vllmjiaocheng/.html