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