[{"data":1,"prerenderedAt":135},["ShallowReactive",2],{"post-eba8fb8a":3},{"abbrlink":4,"title":5,"date":6,"categories":7,"tags":9,"excerpt":13,"html":14,"toc":15},"eba8fb8a","Megatron-LM 的 MoE 并行：以 DeepSeek-V4 为例","2026-10-26",[8],"懵逼的深度学习",[10,11,12],"分布式训练框架","Megatron-LM","MoE","本文沿 Megatron-LM 的源码，拆解一个 MoE 层里的参数放置、token 分发、专家计算与反向通信，再把它接回 DP、CP 和 PP。算例采用 DeepSeek-V4-Pro 的模型结构。","\u003Cp>本文沿 Megatron-LM 的源码，拆解一个 MoE 层里的参数放置、token 分发、专家计算与反向通信，再把它接回 DP、CP 和 PP。算例采用 DeepSeek-V4-Pro 的模型结构。\u003C\u002Fp>\n\u003Cp>阅读 MoE 代码时，可以一直追踪两个对象：当前这行 token 属于哪个样本、哪个位置；当前这块权重属于哪个专家、哪个矩阵分片。通信改变了它们的位置，参数梯度的归约还要求参与者持有同一逻辑参数。把这两件事对上，大部分并行关系就能顺着代码推出来。\u003C\u002Fp>\n\u003Cp>本文源码范围为 2026-10-26 的 Megatron-LM，链接固定到同一版本。DeepSeek 官方报告描述的是自有训练基础设施，下面的 Megatron 分组是机制算例，未做完整 V4 训练与性能验证。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Ftree\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\" target=\"_blank\" rel=\"noopener noreferrer\">Megatron-LM\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fhtml\u002F2606.19348v1#S3.SS4\" target=\"_blank\" rel=\"noopener noreferrer\">V4 训练框架\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-模型与入口\">模型与入口\u003C\u002Fh2>\n\u003Cp>先固定后面会用到的模型维度。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>V4-Pro 主体\u003C\u002Fth>\n\u003Cth style=\"text-align:right\">数值\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Transformer 块数\u003C\u002Ftd>\n\u003Ctd style=\"text-align:right\">61\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>hidden size，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>h\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">h\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>\u003C\u002Ftd>\n\u003Ctd style=\"text-align:right\">7168\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>每层 routed experts，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>E\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">E\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>\u003C\u002Ftd>\n\u003Ctd style=\"text-align:right\">384\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>每 token 的 routed top-k，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>k\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">k\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0315em;\">k\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>\u003C\u002Ftd>\n\u003Ctd style=\"text-align:right\">6\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>每层 shared expert\u003C\u002Ftd>\n\u003Ctd style=\"text-align:right\">1\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>专家 intermediate size，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>f\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">f\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8889em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1076em;\">f\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>\u003C\u002Ftd>\n\u003Ctd style=\"text-align:right\">3072\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Hash 路由层\u003C\u002Ftd>\n\u003Ctd style=\"text-align:right\">前 3 层\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>这些维度可以对照\u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Fdeepseek-ai\u002FDeepSeek-V4-Pro\u002Fblob\u002Fb5968e9190ef611bbf34a7229255be88a0e937c1\u002Fconfig.json\" target=\"_blank\" rel=\"noopener noreferrer\">官方配置\u003C\u002Fa>。V4-Flash 的层数、hidden size 和专家数不同，本文计算统一使用 Pro。top-6 只包含 routed experts，shared expert 另算。\u003C\u002Fp>\n\u003Cp>一个 token 的 MoE 输出写成：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>y\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmsub>\u003Cmi>F\u003C\u002Fmi>\u003Cmi>s\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmsub>\u003Cmi>x\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003Cmo>+\u003C\u002Fmo>\u003Cmunder>\u003Cmo>∑\u003C\u002Fmo>\u003Cmrow>\u003Cmi>e\u003C\u002Fmi>\u003Cmo>∈\u003C\u002Fmo>\u003Cmsub>\u003Cmi>I\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003C\u002Fmunder>\u003Cmsub>\u003Cmi>g\u003C\u002Fmi>\u003Cmrow>\u003Cmi>t\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmsub>\u003Cmi>F\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmsub>\u003Cmi>x\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmspace width=\"2em\"\u002F>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmsub>\u003Cmi>I\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>k\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\ny_t=F_s(x_t)+\\sum_{e\\in I_t}g_{t,e}F_e(x_t),\\qquad |I_t|=k.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.625em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">y\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">F\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">s\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">+\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:2.4444em;vertical-align:-1.3944em;\">\u003C\u002Fspan>\u003Cspan class=\"mop op-limits\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.05em;\">\u003Cspan style=\"top:-1.8557em;margin-left:0em;\">\u003Cspan class=\"pstrut\" style=\"height:3.05em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003Cspan class=\"mrel mtight\">∈\u003C\u002Fspan>\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0785em;\">I\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2963em;\">\u003Cspan style=\"top:-2.357em;margin-left:-0.0785em;margin-right:0.0714em;\">\u003Cspan class=\"pstrut\" style=\"height:2.5em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size3 size1 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.143em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.05em;\">\u003Cspan class=\"pstrut\" style=\"height:3.05em;\">\u003C\u002Fspan>\u003Cspan>\u003Cspan class=\"mop op-symbol large-op\">∑\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.3944em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">F\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:2em;\">\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">∣\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">I\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">∣\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0315em;\">k\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>x\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>∈\u003C\u002Fmo>\u003Cmsup>\u003Cmi mathvariant=\"double-struck\">R\u003C\u002Fmi>\u003Cmi>h\u003C\u002Fmi>\u003C\u002Fmsup>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">x_t\\in\\mathbb R^h\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6891em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">∈\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8491em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathbb\">R\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.8491em;\">\u003Cspan style=\"top:-3.063em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">h\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 是输入，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>I\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">I_t\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">I\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 是选中的专家集合，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>g\u003C\u002Fmi>\u003Cmrow>\u003Cmi>t\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">g_{t,e}\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7167em;vertical-align:-0.2861em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 是混合权重，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>F\u003C\u002Fmi>\u003Cmi>s\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">F_s\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">F\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">s\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 是 shared expert。先暂时忽略 dropout、padding 和量化，追踪这个式子需要哪些设备一起计算。\u003C\u002Fp>\n\u003Cp>384 个专家的权重需要常驻或按需取回，而一个 token 只执行其中 6 个。以 SwiGLU 的三个矩阵计算，单个 routed expert 有：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>P\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>3\u003C\u002Fmn>\u003Cmi>h\u003C\u002Fmi>\u003Cmi>f\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>3\u003C\u002Fmn>\u003Cmo>×\u003C\u002Fmo>\u003Cmn>7168\u003C\u002Fmn>\u003Cmo>×\u003C\u002Fmo>\u003Cmn>3072\u003C\u002Fmn>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>66\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>060\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>288\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\nP_e=3hf=3\\times7168\\times3072=66,060,288\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8889em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">3\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1076em;\">f\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7278em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">3\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7278em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">7168\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">3072\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8389em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">66\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">060\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">288\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>个参数。这里忽略 bias 与量化元数据。参数的存储量与 token 的计算量按不同规则增长，这也是 MoE 需要单独安排专家并行的原因。\u003C\u002Fp>\n\u003Cp>源码的主要入口如下。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>文件\u003C\u002Fth>\n\u003Cth>先看什么\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fmoe_layer.py\" target=\"_blank\" rel=\"noopener noreferrer\">moe_layer.py\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>MoELayer.forward\u003C\u002Fcode>，各模块怎样串起来\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Frouter.py\" target=\"_blank\" rel=\"noopener noreferrer\">router.py\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>TopKRouter.forward\u003C\u002Fcode>、\u003Ccode>routing\u003C\u002Fcode>、\u003Ccode>_hash_routing\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Ftoken_dispatcher.py\" target=\"_blank\" rel=\"noopener noreferrer\">token_dispatcher.py\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>三类 dispatcher 的六阶段接口\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fexperts.py\" target=\"_blank\" rel=\"noopener noreferrer\">experts.py\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>TEGroupedMLP\u003C\u002Fcode>，本地专家与概率加权\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fparallel_state.py\" target=\"_blank\" rel=\"noopener noreferrer\">parallel_state.py\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>RankGenerator\u003C\u002Fcode>、\u003Ccode>initialize_model_parallel\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fdistributed\u002Fdistributed_data_parallel.py\" target=\"_blank\" rel=\"noopener noreferrer\">distributed_data_parallel.py\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd>dense\u002Fexpert 参数分组与梯度缩放\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>先沿普通 AlltoAll 训练路径读。Flex、GTP 和虚拟专家在后面接上，每条支路仍用参数和 token 的归属来解释。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-两套并行网格\">两套并行网格\u003C\u002Fh2>\n\u003Cp>Megatron 的 MoE Parallel Folding 允许 attention 和 routed experts 使用两套设备网格。\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fhtml\u002F2504.14960v3#S3.SS2\" target=\"_blank\" rel=\"noopener noreferrer\">论文 §3.2\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>设总设备数为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>N\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">N\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.109em;\">N\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，流水线并行度为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>P\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">P\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。暂时取 GTP、EGTP 为 1，则同一批设备满足：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi>N\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>P\u003C\u002Fmi>\u003Cmtext> \u003C\u002Fmtext>\u003Cmi>T\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmtext> \u003C\u002Fmtext>\u003Cmi>C\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmtext> \u003C\u002Fmtext>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>P\u003C\u002Fmi>\u003Cmtext> \u003C\u002Fmtext>\u003Cmi>E\u003C\u002Fmi>\u003Cmi>T\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmtext> \u003C\u002Fmtext>\u003Cmi>E\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmtext> \u003C\u002Fmtext>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\nN=P\\,TP\\,CP\\,D_a\n =P\\,ETP\\,EP\\,D_e.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.109em;\">N\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">T\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">a\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">T\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">D_a\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">a\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 是 attention 的数据并行度，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">D_e\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 是 expert data parallelism，后面简称 EDP。几种并行分别切不同对象。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>维度\u003C\u002Fth>\n\u003Cth>切分对象\u003C\u002Fth>\n\u003Cth>MoE 中的含义\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>TP\u003C\u002Ftd>\n\u003Ctd>dense 层内矩阵\u003C\u002Ftd>\n\u003Ctd>attention 和 shared expert 的张量并行\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>SP\u003C\u002Ftd>\n\u003Ctd>TP 组内的 token 激活\u003C\u002Ftd>\n\u003Ctd>在 LayerNorm、router 等位置分开保存 token\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>CP\u003C\u002Ftd>\n\u003Ctd>同一条序列的上下文\u003C\u002Ftd>\n\u003Ctd>attention 交换上下文，MoE 接收本地 token\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>EP\u003C\u002Ftd>\n\u003Ctd>不同专家\u003C\u002Ftd>\n\u003Ctd>一个 rank 只保存部分专家\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>ETP\u003C\u002Ftd>\n\u003Ctd>同一专家的矩阵\u003C\u002Ftd>\n\u003Ctd>同一专家由多个 rank 共同计算\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>EDP\u003C\u002Ftd>\n\u003Ctd>同一专家分片的副本\u003C\u002Ftd>\n\u003Ctd>汇总不同输入对同一参数的梯度\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>PP\u003C\u002Ftd>\n\u003Ctd>模型深度\u003C\u002Ftd>\n\u003Ctd>stage 之间传激活和输入梯度\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>SP 使用 TP 组，不额外增加设备维度。EP 已经出现在专家网格中，也不能在 attention 网格的等式右边再乘一次。 当前普通 \u003Ccode>MoELayer.forward\u003C\u002Fcode> 还会检查训练时 attention TP&gt;1 必须开启 SP；本文 V4 算例取 TP1，不触发这项条件。\u003C\u002Fp>\n\u003Cp>为什么能这样折叠？attention 需要知道 token 属于哪条序列、能看哪些上下文；专家 FFN 对每一行独立计算。进入 MoE 后，来自不同序列或不同上下文分片的行，可以按专家重新分组。输出送回时，仍恢复原来的 token 位置。\u003C\u002Fp>\n\u003Cp>这里还要区分 \u003Ccode>dp\u003C\u002Fcode> 和 \u003Ccode>dp_cp\u003C\u002Fcode>。CP ranks 处理的是同一序列的不同位置，参数共享，但它们各自产生的参数梯度需要相加。dense reducer 通常使用包含 CP 的 \u003Ccode>dp_cp\u003C\u002Fcode>。\u003Ccode>expt_dp\u003C\u002Fcode> 已经按专家网格建立，不能再凭习惯给它额外乘一次 CP。\u003C\u002Fp>\n\u003Ch3 id=\"post-heading-一个分组算例\">一个分组算例\u003C\u002Fh3>\n\u003Cp>固定下面一组数值，用于后面的 V4 数据流计算。\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-code-block>\u003Cdiv class=\"code-toolbar\">\u003Cspan class=\"code-language\">text\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"code-copy\" data-copy-code aria-label=\"复制代码\" title=\"复制代码\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"8\" y=\"8\" width=\"13\" height=\"13\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"code-viewport\">\u003Cdiv class=\"code-line-numbers\" aria-hidden=\"true\">\u003Cspan>1\u003C\u002Fspan>\u003Cspan>2\u003C\u002Fspan>\u003Cspan>3\u003C\u002Fspan>\u003Cspan>4\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"hljs\" tabindex=\"0\" aria-label=\"代码，超出宽度时可横向滚动\">\u003Ccode>N = 1024       PP = 8\nTP = 1         CP = 2\nETP = 1        EP = 64\nGTP = EGTP = 1\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>于是：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi>N\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>128\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmspace width=\"1em\"\u002F>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>128\u003C\u002Fmn>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmn>1\u003C\u002Fmn>\u003Cmo>×\u003C\u002Fmo>\u003Cmn>2\u003C\u002Fmn>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>64\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmspace width=\"1em\"\u002F>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>128\u003C\u002Fmn>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmn>1\u003C\u002Fmn>\u003Cmo>×\u003C\u002Fmo>\u003Cmn>64\u003C\u002Fmn>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>2.\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\nN\u002FP=128,\\quad D_a=128\u002F(1\\times2)=64,\n\\quad D_e=128\u002F(1\\times64)=2.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.109em;\">N\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8778em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">128\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:1em;\">\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">a\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">128\u002F\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord\">1\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">2\u003C\u002Fspan>\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8778em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">64\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:1em;\">\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">128\u002F\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord\">1\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">64\u003C\u002Fspan>\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">2.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>每个 stage 的 128 张卡，在 attention 看来是 64 个样本副本，每个副本用 2 卡处理上下文；在 expert 看来是 2 份完整专家集合，每份分布在 64 卡上。每 rank 每个 MoE 层保存 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmn>384\u003C\u002Fmn>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmn>64\u003C\u002Fmn>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>6\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">384\u002F64=6\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">384\u002F64\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">6\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 个 routed experts。 常规等分实现要求专家数能被 EP 整除，专家矩阵相应维度也要满足 ETP 的整除与算子对齐条件。\u003C\u002Fp>\n\u003Cp>这组数只证明设备数能对上。61 个块怎样划给 8 个 stage、是否包含 MTP、显存能否装下，都需要另行安排。V4 的 HybridModel 还使用 layer pattern 描述模型与流水线边界，不能直接把这段数值当成启动命令。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Ftraining\u002Fmodels\u002Fdeepseek_v4.py\" target=\"_blank\" rel=\"noopener noreferrer\">模型构建\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-进程组的成员\">进程组的成员\u003C\u002Fh2>\n\u003Cp>\u003Ccode>initialize_model_parallel\u003C\u002Fcode> 分别建立 dense 和 expert 的 \u003Ccode>RankGenerator\u003C\u002Fcode>，再检查两套网格的 PP 组一致。普通布局下，dense generator 的 EP 轴取 1，expert generator 的 CP 轴取 1。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fparallel_state.py#L933\" target=\"_blank\" rel=\"noopener noreferrer\">组初始化\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>沿用默认顺序 \u003Ccode>tp-cp-ep-dp-pp\u003C\u002Fcode>，并忽略大小为 1 的轴。stage 0 的 rank 为 0 到 127，可以同时用两种坐标表示：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi>r\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>c\u003C\u002Fmi>\u003Cmo>+\u003C\u002Fmo>\u003Cmn>2\u003C\u002Fmn>\u003Cmsub>\u003Cmi>d\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003Cmo>+\u003C\u002Fmo>\u003Cmn>64\u003C\u002Fmn>\u003Cmsub>\u003Cmi>d\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\nr=c+2d_a=e+64d_e.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.4306em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">r\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6667em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">c\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">+\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8444em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">2\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">d\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">a\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6667em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">e\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">+\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8444em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">64\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">d\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>这里 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>c\u003C\u002Fmi>\u003Cmo>∈\u003C\u002Fmo>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmn>0\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>1\u003C\u002Fmn>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">c\\in[0,1]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.5782em;vertical-align:-0.0391em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">c\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">∈\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord\">0\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">1\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>d\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>∈\u003C\u002Fmo>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmn>0\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>63\u003C\u002Fmn>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">d_a\\in[0,63]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8444em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">d\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">a\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">∈\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord\">0\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">63\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>e\u003C\u002Fmi>\u003Cmo>∈\u003C\u002Fmo>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmn>0\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>63\u003C\u002Fmn>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">e\\in[0,63]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.5782em;vertical-align:-0.0391em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">e\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">∈\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord\">0\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">63\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>d\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>∈\u003C\u002Fmo>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmn>0\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>1\u003C\u002Fmn>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">d_e\\in[0,1]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8444em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">d\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">∈\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord\">0\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">1\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。注意 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">e\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.4306em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 在这个等式中是 EP rank，模型的全局 expert ID 另用下标说明。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>rank 0 所在组\u003C\u002Fth>\n\u003Cth>成员\u003C\u002Fth>\n\u003Cth>共同完成什么\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>CP\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[0, 1]\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>同一 microbatch 的两份上下文分片\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>DP\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[0, 2, 4, ..., 126]\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>相同 CP 位置上的不同样本\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>DP×CP\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[0, 1, ..., 127]\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>dense 参数的梯度汇总\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>EP\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[0, 1, ..., 63]\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>一份专家集合的 token 交换\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>EDP\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[0, 64]\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>同一组本地专家的两份参数副本\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>PP\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[0, 128, ..., 896]\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>相邻模型 stage 的连接\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>在连续专家分配下，EP rank 0 保存 expert 0–5，EP rank 1 保存 expert 6–11。全局 rank 0 和 64 都保存本 stage 的 expert 0–5；rank 0 和 1 则保存不同专家，不能把它们的权重梯度逐元素平均。\u003C\u002Fp>\n\u003Cp>CP 组和 EP 组存在重叠很正常。一个 process 可以参与多种通信组，程序根据当前操作选择 group。逻辑 rank 邻近也不保证物理上位于同一节点，实际映射仍取决于 launcher 与硬件拓扑。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-moelayer-的调用链\">MoELayer 的调用链\u003C\u002Fh2>\n\u003Cp>\u003Ccode>MoELayer.forward\u003C\u002Fcode> 的普通训练流程可以缩成下面的伪代码。这里保留调用关系，省略 CUDA Graph、重算和推理分支，不是可直接运行的实现。\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-code-block>\u003Cdiv class=\"code-toolbar\">\u003Cspan class=\"code-language\">python\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"code-copy\" data-copy-code aria-label=\"复制代码\" title=\"复制代码\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"8\" y=\"8\" width=\"13\" height=\"13\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"code-viewport\">\u003Cdiv class=\"code-line-numbers\" aria-hidden=\"true\">\u003Cspan>1\u003C\u002Fspan>\u003Cspan>2\u003C\u002Fspan>\u003Cspan>3\u003C\u002Fspan>\u003Cspan>4\u003C\u002Fspan>\u003Cspan>5\u003C\u002Fspan>\u003Cspan>6\u003C\u002Fspan>\u003Cspan>7\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"hljs\" tabindex=\"0\" aria-label=\"代码，超出宽度时可横向滚动\">\u003Ccode>shared = shared_experts_compute(x)\nweights, routes = route(x, input_ids=ids)\nsend_x, send_p = preprocess(x, weights, routes)\nrecv_x, recv_p = dispatch(send_x, send_p)\npartial_y, bias = routed_experts_compute(recv_x, recv_p)\nreturned_y = combine(partial_y)\ny = postprocess(returned_y, shared)\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>shared 分支的实际启动位置可以调整。\u003Ccode>routed_experts_compute\u003C\u002Fcode> 内部还包含 dispatcher 的后处理和 combine 预处理，不能把它理解成一个单独 GEMM。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fmoe_layer.py#L703\" target=\"_blank\" rel=\"noopener noreferrer\">前向调用\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>dispatcher 的六个阶段全在前向执行：\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fimage\u002Fmegatron-moe-v4\u002Fmoe-forward.svg\" alt=\"MoE 前向六阶段的数据流\">\u003C\u002Fp>\n\u003Cp>\u003Ccode>combine\u003C\u002Fcode> 需要在前向把专家结果送回，模型才能继续执行下一层。随后 autograd 再为这些操作建立反向。\u003C\u002Fp>\n\u003Cp>读代码时，还有一个影响后文所有 shape 的字段：\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-code-block>\u003Cdiv class=\"code-toolbar\">\u003Cspan class=\"code-language\">python\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"code-copy\" data-copy-code aria-label=\"复制代码\" title=\"复制代码\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"8\" y=\"8\" width=\"13\" height=\"13\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"code-viewport\">\u003Cdiv class=\"code-line-numbers\" aria-hidden=\"true\">\u003Cspan>1\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"hljs\" tabindex=\"0\" aria-label=\"代码，超出宽度时可横向滚动\">\u003Ccode>\u003Cspan class=\"hljs-variable language_\">self\u003C\u002Fspan>.tp_group = pg_collection.expt_tp\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>这行在 dispatcher 基类里。因此 dispatcher 的 \u003Ccode>tp_size\u003C\u002Fcode> 指 ETP；shared expert 中的 \u003Ccode>tp_group\u003C\u002Fcode> 则来自 \u003Ccode>pg_collection.tp\u003C\u002Fcode>。两处同名变量需要按构造位置解释。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Ftoken_dispatcher.py#L90\" target=\"_blank\" rel=\"noopener noreferrer\">dispatcher 基类\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fshared_experts.py#L132\" target=\"_blank\" rel=\"noopener noreferrer\">shared expert 构造\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-路由与负载\">路由与负载\u003C\u002Fh2>\n\u003Ch3 id=\"post-heading-路由张量\">路由张量\u003C\u002Fh3>\n\u003Cp>设进入 router 的激活为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmsub>\u003Cmi>s\u003C\u002Fmi>\u003Cmrow>\u003Cmi>l\u003C\u002Fmi>\u003Cmi>o\u003C\u002Fmi>\u003Cmi>c\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003Cmi>l\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>b\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[s_{local},b,h]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">s\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3361em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0197em;\">l\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">oc\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">a\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0197em;\">l\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">b\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，展平后有 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>n\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmsub>\u003Cmi>s\u003C\u002Fmi>\u003Cmrow>\u003Cmi>l\u003C\u002Fmi>\u003Cmi>o\u003C\u002Fmi>\u003Cmi>c\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003Cmi>l\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmi>b\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">n=s_{local}b\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.4306em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">n\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8444em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">s\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3361em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0197em;\">l\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">oc\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">a\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0197em;\">l\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">b\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 行。gating linear 把 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmi>n\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[n,h]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">n\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 映射为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmi>n\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>E\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[n,E]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">n\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> logits。\u003C\u002Fp>\n\u003Cp>后面的 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>n\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.4306em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 都指实际 tensor 行数。如果输入已经按 CP、SP 切分，就直接数本地行，避免重复除并行度。普通 TP+SP 布局中可写成 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>n\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>b\u003C\u002Fmi>\u003Cmi>S\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmi>C\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmtext> \u003C\u002Fmtext>\u003Cmi>T\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">n=bS\u002F(CP\\,TP)\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.4306em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">n\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">b\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">S\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">T\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>；本文 V4 算例 TP1，因此是 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>b\u003C\u002Fmi>\u003Cmi>S\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi>C\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">bS\u002FCP\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">b\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">S\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。\u003C\u002Fp>\n\u003Cp>V4 使用的 affinity 和选择过程可以表示为：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>a\u003C\u002Fmi>\u003Cmrow>\u003Cmi>t\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmsqrt>\u003Cmrow>\u003Cmi mathvariant=\"normal\">softplus\u003C\u002Fmi>\u003Cmo>⁡\u003C\u002Fmo>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmsub>\u003Cmi mathvariant=\"normal\">ℓ\u003C\u002Fmi>\u003Cmrow>\u003Cmi>t\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003C\u002Fmrow>\u003C\u002Fmsqrt>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmspace width=\"2em\"\u002F>\u003Cmsub>\u003Cmi>I\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmsub>\u003Cmrow>\u003Cmi mathvariant=\"normal\">TopK\u003C\u002Fmi>\u003Cmo>⁡\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmsub>\u003Cmi>a\u003C\u002Fmi>\u003Cmrow>\u003Cmi>t\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo>+\u003C\u002Fmo>\u003Cmsub>\u003Cmi>β\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\na_{t,e}=\\sqrt{\\operatorname{softplus}(\\ell_{t,e})},\\qquad\nI_t=\\operatorname{TopK}_e(a_{t,e}+\\beta_e),\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7167em;vertical-align:-0.2861em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">a\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1.84em;vertical-align:-0.5742em;\">\u003C\u002Fspan>\u003Cspan class=\"mord sqrt\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.2658em;\">\u003Cspan class=\"svg-align\" style=\"top:-3.8em;\">\u003Cspan class=\"pstrut\" style=\"height:3.8em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\" style=\"padding-left:1em;\">\u003Cspan class=\"mop\">\u003Cspan class=\"mord mathrm\">softplus\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord\">ℓ\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.2258em;\">\u003Cspan class=\"pstrut\" style=\"height:3.8em;\">\u003C\u002Fspan>\u003Cspan class=\"hide-tail\" style=\"min-width:1.02em;height:1.88em;\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"400em\" height=\"1.88em\" viewBox=\"0 0 400000 1944\" preserveAspectRatio=\"xMinYMin slice\">\u003Cpath d=\"M983 90\nl0 -0\nc4,-6.7,10,-10,18,-10 H400000v40\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM1001 80h400000v40h-400000z\"\u002F>\u003C\u002Fsvg>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.5742em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:2em;\">\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">I\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1.0361em;vertical-align:-0.2861em;\">\u003C\u002Fspan>\u003Cspan class=\"mop\">\u003Cspan class=\"mop\">\u003Cspan class=\"mord mathrm\">TopK\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.0573em;\">\u003Cspan style=\"top:-2.4559em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2441em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">a\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">+\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0528em;\">β\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0528em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>g\u003C\u002Fmi>\u003Cmrow>\u003Cmi>t\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>α\u003C\u002Fmi>\u003Cmfrac>\u003Cmsub>\u003Cmi>a\u003C\u002Fmi>\u003Cmrow>\u003Cmi>t\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmrow>\u003Cmunder>\u003Cmo>∑\u003C\u002Fmo>\u003Cmrow>\u003Cmi>j\u003C\u002Fmi>\u003Cmo>∈\u003C\u002Fmo>\u003Cmsub>\u003Cmi>I\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003C\u002Fmunder>\u003Cmsub>\u003Cmi>a\u003C\u002Fmi>\u003Cmrow>\u003Cmi>t\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>j\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003C\u002Fmfrac>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmspace width=\"1em\"\u002F>\u003Cmi>e\u003C\u002Fmi>\u003Cmo>∈\u003C\u002Fmo>\u003Cmsub>\u003Cmi>I\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\ng_{t,e}=\\alpha\\frac{a_{t,e}}{\\sum_{j\\in I_t}a_{t,j}},\\quad e\\in I_t.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7167em;vertical-align:-0.2861em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:2.2294em;vertical-align:-1.1218em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0037em;\">α\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mopen nulldelimiter\">\u003C\u002Fspan>\u003Cspan class=\"mfrac\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.1076em;\">\u003Cspan style=\"top:-2.314em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mop\">\u003Cspan class=\"mop op-symbol small-op\" style=\"position:relative;top:0em;\">∑\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1786em;\">\u003Cspan style=\"top:-2.4003em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0572em;\">j\u003C\u002Fspan>\u003Cspan class=\"mrel mtight\">∈\u003C\u002Fspan>\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0785em;\">I\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2963em;\">\u003Cspan style=\"top:-2.357em;margin-left:-0.0785em;margin-right:0.0714em;\">\u003Cspan class=\"pstrut\" style=\"height:2.5em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size3 size1 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.143em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.4358em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">a\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3117em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0572em;\">j\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.23em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"frac-line\" style=\"border-bottom-width:0.04em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.677em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">a\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.1218em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose nulldelimiter\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:1em;\">\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">e\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">∈\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">I\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>β\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\\beta_e\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8889em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0528em;\">β\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0528em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 是负载控制用的 expert bias，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>α\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\\alpha\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.4306em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0037em;\">α\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 是路由缩放系数。选择时使用偏置，混合权重取原始 affinity；expert bias 也与 gating linear 的普通 bias 不同。\u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Fdeepseek-ai\u002FDeepSeek-V4-Pro\u002Fblob\u002Fb5968e9190ef611bbf34a7229255be88a0e937c1\u002Finference\u002Fmodel.py#L546\" target=\"_blank\" rel=\"noopener noreferrer\">官方 Gate\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fmoe_utils.py#L978\" target=\"_blank\" rel=\"noopener noreferrer\">Megatron 路由工具\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>普通 AlltoAll 路径输出 \u003Ccode>probs[n,E]\u003C\u002Fcode> 和 bool \u003Ccode>routing_map[n,E]\u003C\u002Fcode>。前者在选中位置存权重，其余为零；后者表示 assignment。部分 Flex 路径改用紧凑的 \u003Ccode>indices[n,k]\u003C\u002Fcode>，阅读后端时要核对具体格式，不能把所有 \u003Ccode>routing_map\u003C\u002Fcode> 都当 bool 矩阵。\u003C\u002Fp>\n\u003Ch3 id=\"post-heading-hash-路由\">Hash 路由\u003C\u002Fh3>\n\u003Cp>V4 前三层由 token ID 查表取得专家 ID，后面的专家通信仍然存在。相同 token ID 在不同上下文里会得到不同 hidden states，专家输出和混合权重也可能不同。\u003C\u002Fp>\n\u003Cp>Megatron 的 \u003Ccode>_hash_routing\u003C\u002Fcode> 保留了 gating 与权重计算，只替换专家选择。还有一个容易漏掉的排列关系：hidden 从 \u003Ccode>[S,B,H]\u003C\u002Fcode> 展平，而 \u003Ccode>input_ids\u003C\u002Fcode> 以 \u003Ccode>[B,S]\u003C\u002Fcode> 传入，因此源码先 \u003Ccode>input_ids.T.reshape(-1)\u003C\u002Fcode>，使 token ID 与 hidden 的每行对齐。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Frouter.py#L1012\" target=\"_blank\" rel=\"noopener noreferrer\">Hash 实现\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>当前初始化中的 round-robin \u003Ccode>tid2eid\u003C\u002Fcode> 是带 warning 的占位表。使用已有 V4 checkpoint 时需要正确加载表；从头训练则需要明确初始化策略。占位公式本身不能当成 DeepSeek 公布的 Hash 构造算法。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Frouter.py#L361\" target=\"_blank\" rel=\"noopener noreferrer\">表初始化\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3 id=\"post-heading-均衡统计\">均衡统计\u003C\u002Fh3>\n\u003Cp>router 的通信不只有发送 token。它还可能汇总专家计数、计算 aux loss，或更新 expert bias。\u003C\u002Fp>\n\u003Cp>local aux loss 的统计默认涉及 TP×CP，global aux loss 将范围扩到 TP×DP×CP，并维护累积步的统计。expert bias 也汇总 global batch 的负载，按更新规则调整偏置，走的是统计更新，不靠 optimizer 对 bias 求梯度。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Frouter.py#L701\" target=\"_blank\" rel=\"noopener noreferrer\">统计组\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fdistributed\u002Ffinalize_model_grads.py\" target=\"_blank\" rel=\"noopener noreferrer\">bias 更新\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ccode>MoEAuxLossAutoScaler\u003C\u002Fcode> 在 forward 原样传递主激活，在 backward 给 aux loss 接上缩放后的梯度。所以只在主模型里搜索 \u003Ccode>loss += aux_loss\u003C\u002Fcode>，可能找不到完整的训练目标。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fmoe_utils.py#L318\" target=\"_blank\" rel=\"noopener noreferrer\">辅助损失接图\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>group-limited routing 先选专家组，再在选中组里选 top-k。组只有与专家的物理放置对应时，才可解释成限制目的节点。V4 已取消路由目标节点数限制，不应把 V3 的 node-limited 设置放进 V4 的必要条件。\u003C\u002Fp>\n\u003Cp>最后区分三件事。Dropless 保留有效路由，允许各专家 token 数变化；capacity dropping 会移除超额 assignment；量化 padding 则补齐矩阵行数。训练样本数、有效 assignment 数、GEMM 实际执行行数需要分别统计。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-alltoall-的前向\">AlltoAll 的前向\u003C\u002Fh2>\n\u003Cp>接下来读 \u003Ccode>MoEAlltoAllTokenDispatcher\u003C\u002Fcode>。先取 ETP1、dropless、没有额外 padding，hidden 为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmi>n\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[n,h]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">n\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，每个 token 恰好有 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>k\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">k\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0315em;\">k\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 个 assignment。\u003C\u002Fp>\n\u003Ch3 id=\"post-heading-计数与重排\">计数与重排\u003C\u002Fh3>\n\u003Cp>\u003Ccode>preprocess\u003C\u002Fcode> 沿 \u003Ccode>routing_map\u003C\u002Fcode> 的 token 维求和，得到每个专家的 assignment 数。假设每 rank 放 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>L\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>E\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi>E\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">L=E\u002FEP\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">L\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 个连续专家，本地发往目标 EP rank \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>j\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">j\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.854em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0572em;\">j\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 的行数为：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi mathvariant=\"normal\">input_splits\u003C\u002Fmi>\u003Cmo>⁡\u003C\u002Fmo>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmi>j\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003Cmo>=\u003C\u002Fmo>\u003Cmunderover>\u003Cmo>∑\u003C\u002Fmo>\u003Cmrow>\u003Cmi>e\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>j\u003C\u002Fmi>\u003Cmi>L\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cmrow>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmi>j\u003C\u002Fmi>\u003Cmo>+\u003C\u002Fmo>\u003Cmn>1\u003C\u002Fmn>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003Cmi>L\u003C\u002Fmi>\u003Cmo>−\u003C\u002Fmo>\u003Cmn>1\u003C\u002Fmn>\u003C\u002Fmrow>\u003C\u002Fmunderover>\u003Cmi mathvariant=\"normal\">count\u003C\u002Fmi>\u003Cmo>⁡\u003C\u002Fmo>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\n\\operatorname{input\\_splits}[j]\n=\\sum_{e=jL}^{(j+1)L-1}\\operatorname{count}[e].\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1.06em;vertical-align:-0.31em;\">\u003C\u002Fspan>\u003Cspan class=\"mop\">\u003Cspan class=\"mord mathrm\">input_splits\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0572em;\">j\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:3.3914em;vertical-align:-1.4304em;\">\u003C\u002Fspan>\u003Cspan class=\"mop op-limits\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.961em;\">\u003Cspan style=\"top:-1.8557em;margin-left:0em;\">\u003Cspan class=\"pstrut\" style=\"height:3.05em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003Cspan class=\"mrel mtight\">=\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0572em;\">j\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">L\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.05em;\">\u003Cspan class=\"pstrut\" style=\"height:3.05em;\">\u003C\u002Fspan>\u003Cspan>\u003Cspan class=\"mop op-symbol large-op\">∑\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-4.386em;margin-left:0em;\">\u003Cspan class=\"pstrut\" style=\"height:3.05em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mopen mtight\">(\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0572em;\">j\u003C\u002Fspan>\u003Cspan class=\"mbin mtight\">+\u003C\u002Fspan>\u003Cspan class=\"mord mtight\">1\u003C\u002Fspan>\u003Cspan class=\"mclose mtight\">)\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">L\u003C\u002Fspan>\u003Cspan class=\"mbin mtight\">−\u003C\u002Fspan>\u003Cspan class=\"mord mtight\">1\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.4304em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mop\">\u003Cspan class=\"mord mathrm\">count\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">e\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>计数在 ETP×EP 域内交换，再推导当前 rank 从各来源接收多少行，形成 \u003Ccode>output_splits\u003C\u002Fcode>；ETP&gt;1 时还需要后续 AllGather 的变长信息。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Ftoken_dispatcher.py#L515\" target=\"_blank\" rel=\"noopener noreferrer\">计数与 split\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>第一次 \u003Ccode>permute\u003C\u002Fcode> 把同一专家的行排到一起，并复制多路选择的 token：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi>X\u003C\u002Fmi>\u003Cmo>:\u003C\u002Fmo>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmi>n\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003Cmo>⟶\u003C\u002Fmo>\u003Cmsub>\u003Cmi>X\u003C\u002Fmi>\u003Cmrow>\u003Cmi>s\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003Cmi>n\u003C\u002Fmi>\u003Cmi>d\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo>:\u003C\u002Fmo>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmi>n\u003C\u002Fmi>\u003Cmi>k\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\nX:[n,h]\\longrightarrow X_{send}:[nk,h].\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">X\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">:\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">n\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">⟶\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">X\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3361em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">se\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">n\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">d\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">:\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0315em;\">nk\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>\u003Ccode>probs\u003C\u002Fcode> 按相同顺序重排。由于同一个 rank 的专家 ID 连续，按 expert 排序后，也就形成按目标 rank 分块的发送缓冲。\u003C\u002Fp>\n\u003Cp>先用四个 token 算一次 split。令 EP2、ETP1、专家数4，rank 0 保存 expert 0\u002F1，rank 1 保存 expert 2\u002F3，每个 token 选两个专家。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>token 来源\u003C\u002Fth>\n\u003Cth>选择\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>rank 0 的 a\u003C\u002Ftd>\n\u003Ctd>expert 0、2\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>rank 0 的 b\u003C\u002Ftd>\n\u003Ctd>expert 1、2\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>rank 1 的 c\u003C\u002Ftd>\n\u003Ctd>expert 0、3\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>rank 1 的 d\u003C\u002Ftd>\n\u003Ctd>expert 2、3\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>rank 0 发送给两个目的 rank 的行数为 \u003Ccode>[2,2]\u003C\u002Fcode>，rank 1 为 \u003Ccode>[1,3]\u003C\u002Fcode>。因此 rank 0 的 \u003Ccode>output_splits\u003C\u002Fcode> 为 \u003Ccode>[2,1]\u003C\u002Fcode>，rank 1 为 \u003Ccode>[2,3]\u003C\u002Fcode>，实际各接收3行和5行。两边原本各有2个 token、各产生4个 assignment，接收量仍然可以不同。返回后，a 的原位置累加 expert 0 与2的加权结果，其他 token 同理。\u003C\u002Fp>\n\u003Cp>这里的“permutation”包含复制。\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>k\u003C\u002Fmi>\u003Cmo>&gt;\u003C\u002Fmo>\u003Cmn>1\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">k&gt;1\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7335em;vertical-align:-0.0391em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0315em;\">k\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">&gt;\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">1\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 时，输入输出行数不同，后面求反向时不能把它当成方阵的可逆置换。\u003C\u002Fp>\n\u003Ch3 id=\"post-heading-ep-交换\">EP 交换\u003C\u002Fh3>\n\u003Cp>\u003Ccode>token_dispatch\u003C\u002Fcode> 用 \u003Ccode>self.ep_group\u003C\u002Fcode> 执行可变长 AlltoAll，hidden 和概率各自交换。所有参与者遵循同一组的 rank 顺序与 split 约定，目标设备只接收分配给本地专家的 assignment。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Ftoken_dispatcher.py#L696\" target=\"_blank\" rel=\"noopener noreferrer\">dispatch\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>以两 rank、每 rank 两个专家为例，接收缓冲可能排列为：\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-code-block>\u003Cdiv class=\"code-toolbar\">\u003Cspan class=\"code-language\">text\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"code-copy\" data-copy-code aria-label=\"复制代码\" title=\"复制代码\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"8\" y=\"8\" width=\"13\" height=\"13\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"code-viewport\">\u003Cdiv class=\"code-line-numbers\" aria-hidden=\"true\">\u003Cspan>1\u003C\u002Fspan>\u003Cspan>2\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"hljs\" tabindex=\"0\" aria-label=\"代码，超出宽度时可横向滚动\">\u003Ccode>来源 rank 0: expert A 的块 | expert B 的块\n来源 rank 1: expert A 的块 | expert B 的块\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>GEMM 需要的却是：\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-code-block>\u003Cdiv class=\"code-toolbar\">\u003Cspan class=\"code-language\">text\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"code-copy\" data-copy-code aria-label=\"复制代码\" title=\"复制代码\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"8\" y=\"8\" width=\"13\" height=\"13\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"code-viewport\">\u003Cdiv class=\"code-line-numbers\" aria-hidden=\"true\">\u003Cspan>1\u003C\u002Fspan>\u003Cspan>2\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"hljs\" tabindex=\"0\" aria-label=\"代码，超出宽度时可横向滚动\">\u003Ccode>expert A: 来源 0 的块 | 来源 1 的块\nexpert B: 来源 0 的块 | 来源 1 的块\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>这就是 \u003Ccode>dispatch_postprocess\u003C\u002Fcode> 再做一次 chunk 排序的原因。第一次重排服务发送目的地，第二次重排服务本地专家计算，二者解决不同的布局问题。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Ftoken_dispatcher.py#L742\" target=\"_blank\" rel=\"noopener noreferrer\">接收后处理\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>普通可变长 collective 还需要 host 可读的 split。代码通过专门的 DtoH stream 和延后同步覆盖部分开销。即使 dropless 下总发送量 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>n\u003C\u002Fmi>\u003Cmi>k\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">nk\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0315em;\">nk\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 已知，各目标 rank 的动态接收量仍可能需要同步；总行数静态不代表整个路径没有 GPU→CPU 等待。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-etp-里的矩阵\">ETP 里的矩阵\u003C\u002Fh2>\n\u003Cp>EP 决定本地有哪些专家，ETP 决定每个专家的矩阵如何切开。\u003C\u002Fp>\n\u003Cp>采用数学上的 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>X\u003C\u002Fmi>\u003Cmi>W\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">XW\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">X\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">W\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 记号，一个 SwiGLU expert 为：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>F\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmi>X\u003C\u002Fmi>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003Cmo>=\u003C\u002Fmo>\u003Cmo fence=\"false\" stretchy=\"true\" minsize=\"1.2em\" maxsize=\"1.2em\">(\u003C\u002Fmo>\u003Cmi mathvariant=\"normal\">SiLU\u003C\u002Fmi>\u003Cmo>⁡\u003C\u002Fmo>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmi>X\u003C\u002Fmi>\u003Cmsub>\u003Cmi>W\u003C\u002Fmi>\u003Cmrow>\u003Cmi>g\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003Cmo>⊙\u003C\u002Fmo>\u003Cmi>X\u003C\u002Fmi>\u003Cmsub>\u003Cmi>W\u003C\u002Fmi>\u003Cmrow>\u003Cmi>u\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo fence=\"false\" stretchy=\"true\" minsize=\"1.2em\" maxsize=\"1.2em\">)\u003C\u002Fmo>\u003Cmsub>\u003Cmi>W\u003C\u002Fmi>\u003Cmrow>\u003Cmi>d\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\nF_e(X)=\\big(\\operatorname{SiLU}(XW_{g,e})\\odot XW_{u,e}\\big)W_{d,e}.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">F\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">X\u003C\u002Fspan>\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1.2em;vertical-align:-0.35em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"delimsizing size1\">(\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mop\">\u003Cspan class=\"mord mathrm\">SiLU\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">X\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">W\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">⊙\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1.2em;vertical-align:-0.35em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">X\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">W\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">u\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"delimsizing size1\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">W\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3361em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">d\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>为突出矩阵分片，这个式子省略 V4 的激活 clamp；clamp 改变逐元素计算，不改变后面的 shape。设 ETP=\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>q\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">q\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.625em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，expert \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">e\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.4306em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 收到 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>m\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">m_e\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.5806em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">m\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 行。在不加 bias 的情况下：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>对象\u003C\u002Fth>\n\u003Cth>单个 ETP rank 的 shape\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>专家输入\u003C\u002Ftd>\n\u003Ctd>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmsub>\u003Cmi>m\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[m_e,h]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">m\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>W\u003C\u002Fmi>\u003Cmrow>\u003Cmi>g\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">W_{g,e}\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.9694em;vertical-align:-0.2861em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">W\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>、\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>W\u003C\u002Fmi>\u003Cmrow>\u003Cmi>u\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">W_{u,e}\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.9694em;vertical-align:-0.2861em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">W\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">u\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>\u003C\u002Ftd>\n\u003Ctd>各为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>f\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi>q\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[h,f\u002Fq]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1076em;\">f\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>FC1 合并输出\u003C\u002Ftd>\n\u003Ctd>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmsub>\u003Cmi>m\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>2\u003C\u002Fmn>\u003Cmi>f\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi>q\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[m_e,2f\u002Fq]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">m\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">2\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1076em;\">f\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>SwiGLU 激活\u003C\u002Ftd>\n\u003Ctd>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmsub>\u003Cmi>m\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>f\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi>q\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[m_e,f\u002Fq]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">m\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1076em;\">f\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>W\u003C\u002Fmi>\u003Cmrow>\u003Cmi>d\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">W_{d,e}\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.9694em;vertical-align:-0.2861em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">W\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3361em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">d\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>\u003C\u002Ftd>\n\u003Ctd>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmi>f\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi>q\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[f\u002Fq,h]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1076em;\">f\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>FC2 部分输出\u003C\u002Ftd>\n\u003Ctd>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmsub>\u003Cmi>m\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[m_e,h]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">m\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>源码实际存储可采用转置的权重布局，表格按计算含义表示。每个 ETP rank 需要同一个专家的完整输入行，只计算自己那份 intermediate。FC2 的结果还要沿 ETP 相加，才能得到完整输出。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fexperts.py\" target=\"_blank\" rel=\"noopener noreferrer\">专家实现\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fextensions\u002Ftransformer_engine.py#L2712\" target=\"_blank\" rel=\"noopener noreferrer\">TE 的显式专家通信\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>普通 AlltoAll dispatcher 在 EP 交换后执行 ETP AllGather，在 expert 计算后执行 ETP ReduceScatter。因此整条前向为：\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-code-block>\u003Cdiv class=\"code-toolbar\">\u003Cspan class=\"code-language\">text\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"code-copy\" data-copy-code aria-label=\"复制代码\" title=\"复制代码\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"8\" y=\"8\" width=\"13\" height=\"13\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"code-viewport\">\u003Cdiv class=\"code-line-numbers\" aria-hidden=\"true\">\u003Cspan>1\u003C\u002Fspan>\u003Cspan>2\u003C\u002Fspan>\u003Cspan>3\u003C\u002Fspan>\u003Cspan>4\u003C\u002Fspan>\u003Cspan>5\u003C\u002Fspan>\u003Cspan>6\u003C\u002Fspan>\u003Cspan>7\u003C\u002Fspan>\u003Cspan>8\u003C\u002Fspan>\u003Cspan>9\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"hljs\" tabindex=\"0\" aria-label=\"代码，超出宽度时可横向滚动\">\u003Ccode>permute\n→ EP AlltoAll\n→ ETP AllGather\n→ sort by local expert\n→ expert FC1 \u002F activation \u002F FC2\n→ undo local sort\n→ ETP ReduceScatter\n→ EP AlltoAll\n→ unpermute\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>ETP 的 AllGather 收集 token 行，ReduceScatter 同时求和 FC2 部分结果、恢复 token 分片。hidden 的 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>h\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">h\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 维在这两步中不被切成 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>h\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi>q\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">h\u002Fq\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。 ETP1 时这两次 collective 退化；EP1 时 EP 交换退化。EP=ETP=1 仍然需要本地路由、重排、专家计算与加权累加。\u003C\u002Fp>\n\u003Cp>再用4张卡看 ETP2×EP2 的组。默认顺序下，ETP 组为 \u003Ccode>[0,1]\u003C\u002Fcode>、\u003Ccode>[2,3]\u003C\u002Fcode>，EP 组为 \u003Ccode>[0,2]\u003C\u002Fcode>、\u003Ccode>[1,3]\u003C\u002Fcode>。rank 0\u002F1 保存同一批专家的不同矩阵片：先在各自 EP 组收取 token，再在 \u003Ccode>[0,1]\u003C\u002Fcode> 收齐这批专家的输入，计算后沿该 ETP 组归约。这个小例子只解释专家侧分组，不作为 V4 attention TP&gt;1 的运行配置。\u003C\u002Fp>\n\u003Cp>\u003Ccode>TEGroupedMLP\u003C\u002Fcode> 将本 rank 的多个专家组织为 Grouped GEMM。各专家的权重独立，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>m\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">m_e\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.5806em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">m\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 也可不同。Grouped GEMM 是本地计算组织方式，不额外建立一个 GPU 并行维度。\u003C\u002Fp>\n\u003Cp>TE 的 explicit expert communication 路径还会调整本地矩阵尺寸并关闭对应 linear 的自动 TP 通信，因为 dispatcher 已经完成 ETP 的通信。阅读时不能再为这些 linear 凭空补一轮 AllReduce。\u003C\u002Fp>\n\u003Ch3 id=\"post-heading-概率在哪里乘\">概率在哪里乘\u003C\u002Fh3>\n\u003Cp>数学式写的是 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>g\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmsub>\u003Cmi>F\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmi>X\u003C\u002Fmi>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">g_eF_e(X)\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">F\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">X\u003C\u002Fspan>\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，代码不一定等到 combine 才乘 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>g\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">g_e\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.625em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。无 bias 时，FC2 是线性映射：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>g\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo fence=\"false\" stretchy=\"true\" minsize=\"1.2em\" maxsize=\"1.2em\">(\u003C\u002Fmo>\u003Cmsub>\u003Cmi>A\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmsub>\u003Cmi>W\u003C\u002Fmi>\u003Cmrow>\u003Cmi>d\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo fence=\"false\" stretchy=\"true\" minsize=\"1.2em\" maxsize=\"1.2em\">)\u003C\u002Fmo>\u003Cmo>=\u003C\u002Fmo>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmsub>\u003Cmi>g\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmsub>\u003Cmi>A\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003Cmsub>\u003Cmi>W\u003C\u002Fmi>\u003Cmrow>\u003Cmi>d\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\ng_e\\big(A_eW_{d,e}\\big)=(g_eA_e)W_{d,e}.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1.2em;vertical-align:-0.35em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"delimsizing size1\">(\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">A\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">W\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3361em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">d\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"delimsizing size1\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1.0361em;vertical-align:-0.2861em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">A\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">W\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3361em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">d\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>\u003Ccode>TEGroupedMLP\u003C\u002Fcode> 可以在 SwiGLU 激活后融合乘 \u003Ccode>permuted_probs\u003C\u002Fcode>，再执行 FC2。沿这条路径，combine 只负责把已经加权的结果汇回；再乘一次就会得到错误的平方权重。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fexperts.py#L1093\" target=\"_blank\" rel=\"noopener noreferrer\">加权激活\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>这个等价变形依赖线性位置。不能把概率随意移到 SiLU 之前，非线性通常不满足同样关系。源码对 \u003Ccode>moe_apply_probs_on_input\u003C\u002Fcode> 也有单独限制。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-结果怎样送回\">结果怎样送回\u003C\u002Fh2>\n\u003Cp>\u003Ccode>combine_preprocess\u003C\u002Fcode> 先撤销第二次 chunk 排序，再执行 ETP ReduceScatter。之后 \u003Ccode>token_combine\u003C\u002Fcode> 沿 EP 返回，前后两次 AlltoAll 使用交换后的 splits：\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-code-block>\u003Cdiv class=\"code-toolbar\">\u003Cspan class=\"code-language\">text\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"code-copy\" data-copy-code aria-label=\"复制代码\" title=\"复制代码\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"8\" y=\"8\" width=\"13\" height=\"13\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"code-viewport\">\u003Cdiv class=\"code-line-numbers\" aria-hidden=\"true\">\u003Cspan>1\u003C\u002Fspan>\u003Cspan>2\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"hljs\" tabindex=\"0\" aria-label=\"代码，超出宽度时可横向滚动\">\u003Ccode>dispatch: output_splits, input_splits\ncombine:  input_splits,  output_splits\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>\u003Ccode>combine_postprocess\u003C\u002Fcode> 撤销第一次重排，将同一 token 的 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>k\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">k\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0315em;\">k\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 份结果累加到原位置，再恢复 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmsub>\u003Cmi>s\u003C\u002Fmi>\u003Cmrow>\u003Cmi>l\u003C\u002Fmi>\u003Cmi>o\u003C\u002Fmi>\u003Cmi>c\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003Cmi>l\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>b\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[s_{local},b,h]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">s\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3361em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0197em;\">l\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">oc\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">a\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0197em;\">l\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">b\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Ftoken_dispatcher.py#L810\" target=\"_blank\" rel=\"noopener noreferrer\">返回路径\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>这里建议直接看执行语句。当前 AlltoAll 类的 \u003Ccode>token_combine\u003C\u002Fcode> docstring 仍提到 DeepEP，局部 shape 注释也残留了 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>H\u003C\u002Fmi>\u003Cmo>→\u003C\u002Fmo>\u003Cmi>H\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi>T\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">H\\to H\u002FTP\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0813em;\">H\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">→\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0813em;\">H\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">T\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 的描述。该方法实际调用的是 \u003Ccode>all_to_all(self.ep_group, ...)\u003C\u002Fcode>，保持 trailing hidden 维度，ETP 归约已在前面完成。函数名和注释可以帮助定位，shape 需要沿 tensor 操作核对。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-一轮-v4-的数据量\">一轮 V4 的数据量\u003C\u002Fh2>\n\u003Cp>回到前面的 1024 卡算例，取一个 microbatch 的 packed 序列长度为 8192，batch size 为 1，CP2。V4 当前 CP 路径使用 packed THD，激活可表示为 \u003Ccode>[T_local,1,H]\u003C\u002Fcode>；这里每个 rank 有 4096 个有效 token 行，便于按固定长度计算。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fexperimental_attention_variant\u002Fdeepseek_v4_hybrid_attention.py#L108\" target=\"_blank\" rel=\"noopener noreferrer\">V4 CP 输入\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>一个 EP64 组覆盖的唯一 token 数为：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi>T\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>64\u003C\u002Fmn>\u003Cmo>×\u003C\u002Fmo>\u003Cmn>4096\u003C\u002Fmn>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>262\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>144.\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\nT=64\\times4096=262,144.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">T\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7278em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">64\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">4096\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8389em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">262\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">144.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>每 token 产生 6 个 routed assignment，全组为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmn>1\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>572\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>864\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">1,572,864\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8389em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">1\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">572\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">864\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 个。假设路由均匀，单个 expert 的期望接收量为：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi mathvariant=\"double-struck\">E\u003C\u002Fmi>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmsub>\u003Cmi>m\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003Cmo>=\u003C\u002Fmo>\u003Cmfrac>\u003Cmrow>\u003Cmi>k\u003C\u002Fmi>\u003Cmi>T\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cmi>E\u003C\u002Fmi>\u003C\u002Fmfrac>\u003Cmo>=\u003C\u002Fmo>\u003Cmfrac>\u003Cmrow>\u003Cmn>6\u003C\u002Fmn>\u003Cmo>×\u003C\u002Fmo>\u003Cmn>262\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>144\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cmn>384\u003C\u002Fmn>\u003C\u002Fmfrac>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>4096.\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\n\\mathbb E[m_e]=\\frac{kT}{E}\n=\\frac{6\\times262,144}{384}=4096.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathbb\">E\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">m\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:2.0574em;vertical-align:-0.686em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mopen nulldelimiter\">\u003C\u002Fspan>\u003Cspan class=\"mfrac\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.3714em;\">\u003Cspan style=\"top:-2.314em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.23em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"frac-line\" style=\"border-bottom-width:0.04em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.677em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0315em;\">k\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">T\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.686em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose nulldelimiter\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:2.0074em;vertical-align:-0.686em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mopen nulldelimiter\">\u003C\u002Fspan>\u003Cspan class=\"mfrac\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.3214em;\">\u003Cspan style=\"top:-2.314em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord\">384\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.23em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"frac-line\" style=\"border-bottom-width:0.04em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.677em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord\">6\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">262\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">144\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.686em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose nulldelimiter\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">4096.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>每 rank 有 6 个 expert，期望接收 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmn>6\u003C\u002Fmn>\u003Cmo>×\u003C\u002Fmo>\u003Cmn>4096\u003C\u002Fmn>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>24\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>576\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">6\\times4096=24,576\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7278em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">6\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">4096\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8389em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">24\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">576\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 行。第一次 permute 的发送缓冲固定有 24,576 行，接收缓冲只有在均衡假设下才同样大。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>当前 rank 上的对象\u003C\u002Fth>\n\u003Cth>shape 或数量\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>本地唯一 token\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[4096,7168]\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>router logits\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[4096,384]\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>第一次 permute 的 hidden\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[24576,7168]\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>EP 接收的 hidden\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[M_rank,7168]\u003C\u002Fcode>，均衡期望为 24576 行\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>tokens_per_expert\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[6]\u003C\u002Fcode>，均衡期望每项为 4096\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>每个专家的 FC1\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[4096,6144]\u003C\u002Fcode>，此处 ETP1\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>每个专家的 SwiGLU 激活\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[4096,3072]\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>恢复后的 MoE 输出\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>[4096,1,7168]\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>这些都是形状推导，没有把期望值当成实际负载。一个 rank 保存多个专家，既要看单专家热点，也要看该 rank 所有专家接收量之和。\u003C\u002Fp>\n\u003Cp>BF16 hidden 每元素 2 byte，单方向、包含留在本 rank 的 assignment，其 payload 为：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmn>24\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>576\u003C\u002Fmn>\u003Cmo>×\u003C\u002Fmo>\u003Cmn>7168\u003C\u002Fmn>\u003Cmo>×\u003C\u002Fmo>\u003Cmn>2\u003C\u002Fmn>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>352\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>321\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>536\u003C\u002Fmn>\u003Cmtext> \u003C\u002Fmtext>\u003Cmrow>\u003Cmi mathvariant=\"normal\">b\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">y\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">t\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">e\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>336\u003C\u002Fmn>\u003Cmtext> \u003C\u002Fmtext>\u003Cmrow>\u003Cmi mathvariant=\"normal\">M\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">i\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">B\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\n24,576\\times7168\\times2\n=352,321,536\\ \\mathrm{byte}=336\\ \\mathrm{MiB}.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8389em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">24\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">576\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7278em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">7168\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">2\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8889em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">352\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">321\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">536\u003C\u002Fspan>\u003Cspan class=\"mspace\"> \u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathrm\">byte\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">336\u003C\u002Fspan>\u003Cspan class=\"mspace\"> \u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathrm\">MiB\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>普通 A2A、均匀路由下，约 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmn>63\u003C\u002Fmn>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmn>64\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">63\u002F64\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">63\u002F64\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 的 assignment 需要离开当前 rank，对应 330.75 MiB 的远程发送量。前向 dispatch 与 combine 合计约 661.5 MiB；若反向采用相同元素字节数，四次 EP hidden 交换合计约 1323 MiB。\u003C\u002Fp>\n\u003Cp>这个口径统计发送 payload，不把接收再加一遍。它未含概率、计数、padding、协议开销、重算和 ETP 通信，也没套用融合后端的去重。计算图中有 6 个 assignment，不能直接推出某种分层网络实现必定跨节点发送 6 份完整 token。\u003C\u002Fp>\n\u003Cp>权重也可以对照计算。每 rank 每层的 6 个 routed experts，BF16 权重为：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmn>6\u003C\u002Fmn>\u003Cmo>×\u003C\u002Fmo>\u003Cmn>66\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>060\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>288\u003C\u002Fmn>\u003Cmo>×\u003C\u002Fmo>\u003Cmn>2\u003C\u002Fmn>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>792\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>723\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmn>456\u003C\u002Fmn>\u003Cmtext> \u003C\u002Fmtext>\u003Cmrow>\u003Cmi mathvariant=\"normal\">b\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">y\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">t\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">e\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cmo>≈\u003C\u002Fmo>\u003Cmn>0.7383\u003C\u002Fmn>\u003Cmtext> \u003C\u002Fmtext>\u003Cmrow>\u003Cmi mathvariant=\"normal\">G\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">i\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">B\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\n6\\times66,060,288\\times2\n=792,723,456\\ \\mathrm{byte}\\approx0.7383\\ \\mathrm{GiB}.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7278em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">6\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8389em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">66\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">060\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">288\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">2\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8889em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">792\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">723\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">456\u003C\u002Fspan>\u003Cspan class=\"mspace\"> \u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathrm\">byte\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">≈\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">0.7383\u003C\u002Fspan>\u003Cspan class=\"mspace\"> \u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathrm\">GiB\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>如果某 stage 放置 8 个这样的 MoE 层，routed 权重约 5.906 GiB。还需要加 shared expert、attention、梯度、优化器状态与通信缓冲。这部分账只说明专家怎样放置，不证明完整训练能装下。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-另外两类-dispatcher\">另外两类 dispatcher\u003C\u002Fh2>\n\u003Ch3 id=\"post-heading-allgather\">AllGather\u003C\u002Fh3>\n\u003Cp>\u003Ccode>MoEAllGatherTokenDispatcher\u003C\u002Fcode> 沿 ETP×EP 组收集全部 hidden、概率和路由图。每个 rank 从完整 token 集中选择自己负责的专家，计算后先恢复到全域 token 位置，再用同组 ReduceScatter 求和并归还原来的 token 分片。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Ftoken_dispatcher.py#L247\" target=\"_blank\" rel=\"noopener noreferrer\">AllGather 实现\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>它同样会跨 GPU 搬 token。与 AlltoAll 的区别在于，hidden 收集阶段没有先按目的 expert 做稀疏过滤。每个 rank 的临时输入会随组内总 token 数增加，之后才筛出本地工作。\u003C\u002Fp>\n\u003Cp>ETP1、EP=\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>p\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">p\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.625em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">p\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>、每 rank 有 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>n\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.4306em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">n\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 行时，AllGather 后每 rank 的 hidden 是 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmi>p\u003C\u002Fmi>\u003Cmi>n\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[pn,h]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">p\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">n\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>；AlltoAll 的均衡接收期望则为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmi>k\u003C\u002Fmi>\u003Cmi>n\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[kn,h]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0315em;\">k\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">n\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。这是布局与存储量比较，不能单凭 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>p\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">p\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.625em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">p\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 和 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>k\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">k\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0315em;\">k\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 就给出后端耗时结论，collective 实现、消息大小和拓扑还会影响结果。\u003C\u002Fp>\n\u003Ch3 id=\"post-heading-flex\">Flex\u003C\u002Fh3>\n\u003Cp>\u003Ccode>MoEFlexTokenDispatcher\u003C\u002Fcode> 把 ETP×EP 当成一个通信域。\u003Ccode>_initialize_metadata\u003C\u002Fcode> 将逻辑专家展开为对应的物理矩阵分片目的地，后端统一执行 dispatch\u002Fcombine。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Ftoken_dispatcher.py#L2121\" target=\"_blank\" rel=\"noopener noreferrer\">Flex 初始化\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>例如逻辑 top-6、ETP2，需要把每个被选 expert 的输入提供给它的两个矩阵分片。manager 中可能出现 \u003Ccode>topk=12\u003C\u002Fcode>、\u003Ccode>num_experts=768\u003C\u002Fcode> 这样的数值，它们编码的是物理目的地；模型仍然是 384 个专家、每 token 选 6 个。\u003C\u002Fp>\n\u003Cp>当前源码包含四种 manager。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>backend\u003C\u002Fth>\n\u003Cth>源码阅读重点\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>DeepEP\u003C\u002Ftd>\n\u003Ctd>高吞吐 dispatch\u002Fcombine，与节点内外通信和路由布局衔接\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>DeepEP v2\u003C\u002Ftd>\n\u003Ctd>单独的 buffer 与调用接口，不能只按旧版参数解释\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>HybridEP\u003C\u002Ftd>\n\u003Ctd>NVLink\u002FRDMA 数据通路、路由元数据与缓冲管理\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>NCCL EP\u003C\u002Ftd>\n\u003Ctd>一侧通信接口、接收容量及专家输出\u002F输入梯度的通信缓冲\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Flex 不要求 Python 层逐项执行“EP A2A→ETP AG→ETP RS”。后端可以把它们融合成另一种物理实现，比如跨节点先去重、节点内再展开，combine 时先局部求和再跨节点返回。\u003Ca href=\"https:\u002F\u002Fdeveloper.nvidia.com\u002Fblog\u002Foptimizing-communication-for-mixture-of-experts-training-with-hybrid-expert-parallel\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">HybridEP 工程说明\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>NCCL EP 的 zero-copy 路径还允许专家 FC2 输出、FC1 输入梯度直接写入后续通信缓冲，省掉中间复制。它改变缓冲的所有权和生命周期，逻辑上仍需完成专家结果汇总。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Ftoken_dispatcher.py#L2209\" target=\"_blank\" rel=\"noopener noreferrer\">通信缓冲接口\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>这些训练路径需要与推理 decode 的低延迟 kernel 区分。DeepEP 提供多个场景的接口，选一个库名不足以说明采用了哪种执行策略。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-反向的通信\">反向的通信\u003C\u002Fh2>\n\u003Cp>现在给 MoE 输出一个上游梯度 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmover accent=\"true\">\u003Cmi>y\u003C\u002Fmi>\u003Cmo>ˉ\u003C\u002Fmo>\u003C\u002Fmover>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmi mathvariant=\"normal\">∂\u003C\u002Fmi>\u003Cmi>L\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">∂\u003C\u002Fmi>\u003Cmsub>\u003Cmi>y\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\\bar y_t=\\partial L\u002F\\partial y_t\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7622em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord accent\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.5678em;\">\u003Cspan style=\"top:-3em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">y\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"accent-body\" style=\"left:-0.1944em;\">\u003Cspan class=\"mord\">ˉ\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1944em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\" style=\"margin-right:0.0556em;\">∂\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">L\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mord\" style=\"margin-right:0.0556em;\">∂\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">y\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。对选中的 expert，有：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmfrac>\u003Cmrow>\u003Cmi mathvariant=\"normal\">∂\u003C\u002Fmi>\u003Cmi>L\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cmrow>\u003Cmi mathvariant=\"normal\">∂\u003C\u002Fmi>\u003Cmsub>\u003Cmi>g\u003C\u002Fmi>\u003Cmrow>\u003Cmi>t\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003C\u002Fmfrac>\u003Cmo>=\u003C\u002Fmo>\u003Cmo stretchy=\"false\">⟨\u003C\u002Fmo>\u003Cmsub>\u003Cmover accent=\"true\">\u003Cmi>y\u003C\u002Fmi>\u003Cmo>ˉ\u003C\u002Fmo>\u003C\u002Fmover>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmsub>\u003Cmi>F\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmsub>\u003Cmi>x\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003Cmo stretchy=\"false\">⟩\u003C\u002Fmo>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\n\\frac{\\partial L}{\\partial g_{t,e}}\n=\\langle\\bar y_t,F_e(x_t)\\rangle,\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:2.3435em;vertical-align:-0.9721em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mopen nulldelimiter\">\u003C\u002Fspan>\u003Cspan class=\"mfrac\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.3714em;\">\u003Cspan style=\"top:-2.314em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord\" style=\"margin-right:0.0556em;\">∂\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.23em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"frac-line\" style=\"border-bottom-width:0.04em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.677em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord\" style=\"margin-right:0.0556em;\">∂\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">L\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.9721em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose nulldelimiter\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">⟨\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord accent\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.5678em;\">\u003Cspan style=\"top:-3em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">y\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"accent-body\" style=\"left:-0.1944em;\">\u003Cspan class=\"mord\">ˉ\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1944em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">F\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose\">)⟩\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmsubsup>\u003Cmover accent=\"true\">\u003Cmi>x\u003C\u002Fmi>\u003Cmo>ˉ\u003C\u002Fmo>\u003C\u002Fmover>\u003Cmi>t\u003C\u002Fmi>\u003Cmrow>\u003Cmi>e\u003C\u002Fmi>\u003Cmi>x\u003C\u002Fmi>\u003Cmi>p\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003Cmi>r\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsubsup>\u003Cmo>=\u003C\u002Fmo>\u003Cmunder>\u003Cmo>∑\u003C\u002Fmo>\u003Cmrow>\u003Cmi>e\u003C\u002Fmi>\u003Cmo>∈\u003C\u002Fmo>\u003Cmsub>\u003Cmi>I\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003C\u002Fmunder>\u003Cmsub>\u003Cmi>g\u003C\u002Fmi>\u003Cmrow>\u003Cmi>t\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmsub>\u003Cmi>J\u003C\u002Fmi>\u003Cmsub>\u003Cmi>F\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmsub>\u003Cmo stretchy=\"false\">(\u003C\u002Fmo>\u003Cmsub>\u003Cmi>x\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmsup>\u003Cmo stretchy=\"false\">)\u003C\u002Fmo>\u003Cmi>T\u003C\u002Fmi>\u003C\u002Fmsup>\u003Cmsub>\u003Cmover accent=\"true\">\u003Cmi>y\u003C\u002Fmi>\u003Cmo>ˉ\u003C\u002Fmo>\u003C\u002Fmover>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\n\\bar x_t^{expert}\n=\\sum_{e\\in I_t}g_{t,e}J_{F_e}(x_t)^T\\bar y_t.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1.1572em;vertical-align:-0.2458em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord accent\">\u003Cspan class=\"vlist-t\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.5678em;\">\u003Cspan style=\"top:-3em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"accent-body\" style=\"left:-0.2222em;\">\u003Cspan class=\"mord\">ˉ\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.9115em;\">\u003Cspan style=\"top:-2.4542em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.1809em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">x\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">p\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0278em;\">er\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2458em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:2.4444em;vertical-align:-1.3944em;\">\u003C\u002Fspan>\u003Cspan class=\"mop op-limits\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.05em;\">\u003Cspan style=\"top:-1.8557em;margin-left:0em;\">\u003Cspan class=\"pstrut\" style=\"height:3.05em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003Cspan class=\"mrel mtight\">∈\u003C\u002Fspan>\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0785em;\">I\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2963em;\">\u003Cspan style=\"top:-2.357em;margin-left:-0.0785em;margin-right:0.0714em;\">\u003Cspan class=\"pstrut\" style=\"height:2.5em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size3 size1 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.143em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.05em;\">\u003Cspan class=\"pstrut\" style=\"height:3.05em;\">\u003C\u002Fspan>\u003Cspan>\u003Cspan class=\"mop op-symbol large-op\">∑\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.3944em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mpunct mtight\">,\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2861em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0962em;\">J\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3283em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0962em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.1389em;\">F\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1645em;\">\u003Cspan style=\"top:-2.357em;margin-left:-0.1389em;margin-right:0.0714em;\">\u003Cspan class=\"pstrut\" style=\"height:2.5em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size3 size1 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.143em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2501em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mopen\">(\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose\">\u003Cspan class=\"mclose\">)\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.8913em;\">\u003Cspan style=\"top:-3.113em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.1389em;\">T\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord accent\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.5678em;\">\u003Cspan style=\"top:-3em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">y\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"accent-body\" style=\"left:-0.1944em;\">\u003Cspan class=\"mord\">ˉ\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1944em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>x\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">x_t\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.5806em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.2806em;\">\u003Cspan style=\"top:-2.55em;margin-left:0em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 还影响路由权重，所以输入梯度包含 router 分支，以及 shared expert 分支。Top-k 的离散 ID 不求连续导数，选中分支的连续 score 与混合权重仍然可导，Hash 层也保留这部分学习。\u003C\u002Fp>\n\u003Cp>从通信上看，反向按前向的依赖倒序执行。\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-code-block>\u003Cdiv class=\"code-toolbar\">\u003Cspan class=\"code-language\">text\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"code-copy\" data-copy-code aria-label=\"复制代码\" title=\"复制代码\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"8\" y=\"8\" width=\"13\" height=\"13\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"code-viewport\">\u003Cdiv class=\"code-line-numbers\" aria-hidden=\"true\">\u003Cspan>1\u003C\u002Fspan>\u003Cspan>2\u003C\u002Fspan>\u003Cspan>3\u003C\u002Fspan>\u003Cspan>4\u003C\u002Fspan>\u003Cspan>5\u003C\u002Fspan>\u003Cspan>6\u003C\u002Fspan>\u003Cspan>7\u003C\u002Fspan>\u003Cspan>8\u003C\u002Fspan>\u003Cspan>9\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"hljs\" tabindex=\"0\" aria-label=\"代码，超出宽度时可横向滚动\">\u003Ccode>MoE 输出梯度\n→ unpermute 的反向：展开到 assignment\n→ combine A2A 的反向：送到专家侧\n→ ETP RS 的反向：AG\n→ expert backward：dgrad 与 wgrad\n→ ETP AG 的反向：RS\n→ dispatch A2A 的反向：返回 token owner\n→ permute 的反向：累加多路 dgrad\n→ router 与原输入\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>d\u003C\u002Fmi>\u003Cmi>g\u003C\u002Fmi>\u003Cmi>r\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003Cmi>d\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">dgrad\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8889em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">d\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">r\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">a\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">d\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 表示对输入激活的梯度，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>w\u003C\u002Fmi>\u003Cmi>g\u003C\u002Fmi>\u003Cmi>r\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003Cmi>d\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">wgrad\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8889em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0269em;\">w\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">r\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">a\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">d\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 表示对参数的梯度。多个专家对同一 token 的输入梯度要相加；这是第一次 permute 包含复制的直接结果。\u003C\u002Fp>\n\u003Cp>源码中 \u003Ccode>_AllToAll.backward\u003C\u002Fcode> 再调用一次 AlltoAll，并交换 input\u002Foutput split。默认 token 维 AllGather 的 backward 是 ReduceScatter，ReduceScatter 的 backward 是 AllGather。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftensor_parallel\u002Fmappings.py#L304\" target=\"_blank\" rel=\"noopener noreferrer\">autograd 封装\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>不过 \u003Ccode>gather_from_sequence_parallel_region\u003C\u002Fcode> 也有 \u003Ccode>tensor_parallel_output_grad=False\u003C\u002Fcode> 的 split-only 分支。它服务不同的梯度语义，所以阅读 collective 的反向要连同 wrapper 参数一起看。\u003C\u002Fp>\n\u003Cp>到这里，梯度已经沿计算图回到应该在的位置。每份参数在不同数据副本上产生的贡献，还要接着同步。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-参数梯度同步\">参数梯度同步\u003C\u002Fh2>\n\u003Ch3 id=\"post-heading-dense-与-expert-的归约组\">dense 与 expert 的归约组\u003C\u002Fh3>\n\u003Cp>routed expert 参数上经常能看到：\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-code-block>\u003Cdiv class=\"code-toolbar\">\u003Cspan class=\"code-language\">python\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"code-copy\" data-copy-code aria-label=\"复制代码\" title=\"复制代码\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"8\" y=\"8\" width=\"13\" height=\"13\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"code-viewport\">\u003Cdiv class=\"code-line-numbers\" aria-hidden=\"true\">\u003Cspan>1\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"hljs\" tabindex=\"0\" aria-label=\"代码，超出宽度时可横向滚动\">\u003Ccode>param.allreduce = \u003Cspan class=\"hljs-literal\">False\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>这个标记用于选择 expert 拓扑。选择 expert 拓扑的条件也不只有 EP&gt;1，ETP 与 TP、EGTP 与 GTP 的差异同样会影响它。DDP 会把这些参数放进独立 buffer，沿 \u003Ccode>expt_dp\u003C\u002Fcode> 同步；普通参数放进 dense buffer，沿 \u003Ccode>dp_cp\u003C\u002Fcode> 同步。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fextensions\u002Ftransformer_engine.py#L114\" target=\"_blank\" rel=\"noopener noreferrer\">参数标记\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fdistributed\u002Fdistributed_data_parallel.py#L324\" target=\"_blank\" rel=\"noopener noreferrer\">buffer 分组\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>回到 rank 示例，rank 0 和 64 的 expert 0–5 相同，它们产生的对应梯度需要合并。rank 0 和 1 分别保存 expert 0–5、6–11，参数身份不同，不能直接做同一个权重 AllReduce。\u003C\u002Fp>\n\u003Cp>router 的全专家 gating 矩阵与 shared expert 通常归入 dense 路径。TP+SP 时，router 和 LayerNorm 等复制参数还需要收齐 TP ranks 上不同 token 的梯度，\u003Ccode>finalize_model_grads\u003C\u002Fcode> 对这类标记参数执行额外 TP 归约。不同 PP stage 通常持有不同层，普通 router 权重并不会统一跨 PP 平均；tied embedding 等共享参数有专用同步。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fdistributed\u002Ffinalize_model_grads.py\" target=\"_blank\" rel=\"noopener noreferrer\">梯度收尾\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3 id=\"post-heading-为什么不能直接除-edp\">为什么不能直接除 EDP\u003C\u002Fh3>\n\u003Cp>专家副本通过 dispatch 接收了多个 dense 数据位置的 token。它的本地 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>w\u003C\u002Fmi>\u003Cmi>g\u003C\u002Fmi>\u003Cmi>r\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003Cmi>d\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">wgrad\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8889em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0269em;\">w\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">g\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">r\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">a\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">d\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 已包含这些输入的贡献，归一化不能只看参与最后一次 collective 的 EDP 大小。\u003C\u002Fp>\n\u003Cp>固定 GTP\u002FEGTP1、关闭 per-token loss，DDP 的 SUM 路径对 dense 和 expert 都预乘：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmn>1\u003C\u002Fmn>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmo>×\u003C\u002Fmo>\u003Cmi>C\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\n1\u002F|DP\\times CP|.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">1\u002F∣\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mord\">∣.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>若 collective 本身使用 AVG，expert 则先乘：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmi>E\u003C\u002Fmi>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmo>×\u003C\u002Fmo>\u003Cmi>C\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\n|EDP|\u002F|DP\\times CP|,\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">∣\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mord\">∣\u002F∣\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mord\">∣\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>再由 EDP AVG 除以 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmi>E\u003C\u002Fmi>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">|EDP|\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">∣\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mord\">∣\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，得到相同的归一化口径。源码中的两种分支可以直接对照。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fdistributed\u002Fdistributed_data_parallel.py#L267\" target=\"_blank\" rel=\"noopener noreferrer\">缩放实现\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>本文例子 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmo>×\u003C\u002Fmo>\u003Cmi>C\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>128\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">|DP\\times CP|=128\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">∣\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mord\">∣\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">128\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>、\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmi>E\u003C\u002Fmi>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>2\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">|EDP|=2\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">∣\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mord\">∣\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">2\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。SUM 分支的 factor 为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmn>1\u003C\u002Fmn>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmn>128\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">1\u002F128\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">1\u002F128\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>；AVG 分支的 expert factor 为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmn>2\u003C\u002Fmn>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmn>128\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">2\u002F128\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">2\u002F128\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，之后在两副本间平均。这里也不能再手动对 expert 梯度除一次 EDP。\u003C\u002Fp>\n\u003Cp>per-token loss 使用另一条路径：先保留 SUM，再按有效 token 总数缩放。流水线的 loss scale、梯度累积和 GTP 修正也各有位置。比较两个并行配置的梯度时，需要把这些缩放连起来，不能只看最后的 reducer。\u003C\u002Fp>\n\u003Ch3 id=\"post-heading-优化器的通信\">优化器的通信\u003C\u002Fh3>\n\u003Cp>普通 DDP 在相应副本组内 AllReduce 梯度；distributed optimizer 则通常先 ReduceScatter，只把负责的梯度片交给本 rank 的 optimizer state。更新后再 AllGather 参数，让下一次计算获得所需权重。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fdistributed\u002Fparam_and_grad_buffer.py#L721\" target=\"_blank\" rel=\"noopener noreferrer\">梯度 bucket\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Foptimizer\u002F__init__.py#L1233\" target=\"_blank\" rel=\"noopener noreferrer\">优化器构建\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>因此同一段 profile 中的 AllGather 可能搬 token，也可能搬更新后的参数。看 kernel 名称不足以判定它属于哪种并行。\u003C\u002Fp>\n\u003Cp>多个 distributed optimizer instances 还会把副本域分层：instance 内分片，instance 间同步相同 shard。它细分现有副本域，不额外增加一个独立 world-size 因子。\u003C\u002Fp>\n\u003Cp>Megatron-FSDP 进一步允许参数本身在副本域分片，计算前取回、使用后释放。dense 与 routed expert 分别使用 DP×CP 和 EDP mesh；HSDP、HFSDP 再区分内层分片与外层副本。它们需要接在已有 TP\u002FEP 分片上理解。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fdocs\u002Fuser-guide\u002Ffeatures\u002Fmegatron_fsdp.md#L502\" target=\"_blank\" rel=\"noopener noreferrer\">FSDP mesh\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-shared-expert\">shared expert\u003C\u002Fh2>\n\u003Cp>shared expert 对每个有效输入 token 都执行，不参加 routed top-k。它按 dense TP 组织，因此 TP 和 ETP 不同时，shared 与 routed 专家的矩阵布局也不同。\u003C\u002Fp>\n\u003Cp>一个 shared expert 是一组逻辑参数，可以沿数据副本复制、沿 TP 分片。这个“1”不能解释成所有设备只在某一张卡保存共享分支。\u003C\u002Fp>\n\u003Cp>开启 shared-expert overlap 后，\u003Ccode>SharedExpertMLP\u003C\u002Fcode> 被拆成前置通信、FC1 与激活、FC2、后置通信。dispatcher 在 EP dispatch\u002Fcombine 周围插入这些操作，通过 stream 与 event 保证最终相加前结果就绪。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fshared_experts.py#L239\" target=\"_blank\" rel=\"noopener noreferrer\">shared overlap\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>普通 AlltoAll 路径还专门安排了发射顺序：\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-code-block>\u003Cdiv class=\"code-toolbar\">\u003Cspan class=\"code-language\">text\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"code-copy\" data-copy-code aria-label=\"复制代码\" title=\"复制代码\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"8\" y=\"8\" width=\"13\" height=\"13\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"code-viewport\">\u003Cdiv class=\"code-line-numbers\" aria-hidden=\"true\">\u003Cspan>1\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"hljs\" tabindex=\"0\" aria-label=\"代码，超出宽度时可横向滚动\">\u003Ccode>token A2A → shared FC1 → probability A2A\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>代码这样处理，是为了避免某些连接数设置下，概率通信先排入队列而阻塞 shared FC1 的发射。combine 一侧再安排 shared FC2 与后置通信。它需要控制具体依赖和排队顺序，只有 \u003Ccode>async_op=True\u003C\u002Fcode> 并不能完成这些调度。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-cp-与-pp\">CP 与 PP\u003C\u002Fh2>\n\u003Ch3 id=\"post-heading-cp-的两条数据流\">CP 的两条数据流\u003C\u002Fh3>\n\u003Cp>CP ranks 在 attention 里交换上下文；进入 MoE 后，FFN 可以对本地 token 独立路由。expert generator 中 CP=1，只表示专家网格不再单独保留这个轴，原来的局部 token 仍由 dispatcher 接管。\u003C\u002Fp>\n\u003Cp>V4 的 CSA\u002FHCA 还需要专门处理压缩边界。官方报告描述的 CP 先向相邻 rank 发送尾部未压缩 KV，使跨边界的压缩块能够计算；之后 AllGather 压缩 KV，再整理可见范围与 padding。\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fhtml\u002F2606.19348v1#S3.SS4.SSS3\" target=\"_blank\" rel=\"noopener noreferrer\">V4 的压缩注意力 CP\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>这条 attention 数据流与 MoE 的 EP dispatch 作用不同，可以在同一个 rank 上先后出现。前者建立上下文，后者按 expert 重组 token。\u003C\u002Fp>\n\u003Cp>当前 Megatron V4 attention 要求 TP1；CP&gt;1 时要求 packed THD，CP 布局使用 contiguous，且只支持 static CP。通用 MoE 支持 CP，不代表任意 attention 的 CP backend 都能直接套在 V4 上。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fexperimental_attention_variant\u002Fdeepseek_v4_hybrid_attention.py#L108\" target=\"_blank\" rel=\"noopener noreferrer\">attention 校验\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fexperimental_attention_variant\u002Fcsa_utils\u002Fcp_utils.py#L312\" target=\"_blank\" rel=\"noopener noreferrer\">packed CP 校验\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3 id=\"post-heading-pp-的边界\">PP 的边界\u003C\u002Fh3>\n\u003Cp>PP 把不同模型块分配到 stage，前向传激活，反向传输入梯度。普通 MoE 的 EP 通信发生在本 stage 的设备中，结果恢复之后才进入下一段模型。\u003C\u002Fp>\n\u003Cp>V4 采用 mHC，残差流的扩张会增加某些 PP 边界的激活与通信量。expert 内部的 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmo stretchy=\"false\">[\u003C\u002Fmo>\u003Cmi>n\u003C\u002Fmi>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>h\u003C\u002Fmi>\u003Cmo stretchy=\"false\">]\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">[n,h]\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mopen\">[\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">n\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003Cspan class=\"mclose\">]\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 是经过相应映射后的输入，不能把它当成全部 PP 边界的 tensor shape。官方训练框架也为 mHC 调整了 DualPipe 的重叠方案。\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fhtml\u002F2606.19348v1#S3.SS4\" target=\"_blank\" rel=\"noopener noreferrer\">mHC 与流水线\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>VPP 让一个物理 stage 持有多个模型 chunk，增加可交错的任务。它改变执行时序和激活生命周期，专家的全局编号与参数身份仍然需要保持一致。\u003C\u002Fp>\n\u003Cp>在本文普通布局、固定 packing 口径下，设全局 batch 为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>B\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">B\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0502em;\">B\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，microbatch size 为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>b\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">b\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">b\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，每次更新累积 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>m\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">m\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.4306em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">m\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 个 microbatch：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi>B\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>b\u003C\u002Fmi>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmi>m\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\nB=bD_am.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0502em;\">B\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8444em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">b\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">a\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">m\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>CP 切同一条序列，EP\u002FETP 切专家计算，它们都不额外增加独立样本。取 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>B\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>4096\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">B=4096\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0502em;\">B\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">4096\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>、\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>b\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>1\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">b=1\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">b\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">1\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，上面的 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>64\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">D_a=64\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">a\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">64\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 对应 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>m\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>64\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">m=64\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.4306em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">m\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">64\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。这个数会影响流水线能否连续取得工作，不能用 EDP2 代入得到 2048 个 microbatch。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-重叠与重算\">重叠与重算\u003C\u002Fh2>\n\u003Cp>同一份源码中有几种不同的 overlap。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>机制\u003C\u002Fth>\n\u003Cth>用什么覆盖什么\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>shared-expert overlap\u003C\u002Ftd>\n\u003Ctd>shared 分支计算与 routed token 通信穿插\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>batch-level EP overlap\u003C\u002Ftd>\n\u003Ctd>相邻 microbatch 的 forward\u002Fbackward 计算与 EP 通信穿插\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>dispatch-backward \u002F expert-wgrad overlap\u003C\u002Ftd>\n\u003Ctd>输入梯度返回时，另行安排专家参数梯度计算\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>DP overlap\u003C\u002Ftd>\n\u003Ctd>已就绪梯度 bucket 的规约与后续 backward 重叠\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>参数预取\u003C\u002Ftd>\n\u003Ctd>当前计算覆盖未来权重的 AllGather\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>以专家 linear 的 backward 为例，输入梯度 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>d\u003C\u002Fmi>\u003Cmi>X\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmover accent=\"true\">\u003Cmi>Y\u003C\u002Fmi>\u003Cmo>ˉ\u003C\u002Fmo>\u003C\u002Fmover>\u003Cmsup>\u003Cmi>W\u003C\u002Fmi>\u003Cmi>T\u003C\u002Fmi>\u003C\u002Fmsup>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">dX=\\bar YW^T\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">d\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">X\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8413em;\">\u003C\u002Fspan>\u003Cspan class=\"mord accent\">\u003Cspan class=\"vlist-t\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.8201em;\">\u003Cspan style=\"top:-3em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.2222em;\">Y\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.2523em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"accent-body\" style=\"left:-0.25em;\">\u003Cspan class=\"mord\">ˉ\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">W\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.8413em;\">\u003Cspan style=\"top:-3.063em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.1389em;\">T\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 决定上一层何时能继续；参数梯度 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>d\u003C\u002Fmi>\u003Cmi>W\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmsup>\u003Cmi>X\u003C\u002Fmi>\u003Cmi>T\u003C\u002Fmi>\u003C\u002Fmsup>\u003Cmover accent=\"true\">\u003Cmi>Y\u003C\u002Fmi>\u003Cmo>ˉ\u003C\u002Fmo>\u003C\u002Fmover>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">dW=X^T\\bar Y\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">d\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">W\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8413em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0785em;\">X\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.8413em;\">\u003Cspan style=\"top:-3.063em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.1389em;\">T\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord accent\">\u003Cspan class=\"vlist-t\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.8201em;\">\u003Cspan style=\"top:-3em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.2222em;\">Y\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.2523em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"accent-body\" style=\"left:-0.25em;\">\u003Cspan class=\"mord\">ˉ\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 可以在满足 optimizer 依赖的前提下延后。\u003Ccode>backward_dw\u003C\u002Fcode>、CUDA event 和延后 wgrad stream 为此提供接口。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fmoe_layer.py#L799\" target=\"_blank\" rel=\"noopener noreferrer\">延后专家 wgrad\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Megatron 的 \u003Ccode>combined_1f1b\u003C\u002Fcode> 将 attention、route、expert 等任务拆开组织。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fpipeline_parallel\u002Fcombined_1f1b.py#L284\" target=\"_blank\" rel=\"noopener noreferrer\">调度实现\u003C\u002Fa> DeepSeek 的 DualPipe 有自己的模型与调度接口，不能仅凭都能重叠通信，就认定两者是同一个实现。\u003C\u002Fp>\n\u003Cp>当前版本也确实存在组合限制：Hash MoE 禁止 \u003Ccode>overlap_moe_expert_parallel_comm\u003C\u002Fcode>；mHC 与 PP&gt;1 的组合也拒绝该开关。shared overlap 与 batch-level EP overlap 还存在互斥条件。因此本文 V4 配置不能直接抄一组通用 EP overlap flags。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Ftransformer_config.py\" target=\"_blank\" rel=\"noopener noreferrer\">配置检查\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>重算同样需要沿调用边界分析。重算整个 MoE 可能再次执行路由、重排与通信；只重算局部激活则有不同代价。router 计数和状态更新还要避免被重算重复执行，源码为部分统计检查 checkpoint 状态。\u003C\u002Fp>\n\u003Cp>CUDA Graph 要处理动态接收行数与 host 同步。capacity padding 可以让形状固定，但 dropping 会改变路由，padding 会增加计算；sync-free kernel、固定上限缓冲与分段捕获则采用其他代价。开启 graph 后仍应逐段看 dispatcher，而不能默认动态通信已经消失。\u003Ca href=\"https:\u002F\u002Fdeveloper.nvidia.com\u002Fblog\u002Fboosting-moe-training-throughput-with-advanced-fusion-kernels\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">融合算子说明\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-gtp-与-egtp\">GTP 与 EGTP\u003C\u002Fh2>\n\u003Cp>前面固定了 GTP\u002FEGTP1。当前源码还有一条权重重物化路径，需要与常驻矩阵分片的 TP\u002FETP 分开理解。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fdocs\u002Fapi-guide\u002Fcore\u002Fgeneralized_tensor_parallel.md#L443\" target=\"_blank\" rel=\"noopener noreferrer\">GTP 设计与实现\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>设 dense 的 GTP rematerialization 轴大小为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>R\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">R\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，expert 对应轴为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>R\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">R_e\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。先不启用额外序列折叠，权重视图为：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi>N\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>T\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmtext> \u003C\u002Fmtext>\u003Cmi>R\u003C\u002Fmi>\u003Cmtext> \u003C\u002Fmtext>\u003Cmi>C\u003C\u002Fmi>\u003Cmtext> \u003C\u002Fmtext>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>w\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>E\u003C\u002Fmi>\u003Cmi>T\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmtext> \u003C\u002Fmtext>\u003Cmsub>\u003Cmi>R\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmtext> \u003C\u002Fmtext>\u003Cmi>E\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmtext> \u003C\u002Fmtext>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\nN\u002FP=TP\\,R\\,C\\,D_w\n=ETP\\,R_e\\,EP\\,D_e.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.109em;\">N\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">T\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0269em;\">w\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">T\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>C\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">C\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 是配置的 CP，\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>w\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">D_w\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0269em;\">w\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 是不含 GTP 轴的 dense 权重副本维度。这里换用 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>w\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">D_w\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0269em;\">w\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，避免与前面普通布局的样本并行度混用。\u003C\u002Fp>\n\u003Cp>ETP=\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>q\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">q\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.625em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>、EGTP=\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>R\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">R_e\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 时，同一逻辑 expert 的权重永久分成 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>q\u003C\u002Fmi>\u003Cmsub>\u003Cmi>R\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">qR_e\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8778em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 份。执行前，在 \u003Ccode>expt_gtp_remat\u003C\u002Fcode> 组中 AllGather，恢复当前 ETP rank 的矩阵片；GEMM 仍按 ETP 的 intermediate 分片执行。反向产生的完整临时 wgrad 再沿 EGTP ReduceScatter 回永久权重片。\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-code-block>\u003Cdiv class=\"code-toolbar\">\u003Cspan class=\"code-language\">text\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"code-copy\" data-copy-code aria-label=\"复制代码\" title=\"复制代码\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"8\" y=\"8\" width=\"13\" height=\"13\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"code-viewport\">\u003Cdiv class=\"code-line-numbers\" aria-hidden=\"true\">\u003Cspan>1\u003C\u002Fspan>\u003Cspan>2\u003C\u002Fspan>\u003Cspan>3\u003C\u002Fspan>\u003Cspan>4\u003C\u002Fspan>\u003Cspan>5\u003C\u002Fspan>\u003Cspan>6\u003C\u002Fspan>\u003Cspan>7\u003C\u002Fspan>\u003Cspan>8\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"hljs\" tabindex=\"0\" aria-label=\"代码，超出宽度时可横向滚动\">\u003Ccode>永久 expert weight shard\n→ EGTP AllGather\n→ 当前 ETP rank 所需的 weight slice\n→ expert GEMM\n→ 临时 wgrad\n→ EGTP ReduceScatter\n→ 永久 grad shard\n→ 真正副本域的 EDP 归约\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>这里同时存在三种动作：EP 把不同专家放到不同设备；ETP 让多个设备计算一个专家的不同矩阵片；EGTP 在执行时临时取回更完整的权重。EGTP 的 AllGather 搬权重，dispatcher 的 ETP AllGather 搬 token，二者不能合并记账。\u003C\u002Fp>\n\u003Cp>实现可以从 \u003Ccode>GTPShardedParam.materialize_group_for_forward\u002Fbackward\u003C\u002Fcode> 和 \u003Ccode>finalize_group_grads\u003C\u002Fcode> 往下读，分别接到 \u003Ccode>all_gather_and_prefetch\u003C\u002Fcode>、\u003Ccode>wgrad_reduce_scatter\u003C\u002Fcode>。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftensor_parallel\u002Fgeneralized_tensor_parallelism.py#L2541\" target=\"_blank\" rel=\"noopener noreferrer\">重物化实现\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>router、norm 等未做 GTP 权重切片的参数，还需要在相应 GTP 轴上归约；已经通过重物化 wgrad ReduceScatter 完成该轴的参数会被区别处理。DDP 中也有 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>R\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmi mathvariant=\"normal\">\u002F\u003C\u002Fmi>\u003Cmi>R\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">R_e\u002FR\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u002F\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 的 expert gradient correction，不能把普通布局的缩放公式无条件沿用。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fdistributed\u002Ffinalize_model_grads.py#L583\" target=\"_blank\" rel=\"noopener noreferrer\">GTP 梯度收尾\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3 id=\"post-heading-权重与-token-双视图\">权重与 token 双视图\u003C\u002Fh3>\n\u003Cp>GTP 还允许在 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>R\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">R\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 轴内部继续分序列。令 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>q\u003C\u002Fmi>\u003Cmi>s\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">q_s\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.625em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">s\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 为 \u003Ccode>gtp_remat_num_sequence_shards\u003C\u002Fcode>，要求 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>q\u003C\u002Fmi>\u003Cmi>s\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>∣\u003C\u002Fmo>\u003Cmi>R\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">q_s\\mid R\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">s\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">∣\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，则：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi>C\u003C\u002Fmi>\u003Cmsub>\u003Cmi>P\u003C\u002Fmi>\u003Cmrow>\u003Cmi>r\u003C\u002Fmi>\u003Cmi>u\u003C\u002Fmi>\u003Cmi>n\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003Cmi>i\u003C\u002Fmi>\u003Cmi>m\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>C\u003C\u002Fmi>\u003Cmsub>\u003Cmi>q\u003C\u002Fmi>\u003Cmi>s\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmspace width=\"2em\"\u002F>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmrow>\u003Cmi>b\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003Cmi>c\u003C\u002Fmi>\u003Cmi>h\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>w\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmfrac>\u003Cmi>R\u003C\u002Fmi>\u003Cmsub>\u003Cmi>q\u003C\u002Fmi>\u003Cmi>s\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmfrac>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\nCP_{runtime}=Cq_s,\\qquad\nD_{batch}=D_w\\frac{R}{q_s}.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3117em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0278em;\">r\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">u\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">n\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">im\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8778em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">s\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:2em;\">\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3361em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">ba\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">c\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">h\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:2.2408em;vertical-align:-0.8804em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0269em;\">w\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mopen nulldelimiter\">\u003C\u002Fspan>\u003Cspan class=\"mfrac\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.3603em;\">\u003Cspan style=\"top:-2.314em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">s\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.23em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"frac-line\" style=\"border-bottom-width:0.04em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.677em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.8804em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose nulldelimiter\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>R\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">R\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 的一部分处理同一样本的不同序列片，剩余部分处理不同样本。batch 关系变成：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi>B\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmi>b\u003C\u002Fmi>\u003Cmi>m\u003C\u002Fmi>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmrow>\u003Cmi>b\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003Cmi>c\u003C\u002Fmi>\u003Cmi>h\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\nB=bmD_{batch}.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0502em;\">B\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8444em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">bm\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3361em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">ba\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">c\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">h\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>权重网格依然是 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>T\u003C\u002Fmi>\u003Cmi>P\u003C\u002Fmi>\u003Cmo>×\u003C\u002Fmo>\u003Cmi>R\u003C\u002Fmi>\u003Cmo>×\u003C\u002Fmo>\u003Cmi>C\u003C\u002Fmi>\u003Cmo>×\u003C\u002Fmo>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>w\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>×\u003C\u002Fmo>\u003Cmi>P\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">TP\\times R\\times C\\times D_w\\times P\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7667em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">T\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7667em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.7667em;vertical-align:-0.0833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0269em;\">w\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003Cspan class=\"mbin\">×\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2222em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。如果把已扩大的 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>C\u003C\u002Fmi>\u003Cmsub>\u003Cmi>P\u003C\u002Fmi>\u003Cmrow>\u003Cmi>r\u003C\u002Fmi>\u003Cmi>u\u003C\u002Fmi>\u003Cmi>n\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003Cmi>i\u003C\u002Fmi>\u003Cmi>m\u003C\u002Fmi>\u003Cmi>e\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">CP_{runtime}\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">P\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3117em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0278em;\">r\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">u\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">n\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">im\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">e\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 再与完整 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>R\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">R\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 相乘，就重复计算了 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>q\u003C\u002Fmi>\u003Cmi>s\u003C\u002Fmi>\u003C\u002Fmsub>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">q_s\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.625em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">s\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftensor_parallel\u002Fgtp_parallel_layout.py#L72\" target=\"_blank\" rel=\"noopener noreferrer\">布局对象\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>例如官方文档的 128 卡、TP1、PP1、\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>R\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>64\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">R=64\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0077em;\">R\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">64\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>、\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>C\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>2\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">C=2\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">2\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>、\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>q\u003C\u002Fmi>\u003Cmi>s\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>64\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">q_s=64\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.625em;vertical-align:-0.1944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0359em;\">q\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\">s\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">64\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>，得到 runtime CP128、\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmi>w\u003C\u002Fmi>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>1\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">D_w=1\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.1514em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mathnormal mtight\" style=\"margin-right:0.0269em;\">w\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">1\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>、\u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmsub>\u003Cmi>D\u003C\u002Fmi>\u003Cmrow>\u003Cmi>b\u003C\u002Fmi>\u003Cmi>a\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003Cmi>c\u003C\u002Fmi>\u003Cmi>h\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmsub>\u003Cmo>=\u003C\u002Fmo>\u003Cmn>1\u003C\u002Fmn>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">D_{batch}=1\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D\u003C\u002Fspan>\u003Cspan class=\"msupsub\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.3361em;\">\u003Cspan style=\"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;\">\u003Cspan class=\"pstrut\" style=\"height:2.7em;\">\u003C\u002Fspan>\u003Cspan class=\"sizing reset-size6 size3 mtight\">\u003Cspan class=\"mord mtight\">\u003Cspan class=\"mord mathnormal mtight\">ba\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">t\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">c\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal mtight\">h\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.15em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6444em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">1\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。这些设备处理同一 microbatch 的不同上下文分片，权重则在两份副本内各分 64 片。\u003C\u002Fp>\n\u003Cp>这是通用 GTP 布局例子。当前 GTP sequence sharding 要求 Megatron DDP 与 \u003Ccode>torch_dist\u003C\u002Fcode>，dynamic CP、FSDP 和部分 packing scheduler 有明确限制；不能据此声称已验证完整 V4 的任意 GTP 组合。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-虚拟专家\">虚拟专家\u003C\u002Fh2>\n\u003Cp>静态 EP 中，专家 ID 对应固定 owner。动态路由可能让某个 owner 收到很多 token，即使其他 rank 空闲，也不能直接拿这些 token 去算别的专家。\u003C\u002Fp>\n\u003Cp>当前 HybridEP 接入的虚拟专家负载均衡允许给热点逻辑 expert 临时分配额外执行槽。planner 选择要复制的专家权重，搬到 peer 的临时槽，再把部分 assignment 发过去。反向生成的临时副本 wgrad 回收到原 owner，之后继续正常的参数同步。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fvirtual_expert_load_balancer.py\" target=\"_blank\" rel=\"noopener noreferrer\">负载均衡实现\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>逻辑专家数和模型 top-k 保持原意。临时执行副本不注册为另一套独立可训练参数，否则 optimizer 会把同一个专家的两份计算更新成不同模型。\u003C\u002Fp>\n\u003Cp>它同时移动计算和被选权重，因此要一起核算权重传输、临时缓冲与梯度回流，不能只看 token 负载变均匀。当前路径有 ETP1、固定本地 token 数、禁用 expert bias 和 FP4 等配置要求，FSDP 及部分 overlap 也有限制。本文把它作为通用实现支路介绍，未将其当成 V4 原始配置可直接开启的选项。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Ftransformer_config.py\" target=\"_blank\" rel=\"noopener noreferrer\">当前约束\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-容量与低维通信\">容量与低维通信\u003C\u002Fh2>\n\u003Ch3 id=\"post-heading-capacity-的作用范围\">capacity 的作用范围\u003C\u002Fh3>\n\u003Cp>前面的 shape 都假设 dropless。普通 AlltoAll 的 drop-and-pad 路径会按当前来源 rank 的 assignment 预算计算每专家容量：\u003C\u002Fp>\n\u003Csection>\u003Ceqn>\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi>c\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmrow>\u003Cmo fence=\"true\">⌈\u003C\u002Fmo>\u003Cmi>C\u003C\u002Fmi>\u003Cmi>F\u003C\u002Fmi>\u003Cmfrac>\u003Cmrow>\u003Cmi>n\u003C\u002Fmi>\u003Cmi>k\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cmi>E\u003C\u002Fmi>\u003C\u002Fmfrac>\u003Cmo fence=\"true\">⌉\u003C\u002Fmo>\u003C\u002Fmrow>\u003Cmi mathvariant=\"normal\">.\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">\nc=\\left\\lceil CF\\frac{nk}{E}\\right\\rceil.\n\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.4306em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">c\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:2.4em;vertical-align:-0.95em;\">\u003C\u002Fspan>\u003Cspan class=\"minner\">\u003Cspan class=\"mopen delimcenter\" style=\"top:0em;\">\u003Cspan class=\"delimsizing size3\">⌈\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0715em;\">C\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.1389em;\">F\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mopen nulldelimiter\">\u003C\u002Fspan>\u003Cspan class=\"mfrac\">\u003Cspan class=\"vlist-t vlist-t2\">\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:1.3714em;\">\u003Cspan style=\"top:-2.314em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.23em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"frac-line\" style=\"border-bottom-width:0.04em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan style=\"top:-3.677em;\">\u003Cspan class=\"pstrut\" style=\"height:3em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0315em;\">nk\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-s\">​\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"vlist-r\">\u003Cspan class=\"vlist\" style=\"height:0.686em;\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose nulldelimiter\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mclose delimcenter\" style=\"top:0em;\">\u003Cspan class=\"delimsizing size3\">⌉\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feqn>\u003C\u002Fsection>\u003Cp>第一次 permute 输出固定为 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>E\u003C\u002Fmi>\u003Cmi>c\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">Ec\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6833em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">c\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 行。接收端一个本地专家会汇集多个来源的容量块，不能把单个来源的 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>c\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">c\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.4306em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">c\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 当成全 EP 域最终的专家总容量。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Ftoken_dispatcher.py#L515\" target=\"_blank\" rel=\"noopener noreferrer\">容量分支\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>dropping 只删除某些 token→expert assignment，不一定删除这条 token 的全部分支，shared expert 也仍有自己的路径。改变并行分组后，局部容量预算与竞争集合可能改变，dropping 的数值等价不能只靠检查总 token 数证明。\u003C\u002Fp>\n\u003Ch3 id=\"post-heading-latent-moe\">Latent MoE\u003C\u002Fh3>\n\u003Cp>\u003Ccode>MoELayer.preprocess\u002Fpostprocess\u003C\u002Fcode> 还有可选的 latent projection：先把 routed 分支从 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>h\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">h\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq> 映射到更小维度，dispatch、expert、combine 在该维度工作，返回后再投影回 \u003Ceq>\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\">\u003Csemantics>\u003Cmrow>\u003Cmi>h\u003C\u002Fmi>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">h\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"base\">\u003Cspan class=\"strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">h\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Feq>。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fmoe_layer.py\" target=\"_blank\" rel=\"noopener noreferrer\">投影分支\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>router 和 shared expert 仍需按各自的输入路径处理。通信 payload 因 routed hidden 宽度改变而变化，但多了投影参数与计算；它属于模型结构选项。本文 V4 算例没有启用这一选项，不能因为同在 \u003Ccode>MoELayer\u003C\u002Fcode> 内就替 V4 自动加上。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-muon-的另一轮-a2a\">Muon 的另一轮 A2A\u003C\u002Fh2>\n\u003Cp>V4 官方训练还提供了一个很适合对照阅读的例子：同样叫 AlltoAll，搬的却是参数梯度。\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fhtml\u002F2606.19348v1#S3.SS4.SSS1\" target=\"_blank\" rel=\"noopener noreferrer\">V4 Muon 实现说明\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Muon 更新需要逻辑完整的矩阵。官方为 MoE 参数安排保持独立专家矩阵完整的 bucket，再按相同形状批量执行 Newton–Schulz。梯度以随机舍入方式压到 BF16 传输，通过 A2A 交换后在本地 FP32 累加，避免低精度反复归约的误差。\u003C\u002Fp>\n\u003Cp>这轮 A2A 合并的是同一参数的梯度贡献。前面 dispatcher 的 A2A 则按专家分配激活与输入梯度，二者的张量、分组和调用时机都需要分别确认。本文不把官方 Muon 同步算法写成 Megatron 普通 distributed optimizer 的默认行为。\u003C\u002Fp>\n\u003Cp>精度也要按阶段说明。V4 报告的 MXFP4 QAT 位于后训练部分，与 Megatron 的 NVFP4 原生训练支持属于不同实现。checkpoint 中的 FP4 权重类型不能证明预训练从头到尾都采用 FP4，也不能直接据此把本文的 BF16 payload 除以四。\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fhtml\u002F2606.19348v1#S5.SS2.SSS1\" target=\"_blank\" rel=\"noopener noreferrer\">V4 QAT\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-保存与恢复\">保存与恢复\u003C\u002Fh2>\n\u003Cp>并行度改变后，本地 expert 下标不一定保持原意。EP64 的 local expert 0，恢复到 EP32 后，需要依据全局 expert ID 定位，再处理 ETP 与状态分片。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Fblob\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Ftransformer\u002Fmoe\u002Fexperts.py\" target=\"_blank\" rel=\"noopener noreferrer\">专家 checkpoint\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Megatron 的 distributed checkpoint 记录逻辑 shape、分片偏移和 replica 信息，加载时据此重分片。完整恢复还涉及 router 权重、Hash 表、expert bias、optimizer state，以及所需 RNG 状态。只按旧 rank 文件名复制数据，无法表达这些对应关系。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM\u002Ftree\u002Fed9c2c8c1cf4a5438922ae8d215181e7c8b9e0fe\u002Fmegatron\u002Fcore\u002Fdist_checkpointing\" target=\"_blank\" rel=\"noopener noreferrer\">checkpoint 包\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>MTP 会增加预测模块或重复使用的计算路径，也可能再次调用 MoE。它不增加一个独立设备维度，但会改变每个 step 的工作量、参数归属与调度。阅读 layout 和 checkpoint 时，应把主模型与 MTP 明确对应到各自模块，不能只按主体 61 个块猜测全部参数位置。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-串起一次更新\">串起一次更新\u003C\u002Fh2>\n\u003Cp>最后把前面的路径按一次 optimizer update 接起来。仍取普通 folding、ETP1、dropless 的 V4 算例。\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-code-block>\u003Cdiv class=\"code-toolbar\">\u003Cspan class=\"code-language\">text\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"code-copy\" data-copy-code aria-label=\"复制代码\" title=\"复制代码\">\u003Csvg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"8\" y=\"8\" width=\"13\" height=\"13\" rx=\"2\"\u002F>\u003Cpath d=\"M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"code-viewport\">\u003Cdiv class=\"code-line-numbers\" aria-hidden=\"true\">\u003Cspan>1\u003C\u002Fspan>\u003Cspan>2\u003C\u002Fspan>\u003Cspan>3\u003C\u002Fspan>\u003Cspan>4\u003C\u002Fspan>\u003Cspan>5\u003C\u002Fspan>\u003Cspan>6\u003C\u002Fspan>\u003Cspan>7\u003C\u002Fspan>\u003Cspan>8\u003C\u002Fspan>\u003Cspan>9\u003C\u002Fspan>\u003Cspan>10\u003C\u002Fspan>\u003Cspan>11\u003C\u002Fspan>\u003Cspan>12\u003C\u002Fspan>\u003Cspan>13\u003C\u002Fspan>\u003Cspan>14\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"hljs\" tabindex=\"0\" aria-label=\"代码，超出宽度时可横向滚动\">\u003Ccode>64 个 microbatch，逐个进入当前 pipeline 副本\n  │\n  ├─ attention：按 CP 取得上下文\n  ├─ router：本地 token → expert IDs + continuous weights\n  ├─ dispatch：重排 → EP 交换 → 本地专家排序\n  ├─ experts：FC1 → weighted SwiGLU → FC2\n  ├─ combine：撤销排序 → EP 返回 → 恢复原 token\n  ├─ shared：对原输入计算，与 routed 结果相加\n  └─ backward：沿上述依赖返回 dgrad，累积 wgrad\n  │\n  ├─ dense wgrad：DP×CP 归约\n  ├─ routed wgrad：EDP 归约\n  ├─ 处理 TP 复制参数、共享参数与路由统计\n  └─ optimizer：更新状态，按所选分片策略同步参数\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>实际流水线会交错这些任务，bucket 规约也可能提前启动。图里表达的是依赖与归属，不能当成所有 GPU 的串行时间线。\u003C\u002Fp>\n\u003Cp>继续阅读某个优化分支时，可以在调用处记下四项：操作前后的 shape、使用的 process group、数据是否已经加权、backward 要把哪些贡献相加。再沿参数标记找到 reducer 与 optimizer，才能确认这一轮计算最后更新了哪一份权重。\u003C\u002Fp>\n\u003Ch2 id=\"post-heading-阅读资料\">阅读资料\u003C\u002Fh2>\n\u003Cp>机制与源码部分主要对照 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fhtml\u002F2504.14960v3#S3.SS2\" target=\"_blank\" rel=\"noopener noreferrer\">MoE Parallel Folding（2025，v3）\u003C\u002Fa> 的双布局、\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fhtml\u002F2603.07685v2\" target=\"_blank\" rel=\"noopener noreferrer\">Scalable Training of MoE Models with Megatron Core（2026，v2）\u003C\u002Fa> 的系统分解，并以固定源码核实具体调用。V4 的模型和训练边界来自\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fhtml\u002F2606.19348v1\" target=\"_blank\" rel=\"noopener noreferrer\">原始技术报告\u003C\u002Fa>及官方配置。\u003C\u002Fp>\n\u003Cp>工程讲解另读了 \u003Ca href=\"https:\u002F\u002Fnanotron-ultrascale-playbook.static.hf.space\u002Findex.html#expert-parallelism\" target=\"_blank\" rel=\"noopener noreferrer\">Ultra-Scale Playbook\u003C\u002Fa> 的 EP、SP\u002FCP 与组合并行章节，以及 \u003Ca href=\"https:\u002F\u002Fdeveloper.nvidia.com\u002Fblog\u002Foptimizing-communication-for-mixture-of-experts-training-with-hybrid-expert-parallel\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">HybridEP\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fdeveloper.nvidia.com\u002Fblog\u002Fboosting-moe-training-throughput-with-advanced-fusion-kernels\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">融合专家算子\u003C\u002Fa>。这些文章帮助建立机制图景；具体版本限制和张量变化仍按上面的源码路径检查。\u003C\u002Fp>\n",[16,20,23,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,105,108,111,114,117,120,123,126,129,132],{"id":17,"text":18,"level":19},"post-heading-模型与入口","模型与入口",2,{"id":21,"text":22,"level":19},"post-heading-两套并行网格","两套并行网格",{"id":24,"text":25,"level":26},"post-heading-一个分组算例","一个分组算例",3,{"id":28,"text":29,"level":19},"post-heading-进程组的成员","进程组的成员",{"id":31,"text":32,"level":19},"post-heading-moelayer-的调用链","MoELayer 的调用链",{"id":34,"text":35,"level":19},"post-heading-路由与负载","路由与负载",{"id":37,"text":38,"level":26},"post-heading-路由张量","路由张量",{"id":40,"text":41,"level":26},"post-heading-hash-路由","Hash 路由",{"id":43,"text":44,"level":26},"post-heading-均衡统计","均衡统计",{"id":46,"text":47,"level":19},"post-heading-alltoall-的前向","AlltoAll 的前向",{"id":49,"text":50,"level":26},"post-heading-计数与重排","计数与重排",{"id":52,"text":53,"level":26},"post-heading-ep-交换","EP 交换",{"id":55,"text":56,"level":19},"post-heading-etp-里的矩阵","ETP 里的矩阵",{"id":58,"text":59,"level":26},"post-heading-概率在哪里乘","概率在哪里乘",{"id":61,"text":62,"level":19},"post-heading-结果怎样送回","结果怎样送回",{"id":64,"text":65,"level":19},"post-heading-一轮-v4-的数据量","一轮 V4 的数据量",{"id":67,"text":68,"level":19},"post-heading-另外两类-dispatcher","另外两类 dispatcher",{"id":70,"text":71,"level":26},"post-heading-allgather","AllGather",{"id":73,"text":74,"level":26},"post-heading-flex","Flex",{"id":76,"text":77,"level":19},"post-heading-反向的通信","反向的通信",{"id":79,"text":80,"level":19},"post-heading-参数梯度同步","参数梯度同步",{"id":82,"text":83,"level":26},"post-heading-dense-与-expert-的归约组","dense 与 expert 的归约组",{"id":85,"text":86,"level":26},"post-heading-为什么不能直接除-edp","为什么不能直接除 EDP",{"id":88,"text":89,"level":26},"post-heading-优化器的通信","优化器的通信",{"id":91,"text":92,"level":19},"post-heading-shared-expert","shared expert",{"id":94,"text":95,"level":19},"post-heading-cp-与-pp","CP 与 PP",{"id":97,"text":98,"level":26},"post-heading-cp-的两条数据流","CP 的两条数据流",{"id":100,"text":101,"level":26},"post-heading-pp-的边界","PP 的边界",{"id":103,"text":104,"level":19},"post-heading-重叠与重算","重叠与重算",{"id":106,"text":107,"level":19},"post-heading-gtp-与-egtp","GTP 与 EGTP",{"id":109,"text":110,"level":26},"post-heading-权重与-token-双视图","权重与 token 双视图",{"id":112,"text":113,"level":19},"post-heading-虚拟专家","虚拟专家",{"id":115,"text":116,"level":19},"post-heading-容量与低维通信","容量与低维通信",{"id":118,"text":119,"level":26},"post-heading-capacity-的作用范围","capacity 的作用范围",{"id":121,"text":122,"level":26},"post-heading-latent-moe","Latent MoE",{"id":124,"text":125,"level":19},"post-heading-muon-的另一轮-a2a","Muon 的另一轮 A2A",{"id":127,"text":128,"level":19},"post-heading-保存与恢复","保存与恢复",{"id":130,"text":131,"level":19},"post-heading-串起一次更新","串起一次更新",{"id":133,"text":134,"level":19},"post-heading-阅读资料","阅读资料",1793019099118]