1. 从U-Net到Transformer:SD 3与FLUX.1的架构革命
大家好,我是Rocky。如果你在过去两年里玩过AI绘画,那么对Stable Diffusion这个名字一定不陌生。从最初的SD 1.5到后来的SDXL,我们见证了AI绘画从“能看”到“好看”的飞速进步。但说实话,每次看到那些基于U-Net架构的模型在生成复杂场景或多主题图像时“翻车”,比如把“一只猫和一只狗在公园里玩飞盘”理解成“一只长得像狗的猫在扔盘子”,我就知道,底层架构的瓶颈已经到了。
2024年,事情发生了根本性的变化。Stable Diffusion 3(SD 3)的发布,就像在平静的湖面投下了一颗巨石。它彻底抛弃了陪伴我们多年的U-Net,全面转向了Transformer架构,具体来说,是名为MM-DiT(多模态扩散Transformer)的全新设计。这不仅仅是换个“发动机”,这是把马车换成了跑车。紧接着,由原Stable Diffusion核心团队打造的FLUX.1系列横空出世,不仅参数量冲到了惊人的120亿,更在架构细节上做了大量精雕细琢。很多人说FLUX.1是“SD 4”,我觉得这个说法很贴切。
为什么这次架构升级如此重要?我打个比方,以前的U-Net就像一位技艺精湛但精力有限的画师,他一次只能专注于画面的一个局部,通过反复上下跳跃(跳跃连接)来协调整体。而Transformer架构的MM-DiT,更像是一个拥有“上帝视角”的指挥家,它能同时处理图像的所有碎片(Patch),并让文本指令(Prompt)与每一个碎片进行深度、平等的“对话”。这种处理方式,让模型对复杂提示词的理解和遵循能力上了好几个台阶,尤其是文字渲染和多物体一致性这些老大难问题,得到了质的改善。
我实测下来,这种改变是颠覆性的。以前用SDXL画“一个写着‘Hello World’的咖啡杯”,字母经常糊成一团或者缺笔少画。现在用SD 3或FLUX.1,文字清晰度和排版正确率大幅提升,甚至能处理一些简单的字体风格。这就是架构革新带来的最直观红利。
2. 核心引擎MM-DiT:多模态信息如何高效融合
2.1 告别Cross-Attention:双流Transformer的巧思
SD 3最核心的创新,就是这个MM-DiT。要理解它,我们得先回顾一下老问题。在SD 1.x/2.x/XL时代,文本信息是通过一个叫“交叉注意力”(Cross-Attention)的机制注入U-Net的。你可以把它想象成文本特征作为一个“指导老师”,时不时地去“检查”和“修正”图像特征的学习过程。但这个机制有个问题:文本和图像的地位是不对等的,文本是“外来”的指导信息。
MM-DiT的做法非常大胆:它废除了Cross-Attention。那文本信息怎么加进去呢?答案是把文本和图像“一视同仁”。具体来说,MM-DiT内部有两套独立的Transformer权重参数,一套专门处理图像Patch转化来的Token,另一套专门处理文本Encoder输出的Token。在每一层Transformer计算自注意力(Self-Attention)时,它会把这两组属于不同模态的Token直接拼接(Concat)在一起,然后一起计算它们彼此之间的关系。
我画个简单的示意图帮你理解:
[图像Token 1, 图像Token 2, ..., 文本Token 1, 文本Token 2, ...]
然后,这个混合的Token序列被送入自注意力层。在这个过程中,图像Token不仅能关注其他图像Token,也能直接“看到”并理解文本Token在说什么;反之亦然。这就好比把文本和图像的特征放在同一个会议室里平等讨论,而不是一个在台上讲,一个在台下听。这种设计让文本信息能更充分、更早地影响图像特征的生成轨迹。
在实际代码中,这个关键步骤体现在注意力矩阵的计算上。传统的DiT计算注意力时,Query、Key、Value都来自图像Token。而在MM-DiT中,Key和Value是由图像和文本两套权重分别处理各自模态的特征后,再拼接而成的。这确保了不同模态的信息在融合时,保留了各自学到的特性。
2.2 FLUX.1的MM-Single-DiT:混合架构的威力
如果说SD 3的MM-DiT是“双剑合璧”,那么FLUX.1的改进可以称为“三段式攻击”。Black Forest Labs的团队发现,全部使用MM-DiT Block(双流)虽然效果好,但计算量有点大。他们设计了一个更高效的混合架构:MM-Single-DiT。
这个架构的前半部分(比如19层)使用MM-DiT Block,确保文本和图像特征在早期就进行深度融合。后半部分(比如38层)则切换回经典的Single-DiT Block。在Single-DiT Block里,文本特征不再拥有独立的权重,而是先与图像特征进行某种形式的融合(例如相加或拼接),然后再送入一个统一的Transformer块进行处理。
为什么要这么做?我的理解是,这有点像“先恋爱,后结婚”。在模型前半部分,让文本和图像特征充分“交流”(MM-DiT),建立深层次的理解。到了后半部分,这种理解已经内化,可以用更经济的方式(Single-DiT)进行深度的特征提炼和生成。这种设计在几乎不损失性能的前提下,显著提升了模型的训练和推理效率,是工程上的一个妙招。
FLUX.1还在Single-DiT部分引入了“并行注意力”机制。传统的Transformer块是“注意力层->前馈网络层”的串行结构。FLUX.1将其改为并行:注意力层和前馈网络层同时处理输入,然后将它们的输出相加。这减少了层与层之间的依赖,让计算更并行化,进一步提升了速度。
3. 文本理解的飞跃:三巨头与双雄的Text Encoder策略
3.1 SD 3的“三驾马车”与特征融合
SD 3在文本理解上的堆料,堪称“豪华”。它同时动用了三个预训练好的文

1586

被折叠的 条评论
为什么被折叠?



