当前位置: 首页 > news >正文

华为昇腾笔记之Mindspeed-LLM 中 MoE 实现机制与重写逻辑总览

🧩 Mindspeed-LLM 的 MoE 实现机制与重写逻辑总览

Mindspeed-LLM 基于 Megatron-Core 的 MoE 框架,在运行前通过一系列 Monkey Patch / Wrapper 注册
将 Megatron 的核心 MoE 模块(Experts 层、Router 路由层、通信调度层)
替换为华为自研的 高效异步 + 通信重叠 + TP/EP 扩展版本


I. Experts 层(GroupedMLP / SequentialMLP / TEGroupedMLP)

🔧 核心修改入口

patch_core_transformers() 中注册:

MegatronAdaptation.register('megatron.core.transformer.moe.experts.GroupedMLP.__init__',groupedmlp_init_wrapper)
MegatronAdaptation.register('megatron.core.transformer.moe.experts.GroupedMLP.forward',groupedmlp_forward 或 group_mlp_forward)
MegatronAdaptation.register('megatron.core.transformer.moe.experts.SequentialMLP.forward',sequential_mlp_forward)

🧠 逻辑核心

模块替换后函数触发条件功能概述
GroupedMLP.init groupedmlp_init_wrapper 总是生效 临时改 TP=1 初始化 GMM 权重,注册 gmm_weight 标记,若 GLU 激活→换为 fused_swiglu
GroupedMLP.forward groupedmlp_forward / group_mlp_forward overlap off / on - off:调用 gg.ops.gmmfused_alltoall_gather_bmm - on:走通信重叠核 (grouped_mlp_with_comp_and_comm_overlap_alltoall/allgather)
SequentialMLP.forward sequential_mlp_forward dispatcher==alltoall 多专家串行执行 + TP all-gather 通信流优化
TEGroupedMLP 不变 保持原 TransformerEngine 路径

⚙️ 调用路径(概览)

GroupedMLP.__init__  →  groupedmlp_init_wrapper
GroupedMLP.forward   ├─ overlap on  → group_mlp_forward│                 └─ grouped_mlp_with_comp_and_comm_overlap_all2all/allgather└─ overlap off → groupedmlp_forward├─ gg.ops.gmm├─ fused_alltoall_gather_bmm└─ fused_bmm_reducescatter_alltoallSequentialMLP.forward ├─ dispatcher==alltoall → sequential_mlp_forward│                          └─ COMM_STREAM + all_gather_last_dim└─ dispatcher==allgather → 原生 forward

🗺️ Experts 模块字符示意图

┌────────────────────────────┐
│ Megatron 原始 Experts     │
│ (GroupedMLP / Sequential) │
└──────────┬────────────────┘│▼
┌────────────────────────────┐
│ Mindspeed Patch 注册逻辑  │
│ (patch_core_transformers) │
└──────────┬────────────────┘│┌──────────────────────────────────────────┐│ 被替换函数一览                          │├──────────────────────────────────────────┤│ GroupedMLP.__init__ → groupedmlp_init_wrapper ││ GroupedMLP.forward  → groupedmlp_forward / group_mlp_forward ││ SequentialMLP.forward → sequential_mlp_forward (仅 alltoall) ││ grouped_gemm_util.* → 自定义 Ops 体系                 │└──────────────────────────────────────────┘↓实际执行路径(动态判定)overlap on  → group_mlp_forwardoverlap off → groupedmlp_forwarddispatcher=alltoall → sequential_mlp_forwarddispatcher=allgather → 原生 forward

🧩 被淘汰函数

原始函数状态
GroupedMLP.__init__ ❌ 永久替换
GroupedMLP.forward ❌ 永久替换
SequentialMLP.forward ⚙️ alltoall 模式下替换
grouped_gemm_util 默认实现 ❌ 替换为自定义 Ops
TEGroupedMLP ✅ 保留原版

II. Router 层(TopKRouter)

🔧 替换注册点

MOERouter.register_patches() 中:

MegatronAdaptation.register('megatron.core.transformer.moe.router.TopKRouter.__init__',topk_router_init_wrapper)
MegatronAdaptation.register('megatron.core.transformer.moe.router.TopKRouter.forward',topk_router_forward)
MegatronAdaptation.register('megatron.core.transformer.moe.router.TopKRouter.gating',topk_router_gating_func)
MegatronAdaptation.register('megatron.core.transformer.moe.router.TopKRouter.routing',topk_router_routing)
MegatronAdaptation.register('megatron.core.transformer.moe.moe_utils.topk_softmax_with_capacity',topk_softmax_with_capacity)

🧠 TopKRouter 逻辑结构

模块替换后函数功能概述
TopKRouter.__init__ topk_router_init_wrapper 初始化 group / n_group / score_fn 等参数
TopKRouter.forward topk_router_forward 主入口:input jitter → gating → routing
TopKRouter.gating topk_router_gating_func logits 线性变换,控制激活方式
TopKRouter.routing topk_router_routing 调度多种路由算法分支
moe_utils.topk_softmax_with_capacity Mindspeed 实现 增强版 softmax+容量控制
(条件)aux_loss_load_balancing 自定义实现 支持异步 overlap / async log loss 等场景

🧮 路由算法分支

topk_router_routing 中,根据 --moe-router-load-balancing-type 分派到:

类型实际函数说明
sinkhorn sinkhorn_load_balancing Sinkhorn 约束分配
aux_loss aux_loss_load_balancing 含负载均衡损失
softmax_topk softmax + topk 普通 softmax 策略
group_limited_greedy group_limited_greedy_topKgating 先选组后选专家
pai_megatron_aux_loss pai_megatron_aux_loss PAI 风格 loss
sparsemixer_topk sparsemixer_top2 稀疏混合器路由
none/noaux_tc topk_softmax_with_capacity 无 loss 简化路由

⚙️ Router 调用主链

TopKRouter.forward├─ topk_router_forward│     ├─ apply_input_jitter (可选)│     ├─ topk_router_gating_func│     ├─ topk_router_routing│     │     ├─ sinkhorn_load_balancing│     │     ├─ aux_loss_load_balancing│     │     ├─ group_limited_greedy_topKgating│     │     ├─ sparsemixer_top2│     │     ├─ pai_megatron_aux_loss│     │     └─ topk_softmax_with_capacity│     └─ apply_z_loss / gather_from_sequence_parallel_region (可选)

🗺️ Router 模块字符示意图

┌────────────────────────────┐
│  Megatron 原始 TopKRouter │
└──────────┬────────────────┘│▼
┌────────────────────────────┐
│  Mindspeed Patch 注册逻辑 │
│  (MOERouter.register_patches) │
└──────────┬────────────────┘│┌──────────────────────────────────────────┐│ 被替换函数一览                          │├──────────────────────────────────────────┤│ TopKRouter.__init__  → topk_router_init_wrapper ││ TopKRouter.forward   → topk_router_forward      ││ TopKRouter.gating    → topk_router_gating_func  ││ TopKRouter.routing   → topk_router_routing      ││ moe_utils.topk_softmax_with_capacity → 自定义版 ││ (条件) TopKRouter.aux_loss_load_balancing → Mindspeed 版 │└──────────────────────────────────────────┘↓实际执行链topk_router_forward├─ gating → topk_router_gating_func├─ routing → topk_router_routing│     ├ sinkhorn_load_balancing│     ├ aux_loss_load_balancing│     ├ group_limited_greedy_topKgating│     ├ sparsemixer_top2│     ├ pai_megatron_aux_loss│     └ topk_softmax_with_capacity└─ apply_z_loss / gather_sequence_parallel (可选)被淘汰:✗ TopKRouter.__init__ (原版)✗ TopKRouter.forward✗ TopKRouter.gating✗ TopKRouter.routing✗ 原版 topk_softmax_with_capacity

III. 🔩 总结:Mindspeed-LLM MoE 的总体演化逻辑

模块原 Megatron 功能Mindspeed 替换方案增强点
Experts (GroupedMLP) 多专家独立 GEMM 通信-计算重叠 / TP-EP 扩展 / fused_swiglu 提升并行效率、减通信瓶颈
SequentialMLP 串行专家推理 TP all-gather + 异步流重叠 支持多专家 alltoall 模式
Router (TopKRouter) softmax+topk 简单 gating 多种策略(Sinkhorn, SparseMixer, Greedy)+ 异步均衡 loss 路由更鲁棒、更灵活
通信核 普通 alltoall / allgather grouped_mlp_with_comp_and_comm_overlap_* 计算与通信异步融合
Checkpoint / 重计算 默认 PyTorch 机制 CheckpointWithoutOutput 自定义 精确控制激活保存与释放

一句话总结:

Mindspeed-LLM 的 MoE 实现在保持 Megatron 接口兼容的同时,
通过 Patch 替换实现了“专家层异步通信 + 重计算优化 + 多策略路由”的闭环体系。
核心思路:GroupedMLP/SequentialMLP 接管专家执行;TopKRouter 接管路由调度。
所有前向路径最终都经由 Mindspeed 自定义函数运行,原始 Megatron 版本仅保留结构壳体

http://www.zskr.cn/news/24319.html

相关文章:

  • 实时时序上下文推荐系统获KDD最佳论文奖
  • 2025年精密磨床/CNC机械加工厂家推荐排行榜,覆盖铣床/车床/磨削/多轴/复合加工,专业非标定制服务首选!
  • 独立开发者找蓝海:新词引流实战
  • 吐槽下小米汽车
  • PlayerPrefs持久化保存
  • 使用VS2022和Unity时可能出现的问题总结
  • 2026 中考游记
  • MinIO 介绍(3)--MinIO 客户端 mc 管理员功能
  • PWN手的成长之路-19-int_overflow
  • 关于火柴盒的记忆
  • 2025 年闪测仪厂家企业品牌推荐排行榜,一键式闪测仪,卧式闪测仪,影像闪测仪,立式闪测仪,2D3D 混合式闪测仪,高精度闪测仪,大量程闪测仪,复合式闪测仪公司推荐
  • 2025 年反应釜厂家企业品牌推荐排行榜,实验室,高压,加氢,不锈钢,试验室,氢化,聚合,高温,钛材反应釜公司推荐
  • 2025 年清污机厂家企业品牌推荐排行榜,四川清污机,格栅清污机,回转式清污机,回转式格栅清污机,不锈钢清污机公司推荐公司推荐
  • 2025年卫衣厂家推荐排行榜,秋冬新款卫衣,情侣卫衣,运动休闲卫衣,潮流时尚卫衣公司推荐!
  • AI视频换人工具来了!动作表情完美还原,附下载链接
  • 下一代超级计算的CPU设计之道
  • 10.18 学校模拟赛 T4
  • 【GitHub-SSH】Linux 通用生产ssh-key命令
  • 2025年不锈钢清洗钝化液厂家推荐榜单,环保型不锈钢管酸洗钝化液,不锈钢清洗剂公司精选!
  • 2025年棒球帽厂家推荐排行榜,运动棒球帽,休闲棒球帽,时尚棒球帽,定制棒球帽公司推荐!
  • 22-envoy-proxy-Ubuntu安装
  • 11. Spring AI + ELT - Rainbow
  • 2025年不锈钢清洗钝化液厂家推荐排行榜,环保型不锈钢管酸洗钝化液,不锈钢清洗剂公司精选!
  • 2025年10月长白山亲子酒店推荐:松果里领衔对比评测排行榜
  • 2025年10月长白山亲子酒店推荐:松果里领衔对比评测榜
  • 2025年10月石墨电极厂家推荐榜:河北晶碳科技深度评测与对比
  • 2025年卫衣厂家推荐排行榜,春秋冬款卫衣,男女同款卫衣,运动休闲卫衣,潮流时尚卫衣公司推荐!
  • 2025年10月北京口腔医院推荐:雅强与劲松领衔对比评测榜
  • 2025年10月智能体公司推荐:五强对比评测榜助企业选型