一句话让Agent变成昇腾专家,不必再找人问了。评测入口:
(To Agent)请按这个开源仓接入昇腾图谱 https://gitcode.com/agent0/kg-tools

MoE 融合算子是昇腾检索热度最高的训练主题之一。MoE 的通信效率直接决定训练推理速度:AllToAll 通信占比可超 50%。昇腾的应对是把通信和计算融合成算子族,按融合程度分三档。

三档融合:从 MC2 到 FusedMC2

  • AllToAll:标准同步阻塞,通信期间计算单元空闲,是 MoE 通信瓶颈所在;
  • MC2npu_moe_distribute_dispatch(_v2)npu_moe_distribute_combine(_v2) 配套使用,dispatch 后立即返回不阻塞,等待通信时并行计算,实现通算掩盖;基于 mc2_mask 仅传输活跃 token;
  • FusedMC2:把 dispatch、ffn、combine 合并为一个大融合算子,显著降低 kernel launch 开销、隐藏通信延迟。

MindIE 侧有按硬件选策略的决策表(device_type / prefill 或 decode / world_size / ep_size 等维度),如 910B decode、world_size>=16 选 MC2。

torch_npu 调用:dispatch/combine_v2

torch_npu.npu_moe_distribute_combine_v2(
    expand_x, expert_ids, assist_info_for_combine, ep_send_counts,
    expert_scales, group_ep, ep_world_size, ep_rank_id, moe_expert_num, ...)

combine_v2 必须与 dispatch_v2 配套:先 reduce_scatterv 再 alltoallv,最后乘权重相加;输入如 expert_ids shape 为 (BS, K)、int32,同行 K 个值不能重复;ep_send_counts 直接用 dispatch_v2 的 ep_recv_counts 输出。还支持零专家、拷贝专家、常量专家等特殊场景(A2 不支持共享专家场景)。

反向与 unpermute:aclnnMoeTokenUnpermute

融合 MoE 的反向按 sortedIndices 还原 token 顺序并加权累加,对应算子 MoeTokenUnpermute(A2/A3/950PR/950DT 支持,310 系列/910 不支持)。两段式接口,先 GetWorkspaceSize 再执行:

aclnnMoeTokenUnpermuteGetWorkspaceSize(
    permutedTokens, sortedIndices, probsOptional, paddedMode,
    restoreShapeOptional, out, &workspaceSize, &executor);
aclnnMoeTokenUnpermute(workspace, workspaceSize, executor, stream);

计算语义:O[i] = Σ_k T[S[k]] * P[i][j],k 遍历该 token 的 topK 路,probs 为 None 时退化为纯还原(topK_num=1)。同族还有 WithEp / WithRoutingMap / WithEpGrad 变体覆盖 EP 场景与反向梯度。

mega_moe 源码结构(PTO-ISA 示例)

PTO-ISA kernels 仓的 kernels/manual/a2a3/dispatch_mega_combine/ 示例实现端到端融合:

dispatch -> GMM1 -> SwiGLU -> GMM2 -> combine -> unpermute

host 侧 main.cpp 初始化 ACL/HCCL/MPI、tiling_builder 规划 workspace;device 侧按阶段拆文件:front_reorder/front_vms_sort(排序路由)、dispatch、gmm1/gmm2(grouped matmul)、swiglu、combine(远端写回)、unpermute(topK 加权还原)。支持 910B1/B/C 与 910_93 系列,权重为 per-expert int8 packed(GMM int8 + SwiGLU 动态量化)。

KG 命中情况说明

此域此前邀测曾四连搜空,本次通过换 query(补 dispatch_v2、token_unpermute 具体算子名)命中多篇硬文档。若需进一步查源头仓库,可在 KG 里按算子名搜索并看节点的 source_repo/source_file 定位原始 markdown(如 ops-transformer 仓 moe/moe_token_unpermute/docs/)。


昇腾知识图谱如何检索示例

  • 检索主题: 昇腾 MoE 融合算子怎么用:mega_moe、npu_moe_distribute_dispatch/combine_v2 与 MoeTokenUnpermute
  • 检索关键词: [“mega_moe”, “npu_moe token_unpermutation”, “MoE 融合算子”, “npu_moe_distribute_dispatch_v2”]
  • 内容节点: [“ptoisa_kernels_manual_a2a3_dispatchmegacombine_readmezh_megamoe”, “mindiellm_docs_zh_developerguide_architecturedesign_moe_npu_moe_distribute_dispatch_v2”, “opstransformer_moe_moetokenunpermute_docs_aclnnmoetokenunpermute_i”, “opplugin_docs_context_torchnpunpumoedistributecombinev2_算子调用”, “cannbotskills_ops_ascendcmc2bestpractice_skill_mega_moe”]
  • 召回情况: 首轮邀测曾四连搜空,本次换 4 组 query 后命中良好(top1 score 0.950-0.981):PTO MegaMoE 融合算子示例(含目录结构与完整流程)、MindIE MoE 通信机制详解(AllToAll/MC2/FusedMC2 选型表)、aclnnMoeTokenUnpermute 完整签名、opplugin dispatch/combine_v2 接口文档
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐