全球首个类 Sora 开源复现方案来了!全面公开所有训练细节和模型权重
- 量子位
2024-03-18 14:58
全球首个开源的类 Sora 架构视频生成模型,来了!整个训练流程,包括数据处理、所有训练细节和模型权重,全部开放。这就是刚刚发布的 Open-Sora 1.0。
它带来的实际效果如下,能生成繁华都市夜景中的车水马龙。
还能用航拍视角,展现悬崖海岸边,海水拍打着岩石的画面。
亦或是延时摄影下的浩瀚星空。
自 Sora 发布以来,由于效果惊艳但技术细节寥寥,揭秘、复现 Sora 成为了开发社区最热议话题之一。比如 Colossal-AI 团队推出成本直降 46% 的 Sora 训练推理复现流程。
短短两周时间后,该团队再次发布最新进展,复现类 Sora 方案,并将技术方案及详细上手教程在 GitHub 上免费开源。
那么问题来了,复现 Sora 如何实现?
Open-Sora 开源地址:https://github.com/hpcaitech/Open-Sora
全面解读 Sora 复现方案
Sora 复现方案包括四个方面:
模型架构设计
训练复现方案
数据预处理
高效训练优化策略
模型架构设计
模型采用了 Sora 同源架构 Diffusion Transformer (DiT) 。
它以采用 DiT 架构的高质量开源文生图模型 PixArt-α 为基座,在此基础上引入时间注意力层,将其扩展到视频数据上。
具体来看,整个架构包括一个预训练好的 VAE,一个文本编码器和一个利用空间-时间注意力机制的 STDiT (Spatial Temporal Diffusion Transformer) 模型。
其中,STDiT 每层的结构如下图所示。
它采用串行的方式在二维的空间注意力模块上叠加一维的时间注意力模块,用于建模时序关系。在时间注意力模块之后,交叉注意力模块用于对齐文本的语意。
与全注意力机制相比,这样的结构大大降低了训练和推理开销。
与同样使用空间-时间注意力机制的 Latte 模型相比,STDiT 可以更好的利用已经预训练好的图像 DiT 的权重,从而在视频数据上继续训练。
△STDiT 结构示意图
整个模型的训练和推理流程如下。
据了解,在训练阶段首先采用预训练好的 Variational Autoencoder (VAE) 的编码器将视频数据进行压缩,然后在压缩之后的潜在空间中与文本嵌入 (text embedding) 一起训练 STDiT 扩散模型。
在推理阶段,从 VAE 的潜在空间中随机采样出一个高斯噪声,与提示词嵌入 (prompt embedding) 一起输入到 STDiT 中,得到去噪之后的特征,最后输入到 VAE 的解码器,解码得到视频。
△ 模型训练流程
训练复现方案
在训练复现部分,Open-Sora 参考了 Stable Video Diffusion (SVD)。
一共分为 3 个阶段:
大规模图像预训练;
大规模视频预训练;
高质量视频数据微调。
每个阶段都会基于前一个阶段的权重继续训练。
相比于从零开始单阶段训练,多阶段训练通过逐步扩展数据,更高效地达成高质量视频生成的目标。
△ 训练方案三阶段
第一阶段是大规模图像预训练。
团队利用互联网上丰富的图像数据和文生图技术,先训练出一个高质量的文生图模型,将该模型作为下一阶段视频预训练的初始化权重。
同时,由于目前没有高质量的时空 VAE,他们采用 Stable Diffusion 预训练好的图像 VAE。
这样不仅能保障初始模型的优越性能,还能显著降低视频预训练的整体成本。
第二阶段是大规模视频预训练。
这一阶段主要增加模型的泛化能力,有效掌握视频的时间序列关联。
它需要使用大量视频数据训练,并且保障视频素材的多样性。
同时,第二阶段的模型在第一阶段文生图模型的基础上加入了时序注意力模块,用于学习视频中的时序关系。其余模块与第一阶段保持一致,并加载第一阶段权重作为初始化,同时初始化时序注意力模块输出为零,以达到更高效更快速的收敛。
Colossal-AI 团队使用了 PixArt-alpha 的开源权重作为第二阶段 STDiT 模型的初始化,以及采用了 T5 模型作为文本编码器。他们采用了 256x256 的小分辨率进行预训练,进一步增加了收敛速度,降低训练成本。
△Open-Sora 生成效果(提示词:水中世界的镜头,镜头中一只海龟在珊瑚礁间悠然游弋)
第三阶段是高质量视频数据微调。
据介绍,这一阶段能显著提升模型的生成质量。使用的数据规模比上一阶段降低一个量级,但是视频的时长、分辨率和质量都更高。
通过这种方式进行微调,能实现视频生成从短到长、从低分辨率到高分辨率、从低保真度到高保真度的高效扩展。
值得一提的是,Colossal-AI 还详细透露了每阶段的资源使用情况。
在 Open-Sora 的复现流程中,他们使用了 64 块 H800 进行训练。第二阶段的训练量一共是 2808 GPU hours,约合 7000 美元,第三阶段的训练量是 1920 GPU hours,大约 4500 美元。经过初步估算,整个训练方案成功把 Open-Sora 复现流程控制在了 1 万美元左右。
数据预处理
为了进一步降低 Sora 复现的门槛和复杂度,Colossal-AI 团队在代码仓库中还提供了便捷的视频数据预处理脚本,让大家可以轻松启动 Sora 复现预训练。
包括公开视频数据集下载、长视频根据镜头连续性分割为短视频片段、使用开源大语言模型 LLaVA 生成精细的提示词。
他们提供的批量视频标题生成代码可以用两卡 3 秒标注一个视频,并且质量接近于 GPT-4V。
最终得到的视频 / 文本对可直接用于训练。借助他们在 GitHub 上提供的开源代码,可以轻松地在自己的数据集上快速生成训练所需的视频 / 文本对,显著降低了启动 Sora 复现项目的技术门槛和前期准备。
高效训练加持
除此之外,Colossal-AI 团队还提供了训练加速方案。
通过算子优化和混合并行等高效训练策略,在处理 64 帧、512x512 分辨率视频的训练中,实现了 1.55 倍的加速效果。
同时,得益于 Colossal-AI 的异构内存管理系统,在单台服务器上(8H800)可以无阻碍地进行 1 分钟的 1080p 高清视频训练任务。
而且团队还发现 STDiT 模型架构在训练时也展现出卓越的高效性。
和采用全注意力机制的 DiT 相比,随着帧数的增加,STDiT 实现了高达 5 倍的加速效果,这在处理长视频序列等现实任务中尤为关键。
最后,团队还放出了更多 Open-Sora 的生成效果。
团队和量子位透露,他们将长期更新优化 Open-Sora 的相关解决方案和动态。未来将使用更多视频训练数据,以生成更高质量、更长时长的视频内容,并支持多分辨率特性。
实际应用方面,团队透露将推进在电影、游戏、广告等领域落地。
感兴趣的开发者们,可访问 GitHub 项目了解更多~
Open-Sora 开源地址:https://github.com/hpcaitech/Open-Sora
参考链接:
[1]https://arxiv.org/abs/2212.09748 Scalable Diffusion Models with Transformers
[2]https://arxiv.org/abs/2310.00426 PixArt-α: Fast Training of Diffusion Transformer for Photorealistic Text-to-Image Synthesis
[3]https://arxiv.org/abs/2311.15127 Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets
[4]https://arxiv.org/abs/2401.03048 Latte: Latent Diffusion Transformer for Video Generation
[5]https://huggingface.co/stabilityai/sd-vae-ft-mse-original
[6]https://github.com/google-research/text-to-text-transfer-transformer
[7]https://github.com/haotian-liu/LLaVA
[8]https://hpc-ai.com/blog/open-sora-v1.0
本文来自微信公众号:量子位 (ID:QbitAI),作者:明敏
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。