开源SORA来了!训练你自己的SORA模型!

迄今为止,最接近SORA的开源模型是Latte,它采用了与SORA相同的Vision Transformer架构。Vision Transformer到底有何出色之处,它与以往的方法有何不同?
Latte尚未开源其文本到视频的训练代码。我们已经复制了论文中的文本到视频训练代码,并将其提供给任何人使用,以训练他们自己的SORA替代模型。我们的训练效果如何?详细信息将在下面讨论。
01
从3D U-Net到Vision Transformer
图像生成已显著成熟,其中UNet模型结构是图像生成中最常用的。
U-Net是一种网络结构,它首先压缩并缩小输入图像,然后逐渐解码并放大它,形状像一个U。早期的视频生成模型扩展了U-Net结构以支持视频。
从图像到视频其实很简单——只是通过添加一个时间维度,将2D的高度x宽度扩展到3D。
早期的视频生成网络结构只是通过融入时间维度将二维UNet扩展成了三维UNet。
通过在此时间维度中整合一个Transformer,模型学习在给定时间点(例如,在第n帧)图像应该是什么样子。
最初,给定一个提示,它生成一张图片。一个3D UNet,给定一个提示,生成16张图片。
3D UNet结构的问题在于,Transformer只能在UNet内部工作,无法看到整体。这通常导致视频中连续帧之间的一致性较差,而且模型对于较大的运动和动作也缺乏足够的学习能力。
如果你仍然对2D-UNet和3D-UNet的网络结构感到困惑,其实并没有那么复杂。网络设计背后真的没有那么多逻辑,只要记住深度学习最重要的一点:“多加几层就行了”!
02
Vision Transformer
3D UNet中的Transformer只在UNet内部工作,无法看到全局。而Vision Transformer则允许Transformer全局主导视频生成。
Vision Transformer的建模方法更类似于语言模型:我们可以直接将视频视为一个序列。序列中的每个数据块都可能是一小段图像。
类似于语言模型分词器的工作方式,视频可以被编码成一个token序列。
一旦序列建立,我们就可以直接应用Transformer。
从数学上讲,Vision Transformer相当直接;它应用了与语言模型相似的机制:将视频转换为token序列,然后大量地应用多层Transformer。
这种简单的设计与OpenAI的风格非常吻合——简单粗暴。
OpenAI实际上并不青睐数学上复杂或花哨的方法。早期,OpenAI的GPT-2与T5和DeBerta等各种花哨的模型相比,因其过于简单粗糙而受到一些轻视。
然而,相对简单和可操作的模型结构实际上可以使模型更容易稳定地扩展到更大规模的训练数据。OpenAI选择不竞争模型结构,而是竞争数据。
然后,就是堆积TB级别的数据和数以万计的GPU。
我和OpenAI唯一的区别就是数以万计的GPU。
与3D UNet相比,Vision Transformer让模型更能专注于学习运动图像的模式。
更大的运动幅度和更长的视频长度一直是视频生成模型的挑战。Vision Transformer显著增强了在这些方面的能力。
03
训练你的开源SORA替代品Latte
Latte采用了前面提到的视频切片序列和Vision Transformer方法。这与SORA的普遍理解是一致的。
Latte尚未开源文本到视频的模型训练代码。我们在这里为大家复制了论文中的训练代码:https://github.com/lyogavin/train_your_own_sora,请随意使用。
训练只需三个步骤
- 下载并训练模型,安装环境
- 准备训练视频
- 运行训练
./run_img_t2v_train.sh
更多详情,请参见GitHub仓库。
我们还对训练过程进行了一些改进
- 增加了对梯度累积的支持,以减少内存需求
- 在训练过程中包含了验证样本,以帮助验证训练过程
- 增加了对wandb的支持
- 包含了对无分类器指导训练的支持。
04
模型性能
Latte的官方视频如下
官方视频看起来表现良好,尤其是在大幅运动方面。
我们还在自己的训练数据中比较了各种模型。Latte确实表现不错,但它并不是表现最好的模型。还有其他开源模型的性能更好。
尽管Latte采用了有效的网络结构,但其更大的规模意味着,根据著名的尺度定律,它需要更多数量和更高质量的训练数据。
视频模型的能力在很大程度上取决于其预训练图像模型的性能。看来Latte使用的预训练基础图像模型也需要加强。
我们未来将继续分享其他性能更好的模型,请务必关注我的博客。
05
硬件要求
由于其规模较大,训练Latte需要一块80GB内存的A100或H100显卡。
我们将继续分享最新最酷的AI模型算法和开源技术。
在下面留下你的评论,并务必关注这个博客!