多模态扩散 Transformer (MMDiT) 是一种专门为扩散模型设计的、基于 Transformer 的架构,它可以处理多种输入模态,例如文本和图像。它扩展了扩散 Transformer (DiT) 架构,以支持跨模态交互,从而实现不同类型数据之间更有效的条件约束。
本文档记录了 ComfyUI 中 MMDiT 架构和 Transformer 模型,重点介绍了它们的实现、组件以及它们如何与整个系统集成。
来源: comfy/ldm/modules/diffusionmodules/mmdit.py745-1013
MMDiT 在 Transformer 架构原理的基础上进行扩展,但专门针对扩散模型进行了优化。其核心是一个类似 UNet 的去噪模型,它使用 Transformer 块而不是卷积层来处理潜在表示。
该架构由几个关键组件组成
输入处理:
Transformer 块:
输出处理:
来源: comfy/ldm/modules/diffusionmodules/mmdit.py745-780 comfy/ldm/modules/diffusionmodules/mmdit.py982-1013
MMDiT 模型首先使用 PatchEmbed 模块将输入潜在表示分割成 patch
位置编码系统使用正弦嵌入,可以根据输入尺寸动态裁剪和缩放,从而使模型能够处理不同分辨率的输入。
来源: comfy/ldm/modules/diffusionmodules/mmdit.py57-107 comfy/ldm/modules/diffusionmodules/mmdit.py120-201
MMDiT 的核心是其基于 Transformer 的处理块
这些块同时处理上下文信息和输入特征
JointBlock: 管理上下文和输入特征的配对块DismantledBlock: 核心 Transformer 单元,包含注意力和 MLP 路径SelfAttention: 实现多头自注意力机制每个块都使用自适应层归一化 (adaLN),该归一化根据 timestep 嵌入来调节特征,使模型能够根据扩散过程调整其行为。
来源: comfy/ldm/modules/diffusionmodules/mmdit.py386-595 comfy/ldm/modules/diffusionmodules/mmdit.py645-667
MMDiT 的一个关键创新是其块混合机制,它支持上下文特征和输入特征之间的交叉注意力
过程如下:
这允许信息在模态之间双向流动。
来源: comfy/ldm/modules/diffusionmodules/mmdit.py598-642
MMDiT 使用多种调制技术来控制特征转换
自适应层归一化 (adaLN):
RMS 归一化:使用均方根归一化而非传统的层归一化来归一化特征
自适应调制:每个块接收源自 timestep 嵌入的调制信号,这些信号控制特征转换
来源: comfy/ldm/modules/diffusionmodules/mmdit.py109-112 comfy/rmsnorm.py14-25
ComfyUI 包含了 MMDiT 类似架构的多种实现
标准实现侧重于上下文特征和输入特征的联合处理,并具有基于 timestep 的自适应层归一化。
主要特性
来源: comfy/ldm/modules/diffusionmodules/mmdit.py745-1013
AuraFlow 的实现提供了一种不同的方法,具有不同的块结构
关键区别
MMDiTBlock 和 DiTBlock 类,用于不同的处理阶段SingleAttention/DoubleAttention)来源: comfy/ldm/aura/mmdit.py179-207 comfy/ldm/aura/mmdit.py305-498
GenMo 实现提供了一种非对称注意力机制,该机制专门针对不同模态之间的不同维度进行设计
主要特性
来源: comfy/ldm/genmo/joint_model/asymm_models_joint.py160-286 comfy/ldm/genmo/joint_model/asymm_models_joint.py319-557
MMDiT 模型通过标准化的接口与 ComfyUI 的架构集成
集成通过以下方式实现
示例 forward 接口
来源: comfy/ldm/modules/diffusionmodules/mmdit.py982-1013
MMDiT 实现了几种位置嵌入方案
2D 正弦嵌入:用于空间维度的标准正余弦嵌入
动态裁剪:将位置嵌入适应输入尺寸
旋转位置嵌入 (RoPE):在 GenMo 的实现中用于旋转感知
这些嵌入系统允许模型在分块处理的 Transformer 过程中保持空间感知。
来源: comfy/ldm/modules/diffusionmodules/mmdit.py120-201 comfy/ldm/genmo/joint_model/temporal_rope.py7-34
模型通过以下方式在连续潜在空间和 token 空间之间进行转换
Patchify:将潜在表示转换为 token
Unpatchify:将 token 转换回潜在表示
这种双向转换使模型能够利用 Transformer 架构,同时保持与整体扩散流程的兼容性。
来源: comfy/ldm/modules/diffusionmodules/mmdit.py913-931
MMDiT 模型代表了 ComfyUI 中一种先进的、基于 Transformer 的扩散模型方法。通过利用 Transformer 架构并针对扩散过程进行专门修改,它们提供了有效的多模态条件约束和特征处理。
不同的实现(标准 MMDiT、AuraFlow 和 GenMo)对同一基本概念提供了不同的方法,每种方法都有针对不同用例和模态的特定优化。这些模型是 ComfyUI 高级模型生态系统的关键组成部分,实现了超越标准 Stable Diffusion 模型的复杂生成能力。