【Datawhale组队学习:Sora原理与技术实战】训练一个 sora 模型的准备工作,video caption 和算力评估

本文主要是介绍【Datawhale组队学习:Sora原理与技术实战】训练一个 sora 模型的准备工作,video caption 和算力评估,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

训练 Sora 模型

在 Sora 的技术报告中,Sora 使用视频压缩网络将各种大小的视频压缩为潜在空间中的时空 patches sequence,然后使用 Diffusion Transformer 进行去噪,最后解码生成视频。

Open-Sora 在下图中总结了 Sora 可能使用的训练流程。

训练链路:

数据准备

开源数据集:

VideoInstruct-100K:

VideoInstruct100K 是使用人工辅助和半自动注释技术生成的高质量视频对话数据集。数据集中的问题答案与以下内容相关:

  • 视频摘要
  • 基于描述的问题答案(探索空间、时间、关系和推理概念)
  • 创意/生成性问题解答

链接:https://modelscope.cn/datasets/AI-ModelScope/VideoInstruct-100K

panda-70m:

Panda-70M 是一个包含 70M 高质量视频字幕对的大规模数据集。该存储库分为三个部分:

  • 数据集数据加载包括列出 Panda-70M 数据的 csv 文件以及下载数据集的代码。
  • 分割包括将长视频分割成多个语义一致的短片的代码。
  • 字幕包括在 Panda-70M 上训练的拟议视频字幕模型。

链接:https://modelscope.cn/datasets/AI-ModelScope/panda-70m

Youku-mPLUG:

Youku-mPLUG 预训练数据集挖掘自优酷站内海量的优质短视频内容

  • 包含千万级别约 36TB 的视频、文本数据。
  • 其中视频均为覆盖 10 ~ 120 秒的 UGC 短视频内容,文本为视频对应的描述标题,长度 5 ~ 30 不等。
  • 该数据集抽取时品类均衡,内容共包含 45 个大类。

链接:https://modelscope.cn/datasets/modelscope/Youku-AliceMind

MSR-VTT:

MSR-VTT(Microsoft Research Video to Text)是一个开放域视频字幕的大规模数据集。

  • 由 20 个类别的 10,000 个视频片段组成,每个视频片段由 Amazon Mechanical Turks 标注了 20 个英文句子。
  • 所有标题中约有 29,000 个独特单词。
  • 标准分割使用 6,513 个 split 用于训练,497 个 split 用于验证,2,990 个 split 用于测试。

链接:https://modelscope.cn/datasets/AI-ModelScope/msr-vtt

Shot2Story:

视频文本基准和用于多镜头视频理解的可扩展代码。包含 20k 视频的详细长摘要和 80k 视频镜头的镜头字幕。

链接:https://modelscope.cn/datasets/AI-ModelScope/Shot2Story

InternVid:

InternVid 是一个以视频为中心的大规模多模态数据集,可以学习强大且可转移的视频文本表示,以实现多模态理解和生成。 InternVid 数据集包含超过 700 万个视频,持续近 76 万小时,产生 2.34 亿个视频剪辑,并附有总共 4.1B 个单词的详细描述。

链接:https://modelscope.cn/datasets/AI-ModelScope/InternVid

webvid-10M:

大型文本视频数据集,包含从素材网站抓取的1000 万个视频文本对。

链接:https://modelscope.cn/datasets/AI-ModelScope/webvid-10M

数据预处理

目前主流 LLM 框架缺乏针对 video 数据 统一便捷的管理和处理能力,且多模态数据处理标准方案缺失

  • Huggingface-Datasets 官方认为 video 比 image 更棘手,暂未支持
  • 相关 video 库对该场景过于庞杂或简单
  • FFmpeg:150w 行+源码,大量底层细节
  • pytorchvideo:主要支持加载和少量单 video 模态的tensor transform(翻转、扰动、采样等)
  • SORA 官方仅模糊提及使用了 DALLE3 来生成 caption,细粒度的"caption --> spacetime patch"建模比较关键
  • 从 SORA 模型效果看,数据需要有变化的时长、分辨率和宽高比

Data-Juicer扩展了对多模态数据的支持,已实现上百个专用的视频、图像、音频、文本等多模态数据处理算子及工具,帮助用户分析、清洗及生成大规模高质量数据。

  • 支持视频数据的高性能 IO 和处理
  • 支持并行化数据加载:lazy load with pyAV and ffmpeg;多模态数据路径签名
  • 并行化算子处理:支持单机多核;GPU 调用;Ray 多机分布式
  • [WIP] 分布式调度优化;分布式存储优化
  • 基础算子(细粒度模态间匹配及生成)
  • 基础算子(视频时空维度)

  • 基础算子(细粒度模态间匹配及生成)

  • 进阶算子(视频内容)

  • DJ-SORA 数据菜谱及数据集

  • DJ-SORA 数据验证及模型训练

开源链接:https://github.com/alibaba/data-juicer/docs/DJ_SORA_ZH.md

模型选型和训练

视频 VQVAE

VideoGPT 使用 VQ-VAE,通过采用 3D 卷积和轴向自注意力来学习原始视频的下采样离散潜在表示。然后使用一个简单的类似 GPT 的架构,使用时空位置编码对离散潜在变量进行自回归建模。用于 BAIR Robot 数据集上的视频生成,并从 UCF-101 和 Tumbler GIF 生成高保真自然图像数据集(TGIF)。

https://github.com/wilson1yan/VideoGPT/

Diffusion Transformer

普遍认为 Diffusion Transformer 模型是 Sora 的技术基础,通过结合 diffusion model 和 transformer,从而达到可以 scale up model 来提升图像生成质量的效果。我们总结了三个目前开源的 Diffusion Transformer 研究如下,并总结了最佳实践,可以在魔搭社区的免费算力上运行和测试。

UViT:All are Worth Words: A ViT Backbone for Diffusion Models

论文链接:https://arxiv.org/abs/2209.12152

代码库链接:https://github.com/baofff/U-ViT

模型链接:https://modelscope.cn/models/thu-ml/imagenet256_uvit_huge

DiT:Scalable Diffusion Models with Transformers

论文链接:https://arxiv.org/abs/2212.09748

代码库链接:https://github.com/facebookresearch/DiT

模型链接:https://modelscope.cn/models/AI-ModelScope/DiT-XL-2-256x256/summary

SiT:Exploring Flow and Diffusion-based Generative Models with Scalable Interpolant Transformers (SiT)

论文链接:https://arxiv.org/pdf/2401.08740.pdf

代码库链接:https://github.com/willisma/SiT

模型链接:https://modelscope.cn/models/AI-ModelScope/SiT-XL-2-256

总结

U-ViT是一种简单且通用的基于 ViT 的扩散概率模型的主干网络,U-ViT 把所有输入,包括图片、时间、条件都当作 token 输入,并且引入了long skip connection。U-ViT 在无条件生成、类别条件生成以及文到图生成上均取得了可比或者优于 CNN 的结果。为未来扩散模型中骨干网络研究提供见解,并有利于大规模跨模态数据集的生成建模。

DiT同样的提出了使用 ViT 代替 U-Net 的思想,不同的是 DiT 中没有引入 long skip connection 也依然取得了杰出的效果。推测原因可能有:

  • DiT 出色的Adaptive layer norm以及零初始化的设计能够有效提升生成质量;
  • DiT 在建模特征空间表现良好,但在建模像素空间表现欠缺,可能在用扩散概率模型建模像素空间分布时 long skip connection 是至关重要的;
  • 即使在建模特征空间上,DiT 没有 long skip connection 也能取得很好的效果,但 long skip connection 在加速收敛方面也起着关键的作用。

而近期推出的可扩展插值变压器 (SiT),是建立在 DiT 基础上的生成模型系列。 **插值框架,**相比标准的 diffusion 模型允许以更灵活的方式连接两个 distributions,使得对影响生成的各种设计选择的模块化研究成为可能。SiT 在 ImageNet 256x256 基准上模型大小和效果超过了 DiT 和 UViT,SiT 实现了 2.06 的 FID-50K 分数。

Video-caption

OpenAI 训练了一个具备高度描述性的视频标题生成(Video Captioning)模型,使用这个模型为所有的视频训练数据生成了高质量文本标题,再将视频和高质量标题作为视频文本对进行训练。通过这样的高质量的训练数据,保障了文本(prompt)和视频数据之间高度的 align。通过近期的讨论和资料,我们推测 Video Captioning 模型是由多模态大语言模型 VLM(如**GPT4V 模型)**微调出来的。开发者也可以通过视频抽帧+开源 VLM 生成描述+LLM 总结描述的方式,生成较好的视频描述。下面是一些开源的多模态模型:

零一万物 VL 模型(Yi-VL-34B)

代码库链接:https://github.com/01-ai/Yi/tree/main/VL

模型链接:https://modelscope.cn/models/01ai/Yi-VL-34B/

通义千问 VL 模型(Qwen-VL-Chat)

论文链接:https://arxiv.org/abs/2308.12966

代码库链接:https://github.com/QwenLM/Qwen-VL

模型链接:https://modelscope.cn/models/qwen/Qwen-VL-Chat

浦语·灵笔 2-视觉问答-7B(internlm-xcomposer2-vl-7b)

代码库链接:https://github.com/InternLM/InternLM-XComposer

模型链接:https://modelscope.cn/models/Shanghai_AI_Laboratory/internlm-xcomposer2-vl-7b/summary

CogVLM 模型:

技术报告:https://zhipu-ai.feishu.cn/wiki/LXQIwqo1OiIVTykMh9Lc3w1Fn7g

代码库链接:https://github.com/THUDM/CogVLM

模型链接:https://modelscope.cn/models/ZhipuAI/CogVLM/summary

MiniCPM-V 模型:

论文链接:https://arxiv.org/abs/2308.12038

代码库链接:https://github.com/OpenBMB/OmniLMM/

模型链接:https://modelscope.cn/models/OpenBMB/MiniCPM-V/summary

Video-LLaVA 模型:

论文链接:https://arxiv.org/abs/2311.10122

代码库链接:https://github.com/PKU-YuanGroup/Video-LLaVA

模型链接:https://modelscope.cn/models/PKU-YuanLab/Video-LLaVA-7B/summary

总结对比

从模型参数量来看,零一万物,CogVLM 的模型是百亿参数,但是仅支持英文,通义,灵笔等模型可以较好的支持中文,Video-LLaVA 可以支持直接对视频的理解,可以根据需求来选择具体的多模态大语言模型。

参考资料

sora-tutorial/docs/chapter3/chapter3_1/chapter3_1.md at main · datawhalechina/sora-tutorial (github.com)

学习视频:【AI+X组队学习】Sora原理与技术实战:训练一个sora模型的准备工作,video caption和算力评估_哔哩哔哩_bilibili

Open-Sora:https://hpc-ai.com/blog/open-so

这篇关于【Datawhale组队学习:Sora原理与技术实战】训练一个 sora 模型的准备工作,video caption 和算力评估的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis