← 返回题目列表

什么是 DiT(Diffusion Transformer)?它和 Sora 有什么关系?

高频 困难 第 15 / 25 题 更新于 2026/08/03
DiTDiffusion TransformerSora视频生成

简化版

DiT(Diffusion Transformer) 就是把扩散模型里的 U-Net 换成 Transformer:先把(潜空间的)图像切成一个个 patch,当作 token 序列,用 Transformer 做去噪,条件(时间步、类别/文本)通过 adaLN-zero(自适应层归一化 + 零初始化) 注入。它的最大价值是可扩展性——像大语言模型一样,加参数、加数据、加算力,效果稳定提升,符合 Scaling Law。Sora 正是 DiT 思想在视频上的延伸:把视频在时空上切成 spacetime patches(时空块),用 Transformer 扩散统一建模不同时长、分辨率、宽高比的视频,SD3 等新一代图像模型也转向了 DiT 架构。

详细版

DiT 的核心改动

  1. 图像 → token 序列:在潜空间把 z(如 32×32×4)切成 patch,每个 patch 线性投影成一个 token,加位置编码,得到一串 token。
  2. Transformer 去噪:用标准 Transformer block(自注意力 + FFN)处理这串 token,预测每个 patch 的噪声。
  3. 条件注入用 adaLN-zero:把时间步 t、类别/文本条件编码后,生成 LayerNorm 的缩放/偏移参数(以及残差的缩放门控),且零初始化,让每个 block 初始等价于恒等映射,训练稳定。

为什么重要:可扩展性

  • U-Net 结构复杂、带各种归纳偏置,难以像 Transformer 那样干净地放大。
  • DiT 证明:去掉 U-Net 的归纳偏置、纯用 Transformer,随着算力/参数增加,生成质量(FID)稳定下降,即扩散也有清晰的 Scaling Law。这为「用一套可扩展架构统一图像/视频生成」铺平了路。

Sora 的关键点

  • 时空 patch(spacetime patches):把视频看成时间×空间的三维数据,切成时空块当 token,Transformer 统一处理。
  • 潜空间压缩:先用视频压缩网络把视频压到时空潜表示,再在潜空间做扩散(Latent Diffusion 思想的视频版)。
  • 原生支持可变时长/分辨率/宽高比:token 序列长度灵活,可训练不同规格的视频,还能做变长生成。
  • 规模化:DiT + 海量视频数据 + 大算力,涌现出较强的「世界一致性」和物理直觉(虽仍有限)。

完整版教学

一、动机:为什么要把 U-Net 换掉

U-Net 在扩散里很成功,但它有「结构负担」:多尺度下采样、跳连、卷积 + 若干注意力,是一个手工设计、归纳偏置很重的架构。这带来两个问题:

  • 不好扩展:把 U-Net 放大到几十亿参数时,结构里的各种设计选择(在哪加注意力、通道怎么涨)都要重调,缺乏 Transformer 那种「照着一个 block 堆下去就行」的干净可扩展性。
  • 难以统一多模态:语言、图像、视频若都用 Transformer,就能共享一套工程、经验和 Scaling 规律。

DiT(Peebles & Xie, 2022)的问题是:能不能像 ViT 之于图像分类那样,用纯 Transformer 做扩散去噪,并且证明它可扩展? 答案是能,而且效果更好。

二、DiT 怎么把图像变成 token

沿用 ViT 的 patch 化思路,但作用在潜空间(省算力):

  1. VAE 把图像压成潜表示 z(如 256×256 图 → 32×32×4 潜图)。
  2. z 切成 p×p 的 patch(如 2×2),每个 patch 展平后线性投影成一个 D 维 token。
  3. 加位置编码,得到 token 序列,长度 = (32/2)² = 256。
  4. 送入 L 层 Transformer block,输出每个 token 的噪声预测,再拼回潜图形状。

patch 大小 p 是关键旋钮:p 越小 → token 越多 → 计算越贵但越精细。

三、adaLN-zero:DiT 注入条件的巧思

DiT 处理的条件是「时间步 t + 类别/文本」,这类全局条件adaLN(adaptive LayerNorm) 注入最合适:

  • 把条件编码成向量,用一个小 MLP 回归出每个 Transformer block 里 LayerNorm 的缩放 γ 和偏移 β,以及自注意力/FFN 残差前的缩放门控 α
  • 特征先 LayerNorm,再 γ·x + β 调制,残差乘 α。条件由此调制每一层的行为。

为什么加 “zero”:把回归 α 的那一层零初始化,使训练开始时 α=0,每个 block 的残差支路贡献为 0,整个 DiT 初始就是恒等映射。这和 ControlNet 的零卷积、扩散训练的稳定性哲学一脉相承——从”不破坏”的状态平滑开始学。论文实测 adaLN-zero 明显优于「相加」「交叉注意力」等其他条件注入方式。

把三处「零初始化」串起来记:DiT 的 adaLN-zero、ControlNet 的零卷积、扩散残差常用的零初始化——都是「让新模块开局零影响、再让梯度把它慢慢养大」,这是稳定训练大生成模型的通用招式。

四、DiT 最重要的结论:扩散也遵循 Scaling Law

DiT 论文系统地改变模型规模(层数、宽度、patch 大小),发现:模型的计算量(Gflops)越大,生成质量(FID)越好,关系平滑可预测。 这意味着扩散生成和大语言模型一样,可以靠「加规模」稳定提升,不必依赖巧妙的结构微调。这个结论的战略意义极大——它告诉工业界:想要更强的生成模型,堆 DiT + 数据 + 算力就行,路径清晰。SD3、PixArt、Sora 都是这条路线的产物。

五、Sora:把 DiT 搬到视频

Sora 是 DiT 思路在视频上的规模化延伸,几个要点:

  1. 视频潜空间压缩:先训一个视频压缩网络,把视频在空间和时间上同时压缩成时空潜表示,扩散在这个潜空间进行(Latent Diffusion 的视频版)。
  2. 时空 patch(spacetime patches):把时空潜表示切成三维块,每块当一个 token。这样图像(单帧)不过是「一帧的视频」,Sora 用同一套 token 化统一了图像和视频。
  3. 可变时长/分辨率/宽高比:token 序列长度可变,于是能在原生尺寸上训练和生成,而不必都缩放成固定方图——这被认为是 Sora 画质和构图更自然的原因之一。
  4. 规模化涌现:DiT + 海量视频 + 大算力,Sora 展现出较强的时空一致性、镜头连贯和一定的物理/世界直觉(但仍会违反物理、出现穿模等错误,说明它是数据驱动的近似,而非真正的物理引擎)。

六、面试拆解算例

扩散题最好用一次加噪和去噪的小推演讲清楚。假设训练图像像素归一化后是 x0,第 500 个时间步的噪声强度很高,模型看到的是混合样本 xt,目标通常是预测噪声 epsilon。如果预测噪声误差很小,就能从 xt 反推出更接近干净图像的估计;如果误差在早期步骤积累,后面细节会一起漂。

xt = sqrt(alpha_bar_t) * x0 + sqrt(1 - alpha_bar_t) * epsilon
model(xt, t, condition) -> predicted_epsilon
x0_hat = (xt - sqrt(1 - alpha_bar_t) * predicted_epsilon) / sqrt(alpha_bar_t)
维度训练阶段采样阶段面试要点
输入干净图 + 随机噪声随机噪声或潜变量起点不同
目标学会预测噪声/速度逐步还原样本目标一致
条件文本、边缘、姿态等CFG/ControlNet 引导控制方向
代价大量图像训练多步迭代推理速度质量权衡
干净图 x0 -> 加噪 xt -> 模型估计噪声 -> 反推 x0_hat -> 下一步更清晰
     |          |             |               |
   训练目标     时间步 t       条件控制          误差累积

所以回答「什么是 DiT(Diffusion Transformer)?它和 Sora 有什么关系?」时,不要停在“从噪声生成图片”。要说明训练时为什么要加噪、模型到底预测什么、采样器怎样反推、条件信号如何改变方向,以及少步采样为什么会牺牲一部分稳定性。

七、常见误区与追问

  • 误区:DiT 是全新的扩散理论。 不是,扩散的数学(加噪、预测噪声、采样)完全不变,DiT 只是把去噪网络从 U-Net 换成 Transformer
  • 误区:Sora 是”世界模型/物理引擎”。 它是数据驱动的生成模型,有一定世界一致性但会犯物理错误,不等于真的理解物理。
  • 追问:DiT 相比 U-Net 的主要优势? 可扩展性强(清晰的 Scaling Law)、结构统一简洁、易于放大和跨模态复用。
  • 追问:adaLN-zero 为什么比交叉注意力好(在 DiT 里)? 对「时间步+类别」这种全局条件,adaLN 调制更高效稳定;零初始化保证训练平滑。(文生图里对文本这种序列条件仍常配合交叉注意力/更长 token 拼接。)
  • 追问:Sora 怎么支持不同时长和分辨率? 时空 patch 让序列长度可变,可在原生尺寸上训练与生成。
  • 追问:DiT 的计算瓶颈? 自注意力对 token 数是 O(N²),视频 token 极多,故需潜空间压缩、较大 patch、以及高效注意力来控成本。

八、加强记忆

DiT 记「patch 化 + Transformer 去噪 + adaLN-zero + 可扩展」:把潜图切成 patch 当 token,用纯 Transformer 预测噪声,时间/类别条件经零初始化的自适应 LayerNorm 注入,最大贡献是证明了扩散也有干净的 Scaling Law——加规模就变强。 Sora 则是它的视频版:用时空 patch 统一图像与视频、在压缩潜空间做扩散、原生支持可变时长分辨率,靠 DiT+大数据+大算力规模化。简要说钉死关系:DiT = 用 Transformer 做扩散去噪的可扩展架构;Sora = 把 DiT 用时空 patch 搬到视频并规模化。