a16z:巨額計算成本壓力下,不同企業該如何選擇 AI 基礎設施?
撰文: Guido Appenzeller、Matt Bornstein 和 Martin Casado
来源:a16z
图片来源:由无界 AI工具生成
生成式人工智能的热潮是以计算为基础的。它的一个特性是,增加更多的计算量会直接导致更好的产品。通常情况下,研发投资与产品的价值更直接相关,而且这种关系明显是次线性的。但目前人工智能的情况并非如此,今天推动该行业发展的主要因素仅仅是训练和推理的成本。
虽然我们不知道真实的数字,但我们从可靠的消息来源听说,算力的供应十分紧张,需求超过了 10 倍!所以我们认为,现在,以最低的总成本获得计算资源已经成为人工智能公司成功的决定因素。
事实上,我们已经看到许多公司在计算资源上花费的资金占其总筹资额的 80% 以上。
在这篇文章中,我们试图分解 AI 公司的成本因素。绝对数字当然会随着时间的推移而变化,但我们不然我 AI 公司受计算资源的访问限制将立即缓解。因此,希望这是一个有助于思考的框架。
为什么 AI 模型的计算成本如此之高?
生成式人工智能模型种类繁多,推理和训练成本取决于模型的大小和类型。幸运的是,今天最流行的模型大多是基于 Transformer 的架构,其中包括热门的大型语言模型(LLM),如 GPT-3、GPT-J 或 BERT。虽然 transformer 的推理和学习操作的确切数量是特定于模型的(请参阅本文),但有一个相当准确的经验法则仅取决于参数的数量(即神经网络的权重)模型以及输入和输出 Token 的数量。
Token 基本上是几个字符的短序列。它们对应于单词或单词的一部分。获得对 token 的直觉的最好方法是使用公开的在线标记器(如 OpenAI)尝试标记化。对于 GPT-3,一个 token 的平均长度是 4 个字符。
Transformer 的经验法则是,对于一个具有 p 个参数的输入和一个长度为 n 个 token 的输出序列的模型,前向通过(即推理)大约需要 2*n*p 浮点运算(FLOPS)¹。对同一模型的训练,每个 token 大约需要 6*p 浮点运算(即,额外的后向传递需要多四次运算 ²)。你可以通过将其乘以训练数据中的 token 量来估算总的训练成本。
Transformer 的内存需求也取决于模型大小。对于推理,我们需要 p 个模型参数来适应内存。对于学习(即反向传播),我们需要在前向和后向传递之间存储每个参数的额外中间值。假设我们使用 32 位浮点数,这就是每个参数需要额外的 8 个字节。对于训练一个 1750 亿个参数的模型,我们需要在内存中保留超过一兆字节的数据 – 这超过了目前存在的任何 GPU,需要我们将模型分割到不同的卡上。推理和训练的内存需求可以通过使用更短长度的浮点值来优化,16 位已成为普遍现象,预计在不久的将来会有 8 位。
上表是几个流行模型的规模和计算成本。GPT-3 有大约 1750 亿个参数,对应 1,024 个 token 的输入和输出,计算成本大约为 350 万亿次浮点运算(即 Teraflops 或 TFLOPS)。训练一个像 GPT-3 这样的模型需要大约 3.14*10^23 的浮点运算。其他模型如 Meta 的 LLaMA 有更高的计算要求。训练这样的模型是人类迄今为止承担的计算量较大的任务之一。
总结一下:人工智能基础设施之所以昂贵,是因为底层的算法问题在计算上极其困难。与用 GPT-3 生成一个单词的复杂性相比,对一个有一百万个条目的数据库表进行排序的算法复杂性是微不足道的。这意味着你要选择能够解决你的用例的最小模型。
好消息是,对于 transformer,我们可以很容易地估计出一个特定大小的模型将消耗多少计算和内存。因此,选择合适的硬件成为下一个考虑因素。
GPU 的时间和成本争论
计算复杂性是如何转化为时间的?一个处理器核心通常可以在每个周期执行 1-2 条指令,由于 Dennard Scaling 的结束,在过去的 15 年中,处理器的时钟速率一直稳定在 3 GHz 左右。在不利用任何并行架构的情况下,执行单个 GPT-3 推理操作将需要 350 TFLOPS/(3 GHz*1 FLOP)或 116,000 秒,或 32 小时。这是非常不切实际的;相反,我们需要专门的芯片来加速这项任务。
实际上,今天所有的 AI 模型都在使用大量专用内核的卡上运行。例如,英伟达 A100 图形处理器有 512 个 “张量核心”,可以在一个周期内完成 4×4 矩阵乘法(相当于 64 次乘法和加法,或 128 个 FLOPS)。人工智能加速器卡通常被称为 GPU(图形处理单元),因为该架构最初是为桌面游戏开发的。在未来,我们预计人工智能将日益成为一个独特的产品系列。
A100 的标称性能为 312 TFLOPS,理论上可以将 GPT-3 的推理时间缩短到 1 秒左右。然然而,由于多种原因,这是一个过于简化的计算。首先,对于大多数用例来说,瓶颈不是 GPU 的计算能力,而是将数据从专门的图形存储器送到张量核心的能力。其次,1750 亿个权重将占用 700 GB,无法放入任何 GPU 的图形存储器中。需要使用分区和权重流等技术。第三,有一些优化(例如,使用更短的浮点表示,如 FP16、FP8 或稀疏矩阵),正在被用来加速计算。但是,总的来说,上面的数字让我们对当今 LLM 的总体计算成本有了直观的了解。
训练一个 transformer 模型每个标记花费的时间大约是进行推理的三倍。然而,考虑到训练数据集比推理提示大 3 亿倍,训练需要 10 亿倍的时间。在单个 GPU 上,训练需要数十年;在实践中,这是在专用数据中心的大型计算集群上进行的,或者更有可能是在云端。训练也比推理更难并行化,因为更新的权重必须在节点之间进行交换。GPU 之间的内存和带宽往往成为一个更重要的因素,高速互连和专用结构是很常见的。对于训练非常大的模型,创建一个合适的网络设置可能是首要挑战。展望未来,AI 加速器将在卡上甚至芯片上具备联网能力。
那么,这种计算复杂性如何转化为成本?正如我们在上面看到的,一个 GPT-3 推理,在 A100 上大约需要 1 秒钟,对于 1000 个 token 的原始计算成本在 0.0002 美元到 0.0014 美元之间(相比之下,OpenAI 的定价为 0.002 美元/1000 个 token)。这是一个非常低的价格点,使得大多数基于文本的人工智能用例在经济上是可行的。
另一方面,训练 GPT-3 则要昂贵得多。在上述速率下,再次仅计算 3.14*10^23 FLOPS 的计算成本,我们可以估计到 A100 卡上的单次训练费用为 56 万美元。在实践中,对于训练,我们不会在 GPU 上获得近 100% 的效率;但是我们也可以使用优化来减少训练时间。其他对 GPT-3 训练成本的估计从 50 万美元到 460 万美元不等,取决于硬件假设。请注意,这是一次运行的成本,而不是整体成本。可能需要多次运行,而云供应商将希望得到长期的承诺(下文有更多这方面的内容)。训练顶级的模型仍然很昂贵,但对于资金充足的初创公司来说是可以承受的。
总而言之,当今的生成式人工智能需要对人工智能基础设施进行大量投资。没有理由相信这会在不久的将来发生改变。训练像 GPT-3 这样的模型是人类有史以来计算量最大的任务之一。虽然 GPU 变得越来越快,而且我们找到了优化训练的方法,但人工智能的快速扩张抵消了这两种影响。
AI 基础设施的考虑因素
至此,我们已尝试让您对进行 AI 模型训练和推理所需的规模以及驱动它们的底层参数有了一定的了解。在这种背景下,我们现在想就如何决定使用哪种 AI 基础设施提供一些实用指南。
外部与内部基础设施
GPU 很酷。许多工程师和有工程意识的创始人都偏向于配置自己的人工智能硬件,这不仅是因为它可以对模型训练进行细粒度控制,还因为利用大量计算能力会带来一些乐趣(附件 A)。
然而,现实是,许多初创公司 – 尤其是应用程序公司 – 不需要在第一天就建立自己的人工智能基础设施。相反,像 OpenAI 或 Hugging Face(用于语言)和 Replicate(用于图像生成)这样的托管模型服务使创始人能够迅速搜索产品与市场的契合度,而不需要管理底层基础设施或模型。
这些服务已经变得如此之好,以至于许多公司可以直接依附于它们。开发人员可以通过提示工程和高阶微调抽象(即通过 API 调用进行微调)实现对模型性能的有意义的控制。这些服务的定价是基于消费的,所以它也经常比运行单独的基础设施更便宜。我们已经看到一些应用程序公司产生了超过 5000 万美元的 ARR,估值超过 10 亿美元,它们在后台运行托管模型服务。
另一方面,一些初创公司 – 特别是那些训练新的基础模型或建立垂直整合的人工智能应用 – 无法避免直接在 GPU 上运行自己的模型。要么是因为模型实际上是产品并且团队正在寻找“模型 - 市场契合度”,要么是因为需要对训练和/或推理进行细粒度控制才能实现某些功能或大规模降低边际成本。无论哪种方式,管理基础架构都可以成为竞争优势的来源。
云与数据中心的构建
在大多数情况下,云是你的 AI 基础设施的正确位置。对大多数初创企业和大公司来说,较少的前期成本,扩大和缩小规模的能力,区域可用性,以及较少因建立自己的数据中心而分心,是具有吸引力的。
但这一规则也有几个例外:
- 如果你的运营规模非常大,运行你自己的数据中心可能会变得更有成本效益。确切的价位根据地理位置和设置而不同,但通常需要每年超过 5000 万美元的基础设施支出。
- 你需要非常具体的硬件,而这些硬件你无法从云供应商那里获得。例如,没有广泛使用的 GPU 类型,以及不寻常的内存、存储或网络要求。
- 出于地缘政治的考虑,你无法找到一个可以接受的云。
如果你确实想建立自己的数据中心,对于自己的设置,已经有了全面的 GPU 价格/性能分析(例如,Tim Dettmer 的分析)。除了卡本身的成本和性能外,硬件的选择还取决于电源、空间和冷却。例如,两块 RTX 3080 Ti 卡加在一起的原始计算能力与 A100 相似,但各自的功耗是 700 W 与 300 W。在三年的生命周期内,以 0.10 美元/千瓦时的市场价格计算,3500 千瓦时的功率差异使 RTX3080 Ti 的成本增加了近 2 倍(约 1000 美元)。
综上所述,我们预计绝大部分初创企业都会使用云计算。
比较云服务提供商
亚马逊网络服务(AWS)、微软 Azure 和谷歌云平台(GCP)都提供 GPU 实例,但也出现了新的供应商,专门专注于人工智能工作负载。下面是我们看到的许多创始人用来选择云供应商的框架:
价格:下表显示了截至 2023 年 4 月 7 日一些主要和较小的专业云的价格。该数据仅供参考,因为实例在网络带宽、数据出口成本、CPU 和网络的额外成本、可用折扣和其他因素方面有很大的不同。
特定硬件的计算能力是一种商品。直截了当地讲,我们会期望价格相当统一,但事实并非如此。虽然云计算之间存在着实质性的功能差异,但它们不足以解释按需 NVIDIA A100 的定价在供应商之间相差近 4 倍。
在价格范围的顶端,大型公共云根据品牌声誉、经过验证的可靠性以及管理各种工作负载的需要收取溢价。较小的专业 AI 提供商通过运行专用数据中心(例如 Coreweave)或套利其他云(例如 Lambda Labs)来提供较低的价格。
实际上,大多数大型买家直接与云供应商谈判价格,通常承诺一些最低支出要求以及最低时间承诺(我们看到的是 1-3 年)。谈判之后,云计算之间的价格差异会有所缩小,但我们看到上表中的排名保持相对稳定。同样重要的是要注意,小公司可以从专业云中获得积极的定价,而不需要大量的支出承诺。
可用性: 最强大的 GPU(如 Nvidia A100 s)在过去 12 个多月里一直供不应求。
考虑到前三大云计算供应商的巨大购买力和资源池,认它们拥有最佳可用性是合乎逻辑的。但是,有点令人惊讶的是,许多初创企业并没有发现这是真的。大的云服务商有大量的硬件,但也有大量的客户需求需要满足 – 例如,Azure 是 ChatGPT 的主要主机 – 并且不断增加/释放容量以满足需求。同时,Nvidia 已经承诺在整个行业广泛提供硬件,包括为新的专业供应商分配。(他们这样做既是为了公平,也是为了减少对几个大客户的依赖,这些客户也在与他们竞争)。
因此,许多初创公司在较小的云计算供应商那里发现了更多可用的芯片,包括尖端的 Nvidia H100 s。如果你愿意与较新的基础设施公司合作,你可能会减少硬件的等待时间,并可能在这个过程中节省资金。
计算交付模式: 今天的大型云只提供带有专用 GPU 的实例,原因是 GPU 虚拟化仍是一个未解决的问题。专业的人工智能云提供其他模式,如容器或批处理作业,可以处理单个任务,而不产生实例的启动和拆卸成本。如果你对这种模式感到满意,它可以大大降低成本。
网络互连: 具体到培训方面,网络带宽是选择供应商的一个主要因素。训练某些大型模型时,需要在节点之间使用专用网络的集群,如 NVLink。对于图像生成,出口流量费用也是一个主要的成本驱动因素。
客户支持: 大型云供应商为数以千计的产品 SKU 中的大量客户提供服务。除非你是一个大客户,否则很难得到客户支持的关注,或得到问题解决。另一方面,许多专门的人工智能云,甚至为小客户提供快速和响应的支持。这部分是因为他们的运营规模较小,但也因为他们的工作负载更加同质化,所以他们更有动力去关注人工智能的具体功能和错误。
比较 GPU
在其他条件相同的情况下,最高端的 GPU 在几乎所有的工作负载上都会表现最好。然而,正如你在下面的表格中所看到的,最好的硬件也是相当昂贵的。为你的特定应用选择正确类型的 GPU 可以大大降低成本,并可能在可行和不可行的商业模式之间产生差异。
决定在列表中走多远——即为您的应用程序确定最具成本效益的 GPU 选择——主要是一个技术决策,超出了本文的范围。但我们将在下面分享一些我们认为最重要的选择标准:
训练与推理:正如我们在上面第一节中所看到的,训练一个 Transformer 模型需要我们存储 8 个字节的数据用于训练,此外还有模型权重。这意味着一个典型的拥有 12 GB 内存的高端消费级 GPU 几乎不能用来训练一个 40 亿参数的模型。在实践中,训练大型模型是在机器集群上进行的,每台服务器最好有许多 GPU,大量的 VRAM,以及服务器之间的高带宽连接(即,使用顶级数据中心 GPU 建立的集群)。
具体来说,许多模型在英伟达 H100 上的成本效益最高,但就目前而言,它很难找到,通常需要一年以上的长期承诺。而英伟达 A100 运行着大多数模型训练;它更容易找到,但对于大型集群,可能也需要长期承诺。
内存要求:大型 LLM 的参数数量太多,无法装入任何卡中。它们需要被分割到多个卡中,并需要一个类似于训练的设置。换句话说,即使是 LLM 推理,您也可能需要 H100 或 A100。但是较小的模型(例如,Stable Diffusion)需要更少的 VRAM。虽然 A100 仍然很受欢迎,但我们已经看到初创公司使用 A10、A40、A4000、A5000 和 A6000,甚至是 RTX 卡。
硬件支持:虽然与我们交谈过的公司中的绝大多数工作负载都在英伟达上运行,但也有一些公司开始尝试使用其他供应商。最常见的是谷歌的 TPU,而英特尔的 Gaudi 2 似乎也得到了一些关注。这些供应商所面临的挑战是,你的模型的性能往往高度依赖于这些芯片的软件优化的可用性。你可能必须做一个 PoC,以了解性能。
延迟要求:一般来说,对延迟不太敏感的工作负载(例如,批量数据处理或不需要交互式用户界面响应的应用程序)可以使用功率较小的 GPU。这可以减少 3-4 倍的计算成本(例如,比较 AWS 上的 A100 s 与 A10 s)。另一方面,面向用户的应用程序往往需要高端卡来提供有吸引力的实时用户体验。优化模型往往是必要的,以使成本达到一个可控的范围。
峰值:生成式人工智能公司经常看到需求的急剧上升,因为这项技术是如此新颖且令人兴奋。在新产品发布的基础上,请求量在一天内增加 10 倍,或每周持续增长 50%,这是很正常的。在低端 GPU 上处理这些峰值通常更容易,因为更多的计算节点可能会按需提供。如果这种流量来自参与度较低或留存率较低的用户,那么以牺牲性能为代价,以较低成本的资源为此类流量提供服务通常也是有意义的。
优化和调度模型
软件优化可以极大地影响模型的运行时间 - 10 倍的收益并不罕见。然而,你需要确定哪些方法对你的特定模型和系统最有效。
有些技术对相当广泛的模型有效。使用较短的浮点表示(即 FP16 或 FP8 与原始的 FP32 相比)或量化(INT8、INT4、INT2)实现的加速通常与位数的减少成线性关系。这有时需要修改模型,但现在有越来越多的技术可以实现混合或更短精度的自动工作。修剪神经网络通过忽略低值的权重来减少权重的数量。结合高效的稀疏矩阵乘法,这可以在现代 GPU 上实现大幅提速。此外,另一组优化技术解决了内存带宽瓶颈(例如,通过流式模型权重)。
其他的优化是高度针对模型的。例如,Stable Diffusion 在推理所需的 VRAM 量方面取得了重大进展。还有一类优化是针对硬件的。英伟达的 TensorML 包括一些优化,但只能在英伟达的硬件上运行。最后,但同样重要的是,人工智能任务的调度可以创造巨大的性能瓶颈或改进。将模型分配到 GPU 上,以尽量减少权重的交换,如果有多个 GPU 可用,则为任务挑选最佳 GPU,以及通过提前批处理工作负载来尽量减少停机时间,这些都是常见的技术。
最后,模型优化仍然是一门黑魔法,我们接触过的大多数初创公司都与第三方合作,以帮助解决其中一些软件方面的问题。通常,这些不是传统的 MLops 供应商,而是专门针对特定生成模型(例如 OctoML 或 SegMind)进行优化的公司。
人工智能基础设施成本将如何演变?
在过去的几年里,我们看到模型参数和 GPU 计算能力都呈指数级增长。目前还不清楚这种趋势是否会继续。
今天,人们普遍认为,在最佳参数数量和训练数据集的大小之间存在着一种关系(关于这一点,请参阅 Deepmind 的 Chinchilla 的研究)。今天最好的 LLM 是在 Common Crawl(45 亿个网页的集合,或者说约占现存所有网页的 10%)上训练的。训练语料库还包括维基百科和一个图书集,尽管两者都要小得多(现存的图书总数估计只有约 1 亿册)。其他想法,如转录视频或音频内容,也被提出来,但这些都没有接近的规模。目前还不清楚我们是否能获得一个比已经使用的数据集大 10 倍的非合成训练数据集。
GPU 性能将继续提高,但速度也会变慢。摩尔定律仍然完好无损,允许更多的晶体管和更多的内核,但功率和 I/O 正在成为限制因素。此外,许多用于优化的低垂果实已经被摘下。
然而,这并不意味着我们预计对计算容量的需求不会增加。即使模型和训练集的增长放缓,人工智能行业的增长和人工智能开发者数量的增加将推动对更多更快的 GPU 的需求。在模型的开发阶段,很大一部分 GPU 容量被开发人员用于测试,而这种需求随着人数的增加而线性增长。没有迹象表明,我们今天的 GPU 短缺将在不久的将来减轻。
这种持续的人工智能基础设施的高成本是否会形成护城河,使新进入者无法追赶资金充足的在位者?我们还不知道这个问题的答案。今天,LLM 的训练成本可能看起来像护城河,但 Alpaca 或 Stable Diffusion 等开源模型表明这些市场仍处于早期阶段并且可能会迅速变化。随着时间的推移,新兴 AI 软件堆栈的成本结构(请参阅我们之前的帖子)可能开始看起来更像传统软件行业。
最终,这将是一件好事:历史表明,这会带来充满活力的生态系统,并为创业者提供快速创新和大量机会。
感谢 Moin Nadeem 和 Shangda Xu 在写作过程中的投入和指导。