
Qwen3-MoE模型基于sglang框架在NPU实现低时延推理【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer概述Qwen3-MoE模型是2025年开源的大语言模型本样例基于sglang开源框架qwen3_moe.py完成Qwen3-235B-A22B模型在sglang框架上的适配优化。支持的产品型号Atlas A3 系列产品环境准备拉取镜像docker pull quay.io/ascend/sglang:v0.5.7-cann8.3.rc2-a3创建容器# 请设置容器名称例如 your_docker_name镜像名称同上一步 container_nameyour_docker_name image_namequay.io/ascend/sglang:main-cann8.3.rc2-a3 # 执行docker run命令创建容器可通过-v按需挂载宿主机目录至容器 docker run -itd --shm-size500g \ --name ${container_name} \ --nethost \ --privilegedtrue \ -u root \ -w /data \ --device/dev/davinci_manager \ --device/dev/hisi_hdc \ --device/dev/devmm_svm \ --entrypointbash \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /etc/ascend_install.info:/etc/ascend_install.info \ -v /usr/local/sbin/:/usr/local/sbin/ \ -v /etc/hccn.conf:/etc/hccn.conf \ -v /usr/bin/hccn_tool:/usr/bin/hccn_tool \ -v /data/:/data/ \ -v /tmp:/tmp \ -v /etc/localtime:/etc/localtime \ -v /var/log/npu/slog/slogd:/var/log/npu/slog/slogd \ -v /dev/shm:/dev/shm \ ${image_name} # 执行docker exec命令进入容器 docker exec -it ${container_name} bash权重准备下载Qwen3-235B-A22B权重权重int8量化安装modelslim可参考安装指南执行量化cd integration/sglang/qwen3-moe/utils/ # MODEL_PATH为原始权重下载后的存储路径SAVE_PATH为权重量化后的存储路径 msmodelslim quant --model_path ${MODEL_PATH} --save_path ${SAVE_PATH} --device npu --model_type Qwen3-235B --config_path qwen3_moe_w8a8.yaml删除权重中的offsetpython drop_offset.py --model_path ${SAVE_PATH}代码准备下载本样例所在代码仓以master分支为例git clone https://gitcode.com/cann/cann-recipes-infer.git获取sglang主仓源码并应用patchgit clone https://github.com/sgl-project/sglang.git cd sglang git reset --hard 2aec8b6e1b588f025ad5e25e2682a44b41a6cdbd # 将修改本仓中的修改patch应用到sglang代码中 git am ../cann-recipes-infer/integration/sglang/qwen3-moe/patches/*.diff推理执行修改服务拉起脚本中推理执行需要相关配置。部署方式修改脚本pd混部infer.shpd分离infer_prefill.shinfer_decode.shinfer_router.sh修改点修改描述涉及修改脚本IPs各部署节点ipinfer.shinfer_prefill.shinfer_decode.shIFNAMES各部署节点网卡infer.shinfer_prefill.shinfer_decode.shMODEL_PATH模型权重存储路径infer.shinfer_prefill.shinfer_decode.shPYTHONPATHPYTHONPATH中增加打完patch后的sglang路径infer.shinfer_prefill.shinfer_decode.shinfer_router.shPrefill_Master_Server_IPPrefill主节点ipinfer_decode.shinfer_router.shDecode_Master_Server_IPDecode主节点ipinfer_router.sh拉起服务# pd混部 bash infer.sh# pd分离 # prefill节点执行 bash infer_prefill.sh # decode节点执行 bash infer_decode.sh # router拉起需要在prefill和decode节点服务拉起后执行 bash infer_router.sh测试方法单请求精度验证普通长度的序列可以通过curl的方式直接发送验证curl --location http://127.0.0.1:30002/generate -H Content-Type: application/json --data {text: [1 1 ?], sampling_params: { temperature: 0, max_new_tokens: 15}}基于数据集的精度验证下载数据集cd /data/ git clone https://github.com/openai/grade-school-math.git通过以下命令可以执行few_shot_gsm8k进行精度验证结果大于0.9即为精度正常cd python/sglang/test python3 few_shot_gsm8k.py --parallel 64 --num-questions 200 --num-shots 5 --port 30002 --temperature 0 --data-path /data/grade-school-math/grade-school-math/data/test.jsonl基于数据集的性能压测通过bench_serving.sh脚本可以通过bench_serving指定B/S发送请求。可先通过 https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json?downloadtrue 下载数据集并在脚本里指定DatasetJsonPath为对应json文件路径。如需采集profiling拉起服务时配置环境变量export ENABLE_PROFILERTrue。Benchmark基于Atlas A3本实践使用下述部署方式使能优化点superkernel专家强制负载均衡和ge图模式cache优化点使能方式详见sglang新增入参说明对Qwen3MoE W8A8量化版本进行了性能Benchmark测试。 | 基础模型 | 机器型号 | GBS | dp_size | tp_size | ep_size | max_prompt_length | max_response_length | 纯模型时延ms | |---------------------|-------------|-----|----------|---------| --------|-------------------|--------------------|-----------| | Qwen3-235B-A22B | Atlas A3 32卡 | 256 | 16 | 4 | 64 | 5120 | 500 | 30 |附录新增环境变量说明# 采集ge图模式执行时的profiling文件采集到的profiling文件位于执行脚本同目录的prof/文件下 export ENABLE_PROFILERTruesglang新增入参说明|入参|说明| |-------|--------| |--enable-superkernel| qwen3-moe模型使能superkernel特性 | |--perfect-eplb| qwen3-moe模型使能专家强制负载均衡| |--enable-cache-compile| 使能ge图模式缓存功能缓存文件位于执行脚本同目录的compile_cache/文件下如果执行的模型结构或部署方式有调整需要手动删除compile_cache/文件|文件说明文件路径说明0001-feat-basic-modification-for-qwen3-moe.diffQwen3MoE模型基础修改修改内容包含deepep模块替换atb算子替换Qwen3MoE MTP模型适配MTP场景下GQA attention分支适配dptp混合并行场景bug修复w8a8场景bug修复模型中matmul类算子使能nz0002-feat-support-qwen3-moe-forced-eplb.diffQwen3MoE模型适配专家强制均衡0003-feat-npu-profiler.diff适配npu profiler工具0004-feat-npu-support-main-model-ge-graph.diff修改NPUGraphRunner适配主模型ge图模式特性0005-feat-mtp1-support-ge-graph.diff修改EAGLEDraftExtendNpuGraphRunner适配MTP时第一个投的ge图模式特性0006-feat-mtp2-support-ge-graph.diff改EAGLEDraftNpuGraphRunner适配MTP时除第一个投外其他投的ge图模式特性0007-feat-modify-mtp-lm-head-load-method.diff适配EAGLE场景下Qwen3MoE模型可通过判断mtp权重是否含shared head权重决定是否和主模型共享一个lm head0008-fix-GQA-FIA-pd-disaggregation-bug.diff修复pd分离场景下使用fia分支时kv items len计算错误导致的精度问题0009-feat-support-superkernel.diffQwen3MoE模型使能superkernel特性【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考