Transformer 层作为 Painter 扩展到 DiT

社区文章 发布于 2024 年 8 月 31 日

这项实验的灵感来自 Sakana AI 和 Emergence AI 的“Transformer 层作为 Painter”[1]。他们认为,由于残差连接,LLM 的层之间存在一个共同的表示空间。

我尝试对 Flux、SD3 和 AuraFlow 等扩散 Transformer 模型进行相同的复制。

该论文的主要问题是:

  1. 各层是否使用相同的表示空间?
  2. 所有层都是必需的吗?
  3. 中间层是否都执行相同的功能?
  4. 层序重要吗?
  5. 我们可以并行运行这些层吗?
  6. 某些任务的顺序比其他任务更重要吗?
  7. 循环有助于并行层吗?
  8. 哪些变体对性能的损害最小?

此处使用的术语:

此处所指的 Transformer 层或 MM-DiT 层具有两个流,分别用于处理文本嵌入和图像嵌入,同时还具有联合注意力机制。

单层或联合层同时处理编码器嵌入和图像嵌入,也称为 Flux 架构中列出的单流块。

根据余弦相似度将层分组为第一层、中间层和最后一层,如论文中所述。

实验中使用了以下层执行策略:image/png 图 1:层执行策略

总结

  1. Flux 显示出最显著的层分组(基于激活余弦相似度),表明存在共同表示空间的可能性,其次是 AuraFlow。但所有 3 个模型都显示出分组,表明存在共同表示空间。
  2. 一组层之前和之后的层似乎充当“转换”层,将模型表示从一个空间转换为另一个空间。这可以通过移除前面层会造成灾难性后果这一事实来证明。
  3. 与其它方法相比,从一组层中跳过某些层对图像质量的损害最小。这与论文的发现一致。
  4. 重复同一层是最糟糕的(除了移除不属于该组的所谓“转换”层)
  5. 反复并行执行层并平均它们的输出,对于那些关注提示一致性的层来说并非灾难性,但对于那些处理美学质量的层来说则是灾难性的。中间层反转也一样。

展开查看使用的提示

  1. 一位魅力四射的演讲者正在演讲中。他有一头棕色的短发,蓬乱的头顶略显凌乱。他有一张圆脸,刮得很干净,戴着深色边框的圆形方形眼镜,左手打着手势,生动活泼。他右手拿着黑色麦克风,热情洋溢地演讲。男子穿着一件浅灰色毛衣,里面套着白色 T 恤。他还戴着一条简单的黑色挂绳,挂绳的徽章上写着“Anakin AI”。在他身后,是一个模糊的背景,背景上有一面白色的横幅,上面印有徽标和文字(包括 Anakin AI),营造出专业的会议氛围。
  2. 一只戴着蓝色帽子的红狗和一只戴着粉色太阳镜的黄猫坐在一起
  3. 桌上的一台三星 LED 显示器屏幕显示着一幅花园图像,招牌上写着“一切都好”,桌上放着一个泰迪玩具,一只猫睡在泰迪玩具旁边,桌上放着一盘蘑菇菜,外面下着雨,一只鹦鹉坐在旁边的窗户上,窗外可见一张写有“享受生活”的柔性横幅,一个绿色的战争气球 3D 模型,部落冲突,奇幻游戏,正面视图,游戏资产,细节丰富,备战状态,照片般逼真,在战争环境中,春天,迪士尼风格,皮克斯风格
  4. 一张毛毡木偶立体模型场景的照片,描绘了一个僻静森林空地的宁静自然场景,其中有一个友好、圆润的大机器人,以版画风格呈现。一只猫头鹰坐在机器人的肩膀上,一只狐狸坐在它的脚边。柔和的色彩渲染、5 种颜色和明亮的调色板营造出一种宁静祥和的感觉,引人深思和欣赏自然之美。
  5. 金门大桥。

Flux-Schnell 上的结果

Flux 架构有两个不同的 Transformer 块。这里所称的 Transformer 块/层是 MMDiT 块,它有两个流,一个用于编码器隐藏状态,一个用于隐藏状态。单个 Transformer 块/层是单流的,作用于隐藏状态。参见架构[3]

image/png 图 2:激活的余弦相似度(在时间步长和输入上平均)

跳过

  • 跳过第一个 MM-DiT 块并非灾难性的,但它显示了它在将提示转换为表示空间中的作用(转换)。而最后一层将其转换为单层空间(转换)。 image/png

  • 跳过中间组的 MM-DiT 层会影响图像的精细细节,同时保留提示的广阔概念。(粉色眼镜还在,但在狗身上。机器人不再是毛毡制的等等……)

  • 跳过单层会影响视觉质量。Flux 单层中有两个不同的中间层分组。第一个似乎负责构建结构布局和大致细节,而接下来的分组则处理精细细节。 image/png

  • 跳过中间组之前的单层会影响美观并导致视觉幻觉:(同一主体的多个实例。例如:多只鹦鹉)和细节缺失(桥梁),这可能表明提示到细节的“转换”不正确。 image/png

中间重复

  • 重复相同的层多次是灾难性的。论文推测这是因为它将数据推出了模型训练时处理的数据分布。 image/png

反转

  • 反转 MM-DiT 层可以保留提示中的某些概念,但细节完全丢失。反转单层是灾难性的。 image/png

并行

  • 并行执行中间层并平均它们的输出是灾难性的。 image/png

循环并行

  • 有趣的是,对于 MM-DiT 层,并行运行中间层并平均其输出,然后再次将输出传递给并行层并重复此循环,可以在很大程度上恢复图像生成能力,但对于单层而言,这是灾难性的。 image/png

SD3 上的结果

SD3 激活的余弦相似度不如 Flux 中间层那么强。此外,SD3 只有 MM-DiT 块。

从两个激活来看,中间组似乎可以分成较低的中间(索引低于 14)和较高的中间(索引高于 14) image/png

跳过

  • 与 Flux 相同,顺序较低的层似乎添加了结构布局,而顺序较高的层则添加了精细细节。跳过第一层是灾难性的,这进一步证实了转换层假说。 image/png

中间重复

  • 重复较低的中间层是灾难性的,但概念的轮廓仍然可以辨认。较高的层情况较好。 image/png

反转

  • 反转中间层会保留概念,但会破坏大量视觉质量。反转单层是灾难性的。 image/png

并行

  • 并行执行较低的中间层是灾难性的,但对于较高的层,它保留了布局并破坏了视觉质量。 image/png

循环并行

  • 这只比并行执行略好。 image/png

AuraFlow v0.2 上的结果

AuraFlow 在 Flux 之前,架构相似,但 MM-DiT 块数量少得多(4 个 vs 19 个)。 image/png

跳过

  • 跳过第一个 MM-DiT 块是灾难性的。中间层会降低质量,但能保持一致性。最后一层损害更大。有趣的是,跳过第一个和最后一个单层比跳过中间层损害更小。 image/png image/png

中间重复

  • 重复中间 MM-DIT 层总是灾难性的,但重复几个单层会影响视觉质量而不会造成灾难性后果。这与其他测试结果不可比,因为只重复了 3 个层而不是所有中间层 image/png

反转

  • 反转 MM-DiT 层会导致一些视觉伪影,同时保持布局,但单层反转会导致不自然的布局和主体修改。以此类推,反转所有中间单层将像以前一样是灾难性的。这里只反转了少数中间单层 image/png

并行

  • 并行执行会影响视觉质量。 image/png

循环并行

  • 对 MM-DiT 层执行循环并行会导致伪影,但对于单层,只要不使用所有层,在大多数情况下只会略微降低质量。 image/png

后续

基于这种层区分及其看似扮演的角色,一个自然的问题是,将 LoRA 应用于特定层将如何影响训练和推理过程中的图像生成?

编辑:参见 https://x.com/__TheBen/status/1829554120270987740 确实有所不同!您不需要在所有层上训练 LoRA。

参考文献与引用

1. Transformer 层作为画家
2. diffusers/pipelines
3. Flux 架构图 by @nrehiew_

社区

注册登录 以评论