CANN/cann-recipes-infer Qwen3-MoE模型NPU推理
Qwen3-MoE模型在NPU实现低时延推理
【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer
概述
Qwen3-MoE模型是2025年开源的大语言模型,包括Qwen3-235B-A22B与Qwen3-30B-A3B两个版本。本样例基于transformers库modeling_qwen3_moe.py完成Qwen3-235B-A22B模型的适配优化。
支持的产品型号
Atlas A3 系列产品
环境准备
安装CANN软件包。
本样例的编译执行依赖CANN开发套件包(cann-toolkit)与CANN二进制算子包(cann-kernels),支持的CANN软件版本为
CANN 8.5.0。请从软件包下载地址下载
Ascend-cann-toolkit_${version}_linux-${arch}.run与Ascend-cann-A3-ops_<version>_linux-<arch>.run软件包,并参考CANN安装文档进行安装。${version}表示CANN包版本号,如8.5.0。${arch}表示CPU架构,如aarch64、x86_64。
安装Ascend Extension for PyTorch(torch_npu)。
Ascend Extension for PyTorch(torch_npu)为支撑PyTorch框架运行在NPU上的适配插件,本样例支持的Ascend Extension for PyTorch版本为
7.3.0,PyTorch版本为2.8.0。请从软件包下载地址下载
torch_npu-2.8.0.post2-cp311-cp311-manylinux_2_28_${arch}.whl安装包,参考torch_npu安装文档进行安装。下载项目源码并安装依赖的python库。
# 下载项目源码,以master分支为例 git clone https://gitcode.com/cann/cann-recipes-infer.git # 安装依赖的python库,仅支持python 3.11 cd cann-recipes-infer pip3 install -r ./models/qwen3_moe/requirements.txt配置样例运行所需环境信息。
修改
executor/scripts/set_env.sh中的如下字段:IPs:配置所有节点的IP,按照rank id排序,多个节点的ip通过空格分开,例如:('xxx.xxx.xxx.xxx' 'xxx.xxx.xxx.xxx')。cann_path: CANN软件包安装路径,例如/usr/local/Ascend/ascend-toolkit/latest。
说明:HCCL相关配置,如:
HCCL_SOCKET_IFNAME、HCCL_OP_EXPANSION_MODE,可以参考集合通信文档并在executor/scripts/function.sh中自定义配置。
权重准备
请根据所使用的模型类型自行下载原始权重到本地路径,例如/data/models/qwen3_origin_weight/。
以Qwen3-235B-A22B为例,权重下载地址:Qwen3-MoE权重。
推理执行
配置推理执行需要加载的权重文件以及YAML文件。
修改YAML文件中
model_path参数。关于YAML文件中的更多配置说明可参见YAML参数描述。在
models/qwen3_moe/config目录下已提供了较优性能的YAML样例供您参考,您可以根据模型类型选择对应的YAML文件,本文以models/qwen3_moe/config/qwen3_235b_16tp.yaml文件为例,修改其中的model_path参数,将其设置为权重准备阶段准备好的权重文件存储路径,例如/data/models/qwen3_origin_weight/。修改
models/qwen3_moe/infer.sh脚本中YAML_FILE_NAME参数。将
YAML_FILE_NAME设置为config文件夹下YAML文件的名字,例如qwen3_235b_16tp.yaml。
准备输入prompt。
使用长序列prompt(默认)。
本样例默认使用LongBench数据集作为长序列prompt,YAML配置文件中
dataset参数已设置为"LongBench"。若您的机器无法联网,需要从huggingface手动下载数据集至dataset/LongBench目录下,LongBench文件夹需手工创建,目录中包含LongBench.py和data目录,并需要在LongBench.py中修改数据集加载路径;若您的机器可正常联网,样例执行过程中会自动在线读取LongBench数据集,您无需手工下载。说明:在使用LongBench数据集或其他自定义数据集时,默认执行文本摘要任务,可在
cann-recipes-infer/executor/utils/data_utils.py的build_dataset_input函数里修改默认的system prompt。使用内置prompt。
若您需要使用内置prompt,需要执行以下操作:
修改YAML文件中的
dataset参数,将其修改为dataset: "default"。本样例已在
dataset/default_prompt.json中内置了输入prompt,您可以直接使用或在该文件中自定义prompt输入。
执行推理脚本。
cd models/qwen3_moe bash infer.sh说明:如果是多机环境,需要在每个节点上执行。
优化点参考
本样例采用的详细优化点介绍可参见基于Atlas A3的Qwen3-MoE模型低时延推理性能优化实践。
【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
