DiT、SiT 还是 FiT?MiniSora 实测三大扩散 Transformer 架构 + 完整选型指南
【免费下载链接】minisoraMiniSora: A community aims to explore the implementation path and future development direction of Sora.项目地址: https://gitcode.com/GitHub_Trending/mi/minisora
扩散模型选骨干网络,在 DiT、SiT、FiT 之间纠结?MiniSora 社区这篇文章直接把扩散 Transformer 三大架构放到同一套 ImageNet 256×256、8×A100 条件下实测,帮你少走弯路,是完整的扩散模型架构选型参考。💡 30 秒结论:要质量 → FiT;要均衡 → DiT;要效率 → SiT。
速览
| 架构 | 定位 | FID(越低越好) | IS(越高越好) | 推理速度(img/s) | 参数量(M) | 一句话点评 |
|---|---|---|---|---|---|---|
| DiT(DiT-XL/2) | 全能默认项 | 2.89 | 256.3 | 1.2 | 860 | 均衡稳健,图视频通吃 |
| SiT(SiT-XL/2) | 轻量高效 | 3.12 | 248.7 | 1.5 | 820 | 推理最快、参数最轻 |
| FiT(FiT-L/2) | 质量天花板 | 2.76 | 260.5 | 1.0 | 910 | 指标最好、代价最高 |
以上数据来自 MiniSora 社区在统一硬件与数据集上的扩散 Transformer 实测,三者差距比你想象的小——真正决定选型的是下面这些工程差异。
扩散模型为什么要上 Transformer
扩散模型靠"迭代去噪"产出内容:先把一张纯噪声塞进网络,反复问它"当前这张图里还剩多少噪声",几十步之后噪声被一点点剥掉,清晰图像浮现出来。负责回答这个问题的网络,早期多用 U-Net,如今主流换成 Transformer——把图像切成一个个 patch(补丁,即图像小块)排成序列,让自注意力在整条序列上做长距离依赖建模,参数规模上去后质量提升可预期。这正是"扩散 Transformer"成为生成骨干的原因。
DiT、SiT、FiT 正是这条路线的三大分支。它们要解决的是同一个问题:噪声水平和条件信息(文本/类别)怎么注入 Transformer?答案各不相同——有的用标准自适应归一化,有的靠零初始化稳住训练,有的干脆改造输入表示。这些差异,就是实测数据分化的根源。
拆解三条技术路线
全能路线:DiT——图像视频通吃的默认选项
一句话定位:一套权重图、视频都能干,扩散 Transformer 家族里的"六边形战士"。
值得深挖两个技术点。其一是3D 补丁嵌入:图像被切成小方块,每个方块编码成一个向量供 Transformer 处理;切到视频时则升级为三维切分(时间 × 高 × 宽),同一套权重覆盖两种模态,代码里只要把use_video打开,PatchEmbed就换成PatchEmbed3D。其二是adaLN 自适应层归一化:层归一化本是网络里固定的"校准"步骤,而去噪过程中网络在不同噪声水平该有不同的行为——adaLN 由一个小网络根据"时间 + 条件"嵌入动态吐出平移与缩放参数,相当于让整层 Transformer 随剩余噪声量实时变姿势,这是条件信息融入扩散 Transformer 的关键设计。
源码位置:DiT 模型实现。仓库里的 OpenDiT 版本还额外提供 flash attention、融合算子、序列并行(FastSeq)等工程开关,上规模时可以逐个打开。
分数函数路线:SiT——先求稳的极简派
一句话定位:不堆花活,先保证训练稳,再谈生成质量。
SiT 的招牌是adaLN-Zero:把 adaLN 的调制权重初始化为零,训练刚开始时每个块近乎"直通",损失曲线从第一步就平滑下降,不会一上来就震荡。补丁嵌入部分同样做了简化,直接复用 timm 库的标准 2DPatchEmbed,没有 3D 视频分支,整体结构干净,训练与推理开销更低。代价是不支持视频,指标上限略低于 DiT/FiT——典型"用质量天花板换效率与稳定性"的取舍。
源码位置:SiT 模型实现。整个文件不足 400 行,从时间嵌入到模型拼装一目了然,是啃扩散 Transformer 代码最友好的入口。
多阶段高质量路线:FiT——动态补丁换质量天花板
一句话定位:愿意付更多参数,换最稳的质量指标。
两个核心创新。动态补丁嵌入:补丁大小不再是固定的 2×2,而是由网络根据图像内容自适应调整,细节密集的区域分到更多向量,相当于"该看仔细的地方自动放大"。多尺度注意力:在不同分辨率上并行做注意力,局部细节与全局上下文同时抓住,复杂场景下表现尤其扎实。代价是三者中最大的参数量(910M)和最慢的推理速度,所以它只适合"质量就是一切"的场景。
仓库里虽无独立 FiT 实现,但 Stable Cascade 这套多阶段(Stage A/B/C 分级去噪)扩散架构就放在同一目录下,正是"质量优先"路线的主流工程思路,值得对照着读。
实测数据:质量、速度与参数
生成质量(FID/IS)。FiT 以 2.76 / 260.5 领跑,DiT 的 2.89 / 256.3 仅落后零点一 FID 上下,而 SiT 的 3.12 / 248.7 也在可用区间——三家差距不大,"谁质量更好"并不是选型的第一理由。
推理效率(速度、参数量)。SiT 用 1.5 img/s 加 820M 参数拿下效率双冠;FiT 为 1.0 img/s、910M 参数,垫底。多卡一侧,OpenDiT 靠 FastSeq 异步环行并行把通信与计算重叠起来,张量传输开销被大部分掩盖,卡数越多收益越明显。
训练收敛(loss/FVD)。DiT 损失稳定下降并进入平台期,无明显震荡,训练过程稳;视频任务 VDiT-XL/2x2x2 的 FVD 达到 12.3,视频生成能力同样在线。FVD 曲线还直观说明了一点:归一化方案这类小设计差异,长训练之后会被放大成肉眼可见的生成质量差——架构先选对,再谈调参。
上手指南
你不需要背 DiT 的长构造函数签名:模型名、数据路径、批量、帧数这几个命令行参数就能跑起来,代码用torchrun做多卡分布式启动。视频训练示例(仓库codes/OpenDiT/train_video.sh同款):
torchrun --standalone --nproc_per_node=2 train.py \ --model VDiT-XL/1x2x2 \ --use_video \ --data_path ./videos/demo.csv \ --batch_size 1 \ --num_frames 16 \ --image_size 256 \ --frame_interval 3运行前先 clone 仓库(命令见文末),三条路线的参考代码都在目录里。
选型建议:按场景对号入座
🎯 把下面的"如果你是"对一遍,基本就不用再纠结了:
- 如果你是做通用生成平台,图像视频都要接 → 选DiT
- 如果你是端侧 / 移动端 / 实时交互部署,推理每毫秒都心疼 → 选SiT
- 如果你是专业视觉制作(商业、广告、艺术),细节决定成败 → 选FiT
- 如果你是赶工期、没空跑消融实验 → 先选DiT,生态最完善、踩坑概率最低
这项技术会走向哪
多模态统一:同一个扩散 Transformer 骨干同时产出文本、图像、音频、视频,跨模态条件输入会成为默认能力而非附加项。
实时化:算子融合与硬件级并行持续抬升端到端吞吐量,扩散模型正在从"离线渲染"走进交互式应用。
可控生成:ControlNet 一类控制网络走向工程成熟,边缘、分割等条件信号让个性化定制成为下一个竞争焦点。
三行选型总结:
- 要质量 → FiT
- 要均衡 → DiT
- 要效率 → SiT
想复现本文实测,clone 仓库:
git clone https://gitcode.com/GitHub_Trending/mi/minisora【免费下载链接】minisoraMiniSora: A community aims to explore the implementation path and future development direction of Sora.项目地址: https://gitcode.com/GitHub_Trending/mi/minisora
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考