揭去奥秘面纱 张俊林 Sora关键技术逆向工程图解
Sora生成的视频成果好吗?确实好。Sora算得上AGI开展历程上的里程碑吗?我团体觉得算。咱们知道它成果好就行了,有必要知道Sora究竟是怎样做的吗?我觉得最好是每团体能有知情的选用权,任何想知道的人都能够知道,这种形态比拟好。那咱们知道Sora究竟是怎样做出来的吗?不知道。
马斯克讥刺OpenAI是CloseAI,为示道不同,转头就把Grok开源了。且不论Grok成果能否足够好,马斯克此举能否有扮演成分,能开源出来这行为就值得美化。OpenAI树大招风,目前被建立成技术敞开的头等代表,想想花了上亿美金做出来的大模型,凭啥要开源?不开源确实也反常。所谓“开源诚然可赞,闭源亦可了解”。
但是,我团体一年多来的觉得,OpenAI技术强归强,但是有逐渐把技术奥秘化的倾向,假设不信您可以去读一下Altman的各种访谈。在这个AI技术越来越敞开的智能时代,技术奥秘化导向的自然结果就是自觉崇敬,智能时代所谓的“消息平权”或只能成幻想。我不以为这是一个好的趋向,我发自心坎地尊崇对技术开明作出任何奉献的人或集团,且以为对技术奥秘化的去魅,这应该是AI技术从业者值得谋求的指标。
本文试图尽我所能地以深刻易懂的方式来剖析Sora的或许做法,包括它的全体结构以及关键组件。我宿愿即使您不太懂技术,也能大抵看明白Sora的或许做法,所以画了几十张图来让看似复杂的机制更好了解,假设您看完对某部分仍不了解,那是我的疑问。
一、Key Messages
这部分把本文关键消息列在这里,特供应没空或没耐烦看长文的同窗,当然我觉得您光看这些预计也未必能看明白。
Key Message Sora的全体结构如下(本文后续有逐渐推导环节)
Key Message 2: Sora的Visual Encoder-Decoder很或许驳回了TECO(Temporally Consistent Transformer )模型的思绪,而不是宽泛风闻的MAGVIT-v2(本文后续给出了判别理由,及适配Sora而变革的TECO详细做法)。Encoder-Decoder部分的外围或许在于:为了能生生长达60秒的高品质视频,如何保养“长时分歧性”最为关键。要在消息紧缩与输入部分及早融入视频的“长时分歧性”消息,不能只靠Diffusion Model,两者要打配合。
Key Message 3: Sora之所以把Patch部分称为“Spacetime Latent Patch”,大略是有肯定理由的/Patch部分允许“可变分辨率及可变长宽比”视频,应该是驳回了NaVIT的思绪,而不是Padding打算(本文后续部分给出了打算选用要素)。
Key Message 4: 目前的AI开展形态下,您或许要求了解下Diffusion Model的基本原理(后文会给出较易了解的Diffusion模型基本原理引见)
Key Message 5: Video DiTs很或许长得像上方这个样子(本文后续内容会给出推导环节)
Key Message 6: Sora坚持生成视频的“长时分歧性”兴许会采取暴力手腕(后文给出了或许驳回的其它非暴力方法FDM)
Key Message 7: Sora应该蕴含双向训练环节(后文给出了双向训练的或许成功机制)
二、为何能对Sora启动逆向工程
能否对Sora启动逆向工程,要依赖一些基本假定,若基本假定成立,则逆向工程可行,如不成立,则无宿愿。上方列出了Sora可被逆向工程的两个基本假定。
首先,咱们假定Sora并未有严重算法翻新,是沿着目前干流技术的渐进式改良。这条无论是从OpenAI的算法设计哲学角度(我来替OpenAI演绎下外围理想:繁复通用的模型结构才具有Scale后劲,假设或许的话,尽量都用规范的Transformer来做,由于它的Scale后劲目前被验证是最好的,其它想取代Transformer的改良模型都请靠边站。模型结构改良不是重点,重点在于怼算力怼数据,经过Scale Transformer的模型规模来失掉大收益。),还是历史阅历角度(比如ChatGPT,关键技术皆参考业界前沿技术,RLHF强化学习是OpenAI首创的,但并非必需品,比如目前有用DPO取代RLHF的趋向)来看,这个条件大体应该是成立的。
第二个条件,其实Sora技术报告透漏了不少关于模型选型的消息,但是您得细心看才行。
关于Sora技术报告透漏的消息,这里举个例子。它明白提到了经常使用图片和视频联结训练模型,而不像大少数视频生成模型那样,在训练的时刻只用视频数据。这是关键消息,对保障Sora成果也必需是个关键要素,要素后文谈判。既然Sora要求图片和视频联结训练,这等于对Sora外部结构怎样设计参与了解放条件,而这无利于咱们启动逆向工程。
再举个例子,Sora应采取了逐帧生成的技术路途,而不像很多视频生成模型那样,采取“关键帧生成+插帧”的形式。上图中Sora技术报告标红圈的部分是允许这一判别的部分证据,假设您参考的文献足够多,会发现一旦提“generating entire video all at once”,普通和“at once”对应的方法指的就是“关键帧+插帧”的形式。上图下方给出了Google 的视频生成模型Lumiere的论文摘要(可参考:Lumiere: A Space-Time Diffusion Model for Video Generation),也提到了“at once”等字眼,标明自己用的不是“关键帧+插帧”的形式,这是把“at once”作为论文翻新点高度来提的。
“关键帧生成+插帧”是视频生成模型中普遍驳回的形式,但它的疑问是会造成生成的视频全体举措幅度很小、而且不好保养全局的期间分歧性。咱们看到市面上很多视频生成产品都有这个疑问,就可以倒推它们大略驳回了“关键帧+插帧”的形式。可以看出,这点也是保障Sora视频品质好的关键技术选型决策,但若您看文献不够细心,就不太容易发现这个点。
演绎一下,之所以咱们能对Sora启动逆向工程,是由于前述两个基本假定大抵成立,而每当Sora技术报告透漏出某个技术选型,就等于咱们在算法宏大的设计空间里就去掉了很多种或许,这相当于经过对干流技术启动始终剪枝,就可逐渐接近Sora的技术假相。
接上去让咱们依据目前的干流技术,结合Sora的技术报告,假定Sora模型曾经训练好了,来一步步推导出Sora或许驳回的全体技术架构。
三、逐渐推导Sora的全体结构
Sora给人的第一印象是高品质的<文本-视频>生成模型:用户输入Prompt说清楚你想要生成视频的内容是什么,Sora能生成真实度很高的10秒到60秒的视频。至于外部它是怎样做到这一点的,目前咱们还无所不知。
首先,咱们可如上图所示,技术性地稍微开展一下,细化Sora的全体轮廓。
用户给出相对较短且形容粗略的Prompt后,Sora先用GPT对用户Prompt启动扩写,扩大出蕴含细节形容的长Prompt,这个操作是Sora技术报告里明白提到的。这步Prompt扩写很关键,Prompt对细节形容得越明白,则视频生成品质越好,而靠用户写长Prompt不理想,让GPT来参与细节形容,这表现了“在尽或许多的消费环节让大模型辅佐或取代人”的思绪。
那么,Sora外部肯定有文本编码器(Text Encoder),把长Prompt对应的文字形容转化成每个Token对应的Embedding,这象征着把文字形容从文本空间转换为隐空间(Latent Space)的参数,而这个Text Encoder大略率是CLIP模型对应的“文本编码器”(CLIP学习到了两个编码器:“文本编码器”及“图片编码器”,两者经过CLIP启动了文本空间和图片空间的语义对齐),DALLE 系列里的文本编码器经常使用的就是它。
上文剖析过,Sora应该走的是视频逐帧生成的路子,假定宿愿生成10秒长度、分辨率为1080*1080的视频,依照电影级规范“24帧/秒”流利度来算,可知Sora要求生成24*10=240帧1080*1080分辨率的图片。所以,若已知输入视频的长度和分辨率,咱们可以在生成视频前,事前发生好240帧1080*1080的噪音图,而后Sora在用户Prompt语义的指点下,依照期间顺序,逐帧生成合乎用户Prompt形容的240张视频帧对应图片,这样就构成了视频生成结果。
从Sora技术报告已知,它驳回的生成模型是Diffusion模型,关于Diffusion模型的基本原理咱们放在后文解说,但如今面临的疑问是:Diffusion Model也有不同的做法,究竟Sora用的是像素空间(Pixel Space)的Diffusion Model,还是隐空间(Latent Space)的Diffusion Model呢?如今咱们要求关于此做出技术决策。
在做决策前,先了解下两个空间的Diffusion Model对应的特点。上图展现的是在像素空间内做Diffusion Model的思绪,很直观,就是说在像素范围内经过Diffusion Model启动加噪音和去噪音的环节。由于图片蕴含像素太多,比如1080*1080的一张图片,就蕴含超越116万个像素点,所以像素空间的Diffusion Model就要求很大的计算资源,而且无论训练还是推理,速度会很慢,但是像素空间保管的细节消息丰盛,所以像素空间的Diffusion Model成果是比拟好的。这是它的特点。
再说隐空间Diffusion Model的特点。最早的Diffusion Model都是在像素空间的,但速度真实太慢,所来有钻研人员提出可以在对像素紧缩后的隐空间内做Diffusion Model。详细而言,就是引入一个图像“编码器”(Encoder)和“解码器”(Decoder),编码器担任把图片表征从高维度的像素空间紧缩到低维度的参数隐空间,而在经过Diffusion Model去噪后,生成隐空间内的图片内容,再靠解码器给隐空间图片内容参与细节消息,转换回图片像素空间。可以看出,Latent Diffusion Model(LDM)的特点正好和Pixel Diffusion Model(PDM)相反,节俭资源速度快,但是成果比PDM差点。
如今来做技术选型,从Sora技术报告显著可看出,它驳回的是Latent Diffusion Model,这个也反常,目前无论做图像还是视频生成,很少有用Pixel Diffusion Model,大部分都用LDM。但是,LDM也存在一个紧缩率的疑问,可以紧缩得比拟狠,这样速度会更快,也可以紧缩的不那么狠。我猜Sora在Encoder这一步不会紧缩得太狠,这样就能保管更多原始图片细节消息,成果或许会更好些。Sora大略率会重点保障生成视频的品质,为此可以多消耗些计算资源,“以资源换品质”。Sora生成视频速度很慢,很或许跟Encoder紧缩率不高有肯定相关。
于是,目前咱们失掉上图所示的Sora全体结构图,关键变化是参与了针对视频的Encoder和Decoder,以试图放慢模型训练和推理速度。另外,普通把文本编码结果作为LDM模型的输入条件,用来指点生成图片或视频的内容能遵照用户Prompt形容。
如今,咱们面临新的技术决策点:对视频帧经过Encoder紧缩编码后,能否会有Patchify(中文翻译是“切块”?不确定)操作?Patchify实质上可看成对视频数据的二次紧缩,从Sora技术报告可看出,它应有此步骤,这也很反常,目前的视频生成模型普通都蕴含这个步骤。而且Sora将他们自己的做法称为“Spacetime Latent Patch”,至于为啥这么叫,我在后文关键模块剖析会给出一个解释。另外,Sora还主打一个“允许不同分辨率、不同长宽比”的图片与视频生成,为了允许这个配置,那在Patchify这步就要求做些不凡的处置。
于是,参与Spacetime Latent Patch后,目前的Sora全体结构就如上图所示。Patchify普通放在视频编码器之后,而且输入时把多维的结果打成一维线性的,作为后续Diffusion Model的输入。
咱们接着往下推导,来看下成功Diffusion Model时详细驳回的神经网络结构,此处需留意,Diffusion Model是种倾向数学化的算法思维,详细成功时可以驳回不同的神经网络结构。其实目前Diffusion Model视频生成的干流网络结构普通会用U-Net,Transformer做Diffusion 视频生成目前并非干流。当然,Sora出现之后,选用Transformer来做Diffusion Model必需很快会成为干流结构。从Sora技术报告可知,它驳回的主干网络是Transformer,应该关键看中了它良好的可扩大性,繁难把模型规模推上去。当然用Transformer+Diffusion做视频生成,Sora并不是第一个这么做的,这再次印证了OpenAI经常干的那种操作,就是应用“吸星大法”从开源届吸取各种前沿思绪,但是自己反而越来越敞开的CloseAI作风。
于是,咱们把基于Transformer网络结构的消息融出来,目前Sora全体结构如上图所示。
让咱们继续。Sora在宣传时特意强调一个特性:可以允许不同分辨率(Variable Resolution)、不同长宽比(Various Aspect Ratio)、不同时长(Various Duration)的视频训练与生成。目前干流技术里这么做的不能说没有,但是确实极少,三者同时做到的在地下文献里我没有看到过,要做到这一点,对详细技术选型时也有不少要求,所以作为宣传点无可非议。后文为了表白繁复些,一致以“不同分辨率”来同时代表“不同分辨率和不同长宽比”,这点在阅读后文的时刻还请留意。关于生成视频时长疑问咱们后文会独自剖析。
这里先解释下什么是“不同分辨率和长宽比”。如上图所示,其实好了解,分辨率的话普通跟图片大小有相关,图片小分辨率就低一些,图片大明晰度或分辨率就高一些,而长宽比就比如咱们经常看到的短视频的“竖屏形式”和长视频的“横屏形式”等。Sora都允许。
那为啥要允许“不同的分辨率和长宽比”呢?上图给了个例子,目前做视频或许图片生成的干流技术,为了方面外部处置(训练时Batch内数据的规定性),会把输入的图片或视频大小一致同来,比如关于不同大小的图片,经过Crop操作,就是在图片中心截取一个正方形的图片片段,经过这种方式把输入大小一致。而这么做的疑问上图展现出来了,由于你截图,所以很容易把一个完整的实体切割开,经常使用这种经过Crop数据训练的视频生成模型,生成的人体就很容易看着不完整,而经常使用“不同的分辨率和长宽比”,会坚持原始数据一切消息,就没有这个疑问,实体表白的完整性就会好很多。从这也可看出,Sora为了保视频品质,真的是在视频生成的全环节都拼了全力。
咱们把Sora这一关键特性表到达全体结构图上,就如上图所示。假设要允许这一特点,那么在Spacetime Latent Patch以及LDM这两个阶段,要求作出一些不凡的设计决策,这也是咱们用来在前面推断Sora关键技术的关键参考和解放消息。
下一个决策点之前咱们提到过,Sora经常使用了图片和视频联结训练,这关于保障视频生成品质很关键。
为啥说这点关键呢?上图给了个例子(可参考Phenaki: Variable Length Video Generation From Open Domain Textual Description),用户Prompt要求输入的视频是“Water Color Style”格调的,假设只用视频训练(右侧视频截图),就做不到这一点,而假设混合了80%的视频数据和20%的图片数据训练的视频生成模型(左侧视频截图),做得就不错。这是由于带标注的<文本-图片>数据量多,所以各种格调的图片数据都蕴含,而带标视频数据数量少,所以很多情形要求下的数据都没有,就造成了这种生成结果的差异。从此例子可以看出视频和图片联结训练关于视频生成品质的影响。
假设Sora要允许图片和视频联结训练,则要求在视频编码-解码器,以及Spacetime Latent Patch阶段做技术选型要作出共同的设计,这进一步构成了关键模块的设计解放。加上越多解放,其实你能做的技术选用就越少,就越容易推断出详细的做法。目前的Sora全体结构如上图所示。
Sora的另外一大特性是能生生长达60秒的较长时长的视频,这点妇孺皆知。
假设把时长要求加出来,Sora应该会在“视觉编码器-解码器”阶段,以及LDM阶段作出一些共同的设计,才有或许保养这么长期间的视觉连接性和内容分歧性。把一切这些解放都参与后,咱们就经过一步步推导,最终得出了Sora完整的全体结构,如上图所示。
假设对文生视频畛域比拟相熟,我觉得从技术报告推导出Sora的全体结构,这事难度不算大,真正难的中央在于Sora关键模块详细驳回的什么技术。可列出的关键技术关键有四块:
在允许“图片&&视频联结训练”、“视频长时分歧性”这两个解放条件下,详细模型应该如何设计?
在允许“图片&&视频联结训练”、“可变分辨率”这两个解放条件下,详细模型应该如何设计?
在允许“可变分辨率”解放条件下,详细模型应该如何设计?(这块的长时分歧性战略放在第四部分了)
接上去,咱们对Sora四个关键技术启动更深化的剖析。
四、视频编码器-解码器:从VAE到TECO(Temporally Consistent Transformer )
Sora的视频Encoder-Decoder驳回VAE模型概率极大,要素很繁难,由于绝大少数图片或视频模型基本都用VAE,定位到VAE不难,难在继续探求Sora或许经常使用的究竟是哪个详细模型。
VAE模型出来后有不少改良模型,总体而言可分为两大类:“延续Latent” 模型和“团圆Latent”模型。VAE自身是延续Latent的,而团圆Latent模型变体泛滥,最罕用的包括VQ-VAE和VQ-GAN,这两位在多模态模型和图片、视频各种模型中经常现身。“团圆Latent”之所以比拟火,这与GPT模型驳回自回归生成团圆Token形式有肯定关联,经常使用团圆Latent模型,比拟容易套到相似LLM的Next Token的生成框架里,有望成功言语模型和图片、视频生成模型的一体化,典型的例子就是谷歌的VideoPoet。
思索到Sora主干模型驳回Diffusion Model而非Next Token这种类LLM形式,而Diffusion Model加噪去噪的环节,本就比拟适宜在延续Latent空间启动,可以推断Sora驳回“延续Latent”的形式概率较大,倒不是说团圆Latent模型不能做Diffusion Model,也是可以的,但假设这么做,一方面把原本是延续Latent的VAE多做一道转成团圆Latent,觉得没有太大必要性,有点多此一举的滋味。另一方面,假设对接Diffusion Model,团圆Latent成果必需是不如延续Latent的,要素前面谈判。
之前不少探求Sora成功原理的技术文献把Sora或许经常使用的Encoder-Decoder定位到MAGVIT-v2模型(可参考:Language Model Beats Diffusion -- Tokenizer is Key to Visual Generation),它是VQ-VAE的一个变种。不清楚得出这个判别的要素是什么,但我团体觉得驳回MAGVIT-v2的概率应该不大,反而是VQ-GAN的变体模型TECO(Temporally Consistent Transformer)或许性更高些,理由前面谈判到。当然假设适配Sora的一些要求,TECO也要求做出些改变,详细怎样改后文也谈判。
为了便于了解后续内容,先引见下图片VAE模型的基本思绪。如上图所示,VAE是种相似GPT的自监视学习,不要求标注数据,只需有足够图片数据就能训练模型。VAE的基本思维是经过重建图片,来取得一个Encoder和对应的Decoder。
输入随机某张图片x后,Encoder对像素启动紧缩,构成一个低维的图片特色紧缩示意z,而Decoder与Encoder相反,从紧缩后的图片Latent表征z,试图恢复原始图像x,发生重建的图像x,重建环节中x和x的差异就可以作为训练模型的损失函数,以此疏导VAE模型的encoder发生高品质的紧缩示意z,decoder则从紧缩示意中尽或许准确地恢复x。普通会驳回CNN卷积网络来做Encoder和Decoder,所以VAE自身发生的图片Latent表征,原本就是延续的。
说完图片VAE的思绪,再来谈视频VAE的基本思维。假设把一张图片看作是环球某个时辰三维空间的二维紧缩示意,那视频就在此之上,参与期间维度,可看做沿着期间轴由若干延续的二维Space图片组成的某段物理环球场景的三维Space-time表征。
于是,视频可以被看成是由多张图片沿着期间轴组成的有序图片序列,视频VAE的义务和图片VAE是相似的,就是尽或许准确地重建组成视频的每一帧,在重建视频的环节中学习视频紧缩Encoder和视频解紧缩Decoder。
普通Encoder可以经常使用Causal CNN 3D卷积来做,和图片的2D卷积意思相似,最大的不同在于,CNN的卷积核从2D更新成3D卷积。就是说在紧缩第i帧图片的时刻,不只仅像图片2D卷积一样只参考第i帧图片内容,也可以参考第(i−1)、(i−2)….(i−k)等之前的k帧图片,所以是一种casual 3D卷积(Causal的意思是只能参考前面的,不能参考前面的,由于关于视频生成来说,前面的帧还没生成,所以是无法能参考到的,但是第i帧之前的k帧曾经生成了,所以在生成第i帧的时刻是可以参考的。普通这种就叫causal(因果),相似GPT生成Next Token的时刻只能参考之前曾经生成的Token,这是为啥GPT的attention被称作Causal Attention。)
3D卷积由于在重建第i帧的时刻参考了之前的k帧,这其实融入期间消息了,假设k可以拉到比拟长的期间,那么关于保养生成图像的期间分歧性是有协助的。但是,仅靠CNN 卷积普通融入的历史比拟短,很难融入较长期间的消息,所以要求有新思绪,至于新思绪是什么,这个晚些谈判。
繁难引见下“延续Latent”和“团圆Latent”的概念。如上图所示,假设经常使用CNN卷积操作对图片启动扫描,由于卷积结果数值是在延续实数范围内,所以失掉的卷积结果自然就是延续的Latent。所谓“团圆Latent”,就是把“延续Latent”启动ID化,从实数向量经过肯定方法转换成一个专属ID编号,这跟LLM里的字符串Tokenizer团圆化环节是比拟像的。
详细而言,普通对“延续Latent”团圆化环节的基本思维可参考上图中的右侧子图:模型保养一个“明码本”(Codebook),明码本由很多Codeword构成,每项Codeword保养两个消息,一个是这个Codeword对应的Latent特色Embedding,这是延续的,另外就是这个Codeword对应的专属ID编号。Codebook相似词典消息。在团圆化环节中,关于某个待团圆化的”延续Latent”,会和明码本里每个Codeword对应的Embedding比对下,找到最接近的,而后把Codeword对应的ID赋予待团圆化Latent。你看,其实很繁难。
这里解释下前面提到的一点:为何说关于Diffusion Model来说,“团圆Latent”的成果应该比不上“延续Latent”。其实从上方团圆化环节可以看出来,实质上”延续Latent”团圆化环节,可以看成对图片片段聚类的环节,赋予的那个ID编号其实等价于聚类的类编号。目前的图像处置而言,Codeword理论在8000左右,假设再大成果反而不好,这里就看出一个疑问了,这种聚类操作造成很多“大体相似,但细节不同”的图片被赋予相反的ID,这象征着细节消息的失落,所以团圆化操作是有消息损失的。这是为何说假设对接Diffusion Model最好还是用“延续Latent”的要素,由于保管的图片细节的消息含量更多,无利于后续生成更高品质的视频内容。
再说“团圆Latent”的一个典型模型VQ-VAE(可参考:Neural Discrete Representation Learning),思绪如上图所示,其实就是刚提到的如何对VAE取得的“延续Latent”启动团圆化的环节,思绪已说过,此处不赘述。
另外一个“团圆化Latent”的典型是VQ-GAN(可参考:Taming Transformers for High-Resolution Image Synthesis),其思绪可参考上图。可以把它繁难了解成参与了GAN的改良版本VQ-VAE。在VQ-VAE团圆化基础上,集成进GAN的思绪,以取得更好的编码成果。咱们知道,关于GAN而言,关键是由一个“生成器”和一个“判别器”相互诈骗反抗来优化模型成果,VAE Decoder 会生成图像,自然这可作为GAN自然的生成器,再引入一个独立的GAN判别器即可。
那Sora究竟用的哪个VAE模型呢?上图展现了传说中被提及率最高的MAGVIT-2。环节较为繁难,它把输入视频帧分组,首帧独自作为一组(这造成它可以允许“图片&&视频的联结训练”,由于图片可看成单帧的视频,首帧独自示意就可以对单张图片启动编码了),其它帧比如可以4帧分为一组。关于每一组4帧图片,经过Causal 3D 卷积把4帧图片先紧缩成一个“延续Latent”。而后再启动上方讲的“延续Latent”团圆化操作,就失掉了MAGVIT的编码结果。
咱们先不思索团圆化操作,关于Sora来说,很显著这是不要求的,要素上文有述。单说Causal 3D卷积操作,MAGVIT的这个操作象征着两个事件:
其次,4帧压成1帧,这说明最少MAGVIG-v2的Latent编码是蕴含了“部分Time”消息的,这关于保养生成视频的期间分歧性必需有协助,但由于仅靠CNN很难融入太长的历史消息,貌似只能融合短期的期间消息,关于保养“长时分歧性”协助很有限,。
综合思索,我团体觉得Sora驳回MAGVIT的概率不大。为了能够生生长达60秒的视频,咱们宿愿在VAE编码阶段,就能把长周期的历史消息融入到VAE编码里来,这必需是有很大好处的。
疑问是:如今地下的钻研里,存在这种模型吗?
您别说,还真让我找到一个,就是上图所展现的TECO模型(可参考:Temporally Consistent Transformers for Video Generation)。上图展现了TECO和Sora两位Co-Lead之间的渊源,这是UC Berkeley发的文章,关键钻研如何生成“长期间分歧性”的视频,而两位Co-Lead都博士毕业于UC Berkeley,也都钻研视频生成相关内容,所以他们最少必需知道这个上班,TECO的主题又比拟合乎他们把Sora打到60秒长度的技术需求,所以参考TECO的概率还是较大的。
TECO结构如上图所示,外围由两个义务组成:一个是视频重建义务,用来训练视频Encoder-Decoder;一个是经常使用MaskGit生成团圆化的图像Token,关键用于生成视频。TECO有两个关键特点:
首先,它在VAE编码阶段对Space和Time消息区分编码,而且Time编码引入了极长的Long Time消息。确切点说,是一切历史消息,比如要生成第i帧视频,则Time编码会把第1到第(i−1)帧的之前一切历史消息都融合到第i帧的期间编码里。很显著这样做关于保养长时分歧性是很有协助的。
其次,TECO在生成视频的长时分歧性方面表现确实很不错。上图右下角的成果对比图测试了长达500帧的生成视频,TECO成果比基准模型要好(也请关注下外面的白色曲线模型FDM,前面咱们会提到它)。咱们可以推断一下,假定视频是电影级流利度达24帧/秒,那么500帧图像对应正好20秒时长的生成视频。(Sora生成的大部分视频都是长度20秒左右,推断应该也是总长度500帧左右。这能否说明了些什么?)
对Sora来说,假设对TECO顺应性地变革一下,基本就可以把它能在VAE阶段就融合超长历史的才干排汇出去。详细而言,要求做两项改变:首先,VAE团圆化是不用要的,所以可以拿掉;其次,MaskGit部分用于训练模型能够Token by Token地生成视频,咱们也不要求,只要求保管视频重建部分即可。
经过上述变革,TECO在VAE Encoder阶段的基本思维就展如今上图中了。首先,是对图片内容的空间Latent编码。首帧独自处置,自己成为一组,这就可以允许“图片和视频联结训练”了;其它帧两帧一组,比如关于第i帧,则把前一帧第(i−1)帧也和第i帧放在一组。这里要留意,虽然也是2帧一组,但是这和MAGVIT 思绪是不一样的,TECO这个2帧一组相似一个滑动窗口,窗口间是有堆叠的,所以不存在多帧紧缩成一帧带来的消息损失疑问。TECO思绪正好和MAGVIT相反,在Space Latent编码阶段不只思索第i帧,还把第(i−1)帧的消息也带出去,所以它是经过VAE参与更多消息的思绪。
视频帧分组后,经常使用CNN 3D卷积可以发生每帧图片对应的“延续Latent”,这部分是“Space Latent”,关键编码图像的空间消息;之后,经常使用Causal Temporal Transformer对期间消息启动编码,前面提过,关于同一视频,TECO会把一切历史内容Time消息都融合出去。Transformer输入的期间编码是线性的,经过Reshape后可以构成和“Space Latent”相反大小的高维示意,这部分就是VAE的“Time Latent”。这样,每帧视频经过TECO编码后,有一个“Space Latent”一个“Time Latent”,两者并在一同就是这帧视频的VAE编码结果。这里可以再次看出,TECO的思绪是参与消息,而不是以紧缩缩小消息为惟一目的的。
经常使用TECO除了能在VAE编码阶段就引入尽或许长的期间消息,更好保养生成视频的分歧性外,还有另外一个好处,OpenAI显著是认准了Transformer的Scale后劲比拟大,所以Sora在做Diffusion Model的时刻把U-Net换成Transformer。假设驳回TECO,则Sora的主体结构基本都基于Transformer了,这显著是合乎OpenAI的模型口味的。
五、Spacetime Latent Patch:Spacetime Latent Patch的含意及NaVIT
咱们先引见单张图片Patchify的详细含意。实质上,Patchify是对VAE紧缩编码的二次紧缩,在视频生成模型里很经常出现。详细做法很繁难,如上图所示,关于VAE紧缩后的“延续Latent”平面,可以设定一个2∗2大小的Patch,不堆叠地扫描“延续Latent”平面,理论是接上一个MLP对2∗2的小正方形网格输入做个变换。这样的话,假定“延续Latent”原本大小是8∗8,经过Patchify操作后,就构成了一个二次紧缩的4∗4的Patch矩阵,而后可以经过线性化操作把Patch拉成一条直线,这是由于前面接的是Transformer,它要求线性的输入Patch方式。
目前很多视频生成钻研证实了:Patch Size 越小,生成的视频品质越高。所以这里Sora 采取2∗2大小的 Patch Size 基本没不懂。Patch Size 越小说明紧缩率越低,也说明保管的原始图片消息越多。可以进一步推断,这说明了VAE 阶段也好、Patchify阶段也好,这种原始消息紧缩阶段,应该尽量多保管原始消息,不要紧缩太狠,否则对视频生成品质会是负面成果。当然付出的代价是比拟消耗计算资源,计算速度会慢很多。目前看很难统筹,你必要求作出取舍。
了解单张图片的Patchify 操作后,咱们来看一个繁难的视频 Patch 方法。由于视频是由多个视频帧依照期间顺序构成的有序序列,一个最繁难的方法是不思索不同帧之间的相关,每一帧独立经过上述的Patchify 操作启动二次紧缩,如上图所示。
之前很多解读Sora 技术的文章倾向于以为 Sora 在这个阶段驳回了相似VIVIT 的Tubelet Embedding 的思绪。含意如上图所示:就是除了第一帧,其它视频帧比如可以2 帧为一组,不只在空间维度启动紧缩,在期间维度也要进一步紧缩,从期间维度的 2 帧输入紧缩为 1 帧 Patch,详细技术采取CNN 3D 卷积就可以成功。
我觉得在这里驳回类VIVIT 的期间紧缩或许性较小,关键这么操作,在期间维度进一步紧缩,输入侧消息损失太高。VIVIT 搞的是图像分类义务,属于比拟粗粒度的义务,所以紧缩狠一点疑问不大,但是关于视频生成义务来说,就像上文提到的,看似在输入侧要尽或许保管多一些消息,这么狠的紧缩大略会严重影响视频生成品质。目前也有钻研(可参考:Latte: Latent Diffusion Transformer for Video Generation)证实,这么做确实有侵害作用,所以在这里,类VIVIT 打算我觉得可以 Pass 掉。
假设假定Sora 在 VAE 阶段驳回的是 TECO 的话,则可以如上图这么做。由于每张图片有两个 Patch 矩阵,一个是Space Latent,保管的关键是空间消息;一是 Time Latent,保管关键是长时历史消息。所以,咱们可以用一个PatchSize=2∗2∗2的 Patch,把同一个图片的Space Latent 和 Time Latent 兼并,紧缩为一个Patch 矩阵。在这里若把这张图片对应的 Patch 矩阵叫做“Spacetime Latent Patch”,看着貌似疑问不大吧?我猜 Sora 这么做的概率还是比拟大的,也很或许是OpenAI 强调的“Spacetime Latent Patch”的起源之处。当然这纯属团体猜想,客观性较强,审慎参考。
这么做有若干好处。首先,每张图片对应一个Patch 矩阵,融合环节中既蕴含了空间消息,也蕴含了 Long Time 期间消息,消息保管十分充沛。其次,假设要允许“图片&&视频联结训练”,那么首帧要求独立编码不能分组,这种打算由于没有视频帧分组环节,所以自然就允许“图片&&视频联结训练”。
前文讲过,假设要允许不同分辨率视频,则要求在Patch 阶段做些共同的上班。之前大家提及率较高的现有技术是 NaVIT,目前看上去,貌似确实也没有比NaVIT(可参考:Patch n’ Pack: NaViT, a Vision Transformer for any Aspect Ratio and Resolution)更适宜的打算了。
上图展现了NaVIT 的基本思绪:其实很繁难,只需咱们固定住 Patch Size 的大小,经过扫描不同分辨率的视频,自然就发生了不同分辨率或长宽比的Patch矩阵,而后把它们线性化即可。
与NaVIT 对应的可以允许可变分辨率的方法是 Padding 打算。如上图右方子图所示,只需设定好一个最大图片大小,其实不论图片长宽比如何,只需让它占据从左上角开局的一个部分位置即可,其它相对最大图片大小空出的位置,用有意义的Padding 占位符号占住就行。很显著这个方法也可以允许不同分辨率视频。
那么咱们应该选用NaVIT 还是 Padding 呢?很显著应该选用 NaVIT 打算。NaVIT 在提出之初,就是为了改良 Padding 方法的。Padding 方法有什么疑问?就是在训练模型的时刻,一个Batch 里被 Padding 这种有意义的占位符号糜费的空间太多了,而NaVIT 不要求对每张图片启动 Padding,该是多少 Patch 就是多少 Patch,顶多在 Batch 末尾放大批 Padding 来填充到 Batch 最大长度即可。很显著 NaViT 打算在一个 Batch 里可以放更多视频帧,而这能极大参与模型的训练效率。
而且,假设模型能允许的最大分辨率越高,Padding 方法每张图片 Padding 糜费的比例就越高,驳回 NaVIT 也就越合算。咱们知道,Sora 最大可以允许 2048*2048 的图片,在这种状况下,基本无法能驳回 Padding 方法,貌似也只能用NaVIT 了,最少我目前还没有看到更好的打算。
在将Patch 拉成线性结构后,会失落 Patch 对应的位置消息,所以为了能够允许可变分辨率视频,关于每个Patch,要求不凡设计的位置表征。
很显著经常使用Patch 的相对位置(就是依照 Patch 顺序编号)是不行的,只需咱们经常使用三维空间里的相对坐标,并学习对应的Position Embedding,就可以处置这个疑问。上图展现了同一个视频的延续三帧,关于蓝色 Patch 来说,可以看出它对应的相对坐标位置为:X=2,Y=3以及Z=3(视频期间维度的第三帧)。假定咱们在模型训练环节中学习每个坐标位置对应的 embedding,而后把三者的embedding 叠加,就构成了这个 Patch 对应的 Position Embedding,这里蕴含了这个 Patch 对应的三维相对坐标。关于每个Patch 来说,除了 Patch 表白图片内容外,对应的,每个Patch 再参与一个位置表征即可。
本部分最后,在 Spacetime Latent Patch阶段,让咱们演绎下 Sora 或许采取的技术打算:首先,很或许会对接 TECO 的 VAE 编码,经常使用2∗2∗2大小的 Patch 来兼并每张图片的 Space Latent 以及 Time Latent,每张图片被压成一个Spacetime Latent Patch 矩阵。而后经常使用 NaVIT 方法来允许可变分辨率视频,最关键的改变是要求依据空间维度的两个坐标和期间轴坐标,来学习每个Patch 在空间位置中对应三维空间相对位置坐标的 Position Embedding。
六、Transformer Diffusion Model:从Diffusion Model原理到Video DiTs模型
本部分咱们会先引见下Diffusion Model基本原理,而后逐渐推导Video DiTs模型或许的外部结构。
上图展现了 Diffusion Model 的基本原理,Diffusion Model 由正向加噪和反向去噪环节构成。假定咱们有一个很大的图片库,可以从中随机选用一张x,正向环节分屡次,每次参与不同水平的合乎正态散布的噪音到原始图片里,直到明晰图齐全转化为纯噪音图ξ为止。而反向去噪环节则从转化来的纯噪音图ξ开局,训练神经网络预测对应步骤参与的噪音是什么,而后从纯噪音图ξ里减掉预测的噪音,图像明晰水平就参与一些,依次反向逐渐一点一点去除噪音,就能恢复出最后的x图片内容。
Diffusion Model 的前向环节是人为可控地对已知图片逐渐参与不同水平噪音的环节,即噪音的逐渐“分散”环节。经数学推导,关于第t个 Time Step 的加噪音环节可以一步成功,不要求上述的逐渐分散的环节,如上图所列出公式所示。
给图片加噪音的详细环节如下:首先,咱们从图片库中随机选用一张明晰图x,再随机选用一个满足正态散布的齐全噪音图ε;而后,随机选用一个 Time Step,并对它启动编码;接上去依照上述公式间接在原始图片x基础上融合噪音ε来发生混合噪音图x,参与噪音水平系数与 Time Step 无关,准则上,Time Step 越大,则越小,原始图片消息融入得越少,噪音水平系数值则越大,混合后的噪音图x噪音水平越高,也就是说混入更高比例的噪音到原始明晰图x中。这样就一步构成了某个 time step 下的噪音图。
当人为参与可控噪音后,等于制造出了训练数据:<结构出的混合噪音图x,结构这张混合噪音图时对应的 Time Step,被参与的噪音图ε>。用这个训练数据,咱们可以来训练一个神经网络模型f(θ),输入混合噪音图x以及噪音图对应的 Time Step 消息,让f(θ)依据这两个消息,反向预测究竟参与了怎样的噪音ε′,而前向环节被参与的噪音图ε就是规范答案。神经网络f(θ)预测的噪音图ε′和规范答案ε对比,两者的差异(ε−ε′)构成损失(MSE Loss),把预测差异经过反向流传去调整神经网络的参数,使得神经网络能够预测得越来越准。这就是训练Diffusion Model 的环节。当然,这里为了繁难讲清楚,我做了肯定水平的简化。
假设经过上述环节训练好 Diffusion Model 之后,在经常使用阶段,Diffusion Model 的反向环节如上图所示,分为两个阶段。第一个阶段,咱们把要求进一步去除噪音的某个混合噪音图x,以及混合噪音图对应的去噪步数(Time Step)消息,输入训好的神经网络f(θ),此时神经网络f(θ)会预测出一个噪音图ε′。第二个阶段,拿到了神经网络预测的噪音图ε′后,混合噪音图片x减掉预测的噪音图ε′,就成功了一步去噪音的环节,图像蕴含的噪音就缩小一些,变得更明晰一些。去噪环节依然要求一步一步逐渐成功,不能像加噪环节那样一步成功。
上方引见的是无条件解放下的图像 Diffusion Model 运转环节,而像文生图模型比如Stable Diffusion 这种模型,是在有文本 Prompt 解放下启动的,宿愿模型能生成合乎文本形容的图像。如何将无条件的 Diffusion Model 改形成有条件解放的模型呢?很繁难,咱们可以经常使用比如 CLIP 的文本编码器,把 Prompt 从文本空间映射到与图像对齐的参数空间内,而后以此作为 Diffusion Model 模型生成图片的指点条件。相似地,Diffusion Model 预测的噪音ε′会和人为参与的噪音规范ε启动对比,以减小两者的差异作为学习指标,来更新 Diffusion Model 的参数,这样能让神经网络预测噪音越来越准,那么去噪成果也就会越来越好。
上方是 Diffusion Model 的基本原理,接上去咱们引见如何推导出Video DiTs 视频生成模型的结构。首先要明白的是,基于 Transformer的 Diffusion Model 整个上班流程,就是上方引见的加噪和去噪环节,无非预测噪音的神经网络结构,从传统做Diffusion Model 罕用的 U-Net 网络,换成了Transformer 网络结构而已。
大家都猜想 Sora 是基于 DiTs 模型(可参考:Scalable Diffusion Models with Transformers),要素在于 William Peebles作为 Sora 名目的 Co-Lead,也是 DiTS 模型的一做,所以大家推测 Sora 的 Diffusion Model 是基于 DiTs 改的,这个猜想听着还是蛮正当的。
DiTs 是基于 Transformer的Diffusion Model 图像生成模型,看着结构比拟复杂,其实全体结构和上文引见的规范的有条件Transformer Diffusion Model 生成模型基本分歧,上图在 DiTs 结构图的对应位置标注出了相应的组件称号,左右两图可以对照着看下。
要求留意的是,DiTs 是生成图片的模型,间接拿来做视频模型必需是不行的。咱们至少要求在DiTs 上做两项变革:首先,要求设计肯定的模型结构,用来允许不同长宽比和分辨率的视频;第二,要求把图片生成模型改成视频生成模型。
先来看下第一个变革,用来从Transformer 模型结构层面允许不同长宽比和分辨率的视频。在 Spacetime Latent Patch 阶段咱们谈到过,经过 NaVIT 变革,不同图片或视频帧的输入 Patch 是变长的,所以在 Transformer 阶段,咱们要求引入 Attention Mask 机制,保障 Transformer 在做 Local Spatial Attention 的时刻,属于某张图片的 Patch 只能相互之间看到自己这张图片内的其它Patch,但不能看到其它图片的内容。另外,由于这个引入的 Attention Mask 是针对输入 Patch 的,所以 Transformer内的这个 Local Spatial Attention 模块肯定在 Transformer 外部结构的最底层。
经过上述推导,咱们可得出如上图所示的Transformer 外部结构,它目前由两个子模块构成:最底层是 Local Spatial Attention 模块,关键计算图片或视频帧的空间消息,也就是对同一个视频帧内的各个 Patch相关启动建模。在它之上,有一个规范的 MLP 模块,这个是 Transformer模块做非线性映射所必需的。
如今的疑问是:假设每个视频帧的Patch 数是固定的,那么这个 Local Spatial Attention 模块就很容易设计,但是咱们面对的是变长 Patch,详细采取什么技术手腕才干成功针对变长Patch 的 Local Spatial Attention 呢?
这里给出一个或许的处置方法,关键思绪来自于文献“Efficient Sequence Packing without Cross-contamination: Accelerating Large Language Models without Impacting Performance”。咱们可驳回“0/1 Attention Mask 矩阵”来达成指标,从上图可看出思绪也很繁复:假设咱们假定 Batch 内序列最大长度是8,就可以设置一个8∗8的 0/1 Attention Mask,只要对角线正方形子Block 位置全是 1,其它中央都设置成 0。左图中标为绿色的某帧三个 Patch,假设看矩阵前三行,易看出,针对其它帧的Attention Mask 由于都是 0,所以加上 Mask 后就看不到其它图片,而关于它对应的3∗3都是 1 的 Attention Mask,又可以保障三个 Patch 相互都能看到。其它图片也是相似的情理。经过设置Attention Mask,就可以很繁难地允许 NaVIT 造成的每帧不同分辨率和长宽比的疑问。
接上去启动第二项变革,从 DiTs 到 Video DiTs,也就是让 DiTs 能够允许视频生成。这步改良比拟繁难,由于大少数视频生成模型都有这个模块,就是在咱们上一步变革的Transformer 结构里,参与一个 Casual Time Attention 子模块。Causal Time Attention 模块的作用是在生成第 i 帧的时刻,搜集历史 Time 消息,也就是经过 Attention 让第 i 帧看到之前的比如 k 帧内容,这是用来保养生成视频的期间分歧性的,做视频生成必需要求它。至于它的位置,由于 Local Spatial Attention 肯定在 Transformer 外部最下方,所以Causal Time Attention 放在之前引入的两个子模块两边,这是个正入选用。
Local Spatial Attention 和Causal Time Attention 的详细含意,假设依照期间序列开展,则如上图所示,比拟繁难不解释了。
前面在讲Diffusion Model 原理的时刻提过,应用 Diffusion Model 来做文本生成视频,还要求两个条件变量:Prompt 文本消息,以及 Time Step 消息。假设把这两个条件引入,一种设计打算是把两个条件消息紧缩后,并排放入每一帧的输入消息里;另外一种思绪是可以在Transformer 目前的 3 个子模块里再引入一个 Condition Attention Block,把输入条件接入这个模块,经过 Attention形式上班。目前已有钻研(可参考:VDT: General-purpose Video Diffusion Transformers via Mask Modeling)证实,虽然第一种把条件变量塞到输入部分的做法很繁难,但是成果是很好的,训练起来模型收敛速度也较快。基于此,我这里就选用了这种繁复的打算,思绪如上图所示。
假设演绎下 Video DiTs 的整个逻辑,就如上图所示。把噪音Patch 线性化后,并入Prompt 和 Time Step 条件,一同作为 Transformer 的输入。Transformer 外部由三个子模块构成:Local Spatial Attention 模块担任搜集视频帧空间消息;Causal Time Attention 模块担任搜集历史期间消息;MLP 模块担任对期间和空间消息经过非线性启动融合。叠加比如N个这种 Transformer 模块,就可以预测 Time Step 参与的噪音,成功一步去噪音操作。关于 Diffusion Model 的逆向去噪环节,Time Step 或许要求如此重复迭代 20 到 50 次去噪环节,才干构成明晰的视频帧。这也是为何 Sora 比拟慢的要素之一。
七、Sora的Long Time Consistency或许战略:暴力美学还是FDM?
如何保养生生长视频的内容分歧性也是一个钻研方向,目前一种比拟经常出现的战略是“LLM+Diffusion Model”集成战略,如上图所示的流程。其基本思维是:可以把长视频分红多个分镜场景,关于用户输入的Prompt,可以用比如 GPT-4 这种 LLM 模型智能生成多场景各自的拓展 Prompt 形容,而后用视频生成模型生成对应的分场景视频,就是“分场景拼接”的形式。
但这里有个疑问,比如主角或许在各个分场景都会出现,假设不做一些不凡的保养角色分歧性处置的话,或许会出现主角笼统老在始终变化的疑问,也就是角色不分歧的疑问。上方这个上班VideoDrafter(可参考:VideoDrafter: Content-Consistent Multi-Scene Video Generation with LLM)是这么处置的:它让 LLM 发生一个角色的笼统形容文字,而后经常使用比如 Stable Diffusion 文生图模型,依据笼统形容文字,生成全局固定的角色外观图片。在每个分场景内,都附丽这个惟一的角色外观图片来生成视频,这样可以处置不同分场景的角色分歧性疑问。
Sora会采取这种战略吗?我猜或许性不太大,关于很通用的Prompt 形容,明白确定主角或特定角色其实是不太容易的,这种明白角色、发生全局固定笼统的思绪,觉得比拟适宜特定畛域的视频生成。
这里提一种粗犷横蛮但繁难的或许做法,如上图所示。就是说,在生成第i 帧视频的时刻,把 Time Attention 拉长,让第i 帧看到前面从第 1 帧到第(i−1)帧一切的历史内容,这相似 TECO 在做 VAE 时集成 Time消息的做法。这种做法看到的历史比拟长,所以或许在保营养歧性方面无好处,但显著对算力要求很高。
Sora有或许这么做吗?并不能扫除这种或许性,证据来自于上图中Sora 技术报告的截图,红圈标出的文字意思是 Sora 为了维持长时分歧性,会一次性看之前的很多帧。
在 Transformer Diffusion Model 阶段保养“长时分歧性”战略方面,觉得FDM(Flexible Diffusion Modeling)方法是种繁复有效的思绪。FDM(可参考:Flexible Diffusion Modeling of Long Videos)提出了两种 Time Attention 改良模型,在保养长时分歧性方面成果不错。之前咱们提到TECO 的评测,右下角的评测图里,除了 TECO 那条蓝色线,紧接着的白色线就是FDM 在 500 帧视频生成的成果。而且很显著,FDM 这种 Time Attention 和 TECO 这种 VAE 编码,两者都出于保养生成视频分歧性的目的,而在模型中所处的位置不同,所以两者是有互补性的。
上方引见下 FDM 的两种 Time Attention 的思绪,在引见之前,先说明下基准方法,也就是“自回归方法“(Autoregressive)。如图所示,“自回归”思绪很间接,先依次生成若干比如 6 帧视频帧,而后一次性生成后续3 帧,在生成这 3 帧的时刻,Time Attention 会看到之前的最近若干帧,比如 4 帧。也就是说,“自回归”在生成后续视频帧的时刻,会参考之前最近的若干帧。容易看出,这是一种“短时”Attention,而非“长时” Attention。
“Long Range”是 FDM 提出的第一种“长时分歧性”模型,思绪如图所示。想法很直观:在生成第i帧视频的时刻,不只仅参考最近的几帧,也会在较远历史里固定住若干帧作为参考。可以看出,“Long Range”既参考短时历史,也参考长时历史,不过长时历史位置是随机选的,也是固定的。
“Hierarchy 方法”是 FDM 提出的第二种长时 Attention 战略。它首先从较长历史里距离采样,取得之前历史的大抵轮廓,在全局历史视频帧疏导下,先发生前面若干关键位置的视频帧,比如第一帧、最后一帧以及两边帧。这意思是依据全局的历史,来生成全局的未来。之后按顺序生成后续帧,在生成后续帧的时刻,不只参考最近的历史,同时也参考第一步生成的未来关键位置视频帧。所以这是一种先策动全局,再琢磨如今的“久远与近期相结合”的层级化的Time Attention。
我无法确定Sora 能否会用相似 FDM 的思绪,但是觉得这是保养长时分歧性较为可取的一种方法。
八、Sora的训练环节与技巧:分解数据、两阶段训练及双向生成
要求再次强调下:一切文生视频模型,实质上都是有监视学习,是要求少量高品质标注好的<文本,视频>成对数据来训练的,它们不是相似 LLM 的那种自监视学习那样,无需标注数据。
虽然有些开源的带标注视频数据,但是无论数据量还是品质,想要作出相似Sora 这么高品质的视频生成模型,基本上是没或许的。所以,假构想要复现 Sora,如何智能化地做出少量高品质标注视频数据或许才是最关键,也是最难的一步。(当然,咱们可以自创LLM 蒸馏 GPT4 的历史阅历,预计这些 GPT-4V 视频标注蒸馏打算,很快就会出现)。
我觉得,Sora 之所以成果这么好,在制造带标注视频分解数据方面的奉献很或许是最大的。Sora 驳回了相似DALLE 3 的方法来制造视频分解数据。上图左侧展现了 DALLE 3 制造<文本,图片>分解数据的流程。图片标注数据网上资源有很多,比如5B 的 LAION 数据,但是标注品质有些疑问,一方面是太粗略太短没有细节形容,一方面外面有些是失误的。
鉴于此,DALLE 3 经过人工标注(或许人加 GPT 相结合?)一些<详细文本形容,图片>数据,用这个数据来训练一个 Image-Caption Model(ICM),就是说 ICM 接受图片输入,学习依据图片内容,智能发生图片的详细形容。有了ICM 模型,DALLE 3 用它生成的长文本形容,交流掉原先图文标注数据里的短文本形容,就制造出了大批量的高品质分解数据,这对DALLE 3 品质优化协助很大。
Sora的视频分解数据制造环节应该是相似的(参考上图右侧)。经过人工标注(或人+GPT)一批高品质的<视频,长文本形容>数据,可以训练一个 Video-Caption Model。VCM 模型训练好后,可以接受视频,输入详细的文本形容。之后,可以用 VCM 发生的视频长形容交流掉标注视频数据里的冗长文本形容,就发生了高品质的视频分解数据。
其实思绪可以再关上,既然咱们有了VCM,也可以给没有标注的视频智能打上长文本形容,没疑问吧?这样的话,可以挑那些高品质视频,用 VCM 打上详细文本形容,这就制造出了少量的、十分高品质的视频标注数据。
另外,既然Sora 是图片和视频联结训练,那么很显然,训练 DALLE 3 的那批图文分解数据,那必需在训练Sora 的时刻也用了。
Sora在训练的时刻应该采取了两阶段训练环节,上方简述其做法。
普通 VAE 是独立训练的,搜集少量的图片或视频数据后,经过图片或视频重建的训练指标,可以失掉对应的“视觉编码器-解码器”。此部分训练是自监视学习,不要求标注数据。
第二阶段是包括 Diffusion Model 在内整个模型的训练,这一阶段训练环节中,普通前一阶段训练好的Encoder-Decoder 会解冻模型参数,不随着这步骤的训练数据出现变化,包括 Text Encoder 也是应用现成的比如 CLIP,也会相似地解冻住模型参数。所以这部分训练关键触及Spacetime Latent Patch 对应的 Position Embedding,以及预测噪音的基于 Transformer 的 Diffusion Model 的训练。
另外,Sora 还允许多种方式的视频生成,比如输入一张静态图生成完整视频、生成有限循环顾频、输入开头几帧图片倒着生成完整视频、给定两段视频内容生成新内容将两者平滑地衔接起来等。
可以推断,在 Sora 的训练环节中,驳回了在输入侧两边位置参与已知图片,而后同时依照期间维度的正向生成视频和反向生成视频的双向生成战略。一方面,引入这种双向生成战略,可以繁难地允许上方讲的各种灵敏的视频生成类型;另外一方面,其实假设采取从两边向期间维度两边拓展的生成形式,更无利于保养生成内容的连接性和分歧性。由于两边位置向两边拓展,只要求保养一半期间窗口的内容分歧性即可,两边向两边内容聚拢,这看上去是双向生成战略带来的额外好处。
比如,之前提到的输入一张图片生成完整视频,从视频内容可知,这个例子是把输入图片放在了输入噪音图片序列的最后一帧,而后依照期间顺序倒着生成的。再比如,生成有限循环顾频,可以把某一帧视频图片,区分拔出在两边位置和头尾位置,而后从两边位置区分向两边生成,这样就会发生一个看上去总在有限循环的视频内容。
可见,若能繁难地在指定输上天位拔出图片,即可繁难地允许双向训练或灵敏的视频生成方式。那么,如何达成这一点呢?可以驳回掩码战略(思绪可参考:VDT: General-purpose Video Diffusion Transformers via Mask Modeling),如上图所示。图右侧M是0/1掩码矩阵,对应矩阵取值要么都是 1 要么都是0,而C是引入的掩码帧序列,可以把已知图片拔出到指定位置,并把它对应的掩码矩阵设置为1,其它掩码帧可以是随机噪音,对应掩码矩阵设置为 0。M和C经过 Bit级矩阵乘法,取得掩码运算结果,对应 0 掩码矩阵内容都被清零,而对应 1 的掩码矩阵的内容依然保管,这样构成掩码帧。
相应地,对Diffusion Model 的输入噪音序列F来说,设置一个反向掩码矩阵序列(1−M),其0/1矩阵取值和对应的掩码帧0/1矩阵 M 正好相反,雷同地,((1−M)和F启动掩码运算后,要拔出图片位置的输入帧数据被清零,其它噪音帧内容坚持不变。
接上去只需将噪音输入帧和对应的掩码帧启动矩阵加法运算,这样就把已指图片拔出到Diffusion Model的指定位置了。
九、Sora能作为物理环球模拟器吗
OpenAI宣称Sora是物理环球模拟器,这个疑问的答案十分客观,每团体都有不同的认识。我觉得以目前的技术条件来说,单靠Sora自身很难结构环球模拟器,更情愿把OpenAI这么讲看成是他们对Sora寄予的愿景,而非曾经成立的理想。对此更详尽的团体思索可见:。