时令 发自 凹非寺
量子位 | 公众号 QbitAI
什么?有人提出DiT是错的?
这个被认为是扩散模型领域核心基石的DiT,竟然被质疑了。
这位网友表示,不仅数学上是错的,形式上是错的,甚至怀疑DiT根本就没有Transformer?!
一石激起千层浪,网友们速速来围观。结果作者谢赛宁本人都立马站出来回应:
虽然知道楼主是标题党,但我还是忍不住要回应一下。每个研究者都希望发现自己模型的不足,这是科学进步的动力。如果模型从未出错,反而值得担忧。评价DiT需要提出假设、做实验、验证结果,而不是凭想象臆断,否则结论不仅可能错误,甚至完全不具科学性。
哇哦,先抨击了标题党,又强调了科学精神和实证方法的重要性,真的是很中肯的一番回应。
回过头来,咱先了解一下DiT为啥那么厉害。
要知道,早在Transformer占尽风头时,U-Net在扩散模型领域仍然一枝独秀——
这时,DiT(Diffusion Transformers)横空出世,将Transformer与扩散模型融合,在计算效率和生成效果上均超越了基于U-Net的经典模型ADM和LDM,同时把Transformer扩展到了图像视频领域。
如果DiT真错了,大量依赖DiT的生成模型都要崩塌,整个领域都得重新审视。
下面让我们来扒一扒这位网友针对DiT提出了哪些质疑。
关于DiT的可疑之处
他的观点均来源于论文《TREAD:Token Routing for Efficient Architecture-agnostic Diffusion Training》。
这篇论文主要提出一种Tread策略,能够将早期层随机选取的token传递至模型的更深层。
值得注意的是,这种方法并不限于常见的Transformer模型,同样可以应用于状态空间模型,且无需对架构进行修改,也无需引入额外参数。
那网友是如何通过这篇论文质疑DiT的呢?
其一,他首先借助论文中的一张图对DiT提出了质疑,认为DiT架构本身就能轻松学会数据集——FID迅速降低,这说明架构里有某种隐含特性。
其二,上图表明Tread模型比DiT在40万次训练迭代上快14倍,比DiT在700万次迭代时的最佳表现快37倍。
由此,这位网友直接抨击,小幅度提升效果可能只是优化,如果提升幅度巨大,就是在否定之前的方法。
其三,质疑者还提出不要使用DiT。
如果你非得在训练时“切掉部分网络”,也就是用学习机制把它彻底禁用,那你的网络基本上就废了。
其四,研究表示,在训练过程中,DiT中被恒等替换的网络单元越多,模型评估反而更好。
其五,DiT整个架构都后置层归一化,扩散过程会产生动态范围极高的实际输出。
因此,需要使用对数尺度来表示采样开始和结束时的信噪比差异。
其六,针对Adaptive Layer Normalization(自适应层归一化)方法,尽管模型叫DiT,但在处理条件输入时,只是走了普通的MLP流程。
能看到的只是label_y→timestep_t→embed→conditioning→MLP→bias terms,根本看不到Transformer的任何痕迹。
上面6条对DiT的反驳,都可以说是有理有据,甚至图文并茂。
那谢赛宁是如何回应的呢?
谢赛宁回应Tread与“DiT是错的”毫无关系
首先,谢赛宁对Tread模型的工作给予了肯定(人情世故)。
他认为Tread更像是随机深度(stochastic depth),其能收敛完全是因为正则化对特征稳健性的提升。
他还指出,尽管Tread模型挺有趣的,但与原帖作者所谓的“DiT是错的”的论断毫无关系。
谢赛宁强调,Lightning DiT作为一种经过验证的强大升级(采用 swiglu、rmsnorm、rope、ps=1),只要条件允许,都推荐优先使用该版本。。
此外,目前还没有证据表明后置层归一化会引发问题。
回击完了质疑者,谢赛宁还不忘总结了一下自己的工作。
他表示:
过去这一年,最大的改进集中在内部表征学习(internal rep learning)上。REPA(Representation Alignment)算是我们最早提出的方法,但现在已经有更多实现方式,比如:tokenizer级别的修正(如va-vae、REPA-E)、将语义token拼接到噪声潜变量中、解耦架构(如DDT)、正则化方法(如 dispersive loss)或自表征对齐(self-representation alignment)等等。
其次,他们团队在训练模型时,始终采用随机插值/流分配来提升训练效果,而SiT则被用作基准方法来评估其他方法是否有效。
在DiT中,时间嵌入最好使用adaln-zero,需注意的是,使用adaln-zero时最好共享参数,否则会白白浪费30%参数,而对于更复杂的分布(如文本嵌入),则使用cross-attention。
最后,谢赛宁也是直接提出sd-vae才是DiT真正的症结所在,处理256×256分辨率的图像竟需445.87 GFlops,还不是端到端的架构。
目前,像va-vae和repa-e这类方法只能解决部分问题,但更多改进方案正在不断涌现。
参考链接:
[1]https://x.com/sameQCU/status/1957223774094585872
[2]https://x.com/sainingxie/status/1957842855587639369
[3]https://arxiv.org/pdf/2501.04765
[4]https://arxiv.org/abs/2212.09748