ColossalAI open-sora 1.0 项目技术报告 (视频生成)

2024-05-25 15:12

本文主要是介绍ColossalAI open-sora 1.0 项目技术报告 (视频生成),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目信息

  • 项目地址:https://github.com/hpcaitech/Open-Sora
  • 技术报告:
    • Open-Sora 1:https://github.com/hpcaitech/Open-Sora/blob/main/docs/report_01.md
    • Open-Sora 1.1:https://github.com/hpcaitech/Open-Sora/blob/main/docs/report_02.md
  • 项目介绍:
    • Open-Sora 是潞晨科技 (ColossalAI) 团队实现的一个致力于高效生产高质量视频的开源项目,旨在让所有人都能够访问先进的视频生成技术。该项目遵循开源原则,不仅使视频生成技术的访问民主化,还提供了一个简化和用户友好的平台,以简化视频制作的复杂性。Open-Sora 的目标是在内容创作领域激发创新、创造力和包容性。
    • 目前发布了两个版本
      • Open-Sora 1.0:生成 512x512 的 2s 视频
      • Open-Sora 1.1:生成 2s~15s, 144p to 720p, any aspect ratio,支持 text-to-video, image-to-video, video-to-video, infinite time generation 等模式

Open-Sora 1.0 技术报告

效果展示

text prompt: A serene night scene in a forested area. […] The video is a time-lapse, capturing the transition from day to night, with the lake and forest serving as a constant backdrop.

请添加图片描述
从生成的效果来看指令跟随能力一般,day to night 的效果一般

VAE 选择

  • 为了降低计算成本,希望利用现有的 VAE 模型。Sora 使用空间-时间 (spatial-temporal) VAE 来减少时间维度。然而,我们发现没有开源的高质量空间-时间 VAE 模型。 MAGVIT 的 4x4x4 倍数下采样 VAE 没有开源,而 VideoGPT 的 2x4x4 VAE 在我们的实验中质量较低。因此,我们决定在我们第一个版本中使用 2D VAE(来自Stability-AI)。

attention

  • 视频训练涉及大量的 token。考虑到 24 帧/秒的 1 分钟视频,我们有 1440 帧。通过 VAE 下采样 4 倍和补丁大小下采样 2 倍,我们有 1440x1024≈1.5M token。对 1.5M token 进行完全关注 (full attention) 将导致巨大的计算成本。因此,我们遵循 Latte 的方法使用空间-时间注意力 (spatial-temporal attention) 来降低成本。

  • 如图所示,我们在 STDiT(ST 代表空间-时间)的每个空间注意力之后插入了一个时间注意力。这类似于 Latte 论文中的变体 3。然而,我们没有为这些变体控制类似数量的参数。尽管 Latte 的论文声称他们的变体比变体 3 更好,但我们在 16x256x256 视频上的实验表明,在相同数量的迭代下,性能排名为:DiT(完整)> STDiT(顺序)> STDiT(并行)≈ Latte。因此,出于效率考虑,我们选择了STDiT(顺序)。

    • STDiT(顺序) 如下图所示,就是现在空间维度做 attention,然后再在时间维度上做 attention
      在这里插入图片描述
  • 与直接在 DiT 上应用全注意力相比,随着帧数的增加,STDiT 更加高效。训练速度在应用加速技术后的8块H800 GPU上测量,GC 表示梯度检查点 (gradient checkpointing)。

ModelSettingThroughput (sample/s/GPU)Throughput (tokens/s/GPU)
DiT16x256 (4k)7.2029k
STDiT16x256 (4k)7.0028k
DiT16x512 (16k)0.8514k
STDiT16x512 (16k)1.4523k
DiT (GC)64x512 (65k)0.085k
STDiT (GC)64x512 (65k)0.4025k
STDiT (GC, sp=2)360x512 (370k)0.1018k

随着 Video-VAE 对时间维度进行4倍下采样,一个每秒 24 帧的视频有 450 帧。STDiT(每秒 28k 个token)在视频上与 DiT 在图像上的速度(最高每秒 45k 个token)之间的差距主要来自 T5 和 VAE 编码以及时间注意力。

图像模型初始化

  • 为了专注于视频生成,我们希望基于一个强大的图像生成模型来训练模型。PixArt-α 是一个训练效率高、质量高的图像生成模型,具有 T5-conditioned 的 DiT 结构。我们用 PixArt-α 初始化我们的模型,并用零初始化插入的时间注意力的投影层。这种初始化在开始时保留了模型的图像生成能力,而 Latte 的架构则不能。插入的注意力将参数数量从 580M 增加到 724M。
    在这里插入图片描述

训练分辨率

借鉴 PixArt-α 和 Stable Video Diffusion 的成功,我们还采用了渐进式训练策略:在 366K 预训练数据集上进行 16x256x256 的训练,然后在 20K 数据集上进行 16x256x256、16x512x512 和 64x512x512 的训练。通过缩放位置嵌入,这种策略大大降低了计算成本。

时间下采样

我们还尝试在 DiT 中使用 3D 块嵌入器。然而,在时间维度上 2 倍下采样后,生成的视频质量较低。因此,我们将下采样留给我们下一版本的空间 VAE。目前,我们每 3 帧采样一次,进行 16 帧训练,每 2 帧采样一次,进行 64 帧训练。

数据是高质量的关键

我们发现,数据的数量和质量对生成视频的质量有很大的影响,甚至比模型架构和训练策略的影响还要大。目前,我们只准备了来自 HD-VG-130M 的第一批分割(366K视频片段)。这些视频的质量差异很大,而且 caption 也不够准确。因此,我们进一步从 Pexels 收集了 20k 相对高质量的视频, Pexels 提供免费许可的视频。我们使用 LLaVA(一个图像标题生成模型)对视频进行 caption 标注,使用三个帧和一个设计好的 prompt。通过设计好的 prompt,LLaVA可以生成高质量的标题。
在这里插入图片描述

训练细节

由于训练预算有限,我们只进行了一些探索。我们发现学习率 1e-4 过大,后来降低到 2e-5。当以大批量训练时,我们发现 fp16 比 bf16 不稳定,可能导致生成失败。因此,我们切换到 bf16 进行 64x512x512 的训练。对于其他超参数,我们遵循了之前的工作

  • loss 降的似乎不太好
    在这里插入图片描述在这里插入图片描述

总结

  • open sora 1.0 做到的效果和 sora 还有显著差距,不过其实通过借助开源的 SD VAE 工作等基本把整个视频生成的框架走通了,包括 STDiT、高质量数据生成等各个环节。后续对各个模块进一步更新可以实现更好的效果

这篇关于ColossalAI open-sora 1.0 项目技术报告 (视频生成)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001859

相关文章

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技