资料摘要:DiT

Peebles & Xie (UC Berkeley/NYU) 提出 Diffusion Transformer —— 用 ViT 架构替代 U-Net 作为扩散模型骨干,在 ImageNet 上实现 SOTA,并确立了 DiT 作为后续 Sora、SD3、FLUX 等工作的基石。ICCV 2023。 DiT - Scalable Diffusion Models with Transformers

核心要点

  • U-Net 非必需:首次系统证明 Transformer 可以完全替代卷积 U-Net 作为扩散模型去噪骨干,并随规模扩大持续提升性能
  • adaLN-Zero:提出自适应层归一化(adaLN),初始化时将残差增益置零,使每个 DiT 块初始化为恒等函数,极大提升训练稳定性
  • 强可扩展性:DiT 随 Gflops 增加(加深/加宽/更多 patch token)FID 持续下降,无平台期
  • DiT-XL/2 达到 FID 2.27(ImageNet 256×256,无分类器引导),是当时类条件图像生成的 SOTA

详细笔记

动机

LDM(Latent Diffusion Models)用卷积 U-Net 做去噪骨干,但 CV 领域 ViT 已证明 Transformer 在大规模预训练中优于 CNN。核心问题:扩散模型的骨干能否从 U-Net 换成 Transformer?

方法

整体框架:Latent Diffusion + Transformer 骨干

  1. 预训练 VAE 将图像压缩到潜空间
  2. 将潜表示切分为 patch(类似 ViT),展开为 token 序列
  3. DiT block 处理 token 序列,通过条件机制注入时间步 t 和类别标签 c
  4. 预测噪声(而非直接预测图像)

四种条件注入机制

机制方式计算开销
In-context conditioning将 t、c 作为额外 token 拼入输入序列
Cross-attention在多头自注意力后插入交叉注意力层+15% Gflops
adaLN用 t、c 回归缩放/平移参数 γ、β(Adaptive Layer Norm)同 in-context
adaLN-Zero在 adaLN 基础上初始化 γ=0,再加残差增益 α(也初始化为 0)同 adaLN

adaLN-Zero 的关键设计

  • 每个 DiT block 输出 = α * MLP(γ * LayerNorm(x) + β) + x
  • 初始 α = 0 → 每个 block = 恒等映射 → 训练从零开始逐步激活
  • 实证最优,被后续几乎所有 DiT 变体采用

四档模型配置

模型LayersHidden dimHeadsParams
DiT-S12384633M
DiT-B1276812130M
DiT-L24102416458M
DiT-XL28115216675M

关键结果

  • DiT-XL/2 最优:patch size=2(最小 patch → 最长 token 序列 → 最高 Gflops)
  • Gflops 定律:Gflops 越高(无论通过加深/加宽/减小 patch 哪种方式),FID 越低
  • Scaling 能力超越 U-Net:同等参数量下 DiT 显著优于 U-Net 基线
  • 无需分类器引导:主实验不使用 CFG(classifier-free guidance),纯靠模型能力
  • ImageNet 512×512:DiT-XL/2 也达到 FID 3.04

影响

  • Sora:OpenAI Sora 视频生成模型使用 DiT 或 DiT 变体(作者 Peebles 参与 Sora)
  • SD3:Stable Diffusion 3 采用 MMDiT(Multimodal DiT)
  • FLUX:Black Forest Labs 的 FLUX 基于 DiT 骨干
  • 音频/语音/TTS:DiT 被广泛迁移至音频领域(CosyVoice 3、LongCat-AudioDiT、Fugatto 等)

引用与数据

  • 时间:2022.12(arXiv),2023(ICCV)
  • 会议:ICCV 2023
  • arXiv:2212.09748
  • 作者:William Peebles (UC Berkeley),Saining Xie (NYU)
  • GitHub:facebookresearch/DiT
  • 规模:最大 675M 参数(DiT-XL)

相关