是如何估计与分析模型计算量的 OpenAI
发布时间:2024-11-15 00:46:35点击:
今天看到OpenAI前些年发布的一个模型计算量的分析,感觉很有价值,有需求的人童鞋可以看一下, 内容如下:
自 2012 年以来,最大规模 AI 训练运行中使用的计算量呈指数级增长,翻倍时间为 3.4 个月(相比之下,摩尔定律的翻倍期为 2年)。自 2012 年以来,这一指标增长了 300,000 多倍(2 年的翻倍期只能产生 7 倍的增长)。计算能力的提升一直是 AI 进步的关键组成部分,因此只要这一趋势持续下去,就值得为远远超出当今能力的系统带来的影响做好准备。
AlexNet 到 AlphaGo Zero:计算量增加了 300,000 倍
总计算量(以千万亿次/秒为单位),$[footnote-petaflops]$用于训练相对知名的选定结果,在其时间内使用了大量计算,并提供了足够的信息来估计所使用的计算。
概述
推动人工智能发展的因素有三个:算法创新、数据(可以是监督数据或交互式环境)以及可用于训练的计算量。算法创新和数据难以追踪,但计算却可以量化,为衡量人工智能进步的一项投入提供了机会。当然,大规模计算的使用有时只会暴露我们当前算法的缺点。
但至少在当前的许多领域中,更多的计算似乎可预见地带来更好的性能(,并且通常与算法的进步相补充。
对于此分析,OpenAi认为相关数字不是单个 GPU 的速度,也不是最大数据中心的容量,而是用于训练单个模型的计算量——这个数字最有可能与我们的最佳模型的强大程度相关。每个模型的计算与总体计算有很大不同,因为并行性受到限制((硬件和算法)限制了模型的大小或训练效果。当然,重要的突破仍然需要适度的(计算量——下面的分析仅涵盖计算能力。
这一趋势每年大约增长 10 倍。这在一定程度上是由定制硬件推动的,这些硬件允许以给定价格(GPU 和 TPU)每秒执行更多操作,但主要推动力是研究人员不断寻找并行使用更多芯片的方法,并愿意为此付出经济成本。
时代
根据提供的图表,我们可以将GPU在机器学习领域的发展历程分为四个阶段:
需要指出的是,2012年到2014年期间,大多数结果使用了1-8个GPU,每个GPU的性能峰值约为1-2 TFLOPS,共计0.001-0.1PFSDays。随着数据并行化带来的效益逐渐降低,进一步扩大规模的训练所带来的价值也会受到限制。
期待
基于给定的图表,OpenAI认为 ML 的这种趋势可能会继续存在。首先,许多硬件初创公司正在开发 AI 专用芯片,并声称在未来 1-2 年内将实现FLOPS/Watt的大幅提升(FLOPS/$ 也类似)。这意味着仅仅通过以更低的经济成本执行相同数量的操作,就可能带来好处。在并行性方面,许多最近的算法创新原则上可以相互累积,例如架构搜索和大规模并行 SGD。
然而,成本最终会限制这种趋势的并行性方面,而物理会限制芯片效率方面。当今最大规模的训练运营使用的硬件购买成本高达数百万美元(尽管摊销成本要低得多)。但事实上,大部分神经网络计算仍在推理(部署)中完成,而不是训练,这意味着公司可以重复利用或负担得起购买更大的芯片用于训练。因此,只要有足够的经济动力,我们可能会看到更大规模的并行训练运营,这将使这种趋势继续数年。
另外,全球硬件总预算为 1 万亿美元/年,因此绝对上限仍然遥遥无期。总的来说,考虑到以往的数据、计算指数趋势的先例、机器学习专用硬件的发展以及其中的经济动力,认为这种趋势不会在短期内继续下去是不切实际的。
虽然过去的趋势不足以预测未来这种趋势将持续多久,也不足以预测这种趋势将持续下去会发生什么,但即使有快速提升能力的合理潜力,也意味着现在开始解决人工智能的安全和恶意使用问题至关重要。远见至关重要,对于负责任的政策制定和负责任的技术发展,必须在这些趋势的前面行事,而不是迟缓地做出反应。
附录:方法
OpenAI使用两种方法生成数据点:
对于大多数论文,我们优先选择第一种方法;但是,对于一部分论文,我们采用第二种方法,并尽可能同时计算这两种方法以做一致性检查。OpenAI还与作者核实了结果。坐着的计算准确性不是非常严格,但能够在2-3倍范围内正确。并在下文提供了一些计算示例。
方法1:计算模型中的计算
当作者提供了前向传递中使用的操作数时,该方法非常便于使用。例如,Resnet 论文(尤其是 Resnet-151 模型)中给出了操作数。
计算公式为:(add-multiplies per forward pass) × (2 FLOPs/add-multiply) × (3 for forward and backward pass) × (number of examples in>Resnet-151 模型:
在某些深度学习框架中,我们甚至可以通过编程方式计算已知模型架构的操作数,或者手动计算操作数。如果论文提供了足够的信息来进行此计算,计算结果会非常准确。但是,在某些情况下,论文可能没有提供所有必要的信息,作者也可能无法透露这些信息。
方法2:GPU 时间
如果不能直接计算操作数,我们可以检查训练了多少个 GPU,训练花费了多长时间,然后假设 GPU 利用率,尝试估计执行的数量。OpenAI在这里没有计算峰值理论 FLOPS,而是使用假设的理论 FLOPS 分数来尝试猜测实际 FLOPS。根据经验,通常假设 GPU 的利用率为 33%,CPU 的利用率为 17%,除非Open获取到更具体的信息(例如,作者交流过,或工程是在 OpenAI 完成的)。
例如,AlexNet 论文中指出:"网络在两个 GTX 580 3GB GPU 上训练需要五到六天的时间"。根据我们的假设,这意味着总计算量为:
更多模型的计算
方法 2:1 GPU * 4 days * 1.54 TFLOPS/GTX 580 * 0.33 utilization = 184 PF = 0.0021 pfs-days
可视化并理解卷积网络(
方法 2: 1 GPU * 12 days * 1.54 TFLOPS/GTX 580 * 0.33 utilization = 532 PF = 0.0062 pfs-days
DeepSpeech2 (
Neural Architecture Search (
原文链接: