在被大规模采用后,Sora 的推理成本将很快超过训练成本。
OpenAI 推出的 Sora 模型能够在各种场景下生成极其逼真的视频,吸引了全世界的目光。
近日,投资机构 factorial funds 发表了一篇博文,深入探讨了 Sora 背后的一些技术细节,并对这些视频模型可能产生影响进行了探讨。
最后,文中还讨论了对用于训练 Sora 等模型的算力的看法,并对训练计算与推理计算的算力比较进行了预测,这对估计未来 GPU 需求具有重要意义。机器之心对此文进行了整理。
本报告的主要调查结果总结如下:
-
Sora 是一个建立在扩散 Transformers(DiT)、潜在扩散模型之上的扩散模型,模型和训练数据集似乎都更大更多。
-
Sora 证明,扩大视频模型是有效的,与大语言模型(LLM)类似,将模型做得更大将是快速改进模型的主要驱动力。
-
Runway、Genmo 和 Pika 等公司正在围绕类 Sora 视频生成模型构建直观的界面和工作流程。这将决定它们的用途和可用性。
-
Sora 需要大量的计算能力来训练,至少需要在 4200~10500 块英伟达 H100 GPU 上训练 1 个月。
-
推理阶段,估计每个 H100 GPU 每小时最多可以生成约 5 分钟的视频。与 LLM 相比,像 Sora 这样基于扩散的模型推理成本要高几个数量级。
-
随着类 Sora 模型的广泛部署,推理计算消耗将多于训练计算消耗。「平衡点」估计为 1530 万至 3810 万分钟的视频生成,之后在推理上花费的计算会比原始训练更多。作为参考,TikTok 每天上传 1700 万分钟的视频,YouTube 每天上传 4300 万分钟的视频。
-
假设 TikTok(所有视频时长的 50%)和 YouTube(全部视频时长的 15%)等流行平台上大量采用人工智能做视频生成,考虑到硬件利用率和使用模式,本文估计推理阶段的计算峰值需求约为 72 万块 Nvidia H100 GPU。
总之,Sora 在视频生成的质量和能力方面取得了重大进展,但也有可能大大增加对 GPU 推理计算的需求。
Sora 的诞生背景
Sora 是一种扩散模型。扩散模型是图像生成领域的热门模型,著名的模型有 OpenAI 的 DALL・E 和 Stability AI 的 Stable Diffusion。最近,Runway、Genmo 和 Pika 等公司也在探索视频生成,很可能也利用了扩散模型。
从广义上讲,扩散模型是一种生成式机器学习模型,它通过向数据中添加随机噪声来逐步反向学习,最终学会创建与其所训练的数据(如图像或视频)相似的数据。这些模型从纯粹的噪声模式开始,逐步去除噪声,再完善模型,直至将其转化为连贯而详细的输出。
扩散过程示意图:噪声被逐步去除,直至输出清晰可见详细的视频。图片摘自 Sora 技术报告。
这与大语言模型(LLM)在概念上的工作方式明显不同:LLM 会一个接一个地反复生成 token(这被称为自回归采样)。Token 一旦产生,就不会再改变。人们在使用 Perplexity 或 ChatGPT 等工具时,可能已经见识过这种效果:答案会一个字一个字地逐渐出现,就像有人在打字一样。
Sora 的技术细节
OpenAI 在发布 Sora 的同时,还发布了一份技术报告。遗憾的是,这份报告的细节不多。不过,其设计似乎深受《Scalable Diffusion Models with Transformers》这篇研究论文的影响,该论文提出了一种基于 Transformer 的架构,称为 DiT(Diffusion Transformers 的缩写),用于图像生成。Sora 似乎将这项工作扩展到了视频生成。因此,结合 Sora 技术报告和 DiT 论文,就可以相当准确地了解 Sora 模型的工作原理。
Sora 有三个重要部分:1)它不是在像素空间,而是在隐空间中执行扩散(又称潜在扩散);2)它使用 Transformers 架构;3)它似乎使用了一个非常大的数据集。
潜在扩散
要理解第一点,即潜在扩散,可以考虑生成一幅图像,并使用扩散生成每个像素。然而,这样做的效率非常低(例如,一幅 512x512 的图像有 262,144 个像素)。取而代之的方法是,首先将像素映射成具有一定压缩系数的隐空间表征,在这个更紧凑的隐空间中执行扩散,最后再将隐空间表征解码回像素空间。这种映射大大降低了计算复杂度:以 64 位的隐空间为例,只需生成 64x64=4,096 个表征,而不必在 512x512=262,144 个像素上运行扩散过程。这一想法是《High-Resolution Image Synthesis with Latent Diffusion Models》论文中的关键突破,也是稳定扩散技术的基础。
从像素(左侧)到潜在表示(右侧的方框网格)的映射。图片摘自 Sora 技术报告。
DiT 和 Sora 都采用了这种方法。对于 Sora 来说,另一个考虑因素是视频具有时间维度:视频是图像的时间序列,也称为帧。从 Sora 的技术报告中可以看出,从像素映射到隐空间的编码步骤既发生在空间上(指压缩每个帧的宽度和高度),也发生在时间上(指跨时间压缩)。
Transformers
关于第二点,DiT 和 Sora 都用普通的 Transformer 架构取代了常用的 U-Net 架构。这很重要,因为 DiT 论文的作者观察到,使用 Transformer 能稳定地扩大模型规模:随着训练计算量的增加(训练模型的时间延长或模型增大,或两者兼而有之),性能也会随之提高。Sora 的技术报告也指出了同样的情况也适用于视频,并提供了一个说明。
关于模型质量如何随训练计算量的增加而提高的说明:基本计算量、4 倍计算量和 32 倍计算量(从左到右)。视频摘自 Sora 技术报告。
这种缩放自由度可以用所谓的缩放定律(scaling law)来量化,是一种重要的特性,以前在大语言模型(LLM)和其他模态的自回归模型中都对其进行过研究。应用缩放以获得更好模型的能力是 LLM 快速发展的主要推动力之一。既然图像和视频生成也有同样的特性,我们应该期待同样的缩放方法在这里也能发挥作用。
数据
训练像 Sora 这样的模型所需的最后一个关键要素是标注数据,本文认为这就是 Sora 的秘诀所在。要训练像 Sora 这样的文本生成视频模型,需要成对的视频和文本描述。OpenAI 并没有详细介绍他们的数据集,但他们暗示数据集非常庞大:「我们从大语言模型中汲取灵感,这些模型通过在互联网级规模的数据上进行训练,获得了通用能力」。OpenAI 还发布了一种用详细文本标签注释图像的方法,该方法曾被用于收集 DALLE・3 数据集。其总体思路是在数据集的一个标注子集上训练一个标注模型,然后使用该标注模型自动标注其余的数据集。Sora 的数据集似乎也采用了同样的技术。
Sora 的影响分析
本文认为 Sora 有几个重要的影响,如下所示。
视频模型开始真正有用
Sora 生成的视频质量有一个明显的提升,在细节和时间一致性方面都是如此(例如,该模型能够正确处理物体在暂时被遮挡时的持续性,并能准确生成水中的倒影)。本文认为,现在的视频质量已经足以应对某些类型的场景,可以在现实世界中应用。Sora 可能很快就会取代部分视频素材的使用。
视频生成领域公司的市场分布图。
但 Sora 还会面临一些挑战:目前还不清楚 Sora 模型的可操控性。编辑生成的视频既困难又耗时,因为模型输出的是像素。此外,围绕这些模型建立直观的用户界面和工作流程也是使其发挥作用的必要条件。Runway、Genmo 和 Pika 等公司以及更多公司(见上面的市场图)已经在着手解决这些问题。
模型缩放对视频模型有效,可以期待进一步的进展
DiT 论文的一个重要观点是,如上所述,模型质量会随着计算量的增加而直接提高。这与已观察到的 LLM 的规律相似。因此,随着视频生成模型使用越来越多的计算能力进行训练,我们应该期待这类模型的质量能快速提高。Sora 清楚地证明了这一方法确实有效,我们期待 OpenAI 和其他公司在这方面加倍努力。
数据生成与数据增强
在机器人和自动驾驶汽车等领域,数据本来就稀缺:网上没有机器人执行任务或汽车行驶的实时数据。因此,解决这些问题的方法通常是进行模拟训练或在现实世界中大规模收集数据(或两者结合)。然而,由于模拟数据往往不够真实,这两种方法都难以奏效。大规模收集真实世界的数据成本高昂,而且要为罕见事件收集足够多的数据也具有挑战性。
通过修改视频的某些属性对其进行增强的示例,在本例中,将原始视频(左)渲染为郁郁葱葱的丛林环境(右)。图片摘自 Sora 技术报告。
本文认为,类似 Sora 的模型在这方面会非常有用。类似 Sora 的模型有可能直接用于生成合成数据。Sora 还可用于数据增强,将现有视频转换成不同的外观。上图展示了数据增强的效果,Sora 可以将行驶在森林道路上的红色汽车视频转换成郁郁葱葱的丛林景色。使用同样的技术可以重新渲染白天与夜晚的场景,或者改变天气条件。
仿真和世界模型
一个前瞻的研究方向是学习所谓的世界模型。如果这些世界模型足够精确,就可以直接在其中训练机器人,或者用于规划和搜索。
像 Sora 这样的模型似乎是直接从视频数据中隐式地学习真实世界运作的基本模拟。这种「涌现模拟机制」目前还存在缺陷,但却令人兴奋:它表明,我们或许可以通过视频大规模地训练这些世界模型。此外,Sora 似乎还能模拟非常复杂的场景,如液体、光的反射、织物和头发的运动。OpenAI 甚至将他们的技术报告命名为「作为世界模拟器的视频生成模型」,这表明他们认为这是他们模型最重要的价值。
最近,DeepMind 公司的 Genie 模型也展示了类似的效果: 通过只在游戏视频上进行训练,该模型学会了模拟这些游戏(并制作了新的游戏)。在这种情况下,模型甚至可以在不直接观察动作的情况下学会对动作进行判断。同样,在这些模拟中直接进行学习也是可以期待的。
谷歌 DeepMind 的「Genie:生成式交互环境」介绍视频。
综合来看,本文认为 Sora 和 Genie 这样的模型可能会非常有用,有助于最终在真实世界的任务中大规模地训练具身智能体(例如机器人)。不过,这些模型也有局限性:由于模型是在像素空间中训练的,因此它们会对每一个细节进行建模,比如风如何吹动草叶,即使这与手头的任务完全无关。虽然隐空间被压缩了,但由于需要能够映射回像素,因此隐空间仍需保留大量此类信息,因此目前还不清楚能否在隐空间中有效地进行规划。
Sora 的计算量估算
Factorial Funds 公司内部喜欢评估模型在训练和推理阶段分别使用了多少计算量。这很有用,因为这样可以为预测未来需要多少计算量提供依据。不过,要估算出这些数据也很困难,因为有关用于训练 Sora 的模型大小和数据集的详细信息非常少。因此,需要注意的是,本节中的估算结果具有很大的不确定性,因此应谨慎对待。
根据 DiT 估算 Sora 的训练计算量
关于 Sora 的详细资料非常少,通过再次查看 DiT 论文(这篇论文显然是 Sora 的基础),也可以根据其中提供的计算数字进行推断。最大的 DiT 模型 DiT-XL 有 675M 个参数,训练时的总计算预算约为 10^21 FLOPS。这相当于约 0.4 台 Nvidia H100 使用 1 个月(或一台 H100 使用 12 天)。
现在,DiT 只是图像模型,而 Sora 是视频模型。Sora 可以生成长达 1 分钟的视频。如果我们假设视频是以 24fps 的速度编码的,那么一段视频最多由 1,440 帧组成。Sora 的像素到潜在空间映射似乎在空间和时间上都进行了压缩。如果假定采用 DiT 论文中相同的压缩率(8 倍),那么在潜空间中将有 180 帧。因此,当简单地将 DiT 推广到视频时,得到的计算倍率是 DiT 的 180 倍。
本文还认为,Sora 的参数要比 675M 大得多。本文作者估计至少得有 20B 的参数,所需计算量是 DiT 的 30 倍。
最后,本文认为 Sora 的训练数据集比 DiT 大得多。DiT 在 batch 大小为 256 的情况下进行了三百万次训练,即在总计 7.68 亿张图片上进行了训练(请注意,由于 ImageNet 仅包含 1,400 万张图片,因此相同的数据被重复了很多次)。Sora 似乎是在混合图像和视频的基础上进行训练的,除此之外,我们对该数据集几乎一无所知。因此,本文做了一个简单的假设,即 Sora 的数据集 50% 是静态图像,50% 是视频,而且数据集是 DiT 使用的数据集的 10 倍到 100 倍。然而,DiT 在相同的数据点上反复训练,如果有更大的数据集,可能性能还会更好。因此,本文认为 4-10 倍的计算倍率的假设是更合理的。
综上所述,考虑到额外数据集计算的低倍估算值和高倍估算值,本文得出以下计算结果:
-
低倍数据集估计值:10^21 FLOPS × 30 × 4 × (180 / 2) ≈ 1.1x10^25 FLOPS
-
高倍数据集估计值:10^21 FLOPS × 30 × 10 × (180 / 2) ≈ 2.7x10^25 FLOPS
这相当于使用 1 个月的 4,211 - 10,528 台 Nvidia H100 进行训练。
推理与训练计算的比较
我们往往会考虑的另一个重要因素是训练计算与推理计算的比较。从概念上讲,训练计算量非常大,但也是一次性成本,只产生一次。相比之下,推理计算量要小得多,但每次使用都会产生。因此,推理计算会随着用户数量的增加而增加,并且随着模型的广泛使用而变得越来越重要。
因此,研究「平衡点」是非常有用的,即推理所耗费的计算量大于训练所耗费的计算量。
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 次扩散步骤,那么每段视频的 FLOPS 总量就是 708×10^15。在生成 1530 万至 3810 万分钟的视频后,就会达到平衡点,此时所花费的推理计算量将超过训练计算量。作为参考,每天约有 4,300 万分钟的视频上传到 YouTube。
需要注意的是,对于推理而言,FLOPS 并不是唯一重要的因素。例如,内存带宽是另一个重要因素。此外,关于如何减少扩散步骤的数量的研究,可能会大大降低计算密集度,从而加快推理速度。FLOPS 利用率在训练和推理之间也会有所不同,在这种情况下,也需要考虑。
不同模型的推理计算比较
本文还对不同模型在不同模式下每单位输出的推理计算量是如何表现的进行了研究。这样做的目的是为了了解不同类别模型的推理计算密集程度,这对计算规划和需求有直接影响。需要强调的是,每个模型的输出单位都会发生变化,因为它们是在不同的模式下运行的:对于 Sora,单次输出是一段 1 分钟长的视频;对于 DiT,单次输出是一张 512x512px 的图片;而对于 Llama 2 和 GPT-4,单个输出被定义为包含 1,000 个 token 的文本的单个文档。
各模型每单位输出的推理计算量比较(Sora 为 1 分钟视频,GPT-4 和 LLama 为 21000 个文本 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)模型,每个专家有 220B 个参数,每个前向传递中有 2 个专家处于活动状态。不过对于 GPT-4,这些数字并未得到 OpenAI 的确认,因此仍需谨慎对待。
可以看到,像 DiT 和 Sora 这样基于扩散的模型的推理成本要高得多:DiT-XL(一个拥有 675M 参数的模型)与 LLama 2(一个拥有 70B 参数的模型)消耗的推理计算量大致相同。我们还可以看到,在推理工作负载方面,Sora 甚至比 GPT-4 更昂贵。
需要再次指出的是,上述许多数据都是估算值,依赖于简化的假设,没有考虑到 GPU 的实际 FLOPS 利用率、内存容量和内存带宽的限制以及推测解码等高级技术。
类 sora 模型获得显著的市场份额之后所需的推理计算量
本节根据 Sora 的计算需求推断出了需要多少台 Nvidia H100 才能大规模运行类似 Sora 的模型,这意味着人工智能生成的视频已经在 TikTok 和 YouTube 等流行视频平台上实现显著的市场渗透。
-
假设每台 Nvidia H100 每小时制作 5 分钟视频(详见上文),换言之每台 H100 每天制作 120 分钟视频。
-
TikTok :假设人工智能的渗透率为 50%,则每天的视频时长为 1700 万分钟(视频总数为 3400 万 × 平均时长为 30s)
-
YouTube :每天 4300 万分钟视频,假设人工智能的渗透率为 15%(大部分为 2 分钟以下的视频)
-
人工智能每天制作的视频总量:850 万 + 650 万 = 1 070 万分钟
-
支持 TikTok 和 YouTube 上的创作者社区所需的 Nvidia H100 总量:1,070 万 / 120 ≈ 89000
再基于以下各种因素考虑,这一数字可能有些保守:
-
假设 FLOPS 的利用率为 100%,并且没有考虑内存和通信瓶颈。实际上,50% 的利用率更符合实际情况,即增加 1 倍。
-
需求在时间上不是平均分布的,而是突发的。高峰需求尤其成问题,因为你需要更多的 GPU 才能满足所有流量的需求。本文认为,高峰需求会使所需 GPU 的最大数量再增加 1 倍。
-
创作者可能会生成多个候选视频,然后从这些候选视频中选出最佳视频。我们做了一个保守的假设,即平均每个上传的视频会生成 2 个候选视频,这又增加了 1 倍。
-
在峰值时,总共需要大约 720000 块 Nvidia H100 GPU
这表明,随着生成式人工智能模型变得越来越流行且实用,推理计算将占主导地位。对于像 Sora 这样的基于扩散的模型,更是如此。
还需要注意的是,扩展模型将进一步大大增加推理计算的需求。另一方面,其中一些问题可以通过更优化的推理技术和跨堆栈的其他优化方法来解决。
视频内容的创意驱动了对 OpenAI 的 Sora 等模型最直接的需求。