news 2026/5/9 16:28:30

NPU 多流优化案例手册

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NPU 多流优化案例手册

NPU 多流优化案例手册

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

本文收录仓库内与 NPU 多流优化相关的案例,按“每次优化算一个案例”整理,而不是按模型统计。目录中的每个 Markdown 文件只讲一个案例,聚焦优化动机、执行编排、关键代码片段、适用场景和复用价值。

收录原则

  • 文档中明确描述了多流、双流、stream overlap 或多流并行。
  • 代码中存在显式多流编排,例如npu_stream_switchtorch.npu.Stream()wait_eventrecord_eventwait_stream
  • 相同优化方法在不同模型中复用时,合并到同一类案例中统一整理。

分类导航

MoE 多流

  • 案例:MoE 共享专家双流并行
  • 案例:HunyuanImage-3.0 MoE 多流变体
  • 案例:Qwen3-Next Patch 形态的 MoE 双流

Attention / Prolog 多流

  • 案例:Indexer Prolog 多流并行

KVCache Offload 异步流

  • 案例:KVCache Offload 异步搬运流

Prefill 双流流水

  • 案例:Prefill Micro-Batch 双流流水

多流 + 控核 / 分离式编排

  • 案例:LongCat-Flash 多流与控核联动
  • 案例:LongCat-Flash AFD 通信计算 overlap

快速选型表

优化模式先看案例再看源码什么时候优先选典型风险
MoE shared expert 双流moe-shared-expert-dual-stream.mdcann-recipes-infer/models/deepseek-v3.2-exp/models/modeling_deepseek.py,cann-recipes-infer/models/glm-5/models/modeling_glm.py路由专家和共享专家结果在后面汇合,且 decode shape 稳定同步点放错会导致 merge 读到未完成结果;共享专家过重时 overlap 不一定有收益
Indexer / Prolog 多流indexer-prolog-multi-stream.mdcann-recipes-infer/models/glm-5/models/indexer.pyAttention 前处理链路可拆成两段或多段,等待在后面汇合这类优化常常是前处理子链 overlap,不是完整大模块并行,边界容易拆错
KVCache offload 异步流kvcache-offload-async-stream.mdcann-recipes-infer/models/deepseek-v3.2-exp/models/offload_cache.py,cann-recipes-infer/models/glm-5/models/offload_cache.py设备内存紧张,需要把搬运从主计算流剥离主流和搬运流的状态一致性最重要;异步搬运可能掩盖不了 H2D/D2H 带宽瓶颈
Prefill micro-batch 双流 + eventprefill-microbatch-dual-stream.mdcann-recipes-infer/models/deepseek_r1/models/modeling_deepseek.pyprefill 同时有明显计算和通信,且切 micro-batch 后 shape 线性度还可以最容易引入 host bound、shape 劣化和事件编排错误
多流 + 控核longcat-flash-multi-stream-limit-core.mdcann-recipes-infer/models/longcat-flash/models/modeling_longcat_flash.py已有 overlap,但一条流明显拖尾或资源被另一条流吃满控核值不是通用常量;多流、控核、预取和图模式往往是耦合设计
AFD 通信/计算 overlaplongcat-flash-afd-overlap.md以案例文档为主分离式部署或通信链路成了主要瓶颈重点不在本地双算子并行,而在通信和本地计算 overlap;等待链容易拖尾
Patch 形态多流qwen3-next-moe-dual-stream-patch.mdcann-recipes-infer/models/qwen3-next/patches/stage1/0003-feat-moe-multi-stream.patch优化不能直接落到模型仓,需要嵌进 runtime 或 patchpatch 代码更依赖现有生命周期,wait_stream()顺序错了会直接破坏运行时逻辑
多模态变体hunyuanimage-moe-multi-stream.mdcann-recipes-infer/models/hunyuan-image-3.0/adaptor_patches/hunyuan.py共享流在模块初始化阶段就作为能力注入,而不是在前向里临时加 scope多流能力进入模块构造期后,不能只复制一段前向代码;初始化和分布式上下文要一起看

使用顺序

  1. 先确定当前优化属于哪一类模式。
  2. 先读对应案例文档,确认模块边界、依赖关系和同步方式。
  3. 再读代表代码或补丁,确认实际 API 风格和 enable 开关设计。
  4. 如果一个实现同时落在多类模式里,先选主模式,再把其他能力当补充手段。

案例清单

案例名称优化方法代表模型概述
MoE 共享专家双流并行共享专家与路由专家并行DeepSeek-V3.2-Exp / DeepSeek-R1把共享专家放到副流,与路由专家路径重叠,减少 decode 可见耗时。
Indexer Prolog 多流并行Attention 前处理多流DeepSeek-V3.2-Exp / GLM-5将 Q 路径与权重投影路径拆到不同流,缩短 Indexer 前处理串行段。
KVCache Offload 异步搬运流Cache 异步卸载/回迁DeepSeek-V3.2-Exp / GLM-5用独立流完成 KVCache 搬运,降低主计算流阻塞。
Prefill Micro-Batch 双流流水计算通信双流掩盖DeepSeek-R1两个 micro-batch 分别跑在两条流上,并通过 event 编排 dispatch/combine。
LongCat-Flash 多流与控核联动多流 + limit_core_numLongCat-Flash把 Attention 路径和 MoE 路径拆流后再分核,减少拖尾。
LongCat-Flash AFD 通信计算 overlap分离部署下的双流编排LongCat-Flash通过 Stream0/Stream1 overlap Send/Recv 与主计算,隐藏分离式通信耗时。
HunyuanImage-3.0 MoE 多流变体Shared MLP 独立流HunyuanImage-3.0用独立 NPU stream 承载共享 MLP,形成多模态模型里的 MoE 双流变体。
Qwen3-Next Patch 形态的 MoE 双流Patch 级 NPU 双流改造Qwen3-Next在 SGLang patch 中引入 shared expert stream,与 DeePEP 路由过程并行。

常见误用

  • 不要把MoE shared expert 双流Prefill micro-batch 双流当成同一种流水,它们的同步粒度完全不同。
  • 不要看到有两条流就默认需要limit_core_num,控核只在资源争抢和拖尾明显时再引入。
  • 不要把KVCache offload这类搬运流当成计算流优化,它优先关注的是状态一致性和带宽掩盖。
  • 不要直接拼接多个案例的代码片段,必须先按当前执行模式选一套主路径。

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

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

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

CANN/elec-ops-inspection:RNN-T Loss优化算子

rnnt-loss-ascend 【免费下载链接】elec-ops-inspection elec-ops-inspection 是 CANN 社区 Electrical Engineering SIG(电力行业兴趣小组)旗下的电力装备巡检算子库, 覆盖 CV 视觉检测与具身智能两大技术路线,面向输电线路、变电…

作者头像 李华
网站建设 2026/5/9 16:23:32

KrkrzExtract实战指南:高效解包krkrz引擎游戏资源的终极解决方案

KrkrzExtract实战指南:高效解包krkrz引擎游戏资源的终极解决方案 【免费下载链接】KrkrzExtract The next generation of KrkrExtract 项目地址: https://gitcode.com/gh_mirrors/kr/KrkrzExtract 在游戏开发和逆向工程领域,处理游戏资源文件是常…

作者头像 李华
网站建设 2026/5/9 16:23:31

CANN/cann-bench ROIAlign算子API描述

ROIAlign 算子 API 描述 【免费下载链接】cann-bench 评测AI在处理CANN领域代码任务的能力,涵盖算子生成、算子优化等领域,支撑模型选型、训练效果评估,统一量化评估标准,识别Agent能力短板,构建CANN领域评测平台&…

作者头像 李华
网站建设 2026/5/9 16:22:00

CANN/AsNumpy 常见问题解答

FAQ 【免费下载链接】asnumpy 哈尔滨工业大学计算学部苏统华、王甜甜老师团队联合华为CANN团队开发的华为昇腾NPU原生Numpy仓库 项目地址: https://gitcode.com/cann/asnumpy Back to README Frequently asked questions about installing and using AsNumpy. How do I c…

作者头像 李华
网站建设 2026/5/9 16:21:54

AI代理开发中MCP工具描述质量优化实践

1. 项目背景与核心挑战在AI代理开发领域,MCP(Modular Cognitive Processing)工具作为核心认知处理模块,其描述质量直接影响着整个系统的决策效率和准确性。过去半年里,我们在三个企业级AI项目中都遇到了相同的问题&…

作者头像 李华