From c3fec7aa7e1af965e339958db79f7da2927e1706 Mon Sep 17 00:00:00 2001 From: pengjingyou Date: Wed, 30 Apr 2025 15:05:36 +0800 Subject: [PATCH] add docs of qwen3 14b & 32b --- docs/model_cards/qwen3/qwen3_14b.md | 164 ++++++++++++++++++++++++++++ docs/model_cards/qwen3/qwen3_32b.md | 105 ++++++++++-------- 2 files changed, 222 insertions(+), 47 deletions(-) create mode 100644 docs/model_cards/qwen3/qwen3_14b.md diff --git a/docs/model_cards/qwen3/qwen3_14b.md b/docs/model_cards/qwen3/qwen3_14b.md new file mode 100644 index 000000000..734578261 --- /dev/null +++ b/docs/model_cards/qwen3/qwen3_14b.md @@ -0,0 +1,164 @@ +# Qwen3-14B vLLM+MindSpore 推理指南 + +## 目录 +- [模型介绍](#模型介绍) +- [快速开始](#快速开始) +- [服务化部署](#服务化部署) +- [声明](#声明) + +## 模型介绍 + + +### 下载链接 + +| 社区 | 下载地址 | +| :------: | :------------------------------------------------- | +| 魔乐社区 | https://modelers.cn/models/MindSpore-Lab/Qwen3-14B | + +### 模型下载 + +执行以下命令为自定义下载路径 `/home/work/Qwen3-14B` 添加白名单: + +```bash +export HUB_WHITE_LIST_PATHS=/home/work/Qwen3-14B +``` + +执行以下 Python 脚本从魔乐社区下载昇思 MindSpore 版本的 Qwen3-14B 文件至指定路径 `/home/work/Qwen3-14B` 。下载的文件包含模型代码、权重、分词模型和示例代码,占用约 30GB 的磁盘空间: + +```bash +pip install openmind_hub +``` + +```python +from openmind_hub import snapshot_download + +snapshot_download( + repo_id="MindSpore-Lab/Qwen3-14B", + local_dir="/home/work/Qwen3-14B", + local_dir_use_symlinks=False +) +``` + +#### 注意事项: + +- `/home/work/Qwen3-14B` 可修改为自定义路径,确保该路径有足够的磁盘空间(约 30GB)。 +- 下载时间可能因网络环境而异,建议在稳定的网络环境下操作。 + +## 快速开始 + +Qwen3-14B推理需要1台(2卡)Atlas 800T/800I A2(64G)服务器服务器(基于BF16权重)。昇思MindSpore提供了Qwen3-14B推理可用的Docker容器镜像,供开发者快速体验。 + +### 停止其他进程,避免服务器中其他进程影响 + +```bash +pkill -9 python +pkill -9 mindie +pkill -9 ray +``` + +### 下载昇思 MindSpore 推理容器镜像 + +执行以下 Shell 命令,拉取昇思 MindSpore Qwen3 推理容器镜像: + +```bash +docker pull swr.cn-central-221.ovaijisuan.com/mindformers/qwen3_mindspore2.6.0-infer:20250428 +``` + +### 启动容器 + +执行以下命令创建并启动容器(/home/work/Qwen3-14B用于存放权重路径): + +```bash +docker run -it --privileged --name=Qwen3_14B --net=host \ + --shm-size 500g \ + --device=/dev/davinci0 \ + --device=/dev/davinci1 \ + --device=/dev/davinci2 \ + --device=/dev/davinci3 \ + --device=/dev/davinci4 \ + --device=/dev/davinci5 \ + --device=/dev/davinci6 \ + --device=/dev/davinci7 \ + --device=/dev/davinci_manager \ + --device=/dev/hisi_hdc \ + --device /dev/devmm_svm \ + -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ + -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \ + -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ + -v /usr/local/sbin:/usr/local/sbin \ + -v /etc/hccn.conf:/etc/hccn.conf \ + -v /home:/home \ + swr.cn-central-221.ovaijisuan.com/mindformers/qwen3_mindspore2.6.0-infer:20250428 + /bin/bash +``` + +#### 注意事项: + +- 如果部署在多机上,每台机器中容器的hostname不能重复。如果有部分宿主机的hostname是一致的,需要在起容器的时候修改容器的hostname。 +- 后续所有操作均在容器内操作。 + +## 服务化部署 + +### 1. 添加环境变量 + +在服务器中添加如下环境变量: + +```bash +export MINDFORMERS_MODEL_CONFIG=/usr/local/Python-3.11/lib/python3.11/site-packages/research/qwen3/qwen3_14b/predict_qwen3_14b_instruct.yaml +export ASCEND_CUSTOM_PATH=$ASCEND_HOME_PATH/../ +export vLLM_MODEL_BACKEND=MindFormers +export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 +``` + +### 2. 拉起服务 + +执行以下命令拉起服务: + +```bash +python3 -m vllm_mindspore.entrypoints vllm.entrypoints.openai.api_server --model "/home/work/Qwen3-14B" --trust_remote_code --tensor_parallel_size=4 --max-num-seqs=192 --max_model_len=32768 --max-num-batched-tokens=16384 --block-size=32 --gpu-memory-utilization=0.9 +``` + +### 3. 执行推理请求测试 + +打开新的窗口,执行以下命令发送推理请求测试,qwen3提供开启思考模式,如下分别是两种方式的命令。 + +开启思考模式 + +```bash +curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{ + "model": "/home/work/Qwen3-14B", + "messages": [ + {"role": "user", "content": "你是Qwen2.5还是Qwen3?"} + ], + "temperature": 0.6, + "top_p": 0.95, + "top_k": 20, + "min_p": 0, + "max_tokens": 4096, + "presence_penalty": 1.05, + "chat_template_kwargs": {"enable_thinking": true} +}' +``` + +关闭思考模式 + +```bash +curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{ + "model": "/home/work/Qwen3-14B", + "messages": [ + {"role": "user", "content": "你是Qwen2.5还是Qwen3?"} + ], + "temperature": 0.6, + "top_p": 0.95, + "top_k": 20, + "min_p": 0, + "max_tokens": 4096, + "presence_penalty": 1.05, + "chat_template_kwargs": {"enable_thinking": false} +}' +``` + +## 声明 + +本文档提供的模型代码、权重文件和部署镜像,当前仅限于基于昇思MindSpore AI框架体验Qwen3-14B的部署效果,不支持生产环境部署。相关使用问题请反馈至[Issue](https://gitee.com/mindspore/mindformers/issues/new)。 + diff --git a/docs/model_cards/qwen3/qwen3_32b.md b/docs/model_cards/qwen3/qwen3_32b.md index 9519ebd50..197fd79e5 100644 --- a/docs/model_cards/qwen3/qwen3_32b.md +++ b/docs/model_cards/qwen3/qwen3_32b.md @@ -3,6 +3,7 @@ ## 目录 - [模型介绍](#模型介绍) - [快速开始](#快速开始) +- [服务化部署](#服务化部署) - [声明](#声明) ## 模型介绍 @@ -14,11 +15,7 @@ |:----:|:----------------------------------------------------------| | 魔乐社区 | https://modelers.cn/models/MindSpore-Lab/Qwen3-32B | - -## 快速开始 -Qwen3-32B推理至少需要1台(2卡)Atlas 800T A2(64G)服务器服务器(基于BF16权重)。昇思MindSpore提供了Qwen3-32B推理可用的Docker容器镜像,供开发者快速体验。 - -### 下载模型权重 +### 模型下载 执行以下命令为自定义下载路径 `/home/work/Qwen3-32B` 添加白名单: @@ -28,6 +25,10 @@ export HUB_WHITE_LIST_PATHS=/home/work/Qwen3-32B 执行以下 Python 脚本从魔乐社区下载昇思 MindSpore 版本的 Qwen3-32B 文件至指定路径 `/home/work/Qwen3-32B` 。下载的文件包含模型代码、权重、分词模型和示例代码,占用约 62GB 的磁盘空间: +```bash +pip install openmind_hub +``` + ```python from openmind_hub import snapshot_download @@ -38,24 +39,24 @@ snapshot_download( ) ``` -下载完成的 `/home/work/Qwen3-32B` 文件夹目录结构如下: - -```text -Qwen3-32B - ├── vocab.json # 词表文件 - ├── merges.txt # 词表文件 - ├── predict_qwen3_32b.yaml # 模型yaml配置文件 - └── weights - ├── model-xxxxx-of-xxxxx.safetensors # 模型权重文件 - └── model.safetensors.index.json # 模型权重映射文件 -``` - #### 注意事项: - `/home/work/Qwen3-32B` 可修改为自定义路径,确保该路径有足够的磁盘空间(约 62GB)。 - 下载时间可能因网络环境而异,建议在稳定的网络环境下操作。 -### 下载镜像 +## 快速开始 + +Qwen3-32B推理需要1台(4卡)Atlas 800T/800I A2(64G)服务器服务器(基于BF16权重)。昇思MindSpore提供了Qwen3-32B推理可用的Docker容器镜像,供开发者快速体验。 + +### 停止其他进程,避免服务器中其他进程影响 + +```bash +pkill -9 python +pkill -9 mindie +pkill -9 ray +``` + +### 下载昇思 MindSpore 推理容器镜像 执行以下 Shell 命令,拉取昇思 MindSpore Qwen3 推理容器镜像: @@ -65,10 +66,10 @@ docker pull swr.cn-central-221.ovaijisuan.com/mindformers/qwen3_mindspore2.6.0-i ### 启动容器 -执行以下命令创建并启动容器: +执行以下命令创建并启动容器(/home/work/Qwen3-32B用于存放权重路径): ```bash -docker run -it --privileged --name=Qwen3 --net=host \ +docker run -it --privileged --name=Qwen3_32B --net=host \ --shm-size 500g \ --device=/dev/davinci0 \ --device=/dev/davinci1 \ @@ -98,36 +99,14 @@ docker run -it --privileged --name=Qwen3 --net=host \ ## 服务化部署 -### 1. 修改模型配置文件 - -在 `predict_qwen3_32b.yaml` 中对以下配置进行修改(若为默认路径则无需修改): - -```yaml -load_checkpoint: '/home/work/Qwen3-32B/weights' # 配置为实际的模型权重绝对路径 -auto_trans_ckpt: True # 打开权重自动切分,自动将权重转换为分布式任务所需的形式 -load_ckpt_format: 'safetensors' -processor: - tokenizer: - vocab_file: "/home/work/Qwen3-32B/vocab.json" # 配置为词表文件的绝对路径 - merges_file: "/home/work/Qwen3-32B/merges.txt" # 配置为词表文件的绝对路径 -``` - -### 2. 添加环境变量 +### 1. 添加环境变量 在服务器中添加如下环境变量: ```bash -export MINDFORMERS_MODEL_CONFIG=/home/work/Qwen3-32B/predict_qwen3_32b.yaml +export MINDFORMERS_MODEL_CONFIG=/usr/local/Python-3.11/lib/python3.11/site-packages/research/qwen3/qwen3_32b/predict_qwen3_32b_instruct.yaml export ASCEND_CUSTOM_PATH=$ASCEND_HOME_PATH/../ export vLLM_MODEL_BACKEND=MindFormers -export vLLM_MODEL_MEMORY_USE_GB=50 -export ASCEND_TOTAL_MEMORY_GB=64 -export MS_ENABLE_LCCL=off -export HCCL_OP_EXPANSION_MODE=AIV -export HCCL_SOCKET_IFNAME=enp189s0f0 -export GLOO_SOCKET_IFNAME=enp189s0f0 -export TP_SOCKET_IFNAME=enp189s0f0 -export HCCL_CONNECT_TIMEOUT=3600 export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 ``` @@ -136,15 +115,47 @@ export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 执行以下命令拉起服务: ```bash -python3 -m vllm_mindspore.entrypoints vllm.entrypoints.openai.api_server --model "Qwen3-32B" --trust_remote_code --tensor_parallel_size=2 --enable-prefix-caching --enable-chunked-prefill --max-num-seqs=256 --block-size=32 --max_model_len=70000 --max-num-batched-tokens=2048 --distributed-executor-backend=ray +python3 -m vllm_mindspore.entrypoints vllm.entrypoints.openai.api_server --model "/home/work/Qwen3-32B" --trust_remote_code --tensor_parallel_size=4 --max-num-seqs=192 --max_model_len=32768 --max-num-batched-tokens=16384 --block-size=32 --gpu-memory-utilization=0.9 ``` ### 4. 执行推理请求测试 -执行以下命令发送流式推理请求进行测试: +打开新的窗口,执行以下命令发送推理请求测试,qwen3提供开启思考模式,如下分别是两种方式的命令。 + +开启思考模式 + +```bash +curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{ + "model": "/home/work/Qwen3-32B", + "messages": [ + {"role": "user", "content": "你是Qwen2.5还是Qwen3?"} + ], + "temperature": 0.6, + "top_p": 0.95, + "top_k": 20, + "min_p": 0, + "max_tokens": 4096, + "presence_penalty": 1.05, + "chat_template_kwargs": {"enable_thinking": true} +}' +``` + +关闭思考模式 ```bash -curl -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 & +curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{ + "model": "/home/work/Qwen3-32B", + "messages": [ + {"role": "user", "content": "你是Qwen2.5还是Qwen3?"} + ], + "temperature": 0.6, + "top_p": 0.95, + "top_k": 20, + "min_p": 0, + "max_tokens": 4096, + "presence_penalty": 1.05, + "chat_template_kwargs": {"enable_thinking": false} +}' ``` ## 声明 -- Gitee