news 2026/9/18 8:24:10

Qwen3-Next 混合注意力模型在 CANN 昇腾 NPU 上的 SGLang 推理优化与部署实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qwen3-Next 混合注意力模型在 CANN 昇腾 NPU 上的 SGLang 推理优化与部署实践

Qwen3-Next 混合注意力模型在 CANN 昇腾 NPU 上的 SGLang 推理优化与部署实践

【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer

导读

Qwen3-Next 是 2025 年 9 月发布的混合注意力开源大语言模型,通过 GatedAttention 与 GatedDeltaNet 的组合实现超长上下文建模。本文基于 cann-recipes-infer 仓库中的 Qwen3-Next SGLang 集成样例,完整介绍该模型在 Atlas A3 系列昇腾 NPU 上的推理优化实践:从 Docker 环境构建、patch 加载、模型权重转换,到 PD 混部/PD 分离部署、MTP 投机推理、AscendC 融合算子与 W8A8C8 量化的使能方法,并给出测试验证与性能采集的完整操作指南。读者读完本文后,可以独立完成 Qwen3-Next 在昇腾 NPU 上的端到端部署与调优。

该样例的详细优化设计与原理可进一步阅读 Qwen3-Next 推理优化实践设计文档,样例工程位于 integration/sglang/qwen3-next。

一、优化特性总览

本样例针对 Qwen3-Next 模型,基于 SGLang 开源框架完成了 NPU 推理部署的适配与优化,主要包含以下特性:

  • 支持 MTP1 部署:Multi-Token Prediction 投机推理,一次主模型推理同时产出多个 token;
  • 支持 AscendC 大融合算子recurrent_gated_delta_rule融合算子与mambav2_rmsnormgated融合算子;
  • 支持 PyPTO 融合算子:基于自研 PyPTO 框架实现 ChunkGDN 融合 Kernel;
  • 支持序列并行(Sequence Parallel):针对线性 Attention/GatedAttention 的 SP 并行部署策略;
  • 支持 W8A8C8 量化:权重静态 Per-Channel Int8、激活动态 Per-Token Int8、KVCache 动态 Per-Tensor Int8 量化。

优化设计文档中概括的核心亮点包括:整体部署采用"大 EP 并行 + GatedAttention TP 部署 + 长序列亲和的 CP 并行"策略,兼顾时延与吞吐;使用 AscendC 实现 NPU RecurrentGDN 融合 Kernel 提升 decode 阶段 linear attention 性能;基于 PyPTO 实现 ChunkGDN 融合 Kernel 提升编程易用性;支持 W8A8C8 量化与 MTP1 投机推理。

二、并行策略设计

2.1 整体部署:PD 分离与分层异构并行

Atlas A3 推荐部署策略为:Prefill 使用 M 个节点部署,Decode 使用 N 个节点部署,每个节点包含 8 卡。在 BF16 场景下,推荐根据资源数量、SLA 等约束选择部署规模;启用 CP 并行时推荐 M=1、N=1 部署。

2.2 Prefill 并行:CP + TP 混合并行

Qwen3-Next 引入的 Gated Attention 结构显著增强了长序列上下文捕捉能力,但 Prefill 阶段随序列长度平方级增长的激活值内存占用会带来 OOM 风险,同时如何在超长 Context 下维持低 TTFT 是部署的关键挑战。若使用纯 TP 策略,超长序列下 TP 通信组内会产生巨大的 All-Reduce 开销;且 Qwen3-Next 的 Attention Head 数为 16,限制了纯 TP 下最大 16TP 的部署规模;单纯依赖 TP 切分 Head 维度也无法从根本解决 Sequence 维度的 OOM 风险。

因此,Prefill 阶段针对两种模块的计算特性差异采取分层异构并行策略:

  1. Gated Attention 层采用 CP + TP 混合并行:Gated Attention 模块计算复杂度接近 O(S²),引入 Context Parallel(CP)配合 Tensor Parallel(TP),CP 将 Sequence 维度切分到不同 Rank,显著降低单卡激活值内存占用;
  2. GDN 层采用纯 TP 并行:GDN 模块涉及沿 Sequence 的卷积操作,不适合对 Sequence 轴切分,且 num_head 足够 TP 切分,因此使用纯 TP 并行。

以 mCP × nTP(如 m=4、n=2)与 64K 输入推理为例:每个 CP rank 处理 64K/cp_size=16K 个 token,每个 CP rank 内的 qkv_proj 基于 TP2 计算;计算完 kv 后对所有 CP 域的 kv token 进行 AllGather,得到完整 kv 结果;每个 rank 拿到 64K/cp_size 的 q token 和完整 kv token 进行后续 Attention 计算;Attention 计算完成后将输出在 TP 组内进行 Reduce-Scatter,得到 MoE 输入所需的 Scattered 排布数据。

2.3 ZigZag 负载均衡

Attention 计算需遵循因果注意力,若 CP 简单按 rank 顺序切片会面临计算负载不均问题:第一个 rank 关注到的历史 kv token 很少、计算量小,最后一个 rank 关注到的历史 kv token 多、计算量大。为降低负载不均影响,将 Sequence 切分成 cp_size×2 个 block:在 prepare_attn 阶段通过 All-to-All 通信将因果顺序排布的 blocks 转换为 ZigZag 排布,每个 rank 负责计算头尾对称的两个切片;每层 Gated Attention 计算前通过 Token 重排将 kv 还原回因果顺序;Gated Attention 计算结束后,在 prepare_mlp 阶段再次通过 All-to-All 通信将 ZigZag 排布的 blocks 转换为因果顺序排布。

2.4 Decode 并行:TP + EP

Decode 阶段使用 SGLang 框架原生并行能力:Gated Attention 和 GDN 使用 TP 并行,MoE 使用 EP 并行。其中 prepare_attn 阶段通过 All-Gather 将上一层 MoE 输出的 Scattered 排布数据拼接为完整 hidden state;prepare_mlp 阶段对 Gated Attention/GDN 输出的 hidden state 进行 Reduce-Scatter,得到 MoE 输入所需的 Scattered 排布数据。

三、融合算子与 MTP 投机推理

3.1 recurrent_gated_delta_rule 融合算子

使能recurrent_gated_delta_rule融合算子可替换 decode 阶段的 GDN 模块计算,融合了 Sigmoid、L2Norm、注意力分数计算以及 ssm_state 的计算与更新操作。该算子源码位于 ops/gated_delta_net/recurrent_gated_delta_rule,包含算子宿主侧实现recurrent_gated_delta_rule.cpp与 kernel 侧实现op_kernel/recurrent_gated_delta_rule.h

3.2 mambav2_rmsnormgated 融合算子

使能mambav2_rmsnormgated融合算子将 RMSNorm + Silu + Mul 融合计算,实现源码位于 ops/gated_delta_net/rmsnormgated。

3.3 MTP 机制

MTP(Multi-Token Prediction)机制允许在一次主模型推理过程中同时推理多个 token,在相似的数据搬运量下进行更多计算,充分利用芯片算力,提升模型等效时延与吞吐。需注意:主模型 target_verify 推理后,需要根据接收情况更新 linear attention 结构中的mamba_cache,为下一轮计算提供正确的状态矩阵conv_statessm_state

四、量化策略:W8A8C8

相对于 BF16 推理,Int8 量化可有效降低端到端时延、提升系统吞吐。本实践支持 W8A8C8 量化,各模块量化范围如下:

  • Gated DeltaNet:除 conv 外采用 W8A8 量化;
  • Gated Attention:采用 W8A8 量化,KVCache 使用 C8 量化;
  • MoE:路由专家使用 W8A8 量化;
  • LM_Head:暂不量化。

其中术语含义:W8A8指权重使用静态 Per-Channel Int8 量化(W8),激活使用动态 Per-Token Int8 量化(A8);KVCache C8指 KVCache 使用动态 Per-Tensor Int8 量化。

设计文档给出了量化模型的精度表现(设计文档实测数据):

模型MMLUGPQADROPMGSM
BF1689.973.688.992.4
W8A8C889.87488.492

五、环境搭建:基于 Docker 构建

5.1 硬件与软件要求

项目要求
产品型号Atlas A3 系列
操作系统Linux ARM
镜像版本sglang:main-cann8.3.rc2-a3
驱动版本Ascend HDK 25.2.0

可通过npu-smi info检查 Ascend NPU 固件和驱动是否正确安装,并确认版本是否为 25.2.0。若未安装或版本不符,请先下载固件和驱动包并自行安装。

5.2 创建容器

# 镜像下载 docker pull quay.io/ascend/sglang:main-cann8.3.rc2-a3 # 执行以下脚本创建容器,请传入容器名称,如 your_docker_name docker run -u root -itd --name your_docker_name --ulimit nproc=65535:65535 --ipc=host \ --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/davinci8 --device=/dev/davinci9 --device=/dev/davinci10 --device=/dev/davinci11 \ --device=/dev/davinci12 --device=/dev/davinci13 --device=/dev/davinci14 --device=/dev/davinci15 \ --device=/dev/davinci_manager --device=/dev/devmm_svm --device=/dev/hisi_hdc \ -v /etc/localtime:/etc/localtime -v /home/:/home/ -v /data/:/data/ \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /etc/ascend_install.info:/etc/ascend_install.info -v /var/log/npu:/usr/slog \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /usr/local/dcmi:/usr/local/dcmi -v /etc/hccn.conf:/etc/hccn.conf \ -v /root/.pip/pip.conf:/root/.pip/pip.conf -v /etc/hosts:/etc/hosts \ --net=host --shm-size=128g --privileged \ quay.io/ascend/sglang:main-cann8.3.rc2-a3 /bin/bash # 执行docker exec命令进入容器 docker exec -it -u root your_docker_name bash

5.3 安装 CANN 与 torch_npu

为使能 GDN 融合算子,需要先将镜像中的 CANN 版本更新到 8.5.0:

# 清理旧版 CANN cd /usr/local/Ascend rm -rf 8.5.0/ ascend-toolkit/ latest/ nnal/

然后从昇腾社区 CANN 下载页面下载如下软件包并参考官方 CANN 安装文档安装(软件包文件名中${version}表示 CANN 包版本号,${arch}表示 CPU 架构,如 aarch64、x86_64):

  • 开发套件包:Ascend-cann-toolkit_${version}_linux-${arch}.run
  • 二进制算子包:Ascend-cann-A3-ops_${version}_linux-${arch}.run
  • NNAL 加速包:Ascend-cann-nnal_${version}_linux-${arch}.run

请参考官方版本兼容性说明确认 HDK 版本,为兼容 PD 分离特性,推荐版本为 25.2.x。

安装完成后创建 latest 软连接:

ln -s /usr/local/Ascend/cann /usr/local/Ascend/latest

本样例支持的Ascend Extension for PyTorch(torch_npu)版本为 7.3.0,PyTorch 版本为 2.6.0,请参考官方 Ascend Extension for PyTorch 安装文档安装相应版本的 torch_npu 插件。

5.4 下载项目源码并安装依赖

# 下载项目源码,以 master 分支为例 git clone https://gitcode.com/cann/cann-recipes-infer.git

5.5 下载 SGLang 源码并加载 patch

为了让使用者和开发者直观了解基于开源代码的修改,本样例只包含 patch 代码,框架代码需要自行拉取。返回 cann-recipes-infer 项目代码的上级目录(即执行 git clone 时所在目录),并执行如下命令(需确保环境能够正常连通网络):

# 返回cann-recipes-infer项目代码上级目录 # 下载sglang源码(官方开源仓库,v0.5.6 分支) git clone <sglang官方仓库> -b v0.5.6

patches 目录下按 stage 分组对应不同特性更改,对应关系如下:

Stage内容
stage1基础功能适配和 MoE 多流优化
stage2W8A8C8 动态量化
stage3GDN 和 MTP 适配
stage4CP 并行
stage5rmsnormgated、GDN 大融合算子适配以及问题修复
stage6CP support for GDN

按顺序加载 patches 目录下的各 patch 组(apply_patches.sh 脚本会依次执行git am加载 stage1~stage6 全部 patch):

cd sglang bash ../cann-recipes-infer/integration/sglang/qwen3-next/apply_patches.sh

安装 sglang:

pip install -e python --no-deps --no-build-isolation

5.6 编译安装 sgl-kernel-npu

# 下载sgl-kernel-npu源码(官方开源仓库,2026.03.01 分支) git clone <sgl-kernel-npu官方仓库> -b 2026.03.01

在 sgl_kernel_npu 目录下加载sgl_kernel_npu_support_gdn_cp.patch

git apply ../cann-recipes-infer/integration/sglang/qwen3-next/patches/sgl_kernel_npu_support_gdn_cp.patch

然后参考 sgl-kernel-npu 官方安装文档编译安装 sgl-kernel-npu。

5.7 安装 Triton-Ascend 与其他依赖

Triton-Ascend 是 CANN 生态对 Triton 的支持库,安装最新版本:

pip install triton-ascend --force-reinstall

安装其他依赖:

pip install torchvision==0.21.0 pip install torchao==0.9.0

5.8 编译安装自定义算子

# 进入算子编译目录 cd ../cann-recipes-infer/integration/sglang/qwen3-next/ops/npu_ops_transformer_ext

参考 npu_ops_transformer_ext 编译文档 编译安装自定义算子(工程包含setup.pyCMakeLists.txtrequirements.txt)。

六、模型权重准备

本样例使用的 Qwen3-Next 模型权重准备方法如下:

# 从魔搭社区下载Qwen3-Next完整BF16权重至指定目录,例如 your_bf16_weights pip install modelscope modelscope download --model Qwen/Qwen3-Next-80B-A3B-Instruct --local_dir your_bf16_weights # 将BF16权重转换为W8A8权重(可选) python python/sglang/srt/utils/convert_model_qwen3_next.py \ --input_bf16_hf_path your_bf16_weights \ --output_hf_path your_w8a8_weights # 将BF16权重转换为W8A8C8权重(可选) # 下载quant_param到指定路径,比如 your_param_path wget --no-check-certificate -P your_param_path <cann-quantization/attn_c8_scale.zip 下载地址> # 解压quant_param到指定路径,比如 your_param_path apt update apt install unzip unzip -o your_param_path/attn_c8_scale.zip -d your_param_path # 转换权重 python python/sglang/srt/utils/convert_model_qwen3_next.py \ --input_bf16_hf_path your_bf16_weights \ --output_hf_path your_w8a8c8_weights \ --c8 --quant_param_path your_param_path/attn_c8_scale

七、推理执行

7.1 前置环境配置

修改 set_env.sh 中的推理执行相关配置:

修改点修改描述
SOCKET_IFNAME各部署节点网卡
MODEL_PATH模型权重存储路径
PYTHONPATHPYTHONPATH 中增加打完 patch 后的 sglang 路径
IP_NODE_P0Prefill 主节点 ip
IP_NODE_D0Decode 主节点 ip

set_env.sh中还包含一系列特性开关与调优项,例如:SGLANG_ENABLE_OVERLAP_PLAN_STREAM/SGLANG_ENABLE_SPEC_V2(MTP 相关)、ENABLE_ASCENDC_FUSION_GDN="true"(GDN 融合算子)、USE_CUSTOM_NORM_KERNEL="true"(rmsnormgated 融合算子)、ENABLE_NPU_DEEPEP_MOE_MULTI_STREAM=1(MoE 多流)、SGLANG_DEEPEP_BF16_DISPATCH=1/DEEP_NORMAL_MODE_USE_INT8_QUANT=1(deepep 下 BF16/int8 权重分发)、ASCEND_USE_C8=1(C8 量化)、PYTORCH_NPU_ALLOC_CONF=expandable_segments:True(内存碎片优化)等。

7.2 PD 混部命令

使用 infer.sh 启动 SGLang 服务(PD 混部场景),主要服务拉起参数说明如下:

配置项说明
--tp 16TP 并行数(若开启 DP,实际 TP 并行数为此配置参数/DP 配置参数)
--enable-dp-attention --dp-size 8DP 并行数配置,若需禁用 DP 请删除这两项配置
--moe-a2a-backend deepep --deepep-mode auto启用 deepep,若需禁用 deepep 请删除这两项配置
--cuda-graph-bs 16计算图 batch size,使用单算子模式请替换为--disable-cuda-graph

infer.sh中还包含--attention-backend ascend--mamba-ssm-dtype bfloat16--context-length 262144--chunked-prefill-size 71680--max-prefill-tokens 262144--skip-server-warmup--disable-radix-cache等参数,可直接参考仓库脚本按需调整。

7.3 PD 分离命令

PD 分离部署需要分别启动 Prefill、Decode、Router 节点:

  1. 修改各个节点set_env.sh中的参数:
# 修改prefill节点和decode节点的主节点ip IP_NODE_P0=x.x.x.x # 修改为prefill主节点ip IP_NODE_D0=y.y.y.y # 修改为decode主节点ip # prefill节点和decode节点分别设置各自的nnodes和node_rank, 比如 2prefill + 2decode # p0 export nnodes=2 export node_rank=0 # p1 export nnodes=2 export node_rank=1 # d0 export nnodes=2 export node_rank=0 # d1 export nnodes=2 export node_rank=1
  1. 在 Prefill 节点运行 infer_prefill.sh(包含--disaggregation-mode prefill --disaggregation-transfer-backend ascend --dist-init-addr ${p0}:10000等配置);
  2. 在 Decode 节点运行 infer_decode.sh(包含--disaggregation-mode decode --dist-init-addr ${d0}:10000等配置);
  3. 在 Prefill 节点启动 Router:
source set_env.sh python3 -m sglang_router.launch_router --decode http://${d0}:30001 --prefill http://${p0}:30001 --pd-disaggregation --mini-lb --host 0.0.0.0 --port 30002

7.4 新增特性使能

特性使能方式说明
ACLGraph服务拉起参数中配置--cuda-graph-bs
MoE 多流set_env.sh中增加环境变量:export ENABLE_NPU_DEEPEP_MOE_MULTI_STREAM=1
GDN(Gated Delta Net)融合算子set_env.sh中增加环境变量:export ENABLE_ASCENDC_FUSION_GDN="true"
rmsnormgated 融合算子1.set_env.sh中增加环境变量:export USE_CUSTOM_NORM_KERNEL="true";2. 指定核心数(默认 1,建议默认):export RMSNORMGATED_BLOCK_DIMS=2
MTP(多Token预测)1.set_env.sh中增加环境变量:export SGLANG_ENABLE_OVERLAP_PLAN_STREAM=1export SGLANG_ENABLE_SPEC_V2=1;2. 增加服务拉起配置项--speculative-algorithm NEXTN --speculative-num-steps 1 --speculative-eagle-topk 1 --speculative-num-draft-tokens 2;3. 确保set_env.sh中使能 GDN 融合算子export ENABLE_ASCENDC_FUSION_GDN="true"
A8W8 量化1.set_env.sh中将export SGLANG_DEEPEP_BF16_DISPATCH=1替换为export DEEP_NORMAL_MODE_USE_INT8_QUANT=1;2. 增加服务拉起配置项--quantization w8a8_int8;3.set_env.sh中配置 A8W8 权重路径
A8W8C8 量化1.set_env.sh中将export SGLANG_DEEPEP_BF16_DISPATCH=1替换为export DEEP_NORMAL_MODE_USE_INT8_QUANT=1;2.set_env.sh中增加环境变量export ASCEND_USE_C8=1;3. 增加服务拉起配置项--quantization w8a8_int8;4.set_env.sh中配置 A8W8C8 权重路径
序列并行1. 本样例支持 PD 分离场景下 Prefill 节点 Gated Attention 的 CP 和 TP 混合并行与 CP 负载均衡,启用方式:在infer_prefill.sh中将 DP 配置--enable-dp-attention --dp-size 8替换为--cp-size 8;2.set_env.sh中增加环境变量开启 CP 负载均衡:export CP_USE_ZIGZAG=1(面向长序列单 batch 场景);3. 在set_env.sh中增加环境变量使能 GatedDeltaNet attention 的 CP/TP 混合并行:export ENABLE_CONTEXT_PARALLEL_GDN=1

7.5 规格约束说明

  1. PD 分离场景 P 和 D 部署策略需相同(SGLang 框架暂未支持 MHA 不同策略部署);
  2. MTP 暂不支持和图模式同时开启;
  3. MTP 暂不支持和 C8 同时开启;
  4. 暂不支持 PD 分离下开启 MTP;
  5. CP 仅支持 PD 分离场景开启,启用时 P 和 D 部署策略可不同(P 可增加 cp_size 配置),需满足 cp_size < tp_size,且 PD 卡数需相同(SGLang 框架 kv 传输逻辑限制);CP 不支持与 DP 同时开启(CP 复用了 DP 通信域);
  6. 请确保 chunk prefill size ≤ 71680(triton 算子的规格约束);
  7. GDN 切分头数存在限制,tp_size 需不大于 32;
  8. 当前框架存在精度问题:当内部索引mamba_cache_indices=0时会产生错误结果,该索引会在 Mamba cache 容量范围内循环使用;max-mamba-cache-size用于控制 Mamba cache 容量,默认值较小(通常为 2),索引循环时频繁回到 0 会导致精度下降。将max-mamba-cache-size调大(可设置为 512,有效平衡精度与性能)可显著降低该问题触发概率,但会带来一定性能开销。

八、测试与验证

8.1 单请求精度验证

普通长度序列可通过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}}'
  • 若服务拉起配置了--skip-server-warmup,请在验证精度前发送 dp_size 个请求,保证每个 dp_rank 都预热到;
  • 长序列可通过 send_long_text.py 构造发送,脚本内置TXT_PATH(待发送文本路径)、MODEL_PATHURLPROMPT_LENGTH等配置项,使用 tokenizer 将长文本截断到指定 token 长度后通过/generate接口发送。

8.2 基于数据集的精度验证

通过以下命令执行 few_shot_gsm8k 精度验证,结果大于 0.9 即为精度正常:

cd python/sglang/test python3 few_shot_gsm8k.py --parallel 16 --num-questions 100 --num-shots 5 --port 30002 --temperature 0

8.3 指定 B/S 的随机请求验证

通过 bench_serving.sh 指定 B/S 发送请求。脚本中可配置BatchSizeSeqLenOutputLenNumPromptsDatasetJsonPath(可先下载 ShareGPT_Vicuna_unfiltered 数据集,并在脚本里指定 DatasetJsonPath 为对应 json 文件路径):

# 手动配置测试的B、S和输出长度 BatchSize=16 SeqLen=4096 OutputLen=10 NumPrompts=16 DatasetJsonPath=ShareGPT_V3_unfiltered_cleaned_split.json python3 -m sglang.bench_serving --base-url http://127.0.0.1:30002 \ --dataset-path $DatasetJsonPath \ --dataset-name=random \ --random-range-ratio 1 \ --random-input $SeqLen \ --random-output $OutputLen \ --max-concurrency $BatchSize \ --num-prompts $NumPrompts

8.4 Benchmark 数据

基于 Atlas A3,本实践使用下述部署方式,使能优化点 ACLGraph、A8W8C8 量化、MoE 多流、GDN 融合算子,对 Qwen3-Next 进行性能 Benchmark 测试:

基础模型机器型号graph_bsdp_sizetp_sizeep_sizemax_prompt_lengthnum_prompts纯模型decode时延(ms)
Qwen3-Next-80B-A3B-Instruct-A8W8C8Atlas A3 16die168216256k1620.6

九、性能采集(Profiling)

9.1 加载 patch

在 sglang 目录下加载 PROFILE.patch:

git apply ../cann-recipes-infer/integration/sglang/qwen3-next/patches/PROFILE.patch

9.2 profiler 配置

  1. 通过设置环境变量PROFILER_MODE[all, decode, prefill]中的指定值选择 profiler 范围,以 decode 为例:
export PROFILER_MODE='decode'
  1. 配置SGLANG_TORCH_PROFILER_DIR指定 profiler 保存路径:
export SGLANG_TORCH_PROFILER_DIR='/home/sglang/prof/'
  1. 修改python/sglang/srt/model_executor/model_runner.py中的 schedule 控制采集范围。torch_npu.profiler的接口与 torch 原生 profiler 类似,默认配置下采集 step4~step14 的 profiling 数据。

9.3 运行采集

  1. 使用要采集的配置拉起服务;若需精准控制采集的 step,请确保配置了--skip-server-warmup参数跳过服务启动时的 warmup;
  2. 可使用上文"指定 B/S 的随机请求验证"发送指定请求;若需精准控制采集的 step,在使用 bench_serving 时添加--warmup-requests 0跳过 warmup 请求;
  3. 采集结束后,profiling 数据保存在SGLANG_TORCH_PROFILER_DIR指定的目录下。

9.4 查看 Trace 图

可以通过ASCEND_PROFILER_OUTPUT目录下的trace_view.json文件查看算子运行的 trace 图。推荐使用昇腾官方可视化工具 MindStudio Insight 查看 trace 图。

十、总结与展望

本文完整介绍了 Qwen3-Next 混合注意力模型在 CANN 昇腾 NPU 上基于 SGLang 的推理优化样例:通过 CP+TP 混合并行与 ZigZag 负载均衡解决长序列 Prefill 的 OOM 与负载不均问题,通过 AscendC/PyPTO 融合算子(recurrent_gated_delta_rule、mambav2_rmsnormgated、ChunkGDN)与 MTP1 投机推理提升 decode 阶段性能,并通过 W8A8C8 量化在保持精度的同时降低端到端时延。

设计文档还给出了后续优化方向:conv1d_update融合算子的 AscendC 支持;通过 PyPTO 实现更大范围的 MegaKernel,完成多核 MPMD 并行调度;以及在 256K~1M 超长序列 Prefill 场景下支持线性 Attention 层的序列并行以进一步降低 TTFT。相关工程文件(patch、脚本、算子源码)均位于 integration/sglang/qwen3-next,读者可结合本文与仓库源码进一步深入实践。

【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 8:23:16

OpenResearch如何把Claude Code变成研究智能体?harness机制全解

OpenResearch如何把Claude Code变成研究智能体&#xff1f;harness机制全解 【免费下载链接】OpenResearch Turn your coding agents into research agents 项目地址: https://gitcode.com/GitHub_Trending/op/OpenResearch OpenResearch 是一个本地优先的研究智能体工作…

作者头像 李华
网站建设 2026/9/18 8:20:59

新概念英语第45课《老板的信》职场英语解析

1. 新概念英语第一册第45课《老板的信》深度解析作为一名英语教育从业者&#xff0c;我经常遇到学生反映新概念英语教材中的某些课文看似简单&#xff0c;实则暗藏许多值得深挖的语言点。今天我们就来详细拆解第45课《老板的信》&#xff0c;这课虽然篇幅短小&#xff0c;却包含…

作者头像 李华
网站建设 2026/9/18 8:19:31

长按开关机芯片选型实战:五大关键参数全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 8:19:09

MySQL 8.0安装配置、IDEA/Navicat连接与实体类生成实战

MySQL 环境搭建这件事&#xff0c;说简单也简单&#xff0c;说折磨人也真折磨人——我见过太多人在新电脑上装 MySQL 8.0&#xff0c;装完之后 IDEA 连不上、Navicat 报时区错误、建表时字段类型选错导致后面改表改到崩溃。这篇就把 MySQL 的安装配置、IDEA 连接、Navicat 连接…

作者头像 李华
网站建设 2026/9/18 8:18:06

2026年家用投影仪选购指南与技术趋势解析

1. 2026年家用投影仪市场全景扫描投影仪行业在2023-2026年间经历了三次技术迭代浪潮。最显著的变化是LED光源亮度突破3000 ANSI流明大关&#xff0c;三色激光技术成本下降40%&#xff0c;而4K分辨率已成为2000元价位段的标配。我拆解过市面上37款主流机型后发现&#xff0c;202…

作者头像 李华