☰
(论文速读)DiT:用 Transformer 替代 U-Net,扩散模型也能获得 Scaling 红利
2026/9/28 7:05:55 网站建设 项目流程

论文题目:Scalable Diffusion Models with Transformers
中文翻译:使用 Transformer 的可扩展扩散模型
会议:ICCV 2023

ICCV 2023 官方论文页
官方 PyTorch 代码

摘要:本文探索了一类基于 Transformer 架构的新型扩散模型。作者训练图像的潜空间扩散模型,用作用于潜变量 Patch 的 Transformer 替代扩散模型中常用的 U-Net Backbone,并从前向传播计算复杂度 Gflops 的角度研究所提出 Diffusion Transformer(DiT)的可扩展性。实验发现,无论通过增加 Transformer 的深度和宽度,还是增加输入 Token 数量,只要 DiT 的 Gflops 增大,FID 都会持续降低。除了具有良好的可扩展性之外,最大的 DiT-XL/2 模型在 ImageNet 512×512 和 256×256 类条件图像生成基准上超过此前的扩散模型,并在 ImageNet 256×256 上获得 2.27 的 FID。


一、研究背景与核心问题

扩散模型早期有一个非常稳定的架构习惯:

从 DDPM 到 ADM,再到 Latent Diffusion,大部分图像扩散模型都会使用卷积 U-Net 作为去噪网络。

这并不是因为理论上规定 diffusion 必须搭配 U-Net,而更多是一种历史路径依赖。

U-Net 最初是卷积架构,随后扩散模型又在低分辨率特征层中加入 Spatial Self-Attention,但整体骨架并没有发生根本变化。作者因此提出一个很直接的问题:

扩散模型真的必须使用 U-Net 吗?

与此同时,Transformer 已经在 NLP 和视觉任务中表现出了非常明显的 Scaling 特性:

那么第二个问题自然出现:

如果把 diffusion 的 U-Net 换成纯 Transformer,它是否也能获得类似的 Scaling 能力?

这正是 DiT 的核心研究目标。

论文明确指出,他们并不是想重新设计整个扩散过程,而是希望把注意力集中在Backbone Architecture上:

然后研究:

之间究竟存在什么关系。

1.1 Figure 2 已经提前给出了论文最重要的结论

论文 Figure 2:DiT 的 Gflops 与 ImageNet 生成质量

Figure 2 左边展示不同 DiT 模型的计算量与 FID。

最明显的趋势就是:

右侧又进一步把最佳 DiT-XL/2 与 ADM、LDM 等 U-Net 扩散模型进行比较。

作者最终想证明的并不仅仅是:

Transformer 也能做 diffusion。

真正重要的是:

Transformer 不但能替代 U-Net,而且表现出了非常稳定的规模扩展规律。

论文把这种新 Backbone 称为:


二、DiT 整体框架:本质上是 Latent Diffusion + Vision Transformer

理解 DiT 之前,需要先明确一个容易产生误解的地方:

DiT 并不是直接在 RGB Pixel 上运行一个巨大 Transformer。

它采用的仍然是 Latent Diffusion 框架。

整个生成流程可以写成:

论文直接使用 Stable Diffusion 中预训练好的 VAE。

对于的 RGB 图像,经过 8 倍下采样以后得到的 Latent Representation。真正的 diffusion 就是在这个的 Z-space 中完成。

因此 DiT 更准确的结构其实是:

而不是完全抛弃 Stable Diffusion / LDM 的潜空间思路。


2.1 Figure 3:DiT 的完整结构

论文 Figure 3:Diffusion Transformer Architecture

Figure 3 是全文最核心的方法图。

DiT 所做的事情,与 ViT 处理图像的思想非常相似:先把二维空间特征切成 Patch,再把 Patch 变成 Token,让 Transformer 处理。

不同之处在于,ViT 最终输出分类结果,而 DiT 最终需要预测 diffusion 的:

  • Noise;

  • Covariance。

Figure 3 右边还给出了三种条件注入方式:

  1. In-Context Conditioning;

  2. Cross-Attention;

  3. Adaptive LayerNorm。

最终实验发现adaLN-Zero效果最好。


三、DiT 的核心设计:Patchify、条件注入与 adaLN-Zero

3.1 Patchify:把 Latent 变成 Transformer Token

论文 Figure 4:DiT Patchify

设输入 Latent 的空间尺寸为:

Patch Size 为:

那么最终 Token 数量为:

论文测试:

这里有一个非常重要的关系:

如果 Patch Size 减半:

那么 Token 数量将变成原来的4T,于是 Transformer 的计算量也会显著增加。这也是 DiT 后面 Scaling 实验的关键。因为作者不仅可以增加模型深度/宽度还可以减小Patch Size、增加Token数量,两种方式都会提高 Gflops。


3.2 条件信息应该怎么送进 Transformer?

Diffusion 不只是处理图像 Token,还需要知道当前:

以及类别:

因此必须解决:

怎样把 (t) 和 (c) 注入 Transformer?

作者比较了几种方案。

In-Context Conditioning,优点是简单,几乎不用改标准 Transformer。


Cross-Attention

这个方案和后来的很多 Text-to-Image 模型比较接近。

但论文发现:

Cross-Attention 会增加大约15% Gflops。


Adaptive Layer Normalization

adaLN 则换了一个思路。

不是增加额外 Attention,而是由t+c产生 LayerNorm 的

即:

因此条件信息直接控制 Transformer Block 内部特征的 Scale 和 Shift。

这种方案计算量非常低。


3.3 adaLN-Zero:DiT 中最重要的设计细节

DiT 最终使用的是:adaLN-Zero

它在 adaLN 基础上再增加残差分支的缩放参数,并把输出这些 (\alpha) 的 MLP 初始化为零。

因此网络初始化时,每一个 DiT Block 在训练开始时近似:Identity Function

之后再逐渐学习如何修改特征。

这一设计看起来只是初始化策略,但后面的 Figure 5 表明它对训练影响非常明显。


四、DiT 怎么 Scale?模型大小与 Token 数同时控制计算量

DiT 没有只训练一个模型。

作者构造了一个完整 Design Space。

Table 1:四种 Transformer 规模

同时 Patch Size:8,4,2,所以最终形成12个 DiT 模型。因此 DiT 的 Scaling 有两条路径:

路径一:扩大 Transformer

也就是提高:

  • Depth;

  • Width;

  • Attention Heads。

路径二:增加 Token

Patch 越小:

进而:

值得注意的是,减小 Patch Size 基本不会明显增加参数量。

因此这篇论文能够区分:

到底是参数数量重要,还是实际计算量重要?

这也是后面 Scaling 实验最关键的设计。


五、实验结果与 Scaling 分析

5.1 实验设置

DiT 在ImageNet Class-Conditional Generation上进行测试,包含:和两个分辨率。

主要指标:

  • FID;

  • sFID;

  • Inception Score;

  • Precision;

  • Recall。

扩散过程使用的线性 Noise Schedule。模型采用 AdamW,学习率

Batch Size 256 并使用 EMA:0.9999

论文的大部分 Scaling 实验使用250 DDPM Sampling Steps计算 FID-50K。


5.2 Figure 5:为什么最后选择 adaLN-Zero?

论文 Figure 5:Conditioning Strategy Ablation

作者使用 DiT-XL/2 比较:

  • In-Context;

  • Cross-Attention;

  • adaLN;

  • adaLN-Zero。

结果非常清楚:

在整个训练过程中基本都保持最低 FID。

在 400K Step 时,adaLN-Zero 的 FID 接近 In-Context 方法的一半。

同时:

  • Cross-Attention:约 137.6 Gflops;

  • adaLN / adaLN-Zero:约 118.6 Gflops。

所以 adaLN-Zero 并不是单纯准确率更高,还具有更好的计算效率。

这组实验说明:

如何把条件信息注入 Transformer,并不是一个无关紧要的实现细节,而会明显影响 diffusion 的训练质量。


5.3 Figure 6:Transformer 越大,FID 越低

论文 Figure 6:Model Size / Patch Size Scaling

Figure 6 是论文最关键的 Scaling 实验证据之一。

上排:

固定 Patch Size,比较:

结果几乎始终表现为:

下排:

固定模型规模,再比较:

同样发现:

而 Patch Size 改变并不会显著提高参数量。

因此论文得到一个非常重要的观察:

DiT 性能提升并不能简单解释成“参数更多”,真正与性能高度相关的是 Forward Pass Compute。


5.4 Figure 8:Gflops 与 FID 的相关系数达到 -0.93

论文 Figure 8:Transformer Gflops vs. FID

作者把所有 DiT 模型Gflops和画到一张图上。得到相关系数:-0.93

也就是说:Gflops和之间具有非常强的相关关系。

而且非常有意思的是:

不同架构只要 Gflops 接近,例如:和,最终 FID 也比较接近。

所以这篇论文真正提出的经验规律可以概括为:DiT质量主要随计算量Scale。而不是:只要参数越多就越好


5.5 Figure 9:大模型反而更“省算力”

论文 Figure 9:Training Compute vs. FID

有人可能会自然产生一个疑问:

大模型单次训练更贵,那我训练一个小模型更久不就行了吗?

Figure 9 专门回答这个问题。

作者估算训练总计算量,结果发现:

小模型即使训练得更久,达到一定阶段以后,也会比大模型更不具计算效率。

比如 XL/2 在训练达到一定计算预算后,会超过 XL/4。换句话说:大模型不仅上限更高,而且在高计算预算下利用Compute更有效。这其实与今天大模型 Scaling 的思路非常相似。


5.6 Figure 7:Scaling 不只是 FID 数字变化

论文 Figure 7:12 个 DiT 模型使用相同 Noise 的生成结果

作者给所有 12 个模型相同:

  • Initial Noise;

  • Sampling Noise;

  • Class Label。

从 Figure 7 可以明显看到:

  • 物体结构越来越稳定;

  • 类别形态越来越准确;

  • 背景更加合理;

  • 局部细节逐渐清晰;

  • 小模型中的畸变逐渐减少。

因此 Figure 7 可以看作 Figure 6、Figure 8 的视觉版本。Figure 1 则展示了最终 DiT-XL/2 在 256×256 和 512×512 ImageNet 上的高质量生成样例。


六、主实验:DiT-XL/2 到底有多强?

6.1 Table 2:ImageNet 256×256

说明 Latent Space + Transformer 在这一实验设置中具有很高的计算效率。

值得注意的是,Table 2 中 StyleGAN-XL 的 FID 为 2.30,而 DiT 为 2.27,所以论文在该基准下也略低于 StyleGAN-XL。


6.2 Table 3:ImageNet 512×512

在更高分辨率下,DiT-XL/2 处理:

DiT 在 512×512 上超过此前列出的diffusion models,但 Table 3 中 StyleGAN-XL 的 FID 仍然更低。

论文正文称其在该设置下取得最低 FID 的表述,与表中 StyleGAN-XL=2.41 存在值得注意的比较口径问题;博客中更稳妥的结论是:DiT在上显著超过此前U-Net扩散模型

另外,计算量方面:

  • ADM:1983 Gflops;

  • ADM-U:2813 Gflops;

  • DiT-XL/2:524.6 Gflops。

这也说明 DiT 在高分辨率 Latent Diffusion 中具有比较明显的计算优势。


6.3 Figure 10:小模型多采样几步,能不能追上大模型?

论文 Figure 10:Model Compute vs. Sampling Compute

也就是:

与其使用一个容量不足的小模型不断增加采样步数,不如先把 Backbone 做大。

这一观察对后来大型生成模型的发展非常有启发性。


七、总结与思考

如果把 DiT 压缩成一句话:

DiT 证明了扩散模型并不依赖 U-Net:只要把 Latent 切成 Token,标准 Transformer 就可以成为 diffusion backbone,而且随着模型深度、宽度和 Token 数增加,生成质量会表现出非常稳定的 Scaling 特性。

这篇论文真正有影响力的地方,因此并不只是“把 U-Net 换成 Transformer”。

它真正建立的是一种新的研究范式:

把扩散模型的 Backbone 从高度任务定制的卷积 U-Net,转向一种可以直接利用 Transformer Scaling 规律的通用架构。

这也是为什么 DiT 后来会如此重要。

再往后看,PixArt、Stable Diffusion 3 的 MMDiT,以及大量新一代图像和视频生成模型,都开始越来越明显地向 Transformer Backbone 靠拢。

不过需要特别注意:

原始 DiT 本身并不是一个 Text-to-Image 模型。

所以从历史位置来看,我认为理解 DiT 最准确的方式不是:

“它是一个新的 Stable Diffusion。”

而是:

它证明 Transformer 可以成为扩散生成模型的通用可扩展 Backbone,并为后续 SD3 等大型 Diffusion Transformer 打下了架构基础。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询