【整流模型(三)】Flux 中 MM-DiT 和 Single-DiT 中的具体区别

系列文章目录



特性FluxSingleTransformerBlockFluxTransformerBlock
架构基础Single-DiTMM-DiT
处理类型单一输入流双输入流 (hidden_states 和 encoder_hidden_states)
归一化层AdaLayerNormZeroSingleAdaLayerNormZero (两个实例)
注意力机制自注意力自注意力 + 交叉注意力
MLP结构简单MLP (proj_mlp + act_mlp)FeedForward (两个实例)
输出连接注意力输出与MLP输出拼接分别处理注意力输出和MLP输出
门控机制单一门控 (gate)多重门控 (gate_msa, gate_mlp, c_gate_msa, c_gate_mlp)
归一化后处理有缩放和偏移 (scale_mlp, shift_mlp)
输入参数hidden_states, temb, image_rotary_embhidden_states, encoder_hidden_states, temb, image_rotary_emb
输出单一张量两个张量 (encoder_hidden_states, hidden_states)
典型用途处理单一特征流处理文本条件和图像特征的交互

MM-DiT

在这里插入图片描述

Single-DiT

在这里插入图片描述

左图的加粗线可以看出 MLP 和 Attention 是并行的关系

主要区别总结

  1. 处理流程:
  • MM-DiT 同时处理两个输入流并让它们相互交互
  • Single-DiT 处理单一输入流 (MM-DiT 的双流合并后的单流)
  1. 并行注意力机制:
  • Single-DiT 块里用到了并行注意力层,而 MM-DiT 是串行的。
    • 主要指 MLP 和 Attention 的关系(并行 or 串行)
  • 并行注意力层是在文章 Scaling Vision Transformers to 22 Billion Parameters 中提出的。如下图所示,这项技术很好理解,只不过是把注意力和线性层之间的串联结构变成并联结构

在这里插入图片描述

  • 好处是,由于数据在过**注意力层前后本身就要各过一次线性层,在并联后,这些线性层和 MLP 可以融合**。
  • 这样的话,由于计算的并行度更高,模型的运行效率会高上一些。
  • 顺带一提,在 Q, K 后做归一化以提升训练稳定性也是在这篇文章里提出的。SD3 和 FLUX.1 同样用了这一设计,但用的是 RMSNorm 而不是 LayerNorm。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值