本文解读2026年7月挂arxiv上的一篇paper《MMOE: Modernizing diffusion transformers with efficient expert design》,这篇论文提出了MMOE(ModernMOE)架构,通过将大语言模型中成熟的轻量级专家、门控残差路由和注意力残差复用等高效稀疏计算机制引入扩散Transformer,在不盲目扩大总参数量和计算开销的前提下,显著提升了视觉生成模型的收敛速度与生成质量。
论文动机:视觉生成大模型亟需的“降本增效”
近年来,大语言模型(LLM)之所以能够成功扩展参数规模,很大程度上归功于以混合专家模型(MoE)为代表的稀疏计算架构,它成功解耦了模型的总参数量与每次推理激活的计算量。然而,在人工智能生成内容(AIGC)的基础模型中,尤其是基于扩散Transformer(如DiT、SiT)的架构,虽然也开始尝试引入MoE,但早期的研究大多陷入了单纯堆叠专家数量和提高稀疏比例的误区。
这种“暴力扩容”忽视了LLM在工程落地上至关重要的效率机制,导致生成质量的提升常常伴随着难以承受的训练和部署成本。扩散模型本身就需要极其耗时的多步迭代去噪,如果每一步都激活庞大的参数,其计算开销将是灾难性的。因此,本文的动机非常直接且极具现实意义:我们能否以一种更加平衡的方式,将LLM中高效的缩放原则和架构设计迁移到扩散Transformer中?
核心创新点:系统性的“现代化”改造
本文并没有把MoE仅仅当作一个简单的“即插即用”模块,而是提出了一种名为ModernMOE(MMOE)的全新架构,对SiT风格的扩散Transformer进行了系统性的“现代化”改造。这种改造不是一蹴而就的,而是层层递进,其创新点可以归纳为四大机制的有机结合:
- 引入了路由专家(Routed experts),实现基础的条件计算。
- 引入了共享专家与轻量级专家(Shared and lightweight experts),提供零计算或低计算成本的捷径。
- 设计了门控残差路由(Gate-residual routing),使路由决策在网络层间具有时间连贯性。
- 提出了注意力残差信息复用(Attention-residual information reuse),跨越网络深度聚合历史状态。
模型结构与数学原理深度解析
MMOE对Transformer内部计算流程的重构逻辑非常清晰,这种模块化的架构演进非常适合通过视觉插图来展现网络中数据流的复杂路由过程。我们可以结合论文中的核心示意图Fig. 1. Architecture of MMOE来深入理解其内部运作。在该图中,左侧是传统的MoE模块,仅仅是在自注意力层之后简单替换了前馈网络(FFN);而右侧的MMOE模块则展现了截然不同的高阶信息流转机制,融合了MoE++轻量级专家、门控残差路由以及注意力残差操作(AttnRes Ops)。
1. MoE++ 专家层与轻量级路由在MMOE中,传统的MLP子层被MoE++专家层取代。对于输入特征h ∈ R D h \in \mathbb{R}^Dh∈RD,路由器首先计算专家对数似然(logits)。区别于传统路由,这里引入了门控残差。正如公式所示,l i = g ( h i ) + A r i p r e v l_i = g(h_i) + A r_i^{prev}li=g(hi)+Ariprev,当前的路由不仅依赖当前输入的特征h i h_ihi,还继承了上一层专家网络的路由残差r i p r e v r_i^{prev}riprev(经过矩阵A AA映射)。这种设计能够使相邻层的激活模式保持一定的稳定性。
更精妙的是专家池的构建。假设有E EE个专家,MMOE不仅包含E − 4 E-4E−4个标准的重型MLP专家,还特别设计了4个轻量级专家(Lightweight experts):1个复制专家(Copy,直接返回h hh),1个零专家(Zero,直接返回 0),以及2个常量专家(Constant)。常量专家会学习一个静态向量a j a_jaj,并计算输入特征与该向量的动态混合:f c o n s t , j ( h ) = π j , 0 ( h ) h + π j , 1 ( h ) a j f_{const,j}(h) = \pi_{j,0}(h)h + \pi_{j,1}(h)a_jfconst,j(h)=πj,0(h)h+πj,1(h)aj。这种设计意味着,当模型判断某些视觉Token(如背景或平缓区域)不需要复杂的非线性变换时,路由器可以直接将其分配给零专家或复制专家,从而在保持网络总容量不变的前提下,物理级别地跳过了昂贵的矩阵乘法运算。
2. 注意力残差信息复用(Attention-Residual)扩散模型在生成过程中,深层网络往往需要反复调用浅层提取的特征。结合Fig. 1. Architecture of MMOE右侧的α \alphaα操作单元,MMOE维护了一个已完成的块状态列表C \mathcal{C}C和当前的偏态u uu。在每次进入自注意力层或MLP层之前,模型会将这些历史状态拼接起来,通过一个可学习的伪查询向量(pseudo-query)q qq计算注意力权重:α i = s o f t m a x i ( q ⊤ R M S N o r m ( V i ) ) \alpha_i = softmax_i(q^\top RMSNorm(V_i))αi=softmaxi(q⊤RMSNorm(Vi)),并进行加权求和。这本质上是在网络深度方向上建立了一个动态的高速通道,让深层模块能够“温故而知新”,有效缓解了深层网络的梯度消失和特征遗忘。
实验论证与图表解读
论文的实验均在单节点(8张H100 GPU)上以256的批次大小进行400k步训练。
在架构消融与收敛性方面,Table I (MODERNIZATION PATH ON IMAGENET-256 CLASS-CONDITIONAL GENERATION…)清晰地记录了从密集SiT到MMOE的演进路径。数据显示,最终的MMOE在400k步时达到了最低的FID(3.75),同时其单节点训练时间为67小时,远低于仅使用注意力残差(AMOE)时的120小时。这一结果有力地证明了:稀疏路由本身不足以提供最佳的性价比,只有将路由与轻量级专家和表征复用结合起来,才能在质量和成本之间找到最优解。
这一点在Fig. 2 (FID convergence…)和Fig. 3 (Denoising-loss convergence…)的收敛曲线中得到了直观的印证:MMOE的去噪损失在训练初期紧紧跟随基线,随后便持续处于更低的水平,实现了单步训练内更快的收敛速度。
关于显存和计算效率,Fig. 4 (Per-block activation memory…)给出了令人信服的证据。在参数量相同的条件下,由于大量Token被路由到了无需复杂计算的轻量级专家(Copy/Zero/Constant),MMOE相比于没有轻量级专家的AMOE,在前向传播中减少了约20%的激活显存,在反向传播中减少了约32%的显存开销。这种物理层面的资源节省,对于解决高分辨率图像生成的显存瓶颈具有重要的指导意义。
在对模型内部路由逻辑的探索上,Table X (QUANTITATIVE ROUTING STATISTICS…)提供了一扇极佳的“可解释性”窗口。数据表明,轻量级专家的使用率随着网络深度的增加而显著下降(从浅层的44.6%降至深层的23.4%)。这非常符合直觉:网络浅层更多进行简单的局部特征提取,可以大量使用恒等映射或零计算;而深层负责复杂的语义构建,因此越来越依赖重型的MLP专家进行精细化微调。此外,相邻去噪步之间的路由切换率极低(仅1.43%至2.71%),说明网络在时间轴上学会了稳定的表征偏好。
批判性分析与总结
综合来看,这篇论文在理论框架和工程实践上都具有极高的完成度。其最大的亮点在于将模型容量扩张与计算负载进行了优雅的解耦。通过引入MoE++的轻量级专家机制,打破了以往“大模型必伴随大计算”的魔咒;而注意力残差结构的引入,则巧妙弥补了稀疏网络容易产生的信息割裂问题。这种抽丝剥茧式的演进实验设计,是一份极佳的现代神经网络架构分析范本。
然而,从批判性的角度审视,该工作也存在一定的局限性。正如论文在讨论部分(Section VI)坦诚的,目前的实验主要局限于ImageNet-256的类条件生成,尚未在更加复杂的通用文本到图像(Text-to-Image)任务中验证其泛化能力。其次,虽然理论上轻量级专家能节省大量计算(FLOPs),但由于当前多GPU分布式训练严重受限于底层通信开销(如ncclAllReduce),这种理论上的计算红利并不能完美等比例地转化为真实的物理时间缩短。这是当前所有稀疏大模型在底层算子和通信协同上面临的共同挑战。
总而言之,MMOE为扩散Transformer的下一步缩放指明了一条极具潜力的道路——不再盲目堆砌参数,而是走向更加精细化的动态计算调度与特征复用。这不仅对前沿工业界有极高的实用价值,其网络内部空间和时间上的专家调度逻辑,也为深入理解深度生成模型的工作机制提供了绝佳的理论素材。
欢迎使用Markdown编辑器
你好! 这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown将代码片显示选择的高亮样式进行展示;
- 增加了图片拖拽功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的KaTeX数学公式语法;
- 增加了支持甘特图的mermaid语法1功能;
- 增加了多屏幕编辑Markdown文章功能;
- 增加了焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了检查列表功能。
功能快捷键
撤销:Ctrl/Command+Z
重做:Ctrl/Command+Y
加粗:Ctrl/Command+B
斜体:Ctrl/Command+I
标题:Ctrl/Command+Shift+H
无序列表:Ctrl/Command+Shift+U
有序列表:Ctrl/Command+Shift+O
检查列表:Ctrl/Command+Shift+C
插入代码:Ctrl/Command+Shift+K
插入链接:Ctrl/Command+Shift+L
插入图片:Ctrl/Command+Shift+G
查找:Ctrl/Command+F
替换:Ctrl/Command+G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。
如何改变文本的样式
强调文本强调文本
加粗文本加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的代码片.
// An highlighted blockvarfoo='bar';生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
| 项目 | Value |
|---|---|
| 电脑 | $1600 |
| 手机 | $12 |
| 导管 | $1 |
设定内容居中、居左、居右
使用:---------:居中
使用:----------居左
使用----------:居右
| 第一列 | 第二列 | 第三列 |
|---|---|---|
| 第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants 是一个文本转换工具,主要功能是将普通的 ASCII 标点符号自动转换为更美观的印刷体标点符号。例如:
| 原始符号 | 转换后 | 说明 |
|---|---|---|
"引号" | “引号” | 直引号变弯引号 |
'单引号' | ‘单引号’ | 直单引号变弯单引号 |
-- | – | 两个连字符变短破折号 |
--- | — | 三个连字符变长破折号 |
... | … | 三个点变省略号 |
创建一个自定义列表
- Markdown
- Text-to-HTMLconversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n−1)!∀n∈N是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息LaTeX数学表达式here.
新的甘特图功能,丰富你的文章
- 关于甘特图语法,参考 这儿,
UML图表
可以使用UML图表进行渲染,例如下面产生的一个序列图:
- 关于UML图表语法,参考 这儿,
流程图
- 关于Mermaid语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart.js的流程图语法:
- 关于Flowchart流程图语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到文章导出,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
mermaid语法说明 ↩︎
注脚的解释 ↩︎