🎯核心定义
DiT(Diffusion Transformer)用纯 Transformer 替换 U-Net 作为扩散主干,是 Sora、SD3、FLUX 的底层架构,两个核心设计:
📌核心概述
Patchify: 把潜特征图
z∈Rh×w×c 切成
p×p 的 patch 并线性嵌入,得到
T=ph⋅pw 个
d 维 token(视频再加 3D 时空位置编码)。patch 越大 token 越少、计算越省,但空间细节损失越多(常取
p=2)。
📌核心概述
AdaLN 条件注入: 时间步
t 与条件
c 不拼接进 token,而是由 MLP 映射为逐 token 的 scale/shift 调制 LayerNorm:
📌核心概述
h=γ(t,c)⊙LN(x)+β(t,c),(γ,β)=MLP(Emb(t),Emb(c)) 📌核心概述
Sora 用 AdaLN-Zero: MLP 输出初始化为 0、调制作用在残差分支前,模型初始状态退化为恒等映射,训练更稳、收敛更快,且比 cross-attention 注入更省参数与计算。
📌核心概述
Sora 3D causal VAE: 先把视频压缩进潜空间再送 DiT——对
F×H×W×3 的视频做
空间 8×8、时间 4× 的因果压缩,得
F/4×H/8×W/8×16 的潜张量,体积压缩
8×8×4=256 倍。时间维用因果卷积/因果注意(只依赖当前帧及之前):训练用定长块,推理可逐帧或变长流式编码,任意时长视频共享同一潜空间。
💡使用场景
文生视频主干(Sora)、旗舰文生图(SD3/FLUX 的 MMDiT);面试常问 patchify 的 token 数计算与 AdaLN-Zero 为何稳定。
⚡解决的核心痛点
U-Net 的局部归纳偏置对长程时序依赖建模不足、难以随数据扩展;DiT 用可扩展的统一 Transformer 换计算效率,配合 3D VAE 的 256× 体积压缩,把分钟级、高分辨率视频的时序与分辨率建模成本压到可控范围,是 Sora 能端到端生成长视频的关键前提。