将 Transformer 层作为 Painter 扩展到 DiT
这项实验的灵感来自 Sakana AI 和 Emergence AI 的“Transformer 层作为 Painter”[1]。他们认为,由于残差连接,LLM 的层之间存在一个共同的表示空间。
我尝试对 Flux、SD3 和 AuraFlow 等扩散 Transformer 模型进行相同的复制。
该论文的主要问题是:
- 各层是否使用相同的表示空间?
- 所有层都是必需的吗?
- 中间层是否都执行相同的功能?
- 层序重要吗?
- 我们可以并行运行这些层吗?
- 某些任务的顺序比其他任务更重要吗?
- 循环有助于并行层吗?
- 哪些变体对性能的损害最小?
此处使用的术语:
此处所指的 Transformer 层或 MM-DiT 层具有两个流,分别用于处理文本嵌入和图像嵌入,同时还具有联合注意力机制。
单层或联合层同时处理编码器嵌入和图像嵌入,也称为 Flux 架构中列出的单流块。
根据余弦相似度将层分组为第一层、中间层和最后一层,如论文中所述。
总结
- Flux 显示出最显著的层分组(基于激活余弦相似度),表明存在共同表示空间的可能性,其次是 AuraFlow。但所有 3 个模型都显示出分组,表明存在共同表示空间。
- 一组层之前和之后的层似乎充当“转换”层,将模型表示从一个空间转换为另一个空间。这可以通过移除前面层会造成灾难性后果这一事实来证明。
- 与其它方法相比,从一组层中跳过某些层对图像质量的损害最小。这与论文的发现一致。
- 重复同一层是最糟糕的(除了移除不属于该组的所谓“转换”层)
- 反复并行执行层并平均它们的输出,对于那些关注提示一致性的层来说并非灾难性,但对于那些处理美学质量的层来说则是灾难性的。中间层反转也一样。
展开查看使用的提示
- 一位魅力四射的演讲者正在演讲中。他有一头棕色的短发,蓬乱的头顶略显凌乱。他有一张圆脸,刮得很干净,戴着深色边框的圆形方形眼镜,左手打着手势,生动活泼。他右手拿着黑色麦克风,热情洋溢地演讲。男子穿着一件浅灰色毛衣,里面套着白色 T 恤。他还戴着一条简单的黑色挂绳,挂绳的徽章上写着“Anakin AI”。在他身后,是一个模糊的背景,背景上有一面白色的横幅,上面印有徽标和文字(包括 Anakin AI),营造出专业的会议氛围。
- 一只戴着蓝色帽子的红狗和一只戴着粉色太阳镜的黄猫坐在一起
- 桌上的一台三星 LED 显示器屏幕显示着一幅花园图像,招牌上写着“一切都好”,桌上放着一个泰迪玩具,一只猫睡在泰迪玩具旁边,桌上放着一盘蘑菇菜,外面下着雨,一只鹦鹉坐在旁边的窗户上,窗外可见一张写有“享受生活”的柔性横幅,一个绿色的战争气球 3D 模型,部落冲突,奇幻游戏,正面视图,游戏资产,细节丰富,备战状态,照片般逼真,在战争环境中,春天,迪士尼风格,皮克斯风格
- 一张毛毡木偶立体模型场景的照片,描绘了一个僻静森林空地的宁静自然场景,其中有一个友好、圆润的大机器人,以版画风格呈现。一只猫头鹰坐在机器人的肩膀上,一只狐狸坐在它的脚边。柔和的色彩渲染、5 种颜色和明亮的调色板营造出一种宁静祥和的感觉,引人深思和欣赏自然之美。
- 金门大桥。
Flux-Schnell 上的结果
Flux 架构有两个不同的 Transformer 块。这里所称的 Transformer 块/层是 MMDiT 块,它有两个流,一个用于编码器隐藏状态,一个用于隐藏状态。单个 Transformer 块/层是单流的,作用于隐藏状态。参见架构[3]
跳过
跳过第一个 MM-DiT 块并非灾难性的,但它显示了它在将提示转换为表示空间中的作用(转换)。而最后一层将其转换为单层空间(转换)。
跳过中间组的 MM-DiT 层会影响图像的精细细节,同时保留提示的广阔概念。(粉色眼镜还在,但在狗身上。机器人不再是毛毡制的等等……)
跳过单层会影响视觉质量。Flux 单层中有两个不同的中间层分组。第一个似乎负责构建结构布局和大致细节,而接下来的分组则处理精细细节。
跳过中间组之前的单层会影响美观并导致视觉幻觉:(同一主体的多个实例。例如:多只鹦鹉)和细节缺失(桥梁),这可能表明提示到细节的“转换”不正确。
中间重复
反转
并行
循环并行
SD3 上的结果
SD3 激活的余弦相似度不如 Flux 中间层那么强。此外,SD3 只有 MM-DiT 块。
从两个激活来看,中间组似乎可以分成较低的中间(索引低于 14)和较高的中间(索引高于 14)
跳过
中间重复
反转
并行
循环并行
AuraFlow v0.2 上的结果
AuraFlow 在 Flux 之前,架构相似,但 MM-DiT 块数量少得多(4 个 vs 19 个)。
跳过
中间重复
反转
并行
循环并行
后续
基于这种层区分及其看似扮演的角色,一个自然的问题是,将 LoRA 应用于特定层将如何影响训练和推理过程中的图像生成?
编辑:参见 https://x.com/__TheBen/status/1829554120270987740 确实有所不同!您不需要在所有层上训练 LoRA。
参考文献与引用
1. Transformer 层作为画家
2. diffusers/pipelines
3. Flux 架构图 by @nrehiew_