开源的 Sora 复现方案,成本降低近一半!
近日,开发 ChatGPT 的 OpenAI 公司又放出王炸 Sora,一个可以根据文本生成视频的 AI 模型。
上图就是 OpenAI 公布的 Sora 生成的视频片段,可以毫不夸张地说 Sora 直接将视频生成技术推向了新的高度,这也标志着人工智能视频生成技术迈入了新的时代。此项技术,可以广泛应用于电影、动画、游戏、广告等领域,为内容创作者提供更加便捷、高效的创作工具。
虽然 Sora 没有开源,但我在 GitHub 上发现了 Colossal-AI 刚开源的完整 Sora 复现架构方案 Open-Sora,它提供了完整的 Sora 复现架构解决方案,包括从数据处理到训练、部署的全流程。Open-Sora 不仅可以降低 46% 复现成本,而且还将模型训练输入序列长度扩充至 819K patches(模型处理视频的最小单元)。
GitHub 地址:https://github.com/hpcaitech/Open-Sora
既然 Sora 没有开源,那这个复现方案从何而来呢?接下来,就让我们一起来看看已公布的 Sora 技术原理以及 Open-Sora 到底有没有真东西!
Sora 算法复现方案
与 Sora 视频一起发布的,还有一份 OpenAI 关于 Sora 的技术报告,在这份 Sora 的技术报告中,介绍了 Sora 是使用了一个视频压缩网络,将不同尺寸的视频压缩成一个隐空间(latent space)的时空块序列(temporal patch),然后使用了 Diffusion Transformer 进行去噪,最后进行解码生成视频。
根据上面描述的技术原理,Open-Sora 将 Sora 可能使用的训练流程归纳为下图。
综上所述,Open-Sora 作为 Sora 技术的复现框架,用 Python 实现了将原视频转化成通用型大模型能处理的最小单元 patches 的模块(patches 类似文本的 token),然后在去噪步骤提供了 3 种常见的多模态模型结构。
目前 Open-Sora 提供的功能,如下:
- 完整的 Sora 复现架构:包含从数据处理到训练推理全流程。
- 动态分辨率:训练时可直接训练任意分辨率的视频,无需进行缩放。
- 多种模型结构:由于 Sora 实际模型结构未知,我们实现了 adaLN-zero、cross attention、in-context conditioning(token concat)等 3 种常见的多模态模型结构。
- 多种视频压缩方法:用户可自行选择使用原始视频、VQVAE(视频原生的模型)、SD-VAE(图像原生的模型)进行训练。
- 多种并行训练优化:支持结合 Colossal-AI 的 AI 大模型系统优化能力,及 Ulysses 和 FastSeq 的混合序列并行。
众所周知,模型训练需要的资源是恐怖的,哪怕是 1% 的优化都可以节约极大的训练成本,而 Open-Sora 直接节省了近一半 46% 的复现成本,而且在模型训练输入方面更是将序列扩充至近百万。到底 Open-Sora 是如何做的性能优化,从而实现类 Sora 视频生成模型的低成本开发流程呢?跟着小编我们一探究竟。
性能优化
不同于 LLM 的大模型、大激活,Sora 类训练任务的特点是模型本体不大(如在 10B 以下),但是由于视频复杂性带来的序列长度特别长。
在此情况下,PyTorch 数据并行已无法运行,而传统的模型并行、零冗余数据并行带来的收益有限。因此,在支持 AMP(FP16/BF16)、Flash Attention、Gradient checkpointing、ZeRO-DP 等场景优化策略的基础上,Open-Sora 进一步引入两种不同的序列并行方法实现,可以 ZeRO 一起使用实现混合并行:
- 通用性较强的 Ulysses,对小规模或长序列表现可能更好。
- FastSeq 能将 qkv projection 的计算和 all-gather 通信重叠,只需多占用一点内存就可更进一步提升训练效率。
这两种序列并行方案,都可以轻松与 ZeRO2 共同使用来实现混合并行。
以在单台 H800 SXM 8*80GB GPU 上使用 DiT-XL/2
模型的性能测试为例。
在 600K 的序列长度时,Open-Sora 的方案比基线方案有 40% 以上的性能提升和成本降低。
在保证更快训练速度的情况下,Open-Sora 还能训练 30% 更长的序列,达到 819K+。
最后
在这个视频流行的时代,AI 生成视频技术成为了当下备受瞩目的热门技术之一,Sora 的出现更是引爆了这个领域。
今天介绍的 Open-Sora 才刚刚开源,并未提供训练好的类 Sora 模型,还不能直接拿来生成视频。但它提供了一套经过优化后的类 Sora 视频生成模型低成本开发框架,为视频生成提供方便易用、成本低廉、质量可靠的开源解决方案。更多的技术细节,篇幅问题这里就不展开了,如果你对 Open-Sora 感兴趣,可深入了解下它的源码(Python)或者参与贡献代码,复现 Sora 赶超 Sora!
GitHub 地址:https://github.com/hpcaitech/Open-Sora
开源的 Sora 复现方案,成本降低近一半!的更多相关文章
- 如何将离线计算业务的成本降低65%——弹性容器服务EKS「竞价实例」上线
在容器化的应用场景中,大数据计算是其中很大并且业务应用在逐渐增加的一个热门领域,包括越来越多的人工智能企业,都在使用容器技术来支持业务中的大量计算任务.降低成本.提升资源利用率也是当前这部分用户非常期 ...
- 成本降低40%、资源利用率提高20%的 AI 应用产品云原生容器化之路
作者 郭云龙,腾讯云高级工程师,目前就职于 CSIG 云产品三部-AI 应用产品中心,现负责中心后台业务框架开发. 导语 为了满足 AI 能力在公有云 SaaS 场景下,服务和模型需要快速迭代交付的需 ...
- OpenVAS开源风险评估系统部署方案
OpenVAS,即开放式漏洞评估系统,是一个用于评估目标漏洞的杰出框架.功能十分强大,最重要的是,它是“开源”的——就是免费的意思啦- 它与著名的Nessus“本是同根生”,在Nessus商业化之后仍 ...
- 大数据最后一公里——2021年五大开源数据可视化BI方案对比
个人非常喜欢这种说法,最后一公里不是说目标全部达成,而是把整个路程从头到尾走了一遍. 大数据在经过前几年的野蛮生长以后,开始与数据中台的概念一同向着更实际的方向落地.有人问,数据可视化是不是等同于数据 ...
- 翟佳:高可用、强一致、低延迟——BookKeeper的存储实现
分享嘉宾:翟佳 StreamNative 联合创始人 编辑整理:张晓伟 美团点评 出品平台:DataFunTalk 导读:多数读者们了解BookKeeper是通过Pulsar,实际上BookKeepe ...
- CPU和GPU双低效,摩尔定律之后一万倍 ——写于TPU版AlphaGo重出江湖之际
本文来自计算机体系结构专家王逵.他认为,“摩尔定律结束之后,性能提升一万倍”不会是科幻,而是发生在我们眼前的事实. 2008年,<三体2:黑暗森林>里写到: 真的很难,你冬眠后不久 ...
- 一篇文章告诉你为何GitHub估值能达20亿美元
软件开发平台GitHub今日宣布,已获得硅谷多家知名风投2.5亿美元融资,这也让其融资总额达到了3.5亿美元,此轮融资对GitHub的估值约为20亿美元. GitHub有何特别之处? GitHub创立 ...
- 无服务器架构(Faas/Serverless)
摘要无服务器架构(Faas/Serverless),是软件架构领域的热门话题. AWS,Google Cloud和Azure - 在无服务器上投入了大量资金,已经在看到了大量专门针对Faas/Serv ...
- odoo:开源 ERP/CRM 入门与实践 -- 上海嘉冰信息技术公司提供咨询服务
odoo:开源 ERP/CRM 入门与实践 看了这张图,或许你对odoo有了一些兴趣. 这次Chat就是和大家一起交流开源ERP/CRM系统:odoo 对以下读者有帮助:研发.产品.项目.市场.服务. ...
- 开源搜索引擎排名第一,Elasticsearch是如何做到的?
一.引言 随着移动互联网.物联网.云计算等信息技术蓬勃发展,数据量呈爆炸式增长.如今我们可以轻易得从海量数据里找到想要的信息,离不开搜索引擎技术的帮助. 作为开源搜索引擎领域排名第一的 Elast ...
随机推荐
- logstash 与ElasticSearch:从CSV文件到搜索宝库的导入指南
logstash 与ElasticSearch:从CSV文件到搜索宝库的导入指南 使用 logstash 导入数据到 ES 时,由三个步骤组成:input.filter.output.整个导入过程可视 ...
- C/C++ 动态解密释放ShellCode
今天在复习<加密与解密>时,在软件保护这一章中有一个代码与数据结合的案例,其原理是将代码段中的代码进行xor异或加密处理以后回写到原始位置,当程序运行后将此处的内容动态的进行解密,解密后回 ...
- C/C++ 动态与静态内存补丁
现动态内存补丁(读取): 这种补丁是把程序加载到内存中以后对其进行修改,常用于加壳程序的破解. #include <stdio.h> #include <Windows.h> ...
- 给Java小白,整理一套能上手的简单编程算法题!!!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 数学离程序员有多近? ifelse也好.for循环也罢,代码可以说就是对数学逻辑的具 ...
- 设置两个Chrome浏览器 一个正常使用 一个无图片版
添加两个Chrome浏览器 双击打开Chrome浏览器,点击右上角头像,点击添加 选择"在不登录帐号的情况下继续",创建一个名字,选个配色,勾选下面的创建桌面快捷方式 此时会打开一 ...
- 每日一道Java面试题:说一说Java中的异常
写在开头 任何一个程序都无法保证100%的正常运行,程序发生故障的场景,我们称之为:异常,在Java中对于异常的处理有一套完善的体系,今天我们就来一起学习一下. 老样子,用一段简单的代码开始今天的学习 ...
- 5 款轻松上手的开源项目「GitHub 热点速览」
大家都忙一年了,所以今天来点轻松的吧!就是那种拿来直接用.免费看的开源项目. 开源真是一个充满惊喜的宝库,很多开源软件比收费软件还好用,比如这款开箱即用的电视直播软件:my-tv,它免费.无广告.启动 ...
- electron 开发 ,如何使用 第三方 库 进行typescript 开发,举例:jquery 其它的 应该也是一致。
首先要弄明白一点,electron 开发 与 nodejs开发 基本一致. 要引入 jquery 实际上就是 nodejs 引入 jquery 第一步是 去 nmp中央仓库,查看,里面有详细的说明使用 ...
- TDBLookupComboboxEh 一些设置项,自己总结
注意:如果top_seller_nick有重复的值的时候,keyfield 也为top_seller_nick的话,就会造成,选中最下面的那个阿里巴巴的,默认也是第一个天猫的各项值. 因为选后是根据k ...
- [Ngbatis源码学习][Spring] Spring 的资源管理 ResourceLoader
在学习Ngbatis的源码时,看到了有关xml文件的加载,涉及到了资源的加载,对相关知识进行总结与整理. 1. 相关类 Resource AbstractResource ResourceLoader ...