知识库 / 模型架构
GitHub
← 模型架构

LAYER 04 / MODEL ARCHITECTURE

MoE:条件计算与路由

所属: 模型资产层。本页边界: 怎样以稀疏激活增加参数容量,以及路由为何成为瓶颈。

#核心公式

y=∑e∈TopK⁡(g(x))ge(x) Ee(x) y=\sum_{e\in\operatorname{TopK}(g(x))}g_e(x)\,E_e(x)

#符号说明

符号 含义 单位/条件
x,yx,y 一个 token 的输入隐藏状态与 MoE 输出 Rd\mathbb R^d
EE 专家总数;第 e 个专家网络记为 EeE_e 正整数、函数
g(x)g(x) router 输出的专家权重分布 RE\mathbb R^E
ge(x)g_e(x) token 与专家分别记为 x, ex,\ e 时的门控权重 非负标量
Wr, E(x)W_r,\ \mathcal E(x) router 投影矩阵、Top-kk 后选中的专家集合 矩阵、集合
kk Top-kk 路由中每 token 激活的专家数 k≪Ek\ll E
fe, Pef_e,\ P_e 批内专家 ee 的实际 token 比例与平均路由概率 [0,1][0,1]
λ\lambda 负载均衡辅助损失的系数 非负标量
Lbalance\mathcal L_{\mathrm{balance}} 专家负载均衡辅助损失 非负标量
BB 当前路由批次中的 token 数 正整数
C, cC,\ c 每专家容量及 capacity factor token 数、正实数
beb_e 专家 ee 的负载偏置项(ALF-LB) 实数
γ\gamma 偏置更新率(ALF-LB) 正实数
si(θ)s_i(\theta) 序列级重要性比率 正实数
rer_e 专家 ee 的 token 选择容量 正整数

若 Top-kk 后重新归一化,正文使用 g~e\tilde g_e 表示保留专家的归一化门控权重。

#技术要点

  • router 为 token 选择少数专家。路由机制正从离散 Top-kk 向可微分路由(ReMoE 的 ReLU 路由)和无辅助损失负载均衡(DeepSeek 的 ALF-LB)演进。
  • 总参数、激活参数和通信成本必须分开报告。专家激活比(activated/total)在 5%–15% 区间通常最优,模型越大倾向于越稀疏。
  • 负载均衡策略已从辅助损失项演进到偏置驱动(ALF-LB)和校准负载均衡(CLB),避免了辅助损失引入的干扰梯度。
  • expert parallel 引入 All-to-All,通信优化方案包括 SwiftEP(TMA 卸载)、ScaleMoE(自适应 All-to-All 消除零填充)、LAER-MoE(负载自适应专家重布局)等。
  • 细粒度专家分割将每个专家分解为更小的子专家,在相同激活参数下提升专家组合灵活性,是 DeepSeekMoE 的核心设计。
  • 专家专业化可通过层内和跨层正则化损失促进,防止不同专家学习冗余功能。
  • 专家上行回收(Expert Upcycling)从已有 MoE 扩展专家数量,保持 Top-kk 和激活成本不变。
  • MoE-Bench 和 DBES 提供了跨推理、效率和安全的标准化 MoE 评估。

#原理与演进

#Router 如何让参数多、每 token 计算少

g(x)=softmax⁡(Wrx),E(x)=TopK⁡(g(x)) g(x)=\operatorname{softmax}(W_rx),\qquad \mathcal E(x)=\operatorname{TopK}(g(x))
  • 稠密 FFN 每个 token 用同一组参数;MoE 用路由器选择 kk 个专家,单 token 只计算被选中的专家。
  • 因此须区分 NtotalN_{\mathrm{total}}(全部专家参数)和 NactiveN_{\mathrm{active}}(一次 token 实际调用参数);前者影响权重存储,后者更接近单 token 计算量。
  • 若热门专家拥塞、冷门专家得不到训练,路由器会塌缩;均衡损失或路由约束缓解这一点,但也可能把本应集中到某专家的任务强行分散。Switch Transformer 原论文
  • 以 Top-1 路由为例,可用批内专家占比 fef_e 和平均路由概率 PeP_e 构造辅助项:
Lbalance=λE∑e=1EfePe \mathcal L_{\mathrm{balance}}=\lambda E\sum_{e=1}^{E}f_eP_e
  • 该项促使实际负载与路由概率都更均衡;fef_e 来自离散选择,优化主要经 PeP_e 传递梯度。λ\lambda 过大则可能压制有效专家分工。
  • 专家容量限制每批可接收 token 数。超额 token 若丢弃会损失训练信号;提高容量或采用 dropless 路由又会增加内存和不规则计算。

#路由机制的演进

MoE 架构的演进趋势是从“激活更多稀疏参数”转向解耦语义路由、计算预算和物理执行。路由机制可从以下几个维度分类:

路由策略 核心机制 代表方法 关键特征
Token-choice Top-kk 每个 token 选 kk 个专家 Switch, Mixtral 简单,但容量溢出和路由不稳
Expert-choice 每个专家选 top-rer_e 个 token Expert Choice Routing 天然均衡,但 token 可能被多专家选
可微分路由 以 ℓ1\ell_1 正则和 ReLU 替代离散 Top-k ReMoE 端到端可微,避免离散选择不可微问题
迭代路由 多轮选择并逐步精化输出 CoE 提升专家组合灵活性
序列级路由 序列级重要性比率 GSPO 改善长序列和 MoE RL 稳定性
自适应路由 根据 token 难度动态调整 kk AdaMoE 减少 14.5% FLOPs 且提升准确率

ReMoE 用基于 ReLU 的完全可微分路由替代离散 TopG 路由,并配合自适应 ℓ1\ell_1 正则化实现稀疏性控制。这消除了离散 Top-kk 选择不可微导致的冷门专家训练不足问题。

CoE(Chain-of-Experts) 引入迭代路由策略,在多轮中选择 Top-KK 专家并逐步精化输出。AdaMoE 为每个 token 引入“空专家”(null expert),允许 token 自适应地选择激活专家数量而非固定 kk。在 Mixtral-8x7B 上,ARC-C 数据集的 FLOPs 减少 14.5% 同时准确率提升 1.69%。

#无辅助损失负载均衡(ALF-LB)

传统 MoE 通过辅助损失鼓励专家负载均衡,但辅助损失会引入干扰梯度,影响模型性能。DeepSeek 提出的 Loss-Free Balancing 在 Top-KK 路由前对专家路由分数施加专家级偏置 beb_e,并根据近期负载动态更新偏置。

ALF-LB 的核心机制为:

g~e(x)=ge(x)+be \tilde g_e(x) = g_e(x) + b_e

偏置 beb_e 根据专家近期负载动态调整:过载专家 beb_e 减小,欠载专家 beb_e 增大。偏置更新在反向图之外操作,不产生干扰梯度。该策略已被 DeepSeek-V2/V3/V4 等模型采用。

理论分析表明,ALF-LB 的收敛性可通过偏置更新率 γ\gamma 与学习率的联合条件保证,在 1B 参数 DeepSeekMoE 模型上的实验验证了理论发现。

校准负载均衡(CLB) 进一步改善了辅助损失和无辅助损失两种体制下的负载均衡效果。无论应用于标准辅助损失还是 ALF-LB 体制,CLB 都一致地提升了下游准确率和收敛速度。

#细粒度专家分割

细粒度专家分割是 DeepSeekMoE 的核心设计。以 Mixtral 8×7B 为对照:每层满足式(1)、式(2),每个专家的中间维满足式(3),和 Mistral 7B 的稠密 FFN 同构。DeepSeekMoE 将每个专家进一步分解为更小的子专家,同时激活更多子专家。

式(1):

E=8 E=8

式(2):

k=2 k=2

式(3):

M=14336 M=14336

细粒度分割的核心收益是专家组合灵活性的提升:在相同激活参数预算下,更细粒度的专家可以产生更多可能的组合,从而更精确地匹配 token 的语义需求。这一设计已被 Qwen2.5-MoE 和 DeepSeek-V3 等模型采用。

Expert Upcycling 从已有 EE-expert MoE 扩展到 mEmE 个专家,同时保持 Top-kk 与激活成本不变。Upcycling 不是新的 Router family,而是专家数量扩展的工程路径。

#从稠密到稀疏的代价链

设计 收益 新问题
Top-1 每 token 只进一个专家,计算低 容量溢出与路由不稳
Top-2/Top-k 多专家组合、表示更灵活 计算和通信增长
细粒度分割 专家组合灵活性提升 路由复杂度增加
专家并行 全部专家分布在多设备 跨设备 All-to-All 与尾部等待
共享专家 / 稳定路由 保留公共知识、降低路由波动 总体计算或参数上升
ALF-LB 无干扰梯度的负载均衡 偏置更新率需调参

连接: 集合通信解释 All-to-All;训练并行解释 EP 与状态分片。

#1. 容量与激活计算为什么能分离

稠密 FFN 每个 token 调用全部 FFN 权重;MoE 将 FFN 替换为 EE 个专家,每个 token 选 k≪Ek\ll E 个。因此总参数随 EE 增长,但单 token 专家 FLOPs 近似随 kk 增长。注意 router、共享层、通信和不均衡额外成本仍存在;“总参数 10 倍”不意味着“计算不变”。

令专家 ee 的负载定义如下,理想均衡值约 Bk/EBk/E。实际时延更接近 max⁡ene\max_e n_e 对应的慢专家,而不是平均值。不同设备上的专家分布、All-to-All 传输和专家微批大小共同决定吞吐。

ne=∑i=1B1[e∈E(xi)] n_e=\sum_{i=1}^{B}\mathbf 1[e\in\mathcal E(x_i)]

缩放律发现:在固定计算预算下,更大且更稀疏的模型(更低的激活比)产生更好的性能。激活比(activated/total)在 5%–15% 区间通常最优,模型越大倾向于越稀疏。

#2. 路由的三个相互拉扯目标

  1. 专业化: 相关 token 应稳定进入有用专家。
  2. 均衡: 不能让某些专家过载、其他专家闲置。
  3. 稳定: 梯度和路由选择不能因微小噪声频繁翻转。

Top-kk 路由让第 1 项容易形成,但可能塌缩;均衡辅助损失改善第 2 项,但过强会破坏自然专业化;噪声路由或路由约束改善探索,却可能降低可预测性。问题本质是离散资源分配与连续梯度优化耦合。

专家重叠问题:不同专家可能处理相似 token 并学习冗余功能,导致路由模糊和容量利用不足。可提出层内和跨层正则化损失来促进专家专业化:层内损失鼓励同一 token 被不同专家以互补方式处理,跨层损失鼓励不同层的专家形成互补功能。

#3. Capacity factor 和 token dropping

若每专家容量设为下式,cc 为 capacity factor,cc 小可控制内存和计算上界,却可能丢弃溢出 token;cc 大降低丢弃率但增加预留与长尾开销。Dropless 路由避免丢 token,但需要处理变长专家批次和不规则计算。该选择应同时报告丢弃率、专家负载分布和真实延迟。

C=⌈cBk/E⌉ C=\lceil cBk/E\rceil

#4. 专家并行的通信优化

MoE 专家并行(EP)将专家分布到不同设备,在 dispatch 和 combine 阶段引入 All-to-All 通信开销,prefill 阶段尤为突出。以下方案分别针对不同瓶颈:

方案 核心机制 解决瓶颈
SwiftEP 缓冲区融合 + TMA 卸载 prefill 阶段 All-to-All 延迟
ScaleMoE 自适应 All-to-All 消除零填充 不必要的零填充通信
LAER-MoE 负载自适应专家重布局 专家粒度参数恢复
NetMoE 动态样本放置 跨设备数据交换
动态通信模式选择 Data-Centric vs Expert-Centric 自适应切换 专家参数大小与 token 数据大小的比较

SwiftEP 结合缓冲区融合和 Tensor Memory Accelerator(TMA)卸载,为 MoE prefill 定制 All-to-All 通信库。ScaleMoE 提出自适应 All-to-All 通信,消除零填充导致的不必要零传输,同时解决专家选择中的负载不均衡。LAER-MoE 通过全分片专家并行(FSEP)在训练中按专家粒度恢复部分专家,减少跨设备通信量。

IETF 草案提出了自适应通信模式选择机制,根据专家参数大小与 token 数据大小的比较,动态选择 Data-Centric 或 Expert-Centric All-to-All 通信模式。

#5. 技术路线与缺陷推动

稠密 FFN(扩容量会等比例涨计算)→ 稀疏 Top-1(激活成本下降但专家热点和丢 token)→ Top-kk / 容量机制(提高表达与稳定但通信涨)→ 细粒度专家分割(组合灵活性提升但路由复杂度增加)→ 专家并行(总参数可分布但 All-to-All 成瓶颈)→ 共享专家/改进路由(公共知识更稳但又增加固定计算)→ ALF-LB(无干扰梯度均衡)→ 可微分路由(端到端可微)。

这不是统一的线性“版本号”;各分支常同时存在。一个 MoE 系统是否比同 FLOPs 稠密模型优,必须比较训练 token、有效参数、推理批量、链路拓扑与质量,而不能只比较总参数。

#6. 与模型质量相关的诊断

观测 可能原因 解释前必须排除
少数专家占比极高 路由塌缩 语料本身类别严重偏斜
训练慢且设备利用不均 热点专家/通信等待 底层网络或算子效率问题
稀有任务退化 专家训练样本不足 数据集覆盖缺口
同义输入路由大变 路由不稳 tokenization 差异
专家功能重叠 缺乏专业化促进机制 训练数据同质化

#7. Top-kk 路由的归一化细节

若 router softmax 给出 ge(x)g_e(x),只保留式(1)所示集合后,可将保留权重按式(2)重新归一化,再按式(3)计算。若不重新归一化,输出尺度会受被舍弃专家的总概率影响。不同 MoE 实现对门控值、缩放与残差的处理不同,比较公式时要核对这一点。

式(1):

S=TopK⁡(g(x)) S=\operatorname{TopK}(g(x))

式(2):

g~e=ge/∑j∈Sgj \tilde g_e=g_e/\sum_{j\in S}g_j

式(3):

y=∑e∈Sg~eEe(x) y=\sum_{e\in S}\tilde g_eE_e(x)

离散 Top-kk 选择本身不可微,训练梯度主要流向被选专家和其 gate;未被选择的专家缺少该 token 的直接学习信号。这也是专家塌缩、冷门专家训练不足的根源之一。ReMoE 通过 ReLU-based 路由和自适应 ℓ1\ell_1 正则化实现了完全可微分路由,从根本上消除了这一问题。

#8. 专家数与推理延迟并非单调关系

固定激活专家数 kk 时,增加总专家数 EE 会提高总参数容量,但 router 输出与专家权重驻留成本仍变大。若专家分散在不同设备,token 必须被派发到对应设备;小 batch 下每个专家仅有少量 token,矩阵乘效率可能下降。于是 NactiveN_{\mathrm{active}} 相同的两个 MoE,在不同 EE、拓扑和 batch 下延迟可差很多。

近似关键路径近似如下。平均专家 FLOPs 不能反映 max⁡e\max_e 的尾部等待;专家负载直方图是必要诊断量。

T≈Trouter+Tdispatch+max⁡eTexpert(ne)+Tcombine T\approx T_{\mathrm{router}}+T_{\mathrm{dispatch}}+\max_eT_{\mathrm{expert}}(n_e)+T_{\mathrm{combine}}

#9. 专业化是否真的发生

观察某些 token 总进某专家,不足以证明专家学会了可解释的领域能力;可能只是 token 频率或位置偏差。应比较:固定一类任务下的路由稳定性、替换/屏蔽专家后的性能变化、不同专家的训练样本覆盖和新任务迁移。下式所示的路由熵可描述选择集中程度,但低熵既可能是清晰专业化,也可能是塌缩。

H(g(x))=−∑ege(x)log⁡ge(x) H(g(x))=-\sum_e g_e(x)\log g_e(x)

领域专家定位:在大规模 MoE 模型中存在一种一致的行为,称为少样本专家定位——给定少量领域示例,可以定位到对该领域最关键的专家子集。这为领域特定剪枝和专家冗余分析提供了实用工具。DBES 基准系统评估了主流 MoE 模型(包括 GLM-4.6 和 DeepSeek-R1)的专家路由行为,涵盖逻辑推理(AIME 2025、Yale-FinanceMath)、专业知识(BigBio MedQA、Nguha LegalBench)和科学素养(AllenAI SciQ)等领域。

#10. MoE 评估的标准化

MoE-Bench 是首个覆盖推理、效率和安全的综合 MoE 评估基准。LoRALib 提供了 LoRA-MoE 方法的标准化评估,发现 LoRA-MoE 表现最佳,且优先考虑与目标任务相关的 LoRA 模块可进一步提升性能。

评估维度应至少覆盖:专家负载分布(Gini 系数或最大/平均负载比)、路由熵、专家专业化程度(领域定位能力)、激活参数与总参数比、All-to-All 通信占比、以及不同批量下的端到端延迟。仅报告总参数或激活参数不足以描述 MoE 系统的实际行为。

#原始资料

本页由仓库中的 Markdown 生成。具体技术结论请结合正文引用与实验条件理解。

输入关键词,探索整个知识库

↑ ↓ 选择 ↵ 打开36 篇笔记,一次搜索