QWQ-32B模型(MindSpore)推理实践教程
模型介绍
QwQ-32B是千问于2025年3月6日发布的人工智能大型语言模型。这是一款拥有 320 亿参数的模型,其性能可与具备 6710 亿参数(其中 370 亿被激活)的 DeepSeek-R1 媲美。这一成果突显了将强化学习应用于经过大规模预训练的强大基础模型的有效性。QwQ-32B 在一系列基准测试中进行了评估,测试了数学推理、编程能力和通用能力。以下结果展示了 QwQ-32B 与其他领先模型的性能对比,包括 DeepSeek-R1-Distilled-Qwen-32B、DeepSeek-R1-Distilled-Llama-70B、o1-mini 以及原始的 DeepSeek-R1。
实践教程
本实验硬件环境:一台Atlas 800T A2(32G),实际使用四卡。
下载镜像
拉取昇思 MindSpore 推理容器镜像:
1docker pull swr.cn-central-221.ovaijisuan.com/mindformers/deepseek_v3_mindspore2.5.0-infer:20250217
启动容器
1docker run -it --name=qwq-32b --net=host \
2 --shm-size 500g \
3 --device=/dev/davinci0 \
4 --device=/dev/davinci1 \
5 --device=/dev/davinci2 \
6 --device=/dev/davinci3 \
7 --device=/dev/davinci_manager \
8 --device=/dev/hisi_hdc \
9 --device /dev/devmm_svm \
10 -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
11 -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
12 -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
13 -v /usr/local/sbin:/usr/local/sbin \
14 -v /etc/hccn.conf:/etc/hccn.conf \
15 -v /root/.cache:/root/.cache \
16 swr.cn-central-221.ovaijisuan.com/mindformers/deepseek_v3_mindspore2.5.0-infer:20250217 \
17 bash
模型下载
下载openmind_hub:
1pip install openmind_hub
2# 检查是否安装成功
3python -c "from openmind_hub import repo_info; print(repo_info('PyTorch-NPU/t5_small'))"
执行以下命令为自定义下载路径 /home/work/QwQ-32B
添加白名单:
1export HUB_WHITE_LIST_PATHS=/home/work/QwQ-32B
从魔乐社区下载昇思 MindSpore 版本的 QwQ-32B 文件至指定路径 /home/work/QwQ-32B
(包含模型代码、权重、分词模型和示例代码,占用约 62GB 的磁盘空间):
1from openmind_hub import snapshot_download
2
3snapshot_download(
4 repo_id="MindSpore-Lab/QwQ-32B",
5 local_dir="/home/work/QwQ-32B",
6 local_dir_use_symlink=False,
7)
下载完成的 /home/work/QwQ-32B
文件夹目录结构如下:
1QwQ-32B
2 ├── config.json # 模型json配置文件
3 ├── vocab.json # 词表vocab文件
4 ├── merges.txt # 词表merges文件
5 ├── tokenizer.json # 词表json文件
6 ├── tokenizer_config.json # 词表配置文件
7 ├── predict_qwq_32b.yaml # 模型yaml配置文件
8 ├── qwen2_5_tokenizer.py # 模型tokenizer文件
9 ├── model-xxxxx-of-xxxxx.safetensors # 模型权重文件
10 └── param_name_map.json # 模型权重映射文件
需要将权重目录和映射文件单独存放
1# 新建权重目录
2mkdir /home/work/qwq32b-weight
3mv /home/work/QwQ-32B/*.safetensors /home/work/qwq32b-weight/
4mv /home/work/QwQ-32B/param_name_map.json /home/work/qwq32b-weight/
服务化部署
1. 修改模型配置文件
在 /home/work/QwQ-32B/predict_qwq_32b.yaml
中对以下配置进行修改:
1auto_trans_ckpt: True # 打开权重自动切分,自动将权重转换为分布式任务所需的形式
2load_checkpoint: '/home/work/qwq32b-weight' # 配置为模型权重的绝对路径
3processor:
4 tokenizer:
5 vocab_file: "/home/work/QwQ-32B/vocab.json" # 配置为vocab文件的绝对路径
6 merges_file: "/home/work/QwQ-32B/merges.txt" # 配置为merges文件的绝对路径
7parallel_config:
8 model_parallel: 4 # 配置成4
9max_device_memory: "28GB" # 将最大可用显存设置为28GB
2.一键启动MindIE
mindformers仓上提供一键拉起MindIE脚本,脚本中已预置环境变量设置和服务化配置,仅需输入模型文件目录后即可快速拉起服务。
进入/home/work/mindformers/scripts
目录下,执行MindIE启动脚本
1cd /home/work/mindformers/scripts
2bash run_mindie.sh --model-name QwQ-32B --model-path /home/work/QwQ-32B --max-prefill-batch-size 1
查看日志:
1tail -f output.log
当log日志中出现Daemon start success!
,表示服务启动成功。
(如果启动失败,检查/root/mindie/log/debug/
下日志输出)
3. 执行推理请求测试
直接执行以下命令发送流式推理请求进行测试:
1curl -w "\ntime_total=%{time_total}\n" -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"inputs": "请介绍一个北京的景点", "parameters": {"do_sample": false, "max_new_tokens": 128}, "stream": false}' http://127.0.0.1:1025/generate_stream &
也可以调用带思考过程的接口:
1curl -i --location --request POST 'http://127.0.0.1:1025/v1/chat/completions' \
2--header 'Content-Type: application/json' \
3--data-raw '{
4 "model": "QwQ-32B",
5 "messages": [{"role": "user", "content": "请介绍一个北京的景点"}],
6 "max_tokens": 2048,
7 "temperature": 0.6,
8 "top_p": 0.95,
9 "top_k": 40,
10 "n": 1,
11 "stream": false,
12 "frequency_penalty": 1.00
13}'
停止MindIE服务
可以通过pkill -9 mindie
终止 MindIE 服务,终止前后可以通过npu-smi info
显存占用情况。