acm-headergydF4y2Ba
登录gydF4y2Ba

ACM通信gydF4y2Ba

的观点gydF4y2Ba

源代码深度学习成本的增长gydF4y2Ba


彩色图表上的数据值,说明gydF4y2Ba

信贷:Ozz设计gydF4y2Ba

近年来,人工智能方法在软件工程(AI+SE)研究中的应用急剧增加。这两个领域的结合释放了非凡的新能力:Lachaux等人最近对编程语言的无监督机器翻译的研究,gydF4y2Ba15gydF4y2Ba例如,学习从c++中生成超过80%的Java方法——不需要策划示例。这在十年前听起来肯定像是一个遥远的未来,但如此快速的进展表明了深度学习在软件工程任务和领域的巨大而独特的潜力。gydF4y2Ba

然而,这些能力是有代价的。“秘密成分”是数据,Lachaux等人利用三种编程语言的1630亿个令牌的工作就是一个缩影。换个角度看,这不仅是几乎所有AI+SE领域先前数据集的近100倍;训练这一模型的估计成本高达数万美元。与接下来要做的事情相比,这也只是九牛一毛:训练最先进的语言模型gpt -3gydF4y2Ba2gydF4y2Ba-以百万计。对于拉肖等人进行研究的Facebook或OpenAI (GPT-3)来说,这可能是一个很小的代价,但这种成本的爆炸式增长趋势使得训练和测试这类模型的能力局限于少数几家大型技术公司,而且几乎超出了所有学术实验室的资源。因此,我们有理由担心,这种趋势的持续将扼杀学术实验室的一些创新能力,并将基于人工智能的SE研究的大部分未来交到精英工业实验室手中。这个观点是对行动的呼吁,我们在其中讨论当前的趋势,它们对我们的领域的重要性,并提出解决方案。gydF4y2Ba

回到顶部gydF4y2Ba

扩大规模的理由gydF4y2Ba

大规模培训深度学习者越来越重要:许多新的、更复杂的深度学习任务和应用都是通过更大的模型和数据集实现的。举一个最近流行的例子:OpenAI的GPT-3gydF4y2Ba2gydF4y2Ba语言模型拥有超过1000亿个参数(大约是AI+SE学术领域典型模型的1000倍)。gydF4y2Ba6gydF4y2Ba,gydF4y2Ba12gydF4y2Ba作者发现,这种前所未有的规模,使得它在从少数例子中学习新任务时非常熟练——之前没有更小的模型可以复制这种行为。这反映了一个共同的趋势:人工智能的创新越来越专注于非结构化、复杂的任务,因为这些任务更符合现实世界的目标。例如,学习主谓一致是与人工智能助手进行连贯对话的一个组成部分。前者主要需要基本的解析,为此可以构建成千上万个带标签的示例,因此非常容易学习。与此同时,后者涉及到沟通的许多层次和相互作用的特性,使得仅通过模仿来学习变得不那么明显。这仍然是人工智能研究的一个活跃领域。gydF4y2Ba

考虑到AI+SE研究历来采用了许多来自自然语言处理(NLP)研究的创新gydF4y2Ba一个gydF4y2Ba不奇怪的是,后者的这些趋势现在在前者中得到了呼应。这些年来,这两个领域的发展都在向更大的模型发展。最新流行的神经网络系列,变形金刚,gydF4y2Ba20.gydF4y2Ba随着培训预算的增加,绩效得到了特别稳定的提高。gydF4y2Ba13gydF4y2Ba这使得它们非常适合于自我监督的训练前设置,其中大量的数据(例如,来自维基百科的所有文本,来自GitHub的所有代码)被用来启动一个网络,以便在下游任务中获得成功。BERT等方法gydF4y2Ba5gydF4y2Ba,gydF4y2Ba17gydF4y2Ba和GPT-3gydF4y2Ba2gydF4y2Ba是在大型数据集上用简单目标训练的有效(非常)大型变形金刚。这些创新很快在AI+SE中得到了回应;在过去的两年里,许多这样的大型变形金刚被应用到建模代码中,如微软的工作所见,gydF4y2Ba6gydF4y2Ba,gydF4y2Ba18gydF4y2Ba谷歌gydF4y2Ba12gydF4y2Ba和Facebook AI。gydF4y2Ba15gydF4y2Ba最近,GitHub演示了通过他们的Copilot工具完成的大规模代码,该工具由OpenAI的Codex提供支持,利用12B参数,并对100B代币代码进行训练。gydF4y2Ba4gydF4y2Ba的gydF4y2Ba图在这里gydF4y2Ba显示了(log-)尺度和训练这些模型的大致成本(以云GPU成本为单位),左边括号中是最近在学术实验室训练的一个相对较大的模型的例子,右边括号中是NLP接下来(可能)的内容。gydF4y2Ba

uf1.jpggydF4y2Ba
数字2020年最先进的深度学习者的源代码模型和数据集大小(不是对数缩放),并以近似的培训成本作为参考。gydF4y2Ba

毫无疑问,它们未来的规模也会趋于一致;随着AI+SE领域的发展,AI模型的应用领域已经从相对简单的目标,如令牌级代码完成,gydF4y2Ba9gydF4y2Ba,gydF4y2Ba11gydF4y2Ba对于更具语义挑战性的任务,比如类型推断,gydF4y2Ba8gydF4y2Ba错误检测,gydF4y2Ba21gydF4y2Ba和程序修复。gydF4y2Ba19gydF4y2BaLachaux等人的工作表明了这一趋势的下一步发展方向:在监管相对较少的情况下,从更大的数据源学习。同样,海量数据集对于模型质量几乎是不可替代的gydF4y2Ba13gydF4y2Ba在NLP中可能也适用于源代码:Allamanis和Sutton在语言建模质量方面显示了一个显著的恒定趋势gydF4y2BangydF4y2Ba克模型,gydF4y2BabgydF4y2Ba最近的研究表明,对于深度模型也是如此,这是对模型大小的补充。gydF4y2Ba14gydF4y2Ba简而言之,数十亿代币和参数是未来的酒吧。gydF4y2Ba

回到顶部gydF4y2Ba

规模化的成本gydF4y2Ba

要达到这样的规模需要多少成本?要训练一个单一的、基于transformer的大型模型,需要多个高端gpu并行工作,通常需要几天或几周的时间。从图中可以看到,在32个gpu并行工作的情况下,仅训练Lachaux等人最终报告的云计算模型就要花费大约3万美元。训练GPT-3(花了80 V100 GPU年)gydF4y2Ba2gydF4y2Ba将花费200多万美元。这些数字只是反映了对已发布模型的训练;这一领域的研究通常涉及一系列的原型和烧蚀。通常,使用网格搜索从数百个候选参数中选择最优超参数(例如,层数、学习率和批处理大小)—例如,Hellendoorn等人在谷歌的基础设施上训练1000多个模型变体。gydF4y2Ba10gydF4y2Ba

这种在发现和评估新模型中的隐藏成本会迅速扩大成本,这就是为什么大多数研究实验室都购买内部机器,而不是依赖云计算。这需要大量的前期成本,几乎是任何学术实验室都无法承受的:例如,一台配备16个V100 gpu的服务器,NVidia-Lachaux等公司的成本为40万美元,耗电量是它的两倍。与此同时,美国国家科学基金会的平均拨款规模为3年约63万美元(中位数:50万美元),gydF4y2BacgydF4y2Ba其中大部分都是为了覆盖学生,这往往使得设备部分足够小,以至于仅仅在云中训练拉肖等人的最终模型将是一个挑战。因此,学术界不得不购买更便宜、数量更少的gpu,但这限制了培训。代码输入往往非常大(文件经常跨越数千个令牌),这在有限的GPU内存下表现很差,因此研究人员必须权衡模型大小、输入大小或训练批处理大小,因此他们的模型质量。gydF4y2Ba

回到顶部gydF4y2Ba

如何扭转局面gydF4y2Ba

尽管产业大规模扩张的趋势是普遍存在的,但AI+SE仍处于相对早期的阶段。如果我们能在这个差距变得不可逾越之前缓解这些问题,我们就很可能避免对这个领域的创新造成长期损害。gydF4y2Ba

类似的问题也困扰着超级计算领域,在有限的预算下,庞大的规模也给单个实验室带来了不可逾越的障碍。为了克服这一成本障碍,机构团体与资助机构和较小的公司联合资助大型计算集群(例如,利弗莫尔国家实验室(美国)和瑞士国家超级计算中心(瑞士))专门用于学术研究。在人工智能研究领域,CCC和AAAI联合发布了一个20年路线图,gydF4y2BadgydF4y2Ba这也凸显了产业界和学术界之间的资金缺口。他们解决这一问题的关键建议之一是创建专门的人工智能研究设施,可以容纳多达200名研究人员,并为他们提供推进人工智能最先进水平所需的计算基础设施。gydF4y2Ba

目前,在美国,只有一个名为COMET的大型gpu集群,gydF4y2BaegydF4y2Ba它包含144个GPU节点,每个节点有4个cpu——完全不足以支持这么多不同的工作。一条明确的前进道路是在大学(甚至国家)和资助机构之间建立大规模合作。理想情况下,这还包括产业资助,因为科技公司受益于高质量的学术研究(当前这波进步主要建立在学术研究的基础上)。将目前分布的所有资源集中在一起,创建具有数千个gpu的大型计算设施,将大大加快研究工作,并提供利用广泛资源共享中固有的未使用容量的显著好处。gydF4y2Ba

在较小的规模上,也有先例。近年来,随着软件资源库研究的日益重要,资金被用于创建专门的硬件和软件资源,以有效地从开源项目中收集公共数据集。NSF已经资助了几个这样的项目,包括Boa, BugSwarm和FastengydF4y2BafgydF4y2Ba都在100万至140万美元之间。现在,软件领域的深度学习被证明同样至关重要,因此有必要设立专门的资金,投资于中型到大规模的硬件。这样的资金将允许对(非常)大的模型进行集中培训,这些模型可以传播(和压缩),以便对下游任务进行微调,以提供给更小的实验室。我们还可以设想用25万美元左右的预算提供更小的资助,以使单个研究实验室能够购买复制图中所示的许多实验所需的机器。gydF4y2Ba

最后,如果我们不强调研究本身在帮助克服这些界限方面的潜力,那就是我们的失职。世界各地的研究小组都在致力于加速训练和模型压缩,gydF4y2Ba3.gydF4y2Ba,gydF4y2Ba7gydF4y2Ba,gydF4y2Ba16gydF4y2Ba这可以成为这个普遍存在的问题的主要民主化力量。此外,在AI+SE领域有许多卓有成效的研究追求,它们需要新颖的见解,而不是大量的计算资源;这使得更简单的模型可以实现更小、更有针对性的任务,而不是需要一个大型的万灵药模型。即便如此,总体趋势还是很明显的:模型的增长呈指数级增长,训练速度没有跟上这一前沿,而新想法越来越多地与大型模型并驾齐并进。我们认为,一个全面的研究议程赋予这两种追求权力。gydF4y2Ba

回到顶部gydF4y2Ba

我们是否走上了正轨?gydF4y2Ba

在美国,NSF正计划将其对人工智能研究的投资从2019年的2.97亿美元增加到2022年的7.34亿美元,gydF4y2BaggydF4y2Ba由于计算资源的高成本,承认这一增长是必要的。欧盟计划从2020年开始,每年投资200亿美元(比这大得多),专门用于推进所有领域的人工智能研究。虽然目前的资金结构并没有像我们在这个观点中提出的那样指定设备资金,但我们相信我们的建议可以很好地与这些预算增加相适应。我们相信软件研究对这些资源有特别及时的需求,并希望我们的建议能刺激必要的改变。gydF4y2Ba

回到顶部gydF4y2Ba

参考文献gydF4y2Ba

1.Allamanis M.和Sutton C.使用语言建模大规模挖掘源代码库。在gydF4y2Ba2013年10gydF4y2BathgydF4y2Ba采矿软件库工作会议。gydF4y2BaIEEE 207 - 216。gydF4y2Ba

2.布朗,T.B.等人。语言模型是少有机会的学习者。(2020);arXiv预印本arXiv: 2005.14165。gydF4y2Ba

3.幻灯片:为大规模深度学习系统的智能算法而不是硬件加速辩护。(2019);arXiv预印本arXiv: 1903.03129。gydF4y2Ba

4.陈明,等。评估用代码训练的大型语言模型。(2021);arXiv预印本arXiv: 2107.03374。gydF4y2Ba

5.德夫林,J.伯特:深度双向转换语言理解的预训练。(2018);arXiv预印本arXiv: 1810.04805。gydF4y2Ba

6.冯政等。Codebert:预先训练的编程和自然语言模型。(2020);arXiv预印本arXiv: 2002.08155。gydF4y2Ba

7.戈亚尔,p等人。精确,大的小批量sgd:训练imagenet在1小时。(2017);arXiv预印本arXiv: 1706.02677。gydF4y2Ba

8.Hellendoorn, V.J.等人。深度学习类型推理。在gydF4y2Ba2018年会议纪要gydF4y2BathgydF4y2BaACM欧洲软件工程会议暨软件工程基础研讨会联席会议。gydF4y2Ba(2018), 152 - 162。gydF4y2Ba

9.Hellendoorn和Devanbu, P.深度神经网络是源代码建模的最佳选择吗?在gydF4y2Ba2017年会议论文集gydF4y2BathgydF4y2Ba软件工程基础联席会议。gydF4y2Ba(2017), 763 - 773。gydF4y2Ba

10.Hellendoorn, V.J.等[n.d.]。源代码的全局关系模型。gydF4y2Ba

11.Hindle, A.等。关于软件的自然性。在gydF4y2Ba2012年34gydF4y2BathgydF4y2Ba软件工程国际会议(ICSE)。gydF4y2Ba(2012) IEEE 837 - 847。gydF4y2Ba

12.Kanade等人。预训练的源代码上下文嵌入(2019);arXiv预印本arXiv: 2001.00059。gydF4y2Ba

13.Kaplan, J.等。神经语言模型的比例定律。(2020);arXiv预印本arXiv: 2001.08361。gydF4y2Ba

14.Karampatsis R.-M。大代码=大词汇:源代码的开放词汇模型。(2020);arXiv预印本arXiv: 2003.07914。gydF4y2Ba

15.Lachaux M.-A。et al。编程语言的无监督翻译。(2020);arXiv预印本arXiv: 2006.03511。gydF4y2Ba

16.李政等。先训练大,再压缩:重新考虑模型的大小,以便有效地训练和推断变压器。(2020);arXiv预印本arXiv: 2002.11794。gydF4y2Ba

17.刘银汉,刘宇,等。RoBERTa:一种稳健优化的BERT预训练方法。(2019);arXiv预印本arXiv: 1907.11692。gydF4y2Ba

18.Svyatkovskiy等人。IntelliCode编写:使用转换器生成代码。(2020);arXiv预印本arXiv: 2005.08025。gydF4y2Ba

19.Vasic, M.等人。神经程序修复通过联合学习定位和修复。(2019);arXiv预印本arXiv: 1904.01720。gydF4y2Ba

20.Vaswani等人。你所需要的就是注意力。在gydF4y2Ba神经信息处理系统的研究进展。gydF4y2Ba(2017), 5998 - 6008。gydF4y2Ba

21.王s,等。自动学习用于缺陷预测的语义特征。在gydF4y2Ba2016年IEEE/ACM会议论文集gydF4y2BathgydF4y2Ba软件工程国际会议(ICSE)gydF4y2Ba(2016), 297 - 308。gydF4y2Ba

回到顶部gydF4y2Ba

作者gydF4y2Ba

文森特·j·HellendoorngydF4y2Ba(gydF4y2Bavhellendoorn@cmu.edugydF4y2Ba)是美国宾夕法尼亚州匹兹堡市卡内基梅隆大学计算机科学助理教授。gydF4y2Ba

Anand Ashok SawantgydF4y2Ba(gydF4y2Baanand.sawant@siemens.comgydF4y2Ba)是美国新泽西州普林斯顿市西门子公司技术公司的研究专家。gydF4y2Ba

回到顶部gydF4y2Ba

脚注gydF4y2Ba

a.这是因为代码和自然语言之间有许多相似之处——例如,单词和标识符、句子和语句,甚至像解析树这样的复杂依赖关系。gydF4y2Ba

b.具体来说,每个令牌熵随着训练数据规模的指数增长而线性改善。gydF4y2Ba1gydF4y2Ba

c.国家科学基金会向国会cise提交的2022财年预算申请;gydF4y2Bahttps://bit.ly/3qygfbBgydF4y2Ba

d.美国人工智能研究20年社区路线图;gydF4y2Bahttps://bit.ly/3FaUClCgydF4y2Ba

e。gydF4y2Bahttps://bit.ly/3Dzs9prgydF4y2Ba

f. NSF分别授予ID 1513263、1629976和EU H2020 ID 825328。gydF4y2Ba

g.国家科学基金会向国会cise提交的2022财年预算申请;gydF4y2Bahttps://bit.ly/3qygfbBgydF4y2Ba


版权归作者所有。gydF4y2Ba
向所有者/作者请求(重新)发布权限gydF4y2Ba

数字图书馆是由计算机协会出版的。版权所有©2022 ACM, Inc.gydF4y2Ba


没有发现记录gydF4y2Ba

登录gydF4y2Ba为完全访问gydF4y2Ba
»忘记密码?gydF4y2Ba »创建ACM Web帐号gydF4y2Ba
文章内容:gydF4y2Ba
Baidu
map