转载

OpenAI研究 人工智能和计算

我们发布的分析表明,自 2012 年以来,最大的 AI 训练运行中使用的计算量呈指数级增长,翻倍时间为 3.4 个月(相比之下,摩尔定律的翻倍期为 2 年). 自 2012 年以来,该指标增长了 300,000 多倍(2 年翻一番只会产生 7 倍的增长)。计算方面的改进一直是 AI 进步的关键组成部分,因此只要这种趋势继续下去,就值得为远远超出当今能力的系统的影响做好准备。

AlexNet 到 AlphaGo Zero:计算量增加 300,000 倍

20122013201420152016201720181e−41e−21e+01e+21e+4Petaflop/s-days3.4-month doublingAlexNetDropoutVisualizing andUnderstanding ConvNetsDQNSeq2SeqGoogleNetVGGResNetsNeural ArchitectureSearchXceptionTI7 Dota 1v1AlphaGoZeroAlphaZeroNeural MachineTranslationDeepSpeech2

计算总量,以 petaflop/s-days 为单位,[D]

petaflop/s-day (pfs-day) 包括在一天内每秒执行 1015 次神经网络操作,或总共约 1020 次操作。计算时间乘积是一种精神上的便利,类似于能量的 kW-hr。我们不测量硬件的峰值理论 FLOPS,而是尝试估计实际执行的操作数。我们将加法和乘法计为单独的运算,我们将任何加法或乘法计为单个运算,而不管数值精度如何(使“FLOP”有点用词不当),并且我们忽略了 集成模型本附录提供了进入该图的示例计算 。所示最佳拟合线的倍增时间为 3.4 个月

用于训练相对知名的选定结果,在他们的时间内使用了大量计算,并提供足够的信息来估计所使用的计算。
下载图表

概述

推动 AI 进步的三个因素:算法创新、数据(可以是监督数据或交互式环境)以及可用于训练的计算量。算法创新和数据难以追踪,但计算异常可量化,这为衡量 AI 进步的一种输入提供了机会。当然,使用海量计算有时只会暴露我们当前算法的缺点。但至少在许多当前领域内,更多的计算似乎可以 预见地带来更好的性能,并且通常与算法进步相辅相成。

对于此分析,我们认为相关数字不是单个 GPU 的速度,也不是最大数据中心的容量,而是用于训练单个模型的计算量——这是最有可能与如何关联的数字我们最好的模型很强大。每个模型的计算与整体批量计算有很大不同,因为 并行性 (硬件和算法)的限制限制了模型的大小或可以有效训练的程度。当然,重要的突破仍然是通过 适度的 计算量实现的——此分析仅涵盖计算能力。

这一趋势表示每年增长大约 10 倍。它部分是由定制硬件驱动的,允许以给定的价格(GPU 和 TPU)每秒执行更多操作,但它主要是由研究人员反复寻找并行使用更多芯片的方法并愿意支付经济成本推动的这样做。

时代

查看图表我们可以大致看到四个不同的时代:

  • 2012 年之前:使用 GPU 进行 ML 并不常见,导致图中的任何结果都难以实现。
  • 2012 年至 2014 年:在许多 GPU 上进行训练的基础设施并不常见,因此大多数结果使用 1-8 个 GPU,额定值为 1-2 TFLOPS,总计 0.001-0.1 pfs-days。
  • 2014 年至 2016 年:大规模结果使用 10-100 个 GPU,额定值为 5-10 TFLOPS,结果为 0.1-10 pfs-days。数据并行性的回报递减意味着更大规模的训练运行价值有限。
  • 2016 年至 2017 年:允许更大算法并行性的方法(例如 大批量大小、 架构搜索和 专家迭代)以及专用硬件(例如 TPU 和更快的互连)大大增加了这些限制,至少对于某些应用程序而言。

AlphaGoZero/AlphaZero 是大规模算法并行性最明显的公开示例,但这种规模的许多其他应用程序现在在算法上是可行的,并且可能已经在生产环境中发生。

期待

我们有多种理由相信图表中的趋势可能会继续。许多 硬件初创公司 正在开发 AI 专用芯片,其中一些声称他们将在未来 1-2 年内大幅提高 FLOPS/Watt(与 FLOPS/$ 相关)。简单地重新配置硬件,以更低的经济成本完成相同数量的操作,也可能会带来收益 。在并行性方面,上述许多最近的算法创新原则上可以乘法组合——例如,架构搜索和大规模并行 SGD。

另一方面,成本最终将限制趋势的并行性方面,物理学将限制芯片效率方面。我们认为,当今最大的训练运行使用的硬件购买成本为数百万美元(尽管摊销成本要低得多)。但当今的大部分神经网络计算仍用于推理(部署),而不是训练,这意味着公司可以重新调整用途或购买更大的芯片组进行训练。因此,如果存在足够的经济激励,我们可以看到更大规模的并行训练,从而使这种趋势持续数年。全球硬件总预算为 1 万亿美元 一年,所以绝对限制仍然很遥远。总的来说,鉴于上述数据、计算呈指数趋势的先例、ML 特定硬件的工作以及正在发挥作用的经济激励措施,我们认为相信这种趋势不会在短期内持续下去是错误的。

过去的趋势不足以预测这种趋势在未来会持续多久,或者在这种趋势持续的过程中会发生什么。 但是,即使是快速提高能力的合理潜力也意味着今天开始解决人工智能的安全 和 恶意使用问题至关重要 。远见对于负责任的决策和负责任的技术发展至关重要  ,我们必须走在这些趋势的前面,而不是对它们做出迟来的反应。

如果您想帮助确保 AI 进步造福全人类, 请加入我们 的 OpenAI。我们的研究和工程角色范围从 机器学习研究人员 到 政策研究人员 再到 基础设施工程师

附录:方法

使用两种方法来生成这些数据点。当我们有足够的信息时,我们直接计算每个训练示例中描述的架构中的 FLOP(加法和乘法)的数量,并乘以训练期间前向和反向传递的总数。当我们没有足够的信息直接计算 FLOPs 时,我们会查看 GPU 训练时间和使用的 GPU 总数,并假设一个利用率(通常为 0.33)。对于大多数论文,我们能够使用第一种方法,但对于相当少数的论文,我们依赖第二种方法,并且我们尽可能地计算这两种方法作为一致性检查。在大多数情况下,我们还与作者确认。计算的目的不是精确,但我们的目标是在 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 dataset) * (number of epochs)
= (11.4 * 10^9) * 2 * 3 * (1.2 * 10^6 images) * 128
= 10,000 PF = 0.117 pfs-days

对于某些深度学习框架中的已知模型架构,也可以通过编程方式对操作进行计数,或者我们可以简单地手动对操作进行计数。如果一篇论文提供了足够的信息来进行这种计算,那么它会非常准确,但在某些情况下,论文并没有包含所有必要的信息,作者也无法公开披露这些信息。

方法 2 的示例:GPU 时间

如果我们不能直接计算操作数,我们可以改为查看有多少 GPU 被训练了多长时间,并使用对 GPU 利用率的合理猜测来尝试估计执行的操作数。我们强调,这里我们不是计算峰值理论 FLOPS,而是使用理论 FLOPS 的假定分数来尝试猜测实际 FLOPS。根据我们自己的经验,我们通常假设 GPU 的利用率为 33%,CPU 的利用率为 17%,除非我们有更具体的信息(例如,我们与作者交谈或工作是在 OpenAI 完成的)。

例如,在AlexNet 论文中指出“我们的网络需要五到六天的时间才能在两个 GTX 580 3GB GPU 上进行训练”。根据我们的假设,这意味着总计:

Number of GPUs * (peta-flops/GTX580) * days trained * estimated utilization
= 2 * (1.58 * 10 ^ -3 PF) * 5.5 * 0.33
= 500 PF = 0.0058 pfs-days 

这种方法更近似,可以很容易地偏离 2 倍或更多;我们的目的只是估计数量级。在实践中,当这两种方法都可用时,它们通常排列得很好(对于 AlexNet,我们也可以直接计算操作数,这给了我们 0.0054 pfs-days 与 GPU 时间方法的 0.0058)。

1.2M images * 90 epochs * 0.75 GFLOPS * (2 add-multiply) * (3 backward pass) 
= 470 PF = 0.0054 pfs-days

选定的附加计算

辍学

1 GPU * 4 days * 1.54 TFLOPS/GTX 580 * 0.33 utilization 
= 184 PF = 0.0021 pfs-days
方法二

可视化和理解卷积网络

1 GPU * 12 days * 1.54 TFLOPS/GTX 580 * 0.33 utilization 
= 532 PF = 0.0062 pfs-days
方法二

DQN

Network is 84x84x3 input, 16, 8x8, stride 4, 32 4x4 stride 2, 256 fully connected
First layer: 20*20*3*16*8*8 = 1.23M add-multiplies
Second layer: 9*9*16*32*4*4 = 0.66M add-multiplies
Third layer: 9*9*32*256 = 0.66M add-mutliplies
Total ~ 2.55M add-multiplies
2.5 MFLOPs * 5M updates * 32 batch size * 2 multiply-add * 3 backward pass
= 2.3 PF = 2.7e-5 pfs-days
方法一

Seq2Seq

(348M + 304M) words * 0.380 GF * 2 add-multiply * 3 backprop * 7.5 epoch
= 7,300 PF = 0.085 pfs-days
方法一
10 days * 8 GPU’s * 3.5 TFLOPS/ K20 GPU * 0.33 utilization 
= 8,100 PF = 0.093 pfs-days
方法二

VGG

1.2 M images * 74 epochs * 16 GFLOPS * 2 add-multiply * 3 backward pass 
= 8524 PF = 0.098 pfs-days
方法一
4 Titan Black GPU’s * 15 days * 5.1 TFLOPS/GPU * 0.33 utilization 
= 10,000 PF = 0.12 pfs-days
方法二

DeepSpeech2

1 timestep = (1280 hidden units)^2 * (7 RNN layers * 4 matrices for bidirectional + 2 DNN layers) * (2 for doubling parameters from 36M to 72M) = 98 MFLOPs
20 epochs * 12,000 hours * 3600 seconds/hour * 50 samples/sec * 98 MFLOPs * 3 add-multiply * 2 backprop 
= 26,000 PF = 0.30 pfs-days
方法一
16 TitanX GPU’s * 5 days * 6 TFLOPS/GPU * 0.50 utilization 
= 21,000 PF = 0.25 pfs-days
方法二

异常

60 K80 GPU’s * 30 days * 8.5 TFLOPS/GPU * 0.33 utilization 
= 4.5e5 PF = 5.0 pfs-days
方法二

神经架构搜索

50 epochs * 50,000 images * 10.0 GFLOPSs * 12800 networks * 2 add-multiply * 3 backward pass 
= 1.9e6 PF = 22 pfs-days
方法一
800 K40’s * 28 days * 4.2 TFLOPS/GPU * 0.33 utilization 
= 2.8e6 PF = 31 pfs-days
方法二。在后面的论文中有详细介绍。

神经机器翻译

sqrt(10 * 100) factor added because production model used 2-3 orders of magnitude more data, but only 1 epoch rather than 10.
96 K80 GPU’s * 9 days * 8.5 TFLOPS * 0.33 utilization * sqrt(10 * 100)  
= 6.9e6 PF = 79 pfs-days
方法二

附录:最近使用适度计算量的新结果

大规模计算当然不是产生重要结果的必要条件。许多最近值得注意的结果只使用了适度的计算量。以下是一些使用适度计算的结果示例,这些计算提供了足够的信息来估计他们的计算。我们没有使用多种方法来估计这些模型的计算,并且对于上限,我们对任何缺失信息进行了保守估计,因此它们具有更多的总体不确定性。它们对我们的定量分析并不重要,但我们仍然认为它们很有趣并且值得分享:

附录:旧标题结果中使用的计算

我们用 1959 年到 2012 年的数据更新了我们的 分析 。从整体上看数据,我们清楚地看到在计算使用方面训练 AI 系统的两个不同时代:(a) 第一个时代,从 1959 年到 2012 年,这是由粗略跟踪摩尔定律的结果定义的,以及 (b) 从 2012 年到现在,使用大大超过宏观趋势的计算能力的结果的现代时代。广泛的 AI 投资历史通常被描述为繁荣与萧条的故事,但我们没有看到这反映在学习系统使用的计算的历史趋势中。AI 的寒冬和兴奋期似乎对用于训练模型的计算产生了很小的影响A[A]

正如在最初的分析中一样,我们关注训练模型的成本。这不包括像专家系统这样的人工智能系统,它在第一个时代吸引了大量投资。

在过去的半个世纪里。

训练 AI 系统中计算使用的两个不同时代

2-year doubling (Moore’s Law)3.4-monthModern ErarightFirst Eraleft19601970198019902000201020201e−141e−121e−101e−81e−61e−41e−21e+01e+21e+4Petaflop/s-daysPerceptronNETtalkLeNet-5BiLSTM for SpeechDeep Belief Nets andlayer-wisepretrainingEvolving LSTMsMLP based NNbreaks MNISTrecordHuman performanceon MNIST and NORBDropoutVisualizing andUnderstanding ConvNetsDQNSeq2SeqGoogleNetVGGDeepSpeech2ResNetsNeural ArchitectureSearchXceptionTI7 Dota 1v1AlphaGoZeroAlphaZeroNeural MachineTranslationAlexNetTD-Gammon v2.1RNN for SpeechALVINN
下载图表

从 1959 年的感知器开始 ,我们看到这些历史结果中使用的计算时间翻了约 2 年——从 2012 年开始,翻了 3.4 个月。很难仅从这些数据得出强有力的结论,但我们认为,这种趋势可能是由于可用于这些结果的计算量的限制以及扩大实验的意愿的结合。[乙]

有关这一时期 AI 计算历史的生动描述,请参阅 Hans Moravec 文章中的“False Start”部分。

对于此次更新的分析,我们遵循了原帖中概述的相同方法。如果可能,我们通过直接实现模型以编程方式计算结果中的 FLOP 数量。由于计算机体系结构在历史上有所不同,许多论文省略了其计算设置的细节,因此这些较旧的数据点更加不确定(我们对 2012 年后数据的原始分析目标是在 2-3 的因数内,但对于这些 2012 年前的数据点我们的目标是一个数量级的估计)。我们还创建了提供数据额外视图的图表:一张图表展示了随着时间的推移在基础知识、语音、语言、视觉和游戏中的计算使用情况,另一张图表可视化了每个数据点周围的误差条估计。

我们对 AI 系统中计算使用的未来非常不确定,但很难确信最近计算使用量快速增长的趋势会停止,而且我们看到有很多理由表明这种趋势可能会持续 下去。基于这一分析,我们认为政策制定者应该考虑增加资金C[C]

我们已经在 今年的国会作证中提倡为学术界提供额外 资金,并主张创建专用计算集群以帮助学术界和工业界协作基准测试和评估 AI 系统的安全性,以响应 NIST 的信息请求

 用于人工智能的学术研究,因为很明显,某些类型的人工智能研究的计算量越来越大,因此成本也越来越高。

脚注

  1. 正如在最初的分析中一样,我们关注训练模型的成本。这不包括像专家系统这样的人工智能系统,它在第一个时代吸引了大量投资。↩︎

  2. 有关这一时期 AI 计算历史的生动描述,请参阅 Hans Moravec 文章中的“False Start”部分。↩︎

  3. 我们已经在 今年的国会作证中提倡为学术界提供额外 资金,并主张创建专用计算集群以帮助学术界和工业界协作基准测试和评估 AI 系统的安全性,以响应 NIST 的信息请求↩︎

  4. petaflop/s-day (pfs-day) 包括在一天内每秒执行 1015 次神经网络操作,或总共约 1020 次操作。计算时间乘积是一种精神上的便利,类似于能量的 kW-hr。我们不测量硬件的峰值理论 FLOPS,而是尝试估计实际执行的操作数。我们将加法和乘法计为单独的运算,我们将任何加法或乘法计为单个运算,而不管数值精度如何(使“FLOP”有点用词不当),并且我们忽略了 集成模型本附录提供了进入该图的示例计算 。所示最佳拟合线的倍增时间为 3.4 个月↩︎

图标1下载

图表2下载