揭秘内部:OpenAI 的 Sora 模型如何运作 [译]

作者:

Matthias Plapper

OpenAI 的 Sora模型以其创造各种极度真实场景的视频的能力,令全世界瞩目。以下是 OpenAI 发布的一段展示该模型实力的视频。

来自"介绍 Sora - OpenAI 的文本到视频模型"的视频

在这篇博客文章中,我们将深入剖析 Sora 模型背后的一些技术细节。我们还将探讨我们对这些视频模型可能产生的影响的看法。最后,我们将讨论我们对于用于训练 Sora 等模型所需计算资源的想法,并预测了训练计算与推理相比的情况,这对于预估未来 GPU 需求具有实质的参考价值。

重要发现

本报告的重要发现概述如下:

  • Sora 是一个扩散模型,该模型基于 扩散变换器 (DiT)潜在扩散进行构建,并在模型和训练数据集的规模上进行了大幅度的扩展。
  • Sora 展示了,像大语言模型(LLM)一样,对视频模型进行规模扩大是有益的,并且这种规模扩大将成为迅速提升模型质量的主要动力。
  • 诸如 RunwayGenmoPika 这样的公司正在努力围绕 Sora 等视频生成模型,构建直观易用的界面和工作流程,这将决定这些模型的广泛应用性和实用性。
  • Sora 的训练需要大量的计算资源,据估计,需要 4200-10500 台 Nvidia H100 GPU 运行一个月。
  • 在推断阶段,我们估计 Sora 每小时最多可以在每台 Nvidia H100 GPU 上生成大约 5 分钟的视频。与 LLM 相比,像 Sora 这样的基于扩散的模型的推断成本高出数个数量级。
  • 随着类似 Sora 的模型广泛部署,推断计算的需求将超过训练计算的需求。我们估计,当生成视频的总时长达到 1530-3810 万分钟时,将达到"收支平衡点",此后在推断阶段所消耗的计算资源将超过原始训练阶段。相比之下,每天有 1700 万分钟(TikTok)和 4300 万分钟(YouTube)的视频被上传。
  • 假设在像 TikTok(占所有视频分钟数的 50%)和 YouTube(占所有视频分钟数的 15%)这样的热门平台上,大量采用 AI 进行视频生成,并考虑到硬件的利用率和使用模式,我们估计推断阶段的峰值需求将达到约 720k 台 Nvidia H100 GPU。

总结来说,Sora 在视频生成的质量和能力建设上取得了显著的进步,但也可能极大地增加了对 GPU 推断计算的需求。

背景

Sora 是扩散模型。扩散模型在图像生成领域受到欢迎,知名的模型包括像 OpenAI 的 DALL-E 或 Stability AI 的 Stable Diffusion。最近,像 Runway,Genmo,以及 Pika 等公司也探索了视频生成,可能也采用了扩散模型。

扩散模型是一种生成式机器学习模型。它通过逐渐学习反转向数据添加随机噪声的过程,来创建与其训练数据类似的数据,例如图像或视频。这些模型最初从纯噪声的模式开始,然后逐步去除这些噪声,优化模式,直到它转化为连贯和详细的输出。

扩散过程的示例:噪声逐步被去除,直到详细的视频逐渐显现。图片取自Sora 技术报告.

这与大语言模型(LLM)的工作概念有显著的不同:LLM 以迭代的方式产生一个接一个的 Token1(这被称为自回归采样)。一旦一个 Token 被产生,它就不会被改变。当你使用像 Perplexity 或 ChatGPT 这样的工具时,你可能会看到这种效果:答案逐字逐句地出现,就像有人在打字一样。

Sora 的技术细节

OpenAI 已经发布了一份Sora 模型的技术报告。但是遗憾的是,这份报告并没有详细解释模型的细节。然而,其设计显然受到了“用 Transformers 实现的可扩展扩散模型”这篇研究论文的深度影响,作者们在论文中2 提出了一个叫做 DiT(即_Di_ffusion_T_ransformers)的基于 Transformer 的图像生成架构。看起来,Sora 模型是在此基础上向视频生成方向进行了扩展。因此,通过这份技术报告和 DiT 的论文,我们可以对 Sora 模型的工作原理有一个比较准确的了解。

Sora 模型有三个重要的特点:1) 它不是在像素空间中生成图像,而是在潜在空间(即潜在扩散)中实现,2) 它使用的是 Transformer 架构,3) 它似乎使用了一个非常大的数据集。

潜在扩散

要理解潜在扩散的概念,我们可以以生成一幅图像为例。我们可以通过扩散来生成每一个像素,但这样效率极低(例如,一幅 512x512 的图像有 262,144 个像素)。相反,我们可以先将像素映射到潜在空间(这个空间相对更小,因为有一定的压缩比例),然后在潜在空间中进行扩散,最后再从潜在空间解码回像素空间。这种映射方法可以显著改善计算效率:你不再需要在 512x512 = 262,144 个像素上进行扩散,例如,你只需要生成 64x64 = 4,096 个潜在点。这个想法源于“高分辨率图像合成与潜在扩散模型”这篇研究论文,这也是稳定扩散的基础。

本图展示了从像素(左侧)到潜在表达(右侧的方格)的映射过程。图片取自于 Sora 技术报告

DiT 和 Sora 都采用了这种方法。而对于 Sora,还需要额外考虑一个因素,那就是视频具有时间连续性:视频是一系列的图像,也就是我们所说的帧。从 Sora 的技术报告中,我们可以看到从像素到潜在空间的编码步骤不仅在空间上(即压缩每一帧的宽度和高度),而且在时间上(即跨时间压缩)同时进行。

Transformers

关于第二点,DiT 和 Sora 都用普通的 Transformer 架构 替换了通常使用的 U-Net 架构。这一点很关键,因为 DiT 论文的作者发现,使用 Transformers 可以实现可预期的性能提升:当你投入更多的训练计算(无论是通过更长时间的训练模型,还是增大模型,或者两者都有),你将获得更好的性能。Sora 的技术报告也指出了同样的情况,只是它是针对视频的,并且给出了一张有用的插图。

本图展示了模型质量如何随训练计算的增加而提高:基本计算,4 倍计算,和 32 倍计算(从左到右)。视频取自Sora 技术报告

这种可以量化的性能提升现象,被称为所谓的扩展规则,是一个重要的特性,已经在 大语言模型 (LLMs)其他模态的自回归模型 的背景下进行过研究。运用规模化获得更好模型的能力是推动 LLMs 快速发展的关键动力之一。由于图像和视频生成也具有这一特性,我们应该期望相同的性能提升方法在这里同样适用。

数据集

要训练类似 Sora 的模型,最后一个关键要素就是标注数据,我们认为这可能是大部分秘密之处。为了训练一个能将文本转换为视频的模型,你需要有配对的视频和对应的文本描述。OpenAI 并没有详细谈论他们的数据集,但他们暗示这个数据集非常大:“我们从大语言模型中得到启发,这些模型通过在互联网规模的数据上训练获得了通用能力。” (来源)。OpenAI 还发布了一种用详细文本标签注解图像的方法,这种方法曾被用于收集 DALLE-3 数据集。通常的做法是在你的数据集的一部分标注数据上训练一个字幕模型,然后利用这个模型自动标注剩余的数据。似乎,Sora 的数据集也应用了相同的技术。

含义

我们认为 Sora 有一些重要的含义。我们现在将简要地讨论这些。

视频模型开始实际有用

Sora 能生成的视频的质量显然是突破性的,无论是在细节的层面,还是在时间连续性(例如,模型在物体暂时被遮挡时能正确处理物体的持久性,并可以精确地模拟水面的反射)。我们相信,现在的视频质量已经足够好,对于某些类型的场景,它们可以应用到实际问题中。例如,Sora 可能很快将取代一些现成的视频素材的使用。

视频生成领域公司的市场地图。

当然,还有一些挑战:目前还不清楚 Sora 模型的可控性如何。编辑一个由模型生成的视频很困难并且耗时,因为模型输出的是像素。并且,需要为这些模型建立直观的用户界面和工作流程,以使它们更有用。像RunwayGenmoPika这样的公司以及更多其他公司(参见上面的市场地图)已经在解决这些问题。

视频模型的规模化是有效的,因此我们期待会有快速的进步

DiT 论文的一个关键洞见是,随着额外计算的增加,模型质量将直接得到提升,如上所述。这与我们在大型语言模型(LLM)中观察到的规模法则相似。因此,我们应该期待,随着这些模型接受更多的计算训练,视频生成模型的质量将会迅速提升。Sora 就是一个明显的证明,这个策略确实有效,我们预计 OpenAI 和其他研究者会进一步加大投入。

合成数据生成和数据增强

在像机器人和自动驾驶汽车这样的领域,数据本身就很稀缺:没有大量关于机器人执行任务或汽车自动驾驶的网络数据。通常,这些问题会通过仿真训练或者在现实世界中大规模收集数据(或者两者结合)来解决。然而,这两种方法都有所挑战,因为模拟数据往往不切实际,而在现实世界中大规模收集数据既昂贵又难以收集到足够的罕见事件数据。

这是一个通过修改视频的一些属性来增强视频的插图,这种情况下是将原始视频(左)在郁郁葱葱的丛林环境中呈现(右)。图片来自Sora 技术报告

我们相信像 Sora 这样的模型在这方面可能非常有用。我们认为 Sora 类型的模型可能直接用于生成完全合成的数据。Sora 还可以用于数据增强,其中现有视频被转换为不同的外观。上述第二点在上面的插图中得到了说明,其中 Sora 将一辆红色汽车在森林路上行驶的视频转换成郁郁葱葱的丛林景色。你可以想象使用同样的技术将场景在白天和夜晚,或者改变天气条件进行重新渲染。

模拟和世界模型

一个有前途的研究方向是学习所谓的世界模型。如果这些世界模型足够准确,就可以让一个智能体直接在其中进行训练,或者它们可能被用于规划和搜索。

看起来,像 Sora 这种模型能够通过学习视频数据,模拟现实世界的基本运作。虽然这种“突现的模拟”目前还存在缺陷,但这无法掩盖其潜在的激动人心的可能性:我们或许能够通过大规模的视频学习训练这些世界模型。而且,Sora 似乎能够模拟非常复杂的场景,如液体、光线的反射、面料和头发的运动。OpenAI 甚至在他们的技术报告中标题为“作为世界模拟器的视频生成模型”,明确表示他们认为这是模型最重要的特性。

最近,DeepMind 通过他们的 Genie 模型 展示了类似的效果:仅通过训练视频游戏的视频,模型就能学会模拟这些游戏(甚至发明新的游戏)。在这种情况下,该模型甚至在没有直接观察到行动的情况下,也能学会根据行动进行预测。再次,目标是直接在这些模拟中启用学习。

来自 Google DeepMind 的"Genie: 生成式交互环境"介绍的视频。

总的来说,我们相信像 Sora 和 Genie 这样的模型可能会非常有用,有望帮助我们最终能够在大规模上训练实体智能体(例如,在机器人技术方面)处理真实世界的任务。但是,这些模型也存在一定的限制:由于它们是在像素空间接受训练的,因此它们会模拟出所有的细节,比如风是如何吹动草叶的,即使这对当前的任务没有任何帮助。虽然潜在空间已经被压缩,但仍需要保留大量的信息,我们需要保持能够映射回像素的能力,所以还不清楚是否能在这个潜在空间中有效地进行规划。

计算量估计

在 Factorial Funds,我们倾向于查看用于训练和推理的计算量。这样做是因为,它有助于我们预测未来会需要多少计算量。然而,由于关于用来训练 Sora 的模型大小和数据集的细节信息非常少,因此,估计这些数据也是非常困难的。因此,本节的估计值具有很大的不确定性,所以要持谨慎的态度对待。

从 DiT 到 Sora 的训练计算量推断

关于 Sora 的相关信息非常稀少,但我们可以参考DiT 论文来推测,此论文显然是 Sora 的基础。最大的 DiT 模型,DiT-XL,参数量达到 675M,其总的计算资源预算大约为 1021 FLOPS.3为了理解这个数字,可以想象成大约 0.4 个 Nvidia H100 运行一个月(或一个 H100 运行 12 天)的计算能力。

DiT 仅模拟图像,而 Sora 则是一个视频模型。Sora 可以生成长达 1 分钟的视频。假设视频以 24fps 的频率编码,那么一个视频可能包含最多 1440 帧。Sora 的像素到潜在映射似乎进行了空间和时间上的压缩。如果我们采用 DiT 论文中的压缩率(8 倍),我们可以得到在潜在空间中有 180 帧。因此,当我们把 Sora 应用到视频上时,它相较于 DiT 的计算能力可能增加了 180 倍。

我们进一步推测,Sora 的参数量可能远超过 675M。一个 20B 参数的模型是可行的,这将使我们的计算能力相较于 DiT 再增加 30 倍。

最后,我们认为 Sora 的训练数据集比 DiT 使用的要大得多。DiT 的训练步骤为 300 万步,批量大小为 256,即总共使用了 768M 张图像(但是由于 ImageNet 只包含 14M 张图像,所以有许多图像被重复使用了很多次)。Sora 看起来是在图像和视频的混合数据上进行训练,但我们对这个数据集知之甚少。我们做一个简单的假设,即 Sora 的数据集由 50% 的静止图像和 50% 的视频组成,数据集的大小是 DiT 使用的 10-100 倍。然而,DiT 反复在相同的数据点上进行训练,这样的方式如果有更大的数据集可用,可能并非最优。因此,我们认为,相较于 DiT,计算能力增加的倍数更有可能在 4-10 倍之间。

在整合了上述信息并考虑到额外数据集计算的低估和高估后,我们得出以下计算结果:4

  • 低数据集估计:1021 FLOPS × 30 × 4 × (180 / 2) ≈ 1.1x1025 FLOPS
  • 高数据集估计:1021 FLOPS × 30 × 10 × (180 / 2) ≈ 2.7x1025 FLOPS

换算下来,相当于使用 1 个月的 4,211 - 10,528 台 Nvidia H100s。

推理计算 与 训练计算

我们常常关注的另一个重要问题是训练计算和推理计算的对比。理论上,训练计算的数量庞大,但这也是一次性的开销。而推理计算虽然规模小,但对每一次生成都会产生。因此,随着用户数量的增加,推理计算会随之增加,当模型被广泛使用时,推理计算的重要性也会随之增加。

所以,查看“收支平衡点”,也就是推理消耗的计算量超过训练期间消耗的计算量的点,变得尤为重要。

训练与推理计算的对比图,左边是 DiT,右边是 Sora。对于 Sora,我们的数据基于上述估计,因此并不完全可靠。我们还给出了两个训练计算的估算:一个是低估值(假设数据集大小的乘数为 4),另一个是高估值(假设数据集大小的乘数为 10)。

对于上述图表,我们再次采用 DiT 模型,推测 Sora 模型的性能。在 DiT 中,最大的模型 (DiT-XL) 每步使用 524×10^9 FLOPS。生成单张图片需要 250 步扩散过程,因此总计需要 131×10^12 FLOPS。我们可以看到,在生成 7.6M 图像后,推理计算开始占据主要部分。参考一下,用户每天上传到 Instagram 的图片大约有 95M 张(来源)。

对于 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 (高估) 分钟后,推理计算的消耗开始超过训练。仅供参考,每天上传到 YouTube 的视频时长大约有 43M 分钟(来源)。

还有一些需要注意的地方:对于推理计算,FLOPS 并非唯一重要的因素,例如,内存带宽也是另一个重要因素。此外,目前有研究正在积极探索如何减少扩散步骤的数量,这可能极大地降低计算量,从而加快推理速度。同时,训练和推理过程中的 FLOPS 利用率也可能不同,在这种情况下,它们就成为了必须考虑的重要因素。

不同模型间的推理计算对比

我们也对比了不同模型在不同模态下,每单位输出的推理计算量。意在观察不同类别模型进行推理所需的计算量大小,这对计算资源的规划和需求有直接影响。需要明白的是,由于不同模型在各自的模态中工作,所以每个模型的输出单位都会有所不同:例如,对于 Sora,一个输出就是一段 1 分钟的视频,对于 DiT,一个输出是一张 512x512px 的图片,而对于 Llama 2 和 GPT-4,我们定义一个输出为一个含有 1,000 个 token 的文档。6

输出单位每种模型推理计算量的比较(对于 Sora,1 分钟视频,对于 GPT-4 和 LLama 2 是含 1000 个 token 的文本,对于 DiT 是一张 512x512px 的图片)。从我们对 Sora 的推理估算来看,在计算资源消耗方面,其显著高于其他模型。

我们对 Sora,DiT-XL,LLama 2 70B 和 GPT-4 进行了比较,并将它们互相对照(使用 FLOPS 的对数尺度表示)。对于 Sora 和 DiT,我们根据上述的推理估算进行计算。对于 Llama 2 和 GPT-4,我们通过 FLOPS = 2 × 参数数量 × 生成 token 数量的公式来估算 FLOPS 的数量。对于 GPT-4,我们假设该模型是一个混合专家 (MoE) 模型,每次前向传播激活的专家有 2 个,每个专家拥有 220B 参数 (source)。需要注意的是,关于 GPT-4 的这些数据并未得到 OpenAI 的确认,因此需要谨慎对待。

我们可以看到,对于基于扩散的模型如 DiT 和 Sora,其推理过程的代价要高得多:一个参数为 675M 的 DiT-XL 模型消耗的推理计算量约等于一个参数为 70B 的 LLama 2 模型。我们甚至可以看到,就推理工作负载而言,Sora 的代价比 GPT-4 还要高出几个数量级。

需要再次强调的是,上述许多数据都是估计值,并基于一些简化假设。例如,实际的 GPU 的 FLOPS 利用率、内存容量和内存带宽的限制以及如 推测性解码 等高级技术等因素并未被考虑在内。

如果 Sora 类型的模型获得大量市场份额,推理计算量会怎样

在这一部分,我们将从 Sora 的计算需求出发,推断如果要在较大规模运行类似 Sora 的模型,需要多少 Nvidia H100,这意味着 AI 生成的视频在像 TikTok 和 YouTube 这样的流行视频平台上得到了大规模的市场渗透。

  • 我们假设每小时 Nvidia H100 生成 5 分钟的视频(详见上文),相当于每天每个 H100 生成 120 分钟的视频
  • TikTok:每天 1700 万分钟的视频(总共 3400 万个视频 × 平均长度 30 秒),假设 AI 所产生的影片占比达 50%(来源
  • YouTube:每天 4300 万分钟的视频,假设 AI 所产生的影片占比达 15%(主要是 2 分钟以下的视频)
  • 每天由 AI 生成的总视频:850 万 + 650 万 = 1070 万分钟
  • 为了支持 TikTok 和 YouTube 的创作者社区,我们需要约 89k 的 Nvidia H100

需要注意的是,由于需要考虑的各种因素,这个数字可能过低:

  • 我们假设 FLOPS 的使用率为 100%,并未考虑到内存和通信的瓶颈。实际上,50% 的使用率更为切合实际,这使得实际需求增加了 2 倍。
  • 需求并不是在时间上均匀分布,而是存在高峰期。尤其是在需求高峰时,我们需要相应地增加更多的 GPU 来维持所有的流量。我们认为,峰值需求对于所需的 GPU 数量,增加了另一个 2 倍的因素。
  • 内容创作者可能会生成多个候选视频,从中选出最好的一个。我们保守地假设,平均每上传一个视频会生成 2 个候选项,这又增加了一个 2 倍的因素。
  • 总的来说,我们在峰值需求时,需要约 720k 个 Nvidia H100 GPU

这证明了我们的信念,即随着生成式 AI 模型的普及和依赖度增加,推理计算将成为主导。对于像 Sora 这样的扩散型模型,这一点尤其显著。

此外,还需要注意,模型的扩展会进一步大幅度增加推理计算的需求。然而,通过更优化的推理技术和对整个技术栈的优化,可以抵消这部分的增长。

展示了预计驱动 OpenAI 的 Sora 等模型最直接需求的视频内容创作用例


我们始终在寻求反馈,以改进我们的思考方式。如果您有任何评论或建议,欢迎随时通过 matthias.plappert@factorialfunds.com 与我们联系。

脚注

  1. “Token”可以被大致理解为一个独立的词。↩︎︎
  2. 这篇论文的共同作者之一是 William Peebles,他现在是 OpenAI 的员工,并且是 Sora 技术报告的主要撰写人之一。↩︎︎
  3. 请参照“带有 Transformers 的可扩展扩散模型”,见图 9。↩︎︎
  4. 计算公式如下:DiT 的基本计算量 × 模型大小的增长率 × 数据集大小的增长率 × 由于 180 帧视频数据,但仅计算数据集的 50% 带来的计算增长。↩︎︎
  5. 不考虑内存限制,只考虑浮点运算次数(FLOPS)。↩︎︎
  6. 举例来说,维基百科的文章平均每篇约有 670 个单词。↩︎︎