Open-Sora:开源 Sora 复现方案,成本降低 46%

Colossal-AI 开源了完整的 Sora 复现架构方案 Open-Sora,声称可降低 46% 复现成本,并将模型训练输入序列长度扩充至 819K patches。

演示站点: https://ai.uaai.cn  UAAI
官方论坛: www.jingyuai.com京娱AI

 

Sora 算法复现方案


在 Sora 的技术报告中,Sora 使用了一个视频压缩网络将各种尺寸的视频压缩成一个隐空间 (latent space) 的时空块序列 (a sequence of patial temporal patch),然后使用了 Diffusion Transformer 进行去噪,最后进行解码生成视频。

Open-Sora 将 Sora 可能使用的训练 pipeline 归纳为下图。

 

 

 

📍 概述

目前 Open-Sora 已涵盖:

  • 提供完整的 Sora 复现架构方案,包含从数据处理到训练推理全流程。
  • 支持动态分辨率,训练时可直接训练任意分辨率的视频,无需进行缩放。
  • 支持多种模型结构。由于 Sora 实际模型结构未知,我们实现了 adaLN-zero、cross attention、in-context conditioning (token concat) 等三种常见的多模态模型结构。
  • 支持多种视频压缩方法。用户可自行选择使用原始视频、VQVAE(视频原生的模型)、SD-VAE(图像原生的模型)进行训练。
  • 支持多种并行训练优化。包括结合 Colossal-AI 的 AI 大模型系统优化能力,及 Ulysses 和 FastSeq 的混合序列并行。

性能


以在单台 H800 SXM 8*80GB GPU 上使用 DiT-XL/2 模型的性能测试为例。在 600K 的序列长度时,Open-Sora 的方案比基线方案有 40% 以上的性能提升和成本降低。

 

📂 数据集准备

使用MSR-VTT
我们使用MSR-VTT数据集,这是一个大规模视频描述数据集。用户应在训练模型之前对原始视频进行预处理。您可以使用以下脚本来执行数据处理。

# Step 1: download the dataset to ./dataset/MSRVTT
bash scripts/data/download_msr_vtt_dataset.sh# Step 2: collate the video and annotations
python scripts/data/collate_msr_vtt_dataset.py -d ./dataset/MSRVTT/ -o ./dataset/MSRVTT-collated# Step 3: perform data processing
# NOTE: each script could several minutes so we apply the script to the dataset split individually
python scripts/data/preprocess_data.py -c ./dataset/MSRVTT-collated/train/annotations.json -v ./dataset/MSRVTT-collated/train/videos -o ./dataset/MSRVTT-processed/train
python scripts/data/preprocess_data.py -c ./dataset/MSRVTT-collated/val/annotations.json -v ./dataset/MSRVTT-collated/val/videos -o ./dataset/MSRVTT-processed/val
python scripts/data/preprocess_data.py -c ./dataset/MSRVTT-collated/test/annotations.json -v ./dataset/MSRVTT-collated/test/videos -o ./dataset/MSRVTT-processed/test

 如果你想使用adaLN-zero,你应该--use_pooled_text在运行时使用preprocess_data.py


After completing these steps, you should have a processed MSR-VTT dataset in `./dataset/MSRVTT-processed`.### Use Customized DatasetsYou can also use other datasets and transform the dataset to the required format. You should prepare a captions file and a video directory. The captions file should be a JSON file or a JSONL file. The video directory should contain all the videos.Here is an example of the captions file:```json
[{"file": "video0.mp4","captions": ["a girl is throwing away folded clothes", "a girl throwing cloths around"]},{"file": "video1.mp4","captions": ["a  comparison of two opposing team football athletes"]}
]

这是视频目录的示例:

.
├── video0.mp4
├── video1.mp4
└── ...

 每个视频可能有多个字幕。所以输出是视频字幕对。例如,如果第一个视频有两个字幕,则输出将是两个视频字幕对。

我们使用VQ-VAE来量化视频帧。我们使用CLIP来提取文本特征。

输出是一个箭头数据集,其中包含以下列:“video_file”、“video_latent_states”、“text_latent_states”。“video_latent_states”的维度是(T,H,W),“text_latent_states”的维度是(S,D)。

然后您可以使用以下命令运行数据处理脚本:

python preprocess_data.py -c /path/to/captions.json -v /path/to/video_dir -o /path/to/output_dir

如果你想使用adaLN-zero,你应该--use_pooled_text在运行时使用preprocess_data.py

请注意,此脚本需要在具有 GPU 的机器上运行。为了避免 CUDA OOM,我们过滤掉太长的视频。

🚀 开始吧

在本节中,我们将指导如何运行训练和推理。在此之前,请确保使用以下命令安装了依赖项。

bash ./scripts/train.sh

 

train.sh您还可以根据自己的需要修改参数。

我们提供三种模型架构:“adaln”、“cross-attn”和“token-concat”。您可以使用选项指定模型架构-x。

推理
我们提供了一个执行推理的脚本,允许您从经过训练的模型生成视频。您可以通过以下命令调用推理。

python sample.py -m "DiT/XL-2" --text "a person is walking on the street" --ckpt /path/to/checkpoint --height 256 --width 256 --fps 10 --sec 5 --disable-cfg

这将在当前目录中生成一个“sample.mp4”文件。

如需更多命令行选项,可以使用以下命令查看帮助信息。

python sample.py -h

请确保视频压缩器和模型架构与训练设置一致。

项目地址:

GitHub - hpcaitech/Open-Sora: Building your own video generation model like OpenAI's Sora

参看文献

OpenAI Sora 技术报告
视频GPT项目
扩散变压器
深速尤利西斯
开放式数字技术

sora相关文章集

好莱坞泰勒佩里Sora制作电影,对好莱坞担忧,停止工作室扩张

 可让照片人物“开口说话”阿里图生视频模型EMO,高启强普法

Sora - 探索AI视频模型的无限可能

Sora对于普通人意味着什么?

Sora 在线应用

#2024 年 AI 辅助研发趋势#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/733795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot256基于springboot+vue的游戏交易系统

游戏交易系统设计与实现 摘 要 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对游戏交…

[LeetCode][LCR143]树的子结构判断——递归

题目 LCR 143. 子结构判断 给定两棵二叉树 tree1 和 tree2,判断 tree2 是否以 tree1 的某个节点为根的子树具有相同的结构和节点值。注意,空树不会是以 tree1 的某个节点为根的子树具有相同的结构和节点值。 示例: 输入:tree1 …

3.9Code

基于顺序存储结构的图书信息表的图书去重 #include<iostream> #include<stdlib.h> #include<string.h>typedef int status;#define OK 1using namespace std;typedef struct{char no[50];char name[50];float price; }Book;typedef struct{Book* elem;int …

鸿蒙App动画、弹窗

动画 属性动画 https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-animatorproperty-0000001478181445-V3 组件的某些通用属性变化时&#xff0c;可以通过属性动画实现渐变过渡效果&#xff0c;提升用户体验。支持的属性包括width、height、backg…

【软件工程】软件工程定义、软件危机以及软件生命周期

&#x1f338;博主主页&#xff1a;釉色清风&#x1f338;文章专栏&#xff1a;软件工程&#x1f338; 今日语录&#xff1a;What matters isn’t how others think of your ambitions but how fervently you cling to them. 软件工程系列&#xff0c;主要根据老师上课所讲提及…

【ubuntu】安装 Anaconda3

目录 一、Anaconda 说明 二、操作记录 2.1 下载安装包 2.1.1 官网下载 2.1.2 镜像下载 2.2 安装 2.2.1 安装必要的依赖包 2.2.2 正式安装 2.2.3 检测是否安装成功 方法一 方法二 方法三 2.3 其他 三、参考资料 3.1 安装资料 3.2 验证是否成功的资料 四、其他 …

基于机器学习的工业用电量预测完整代码数据

视频讲解: 毕业设计:算法+系统基于机器学习的工业用电量预测完整代码数据_哔哩哔哩_bilibili 界面展示: 结果分析与展示: 代码: from sklearn import preprocessing import random from sklearn.model_selection import train_test_split from sklearn.preprocessing…

vue element plus Typography 排版

我们对字体进行统一规范&#xff0c;力求在各个操作系统下都有最佳展示效果。 字体# 字号# LevelFont SizeDemoSupplementary text12px Extra SmallBuild with ElementBody (small)13px SmallBuild with ElementBody14px BaseBuild with ElementSmall Title16px MediumBuild w…

个人健康管理系统|基于微信小程序的个人健康管理系统设计与实现(源码+数据库+文档)

个人健康管理小程序目录 目录 基于微信小程序的个人健康管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2 运动教程管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设…

日期问题---算法精讲

前言 今天讲讲日期问题&#xff0c;所谓日期问题&#xff0c;在蓝桥杯中出现众多&#xff0c;但是解法比较固定。 一般有判断日期合法性&#xff0c;判断是否闰年&#xff0c;判断日期的特殊形式&#xff08;回文或abababab型等&#xff09; 目录 例题 题2 题三 总结 …

万字完整版【C语言】指针详解~

一、前言 初始指针&#xff08;0&#xff09;&#xff1a;着重于讲解指针的概念、基本用法、注意事项、以及最后如何规范使用指针深入指针&#xff08;1&#xff09;&#xff1a;讲解指针变量常见的类型&#xff0c;如何去理解这些类型、最后就是如何正确的使用深入指针&#…

【sgExcelGrid】自定义组件:简单模拟Excel表格拖拽、选中单元格、横行、纵列、拖拽圈选等操作

特性&#xff1a; 可以自定义拖拽过表格可以点击某个表格&#xff0c;拖拽右下角小正方形进行任意方向选取单元格支持选中某一行、列支持监听selectedGrids、selectedDatas事件获取选中项的DOM对象和数据数组支持props自定义显示label字段别名 sgExcelGrid源码 <template&g…

Swift 入门学习:集合(Collection)类型趣谈-下

概览 集合的概念在任何编程语言中都占有重要的位置&#xff0c;正所谓&#xff1a;“古来聚散地&#xff0c;宿昔长荆棘&#xff1b;游人聚散中&#xff0c;一片湖光里”。把那一片片、一瓣瓣、一粒粒“可耐”的小精灵全部收拢、吸纳的井然有序、条条有理&#xff0c;怎能不让…

React Three Fiber快速入门

https://threejs-journey.com/lessons/what-are-react-and-react-three-fiber#学习笔记 1.基础知识 resize 填充模版 构建第一个场景 we didn’t have to create a scenewe didn’t have to create the webglrenderthe scene is being rendered on each framethe default…

ubuntu23.10安装搜狗拼音

1.添加fcitx仓库 sudo add-apt-repository ppa:fcitx-team/nightly 更新: sudo apt-get update 安装fcitx sudo apt-get install fcitx fcitx安装成功 切换输入系统为fcitx

【C语言】tcp_transmit_skb

一、__tcp_transmit_skb讲解 这个函数 __tcp_transmit_skb() 是 Linux 内核中 TCP/IP 协议栈的一部分&#xff0c;负责处理传输控制协议&#xff08;TCP&#xff09;数据包的发送。具体来说&#xff0c;这个函数将 TCP 头部添加到一个没有任何头部信息的 socket buffer (sk_bu…

Diddler抓包工具——学习笔记

F12抓包 302【重定向】&#xff1a;当你发送了一个请求之后&#xff0c;那么这个请求重定向到了另外的资源 跳转和重定向的区别&#xff1a; 跳转是会把数据传到新的地址 重定向不会把新的数据传到新的地址 使用F12抓包时一定要打开Preserve Log开关&#xff0c;作用是保留…

万用表数据导出变化曲线图——pycharm实现视频数据导出变化曲线图

万用表数据导出变化曲线图——pycharm实现视频数据导出变化曲线图 一、效果展示二、环境配置三、代码构思四、代码展示五、代码、python环境包链接 一、效果展示 图1.1 效果展示 &#xff08;左图&#xff1a;万用表视频截图&#xff1b;右图&#xff1a;表中数据变化曲线图&am…

Springboot整合Mybaits启动过程

Springboot整合Mybaits启动过程 1.前言2.MybatisAutoConfiguration3.SqlSessionFactoryBean3.1 XMLConfigBuilder.parse()3.1.1 XMLMapperBuilder.parse()3.1.1.1 XMLStatementBuilder.parse() 4.SqlSession4.1 Executor 1.前言 直接加载mybatis配置文件&#xff0c;然后创建S…

Matlab|【EI复现】电动汽车集群并网的分布式鲁棒优化调度模型

目录 1 内容简介 2 关键知识点 2.1 三类电动汽车模型 3 程序结果 4 下载链接 1 内容简介 电动汽车的数据模型种类繁多&#xff0c;但是用到比较高阶数学方法的并不多&#xff0c;本次分享的程序是下图所示的文章。 采用分布鲁棒优化模型&#xff0c;用到鲁棒对等转换&…