什么是 扩散 Transformer(DiT)?

扩散 Transformer(DiT)是一种基于 Transformer 的去噪或速度预测骨干,把通常来自含噪图像潜变量的空间输入表示为 Patch Token,并根据扩散或流时间步及其他条件处理这些 Token。

快速了解

全称Diffusion Transformer (DiT)
创建时间2023 年由 William Peebles 和 Saining Xie 提出(Meta/UC Berkeley)
规范文档官方规范

工作原理

理解 Patchify、条件注入、Transformer 与 Unpatchify

对于高为 H、宽为 W、Patch 大小为 p 的潜变量网格,原始设计会生成 (H/p) * (W/p) 个 Token。线性 Patch Embedding 与位置编码进入标准 Transformer Block,时间步和类别嵌入负责条件注入。原论文消融中,adaLN-Zero 把残差调制初始化为近似恒等映射,在其测试设置下效果最好。最终投影与 Unpatchify 还原空间去噪输出。

把扩展结论限制在实验条件内

原论文在类别条件 ImageNet 上改变模型深度、宽度和潜空间 Patch 大小,并在该实验中观察到前向 Gflops 增大时 FID 改善。这不是适用于所有数据、目标、分辨率和硬件的通用扩展定律。Patch 变小会增加 Token 数;长宽方向各减半会让 Token 增至四倍,使稠密注意力的 Token 对数量增至十六倍。

区分后续 Transformer 骨干与训练目标

MMDiT 为文本与图像流保留独立权重,同时通过联合注意力交换信息;原始 DiT 主要使用时间步和类别条件。其他系统还会采用 Cross-Attention、U 形层级、Token 压缩、扩散损失、Flow Matching 或 Rectified Flow。比较时必须固定数据、算力、延迟、显存、采样器、自编码器和评测;共同使用 Transformer Block 不代表架构等价。

主要特点

  • 使用 Transformer Block 作为生成骨干,但不定义完整生成管线
  • 把空间潜变量或像素转换为 Patch Token 序列
  • 通过明确机制注入时间步与其他条件
  • 用更小 Patch 和更长序列换取更高计算与显存成本
  • 后续变体包含 Cross-Attention、联合模态或层级 Token 路径
  • 需要针对具体实验评估质量、延迟、显存与鲁棒性

常见用途

  1. 在潜空间图像扩散管线中测试 Transformer 骨干
  2. 使用类别、文本 Token 或控制输入调节图像生成
  3. 为视频研究扩展空间 Patch 序列与时间 Token
  4. 在固定训练协议下研究模型规模和 Token 数扩展
  5. 比较各向同性、多模态与层级式生成骨干

示例

loading...
Loading code...

常见问题

DiT 是扩散模型还是只是模型骨干?

DiT 主要是把含噪空间表示与条件映射为去噪或速度预测的神经网络骨干。完整生成系统还要选择自编码器或像素空间、前向路径、训练目标、条件编码器、引导方法、采样器和数据协议。

扩散 Transformer 一定比 U-Net 更好吗?

不一定。原论文只在类别条件 ImageNet 上比较受控的 DiT 系列,并未覆盖所有 U-Net、数据集或预算。数据规模、参数量、Token 数、条件机制、训练目标、实现和硬件都会影响质量与效率,应使用同条件实验比较。

原始 DiT 中的 adaLN-Zero 有什么作用?

它根据时间步和类别条件生成缩放、偏移与残差门控,并把残差调制零初始化,使每个 Block 开始时接近恒等映射。它在原论文测试的条件注入方案中表现最好,但该结论只适用于对应实验。

MMDiT 与原始 DiT 有什么区别?

原始 DiT 研究聚焦类别条件潜空间 Patch;MMDiT 为图像和文本 Token 流使用模态专属权重,同时通过联合注意力交换信息。它还在 Rectified Flow 文生图系统中评测,因此不能把架构和训练目标合并成一种通用 DiT 配方。

为什么 DiT 的 Patch 大小会强烈影响计算量?

二维潜变量的 Token 数为 `(H/p) * (W/p)`。长宽方向 Patch 各减半会产生四倍 Token,稠密自注意力的 Token 对数量随之增至十六倍。实际运行时间还取决于隐藏维度、Kernel、显存流量、稀疏性与并行方式。

相关术语

相关文章