Sora,说是 2024 年以来最备受瞩目的生成式模型,一点不为过,它的生成视频的能力、效果,令人咋舌。
许多文章对 Sora 进行了应用层、展示层的介绍,而对其背后原理的解读还不够。
本篇一起来揭开 Sora 背后的神秘面纱,接触它的核心技术。
直白来讲,Sora 是一个扩散模型,基于 DiT 技术构建。
就像我们知道 ChatGPT 是基于 Transformer 模型,一种基于自注意力机制的深度学习模型。
Sora 的 DiT 展开就是:Diffusion Transformer,Sora = Diffusion + Transformer,这种更进一步的扩散模型,不仅能够实现媲美 GAN 的图像生成质量,而且具有更好的扩展性和计算效率。
如果之前使用过、了解过 stable diffusion 的同学,对 Diffusion model 应该会有印象:
Diffusion model 是基于噪声的生成模型,通过逐步添加噪声来模拟数据分布,然后学习逆向过程去除噪声,从而生成新的数据。
在 Sora 中,DiT 能够合成高质量的图像、并且可以通过简单修改,还保证其较低的计算成本。
现在算力这么贵的背景下,计算成本真的太重要了~
一图胜千言:
DiT 包括 VAE 编码器、ViT、DDPM 和 VAE 解码器,这些组件:
这些组件共同构成了 DiT 模型,使其能够根据文本指令生成逼真且富有想象力的场景。
Patchify 技术也是不可绕开的关键词,是视频高质量的关键!
Patchify 是一种将图像切分成多个大小为 p × p 的补丁,并将其转换为长度为 T 的序列作为 Transformer 的输入的方法。
Sora 使用 Patchify 将图像分割成小块,然后将这些块转换为序列,以便输入到 Transformer 模型中。这样做的好处是,Sora 可以处理不同分辨率、持续时间和长宽比的视频和图像。
实验证明:训练模型规模越大、patch size (p) 越小 (即 增加transformer的深度/宽度或增加输入token的数量)——可以显著提高视觉保真度
基于 patch 的表示方式使 Sora 能够训练不同分辨率、持续时间和高宽比的视频和图像。我们可以通过在适当大小的网格中安排随机初始化的 patches 来控制生成的视频的大小。
在 patchify 之后,输入 tokens 将由一系列 transformer blocks 进行处理。除了噪声图像输入,扩散模型有时还会处理附加的条件信息,如噪声时间步长 t、类标签 c、自然语言等。
DiT block 包含自注意力层、层规范层和前馈网络层。其中,有四种变体,如 in-context conditioning、cross-attention、adaptive layer norm (adaLN) 和 adaLN-Zero。
DiT(Diffusion Transformer) 的四种变体在实现两个额外嵌入的方式上有所不同:
这些变体在处理两个额外嵌入时具有不同的权衡,开发者可以根据具体任务和性能需求选择适合的变体。
transformer block 根据结构 (4种结构) 有 4 种模型大小 (S,B,L,XL),分别为 DiT-S、DiT-B、DiT-L 和 DiT-XL。
这四种配置在层数、隐藏维度和计算量上有所不同。
有能力的同学可基于以上开展训练:
Sora 关键技术实现细节令人赞叹!可以看到,技术推广、发展的背后必需严格管控成本,对于大模型来说,最大的成本就是节约计算成本!🚀
如果你对 Sora 感兴趣,可以探索更多关于 DiT 和扩散模型的知识。🚀
OK,以上便是本次分享,希望各位喜欢~ 欢迎点赞、收藏、评论 🤟 我是安东尼 🤠 人气技术博主 💥 坚持千日更文 ✍ 关注我,安东尼陪你一起度过漫长编程岁月
参考: