作者 | Matthias·Plappert
翻译 | 言征
OpenAI的Sora模型能够生成各种场景的极其逼真的视频,令世界惊叹不已。除了一篇公开的技术报告和TikTok上放出的酷炫视频,就只有OpenAI相关团队的采访能够让业界获得零星的信息增量。
不过,研究人员的力量是无穷的。3月15日,专注于创新的投资公司Factorial Funds发表了一篇技术博客,详细阐释了自己对于Sora背后的参数规模、算力配置、训练推理的逻辑和实现细节,以及后续的商业考量。值得感兴趣的朋友一饱眼福。
在这篇博文中,我们将深入探讨 Sora 背后的一些技术细节。我们还讨论了我们目前对这些视频模型的影响的思考。最后,我们讨论了关于用于训练 Sora 等模型的计算的想法,并提出了训练计算与推理相比如何的预测,这对估计未来 GPU 需求具有有意义的指示。本报告的主要发现总结如下:
总而言之,Sora 在视频生成的质量和功能方面取得了重大进展,但也有可能大大增加对 GPU 推理计算的需求。
Sora 是一个扩散模型。扩散模型是图像生成的流行选择,众所周知的模型如OpenAI 的 DALL-E或Stability AI 的 Stable Diffusion。最近,Runway、Genmo和Pika 等公司已经探索了视频生成,可能也利用了扩散模型。
从广义上讲,扩散模型是一种生成机器学习模型,它通过逐渐学习逆转向数据添加随机噪声的过程来学习创建与训练数据相似的数据,例如图像或视频。最初,这些模型从纯噪声模式开始,然后逐步消除这种噪声,细化模式,直到它转变为连贯且详细的输出。
扩散过程图解:逐步消除噪声,直到看到详细的视频。图片取自Sora 技术报告。
这与大型语言模型 (LLM) 在概念上的工作方式明显不同:LLM 迭代地生成一个又一个标记1(这称为自回归采样)。令牌一旦生成,就不会更改。在使用Perplexity或 ChatGPT等工具时,您可能已经看到过这种效果:答案逐渐逐字出现,就像有人在打字一样。
OpenAI在 Sora 公告的同时还发布了一份技术报告。不幸的是,这份报告缺乏细节。然而,它的设计似乎深受“ Scalable Diffusion Models with Transformers ”研究论文的影响,其中作者2提出了一种基于 Transformer 的架构,称为 DiT(Diffusion Transformers 的缩写),用于图像生成。看来 Sora 将这项工作扩展到了视频生成。结合 Sora 技术报告和 DiT 论文,我们可以相当准确地了解 Sora 模型的工作原理。
Sora 包含三个重要部分:1)它不在像素空间中运行,而是在潜在空间中执行扩散(又名潜在扩散),2)它使用 Transformer 架构,3)它似乎使用非常大的数据集。
1.潜在扩散
要理解第一点(潜在扩散),请考虑生成图像。您可以使用扩散生成每个像素。然而,这是非常低效的(例如,512x512 图像有 262,144 个像素)。相反,您可以首先从像素映射到具有某种压缩因子的潜在表示,在这个更紧凑的潜在空间中执行扩散,最后从潜在空间解码回像素空间。这种映射显着提高了计算复杂性:例如,您不必在 512x512 = 262,144 像素上运行扩散过程,而只需生成 64x64 = 4,096 个潜在变量。这一思想是《利用潜在扩散模型进行高分辨率图像合成》研究论文的关键突破,是稳定扩散的基础。
从像素(左)到潜在表示(右侧的框网格)的映射图示。图片取自Sora 技术报告。
DiT 和 Sora 都采用了这种方法。对于 Sora 来说,另一个考虑因素是视频具有时间维度:视频是图像的时间序列,也称为帧。从 Sora 技术报告来看,从像素映射到潜在空间的编码步骤在空间上(意味着压缩每帧的宽度和高度)和时间上(意味着跨时间压缩)发生。
2.Transformer
现在来说第二点,DiT 和 Sora 都用普通的Transformer 架构替换了常用的U-Net 架构。这很重要,因为 DiT 论文的作者观察到,使用 Transformer 会导致可预测的扩展:当您应用更多的训练计算(通过训练模型更长时间或使模型更大,或两者兼而有之)时,您将获得更好的性能。Sora 技术报告指出了相同的内容,但针对视频,并包含有用的插图。
说明模型质量如何随着训练计算的函数而提高:基础计算、4x 计算和 32x 计算(从左到右)。视频取自Sora技术报告。
这种可以通过所谓的缩放定律来量化的缩放行为是一个重要的属性,之前已经在大型语言模型(LLM)和其他模态的自回归模型的背景下进行了研究。应用规模来获得更好模型的能力是LLM快速进步的关键驱动力之一。由于图像和视频生成存在相同的属性,因此我们应该期望相同的缩放配方也适用于此。
3.数据集
训练像 Sora 这样的模型所需的最后一个关键要素是标记数据,我们认为这是大部分秘密武器所在。要训练像 Sora 这样的文本到视频模型,您需要成对的视频及其文本描述。OpenAI 并没有过多谈论他们的数据集,但他们暗示它非常大:“我们从大型语言模型中获得灵感,这些模型通过互联网规模的数据训练来获得通才能力。“ (来源)。OpenAI还进一步发布了一种用详细文本标签对图像进行注释的方法,用于收集DALLE-3数据集。总体思路是在数据集的标记子集上训练字幕生成器模型,并使用该字幕生成器模型自动标记其余部分。Sora 的数据集似乎应用了相同的技术。
我们相信 Sora 有一些重要的意义。我们现在将简要讨论这些。
1.视频模型开始真正有用
Sora 生成的视频质量无论在细节水平还是时间一致性方面都明显取得了突破(例如,当物体暂时被遮挡时,模型可以正确处理物体的持久性,并且可以准确地在水中产生反射) , 例如)。我们相信,视频的质量现在足以满足某些类型的场景,可以在实际应用中使用。例如,Sora 可能很快就会取代一些库存视频片段的使用。
视频生成领域公司的市场地图
但仍存在一些挑战:目前尚不清楚 Sora 模型的可操纵性如何。由于模型输出像素,编辑生成的视频既困难又耗时。围绕这些模型构建直观的 UI 和工作流程对于使它们有用也是必要的。Runway、Genmo和Pika等公司(参见上面的市场地图)已经在致力于解决这些问题。
2.缩放适用于视频模型,因此我们预计会取得快速进展
DiT 论文的一个关键见解是,模型质量可以通过额外的计算直接提高,如上所述。这类似于大模型观察到的缩放定律。因此,随着这些模型接受越来越多的计算训练,我们应该期望视频生成模型的质量能够取得快速的进一步进步。Sora 清楚地证明了这个方法确实有效,我们期望 OpenAI 和其他人在这方面加倍努力。
3.合成数据生成和数据增强
在机器人和自动驾驶汽车等领域,数据本质上是稀缺的:没有充满机器人执行任务或汽车驾驶的互联网。因此,通常通过模拟训练或在现实世界中大规模收集数据(或两者的结合)来解决这些问题。然而,这两种方法都很困难,因为模拟数据通常不切实际。大规模收集现实世界的数据成本高昂,而且为罕见事件收集足够多的数据也具有挑战性。
通过修改视频的某些属性来增强视频的插图,在本例中,在茂密的丛林环境(右)中渲染原始视频(左)。图片取自Sora 技术报告。
我们相信像 Sora 这样的模型在这里会非常有用。我们认为类似 Sora 的模型可以用来直接生成完全合成的数据。Sora 还可用于数据增强,将现有视频转换为不同的外观。上面说明了第二点,Sora 将一辆红色汽车在森林道路上行驶的视频转换为茂密的丛林风景。您可以想象使用相同的技术来重新渲染白天与夜晚的场景或改变天气条件。
4.模拟和世界模型
一个有前途的研究方向是学习所谓的世界模型。如果足够准确,这些世界模型允许人们直接在其中训练代理,或者它们可以用于规划和搜索。
像 Sora 这样的模型似乎直接从视频数据中隐式地学习了现实世界如何运作的基本模拟。这种“紧急模拟”目前存在缺陷,但仍然令人兴奋:它表明我们也许能够从视频中大规模训练这些世界模型。此外,Sora 似乎能够模拟非常复杂的场景,如液体、光的反射、织物和头发的运动。OpenAI 甚至将他们的技术报告命名为“视频生成模型作为世界模拟器”,这清楚地表明他们认为这是他们模型最重要的方面。
最近,DeepMind 的Genie 模型展示了类似的效果:通过仅对视频游戏视频进行训练,该模型学会模拟这些游戏(并提出新游戏)。在这种情况下,模型甚至可以在不直接观察动作的情况下学习以动作为条件。同样,我们的目标是在这些模拟中直接进行学习。
来自 Google DeepMind 的“Genie:生成交互环境”介绍。
结合起来,我们相信像 Sora 和 Genie 这样的模型可能会非常有用,最终可以大规模地训练实体代理(例如机器人)来完成现实世界的任务。但也存在局限性:由于这些模型是在像素空间中训练的,因此它们会模拟每个细节,例如风如何移动草叶,即使这与手头的任务完全无关。虽然潜在空间被压缩,但它仍然必须保留大量信息,因为我们需要能够映射回像素,因此尚不清楚是否可以在这个潜在空间中有效地进行规划。
在 Factorial Funds,我们喜欢查看有多少计算量用于训练和推理。这很有用,因为它可以预测未来需要多少计算。然而,估计这些数字也很困难,因为有关用于训练 Sora 的模型大小和数据集的详细信息很少。因此,需要注意的是,本节中的估计值高度不确定,因此应对它们持保留态度。
1.将训练计算从 DiT 外推到 Sora
关于 Sora 的详细信息非常少,但我们可以再次查看DiT 论文,它显然是 Sora 的基础,并推断其中提供的计算数据。最大的 DiT 模型 DiT-XL 具有 6.75 亿个参数,并且使用大约 10× 21 FLOPS 的总计算预算进行训练。[3]为了使这个数字更容易理解,这相当于大约 0.4 个 Nvidia H100 1 个月(或单个 H100 12 天)。
现在,DiT 仅对图像进行建模,而 Sora 是视频模型。Sora 可以生成长达 1 分钟的视频。如果我们假设视频以 24fps 编码,则视频最多包含 1,440 帧。Sora 的像素到潜在映射似乎在空间和时间上都进行了压缩。如果我们假设与 DiT 论文 (8x) 相同的压缩率,我们最终会在潜在空间中得到 180 帧。因此,当我们简单地将其外推到视频时,我们获得了比 DiT 180 倍的计算乘数。
我们进一步认为 Sora 明显大于 675M 参数。我们估计 20B 参数模型是可行的,这使我们的计算量比 DiT 多了 30 倍。
最后,我们相信 Sora 接受的训练数据集比 DiT 大得多。DiT 在批量大小为 256 的情况下接受了 3M 训练步骤的训练,即总共 768M 图像(请注意,由于 ImageNet 仅包含 14M 图像,因此相同的数据重复了很多次)。Sora 似乎接受了图像和视频混合的训练,但除此之外我们对数据集几乎一无所知。因此,我们做出简单的假设,Sora 的数据集由 50% 的静态图像和 50% 的视频组成,并且该数据集比 DiT 使用的数据集大 10 倍到 100 倍。然而,DiT 在相同的数据点上重复训练,如果有更大的数据集可用,这可能不是最佳的。因此,我们认为 4-10 倍的计算乘数是更合理的假设。
将上述内容放在一起并考虑附加数据集计算的低估计和高估计,我们得出以下计算:[4]
这相当于 1 个月内 4,211 - 10,528 台 Nvidia H100。
这里,有一个计算公式:DiT 的基础计算 × 模型大小增益 × 数据集大小增益× 由于 180 帧视频数据但仅占数据集的 50% 而导致的计算系数
2.推理与训练计算
我们倾向于关注的另一个重要考虑因素是训练计算与推理计算的比较。从概念上讲,训练计算量非常大,但也是一次性成本。相比之下,推理计算要小得多,但每一代都会发生。因此,推理计算随着用户数量的增加而扩展,并且随着模型的广泛使用而变得越来越重要。
因此,查看“收支平衡点”是有用的,即用于推理的计算量多于训练期间的计算量的点。
DiT(左)和 Sora(右)的训练与推理计算比较。对于 Sora 来说,我们的数据是基于上述估计,因此并不完全可靠。我们还展示了训练计算的两种估计:一种是低估计(假设数据集大小为 4 倍乘数),一种是高估计(假设数据集大小为 10 倍乘数)。
对于上面的数字,我们再次使用 DiT 来推断 Sora。对于 DiT,最大的模型 (DiT-XL) 每步使用 524×10 9 FLOPS,而 DiT 使用 250 个扩散步骤来生成单个图像,总共 131×10 12 FLOPS。我们可以看到,生成 760 万张图像后就达到了收支平衡点,此后推理计算占据主导地位。作为参考,用户每天向 Instagram 上传大约 9500 万张图片。
对于 Sora,我们将 FLOPS 推断为 524×10 9 FLOPS × 30 × 180 ≈ 2.8×10 15 FLOPS。如果我们仍然假设每个视频有 250 个扩散步骤,则每个视频总共需要 708×10 15 FLOPS。作为参考,这相当于每个 Nvidia H100 每小时生成约 5 分钟的视频。[5]在生成 15.3M(低)到 38.1M(高)分钟的视频后达到收支平衡点,此后花费的推理量多于训练计算量。作为参考,每天大约有 4300 万分钟的视频上传到 YouTube。
一些注意事项:对于推理而言,FLOPS 并不是对推理重要的唯一方面。例如,内存带宽是另一个重要因素。此外,人们正在积极研究减少扩散步骤的数量,这可能会大大减少计算强度,从而加快推理速度。FLOPS 利用率在训练和推理之间也可能有所不同,在这种情况下,它们就变得很重要。
3.跨不同模型的推理计算
我们还研究了每单位输出的推理计算在不同模态的不同模型中的表现。这里的想法是了解不同类别的模型需要多少计算密集型推理,这对计算规划和需求有直接影响。重要的是要了解每个模型的输出单位都会变化,因为它们以不同的模式运行:对于 Sora,单个输出是一个 1 分钟长的视频,对于 DiT 来说,它是单个 512x512px 图像,对于 Llama 2 和 GPT-4我们将单个输出定义为包含 1,000 个文本标记的单个文档。[6]
每个输出单位的模型推理计算比较(对于 Sora,1 分钟视频,对于 GPT-4 和 LLama 2 1000 个文本标记,对于 DiT,单个 512x512px 图像)。我们可以看到,我们对 Sora 推理的估计的计算成本要高出几个数量级。
我们比较了 Sora、DiT-XL、LLama 2 70B 和 GPT-4,并将它们相互绘制出来(使用 FLOPS 的对数标度)。对于 Sora 和 DiT,我们使用上面的推断估计。对于 Llama 2 和 GPT-4,我们使用FLOPS = 2 × 参数数量 × 生成令牌数量的经验法则来估计 FLOPS 数量。对于 GPT-4,我们假设模型是专家混合 (MoE) 模型,每个专家有 220B 个参数,每个前向传递有 2 个活跃专家(来源)。请注意,对于 GPT-4,这些数字尚未得到 OpenAI 的确认,因此我们再次需要对它们持保留态度。
我们可以看到,DiT 和 Sora 等基于扩散的模型的推理成本要高得多:DiT-XL(具有 675M 的模型)消耗的推理计算量与 LLama 2(具有 70B 参数的模型)大致相同。我们可以进一步看到,对于推理工作负载,Sora 甚至比 GPT-4 还要昂贵几个数量级。
再次需要注意的是,上述许多数字都是估计值,并且依赖于简化的假设。例如,它们没有考虑 GPU 的实际 FLOPS 利用率、内存容量和内存带宽的限制以及推测解码等先进技术。
4.假如类 Sora 模型获得显著的市场份额,推理的成本怎么算?
在本节中,我们根据 Sora 的计算要求进行推断,看看需要多少 Nvidia H100 才能大规模运行类似 Sora 的模型,这意味着 AI 生成的视频在 TikTok 和 YouTube 等流行视频平台上实现了显着的市场渗透。
这表明我们相信,随着生成式人工智能模型变得越来越流行和依赖,推理计算将占据主导地位。对于像 Sora 这样基于扩散的模型,更是如此。
另请注意,扩大模型规模将进一步大幅增加推理计算需求。另一方面,其中一些问题可以通过更优化的推理技术和跨堆栈的其他优化来应对。
说明性视频内容创建用例将推动对 OpenAI 的 Sora 等模型的最直接需求