OpenAI解析「AI算力」:3个半月翻一倍,6年超过30万倍


来源:OpenAI

「雷克世界」编译:嗯~是阿童木呀、KABUDA、EVA


摘要:近日,OpenAI发布了一份分析报告显示,自2012年以来,在最大规模的人工智能训练中所使用的计算量呈指数级增长,3.5个月的时间翻一倍(相比之下,摩尔定律(Moore’s Law)有18个月的倍增周期)。自2012年以来,该指标增长了30多万倍(18个月的倍增周期只会增加12倍)。


计算方面的改进一直是人工智能发展的一个关键组成部分,因此只要这种趋势继续下去,就值得为远超出当今能力的系统所带来的影响做准备。


 

图表显示了以petaflop/s-days为单位的总计算量,用于训练相对熟知的选定结果,为它们使用了大量时间计算,并给出了足够的信息以估计所使用的计算。petaflop/s-day(pfs-day)包括一天里每秒执行1015个神经网络操作,或者总共大约1020个操作。计算时间的产品是一种精神上的便利,类似于能量中的kW-hr。


我们不测量硬件的峰值理论FLOPS,而是尝试估计所执行的实际操作的数量。我们将加法和乘法作为单独的操作,我们将任何加法或乘法作为单个操作,而不考虑数字的精确性(使“FLOP” 略微用词不当),并且忽略全套模型。附录中提供本图中的示例计算。所显示的最佳匹配线的倍增时间为3.43个月。


概述


推动人工智能发展的因素有三个:算法创新、数据(可以是监督数据或交互环境),以及可用于训练的计算量。算法创新和数据很难追踪,但计算是非同寻常可以进行量化的,它提供了一个衡量人工智能发展进程的机会。当然,使用大量的计算有时会暴露出我们当前算法的缺点。但至少在许多当前的领域中,更多的计算似乎可以预见性地得到更好的性能,并且通常是对算法进步的补充。


对于本分析,我们认为相关的数字不是单个GPU的速度,也不是最大数据中心的容纳量,而是用于训练单个模型的计算量——这是最有可能与最佳模型的有力程度相互关联的数字。每个模型的计算与总体计算有很大的不同,因为对并行性(硬件和算法)的限制约束了模型的大小,或者模型可以被有效地训练的程度。当然,重要的突破仍然是通过少量的计算来实现的——该分析仅涵盖计算能力。


这一趋势表明每年大约增长10倍。这在一定程度上是由自定义硬件驱动的,它允许在给定价格(GPU和TPU)中每秒执行更多的操作,但这主要是由研究人员推动的,他们反复寻找方法以在并行的情况下使用更多的芯片,并愿意为此支付经济成本。


阶段


从图中我们大致可以看到四个不同的阶段:


•2012年之前:在机器学习中使用GPU并不常见,这使得图中的任何结果都难以实现。


•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万亿美元,因此绝对的限制依然遥遥无期。


总的来说,考虑到上述数据、计算指数趋势的先例、机器学习特定硬件的运行以及经济上的激励措施,我们认为确信这种趋势在短期内不会持续存在是一个错误错误。


过去的趋势不足以预测这种趋势将持续多久,或者在它持续的过程中会发生什么。但即使存在能力迅速增长的合理潜力,也意味着现在就开始着手处理AI的安全性和恶意使用问题是至关重要的。深谋远虑对负责任的决策制定和负责任的技术发展而言至关重要,我们必须走在这些趋势的前面,而不是对它们作出姗姗来迟的反应。


附录:方法


我们使用了两种方法用于生成这些数据点。当我们有足够的信息时,我们直接在每个训练样本中所描述的架构中计算FLOP的数量(相加和相乘),并乘以训练期间的前向和后向通道总数。当我们没有足够的信息来直接计算FLOP时,我们查看了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论文中明确指出,“我们的网络需要花费5到6天的时间在两台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 


这种方法更为近似,我们可以轻易地减少二分之一甚至更多计算量;我们的目标只是估计数量级。在实践中,当这两种方法都适用时,它们通常可以很好地组合在一起(对于AlexNet而言,我们也可以直接进行计数操作,这时我们得到0.0054pfs-days,而对于GPU时间方法而言,我们得到0.0058pfs-days)。


1.2M images * 90 epochs * 0.75 GFLOPS * (2 add-multiply) * (3 backward pass) 

= 470 PF = 0.0054 pfs-days


选择的附加计算


•丢弃率(Dropout)


Method 2:

1 GPU * 4 days * 1.54 TFLOPS/GTX 580 * 0.33 utilization 

= 184 PF = 0.0021 pfs-days


•卷积神经网络的可视化与理解


Method 2:

1 GPU * 12 days * 1.54 TFLOPS/GTX 580 * 0.33 utilization 

= 532 PF = 0.0062 pfs-days


•Deep Q-Learning(DQN)


Method 1:

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


Method 1:

(348M + 304M) words * 0.380 GF * 2 add-multiply * 3 backprop * 7.5 epoch

= 7,300 PF = 0.085 pfs-days


Method 2:

10 days * 8 GPU’s * 3.5 TFLOPS/ K20 GPU * 0.33 utilization 

= 8,100 PF = 0.093 pfs-days


•VGG


Method 1:

1.2 M images * 74 epochs * 16 GFLOPS * 2 add-multiply * 3 backward pass 

= 8524 PF = 0.098 pfs-days


Method 2:

4 Titan Black GPU’s * 15 days * 5.1 TFLOPS/GPU * 0.33 utilization 

= 10,000 PF = 0.12 pfs-days


•DeepSpeech2


Method 1:

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


Method 2:

16 TitanX GPU’s * 5 days * 6 TFLOPS/GPU * 0.50 utilization 

= 21,000 PF = 0.25 pfs-days


•Xception


Method 2:

60 K80 GPU’s * 30 days * 8.5 TFLOPS/GPU * 0.33 utilization 

= 4.5e5 PF = 5.0 pfs-days


•神经结构搜索


Method 1:

50 epochs * 50,000 images * 10.0 GFLOPSs * 12800 networks * 2 add-multiply * 3 backward pass 

= 1.9e6 PF = 22 pfs-days


Method 2:

800 K40’s * 28 days * 4.2 TFLOPS/GPU * 0.33 utilization 

= 2.8e6 PF = 31 pfs-days

Details given in a [later paper](https://arxiv.org/pdf/1707.07012.pdf).


•神经机器翻译


Method 2:

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


附录:使用适度计算的最新研究结果


大规模计算显然不是产生重要结果的必要条件。近期许多值得关注的研究成果仅使用了少量的计算。下面是一些使用适度计算的结果的案例,这些案例提供了足够的信息来评估它们的计算。


我们没有采用多种方法来评估这些模型的计算,对于上限而言,我们对任何缺失的信息都进行了保守评估,因此它们具有更大的整体不确定性。它们对于我们的定量分析而言并不重要,但我们仍然认为它们很有趣,值得分享:


注意力就是你所需要的: 0.089 pfs-days (6/2017)

Adam优化器:less than 0.0007 pfs-days (12/2014)

学习对齐和翻译:0.018 pfs-days (09/2014)

生成式对抗网络:less than 0.006 pfs-days (6/2014)

Word2Vec: less than 0.00045 pfs-days (10/2013)

变分自编码器:less than 0.0000055 pfs-days (12/2013)


原文链接:https://blog.openai.com/ai-and-compute/


未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。


未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

18.图的接口类

namespace DSList{public interface IGraph<T>{int GetNumOfVertex(); //获取顶点的数目int GetNumOfEdge(); //获取边的数目bool IsGvNode(GvNode<T> v); //v是否为图的顶点int GetIndex(GvNode<T> v); //获得顶点V在顶点数组中的索引…

设计模式--单例模式

实验7&#xff1a;单例模式 本次实验属于模仿型实验&#xff0c;通过本次实验学生将掌握以下内容&#xff1a; 1、理解单例模式的动机&#xff0c;掌握该模式的结构&#xff1b; 2、能够利用单列模式解决实际问题。 [实验任务]&#xff1a;学号的单一 仿照课堂的身份证的…

DebugView 使用技巧

From&#xff1a;https://blog.csdn.net/bcbobo21cn/article/details/52401087 DbgView简介 1、什么是 DebugView ? DebugView是一个系统调试信息输出的捕获工具。debugview 是 Sysinternals 公司的系列调试工具。debugview 可以捕获程序中由 TRACE(debug版本)和 OutputDebug…

儿子转眼就长大:Hinton、LeCun、Bengio 口述神经网络简史

1960 年的水牛城&#xff0c;工作人员正在「精细调节」一台感知机作者&#xff1a; 杨晓凡 刘鹏 思颖摘要&#xff1a;几位最偏执的人坚持到了春天来临谷歌母公司 Alphabet&#xff0c;亚马逊&#xff0c;苹果&#xff0c;Facebook 和微软这些全球最大的科技巨头们&#xff0c;…

VHDL 语法小点(1)

1.对于以时钟触发的计数器&#xff0c;一般从0到N-1&#xff0c;共N。当时钟上升沿来临时&#xff0c;对于可能用于判决的计数器的值&#xff0c;为上一次时钟周期内所修改的值&#xff0c;是上个时钟周期的值&#xff0c;很重要。 2.如何消除毛刺&#xff1a;可以通过用寄存器…

VS2019 更新MSDN并创建快捷方式

From&#xff1a;https://www.cnblogs.com/Lzl678/p/10686324.html VS2017 下载离线MSDN文档&#xff1a;https://blog.csdn.net/sinat_26222723/article/details/79109653 1. 在线 MSDN 使用方法 1. 进入微软中文官网&#xff1a;https://www.microsoft.com/zh-cn/ 2. 所有…

贝叶斯网络之父Judea Pearl:要建立真正的人工智能,少不了因果推理

来源&#xff1a;专知参与 | Yingying, Xiaowen, Sanglei 2011年图灵奖得主&#xff0c;贝叶斯网络之父Judea Pearl认为现在人工智能的发展进入的新的瓶颈期&#xff0c;各种新的成果不过本质上不过是重复简单的“曲线拟合”工作。Pearl 认为人们应该更关注人工智能中的因果&am…

结构思考力~结构思考力的四个基本特点

反例 “懂事长您好&#xff01;刘经理来电话说系统出现突发状况&#xff0c;4点钟他无法参加会议了。小张说他晚一点开会没关系&#xff0c;明天再开也可以&#xff0c;但最好别11点30分之前开。可是会议室明天已经被别人预订了&#xff0c;但是星期五空着的。王总的秘书说&am…

【转】 VC MFC 钩子 实现 自绘 窗体 标题栏 非客户区

效果&#xff1a; 程序&#xff1a; #if !defined(_LJF_LJFHOOK_H)#define _LJF_LJFHOOK_H #if _MSC_VER > 1000#pragma once#endif #include <afxtempl.h>#define sLjfDialogOldProcTag _T("CDialog_oldProc")#define SYSBTN_NON -1#define SYSBTN_MIN 0#d…

Jupyter 安装使用

Jupyter的官网&#xff1a;http://jupyter.org/index.html 官方文档&#xff1a;https://jupyter-notebook.readthedocs.io/en/stable/https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks 1. jupyter notebook是什么 官网的介绍是&#xff…

机器人创世2500年简史:从公元前的木鸽到21世纪的波士顿机器狗

来源&#xff1a;InterestingEngineering编译&#xff1a;科技行者几个世纪以来&#xff0c;人类一直对机器人这一概念痴迷不已——从古代的石傀儡故事到现代科幻小说&#xff0c;我们时刻想象着以机械方式重现自身。尽管“机器人&#xff08;robot&#xff09;”一词由卡雷尔-…

结构思考力~结构化接收信息的三个步骤

第一步&#xff1a;识别信息中的事实、理由及结论。找出信息中哪些是观点类的&#xff0c;哪些是事实描述 类的信息&#xff0c;观点类的信息中哪些是结论、哪些是支撑结论的理由&#xff0c;并将它们区分开。 第二步&#xff1a;找到事实与观点的对应关系&#xff0c;并画出结…

VisualStudio 的 Spy++ —— 窗口、消息 的 查看分析利器

spy 中文使用手册&#xff1a;https://pan.baidu.com/s/1NtLQMP1odHDAla4VH8m9Mg 提取码&#xff1a;294c Spy使用方法&#xff1a;https://www.cnblogs.com/happykoukou/p/6755444.html 教你使用Spy查看软件的流氓行径&#xff1a;https://blog.csdn.net/zahuopuboss/ar…

plsql developer 创建表空间和临时表

PLSQL Developer 给oracle 10g 创建表空间 通过pl/sql登录到Oracle数据库上&#xff0c;然后执行菜单:文件/新建/命令窗口 &#xff0c;打开一个命令窗口然后在该命令窗口中执行脚本创建和删除表空间 创建表空间 Sql>create tablespace histdb datafile F:\oracle\product…

【南科大发言】人类赋予人工智能伦理,生物进化方向的突破是关键

作者&#xff1a;刘锋 互联网进化论 计算机博士这篇文章是根据2018年5月20日&#xff0c;我在南方科技大学举办的“人工智能时代的技术与人文&#xff1a;跨学科对话”学术研讨会上的发言内容整理形成、主要观点如下&#xff1a;生物进化方向不明朗&#xff0c;是导致人类社会…

《MFC初探》之变量类型

From&#xff1a;https://blog.csdn.net/a1459268562/article/details/70653695 MFC常用数据类型&#xff1a;https://www.cnblogs.com/xzxl/p/7955477.html 刚接触 MFC 的人一看到里面各种各样的关键字肯定傻眼了&#xff0c;仿佛完全是另外一门语言了&#xff0c;因为 MFC 中…

结构思考力~确定目标

ABCD目标法 受众&#xff08;Actor&#xff09; XXX条件&#xff08;Condition&#xff09;在XXX条件下行为&#xff08;Behavior&#xff09;完成XXX的任务/表现XXX的行为程度&#xff08;Degree&#xff09;达到XXX的标准或水平 例子&#xff1a;作为资深的销售经理&#xff…

WPF获取窗口句柄

.NET WinForm获取窗口句柄很方便&#xff0c;this.Handle搞定。 WPF就有些麻烦了&#xff0c;获取方法如下&#xff1a; 引入命名空间&#xff1a;using System.Windows.Interop; 获取方法&#xff1a;new WindowInteropHelper(this).Handle this是个Window类的实例 作者: 翟士…

谷歌如何利用人工智能重塑美国医疗行业?

来源&#xff1a;网络大数据谷歌正在押注未来医疗会变得数据结构化和人工智能化&#xff0c;它已经把 AI 运用到了疾病监测&#xff0c;新型数据基础设施和有潜力的保险等领域。在这篇报告里&#xff0c;我们将探索谷歌医疗行业的众多布局和未来可能会进入的领域。谷歌一直以来…

VS 编写 x64 内联汇编

From&#xff1a;https://www.cnblogs.com/talenth/p/9135626.html VS 中使用 X64 汇编&#xff1a;https://blog.csdn.net/kingswb/article/details/64108715 编写涉及系统特性的一些底层程序&#xff0c;特别是ShellCode&#xff0c;不可避免地要采用直接编写汇编代码的方式…