首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

亚马逊首席科学家李沐:构建深度学习开源生态的努力和思考

2020 年 7 月 9 日,以“智联世界 共同家园”为主题,以“高端化、国际化、专业化、市场化、智能化”为特色的世界人工智能大会云端峰会开幕。会上集聚了众多全球智能领域最具影响力的科学家和企业家,以及相关政府的领导人,围绕智能领域的技术前沿、产业趋势和热点问题发表演讲和进行高端对话。会议第二天,亚马逊首席科学家李沐在主题为“当AI在云端生长”的AWS论坛上发表了的演讲。以下为 InfoQ 根据嘉宾演讲进行的内容整理。

内容未经本人确认,由 InfoQ 依据现场视频进行整理,以下为李沐的演讲全文整理。

首先我们今天的报告是基于深度学习,深度学习在google趋势中的热度如下图所示:

在过去10年里面我们可以认为从2012年-2015年是深度学习的开始,几个算法上的突破使得深度学习在研究届得到了应用。2016年-2017年随着资本的介入、媒体的介入,使得深度学习和AI被大家知道和报道,2018年到2020年,可以认为是用户趋向于理性的阶段。我们知道了机器学习的一些局限性,我们也看到了深度学习在过去几年在不断地被简化并且成功地应用到工业界的应用上。

深度学习发展的三个阶段

针对上述三个阶段,我们也做过的思考也是不一样的。深度学习的黄金时代是2012年到2015年。2012年时,AlexNet赢下了ImageNet,这被认为是深度学习热潮的一个开端。AlexNet跟传统模型不一样的地方在于它有数十层的神经网络,以及它需要用多个GPU才能够有效地训练,这两点使得它的开发非常困难。这也导致了大量开发者需要有专有的深度学习框架才能很方便地进行深度学习的开发。当时,我们的第一个尝试是想做一个Theano,Theano是一个很早期的神经网络框架,它非常灵活,但是它比较慢。所以我们思考能不能做一个C++版的Theano使得它能更快一点。做出来后发现它特别像Caffe。第二个同时期的项目是Minerva想把NumPy拓展到GPU和自动求导上,使得深度学习能够用NumPy来开发。

这两个项目我们当时做得都不是那么完善,C++Net虽然比较高效,但是它不那么灵活,Minerva虽然灵活,但是它的性能也不那么高效。

2015年的时候我们在思考,要不要把这两个项目的所长结合在一起,这个项目的名字叫做MXNet,之后进入了Apache。当然,同年还有很多神经网络框架出现,包括在日本开发的对Python很友好的Chainer、Keras (Theano易用前端)以及TensorFlow(Theano增强版)。

2016年到2017年有比较大的两大趋势,第一个是自然语言应用的兴起。自然语言的兴起使得我们需要更灵活的前端,原因是自然语言处理直接处理的是文本,它有不一样的长度,结构可能也比较复杂,对于模型上的要求也更加高。第二个趋势是,近两年AI被广泛地报道,很多新的用户涌进来,他们需要门槛更低的框架。最典型的一个框架是PyTorch,它继承了来自于Torch大量的特性,并借鉴了Chainer。看到PyTorch的兴起,我们也借鉴了PyTorch的特性推出了Gluon前端。MXNet有三大可以关注的特性是:第一、我们有类似于Numpy的张量计算NDArray;第二、用户可以通过Gluon在Python比较友好的情况下进行神经网络的构建和训练;第三、通过hybridize切换到计算图后端来优化和脱离Python部署。

2018年到2019年,我们看到深度学习的热度在下降,这时候Theano停止了开发,Karas进入了到了默认的前端,Torch和Caffe停止了开发,继任者Caffe2也并入了PyTorch。目前市面上比较流行的框架包括了TensorFlow,它有强大的后端和生态链,使得它广泛地被公司开发者使用。PyTorch灵活的前端广受研究者的欢迎。

MXNet我们尝试让它像TensorFlow一样就比较好,有强大的后端,甚至能像PyTorch一样有比较灵活的前端,使它能够平衡研究者和工业级用户。当然这个远远不是结局。随着硬件需求的不断变化,系统也需要不断地迭代。

在2019年到2020年,我们做了两大比较重要的事情,第一,我们将Tensor API完全兼容NumPy,因为我们发现大部分Python用户在学习机器学习或者深度学习之前已经接触过NumPy,但是NumPy还是不够被深度学习用户所使用,我们需要对NumPy进行GUP加速,以及提供求导。在过去5年的技术积累上,我们也在编译器上做了大量的工作。终于使得我们可以完全进入NumPy,而且保证性能,使用起来也很方便。

同时,我们提到我们的深度学习框架时基于Gluon,但是我们还是需要用户来hybridize到后端计算图,使得用户需要考虑到一些事情。现在,用户不需要再考虑计算图和符号来执行,因为我们的优化已经做得足够好。用户只需要关心怎样在Python上使用NumPy接口来实现它的代码,然后系统可以将所有的代码转化成计算图,并且脱离Python来执行。

2017年,当大量用户进来的时候,我们观察到一个现象,当下的用户不再为深度学习框架感到兴奋,而是当它们本应该存在。那么,这时候,快速落地最为关键。如何有效、高效地处理数据,能够快速地训练模型,然后能够流畅地部署,这是用户关心的问题。因此,我们于2017年的时候在框架的基础上开始开发算法工具包,方便特定领域的模型的训练和部署,包括面想计算机视觉的GluonCV。

在算法工具包开发过程中,我们经历了两个阶段,第一个阶段我们更关注细节,我们保证每个模型都能提供很好的精度。我们发现论文中很多细节都被一笔带过,于是我们在实现GluonCV的时候,调用了大量的论文和代码,然后尝试把所有细节都用在一起。

下图是一个基于ResNet的结果,下图显示了三个ResNet 模型,X轴表示速度,Y轴表示精度,可以看到,每个红色点的最上方横线是此模型在论文中的精度,ResNet-50是最快的,精度也是最低的,ResNet-152和ResNet-101虽然比ResNet-50要慢,但是它们的精度也要更高。如果我们能将一些训练的技巧运用过来,可以看到它可以对整个模型进行显著的提升。如果允许模型进行细微的调动,在不影响太多速度的情况下,我们能更加进一步地提升它的精度。

更多地,我们发现这些结果不仅仅对一个模型适用,它几乎可以改变所有模型的精度。如下图所示,可能两条黄线的区别看起来不大,但实际上可能代表的是计算机视觉近几年的一些进展的总和。

工具包开发的第二个阶段是我们能够做一些解决用户问题的研究。举个例子,迁移学习是深度学习在计算机视觉领域兴起的一大原因,我们可以通过训练好的深度卷积神经网络来抽取图片的语义特征,然后用在其他诸如物体识别、图片分割等任务上。但是,深度卷积神经网络的研究主要关注在能够得到更好的ImageNet分上,实际使用中,大家仍然主要使用结构简单的RestNet。

我们的想法是,是不是能在不改变ResNet的结构的前提下,加入分裂注意力层,使将其能更好抽取语义特征。

我们还在GluonCV之外开发了面向自然语言处理的工具包GluonNLP。NLP和计算机视觉不一样的地方在于它的应用比较多样化。

此外,我们比较关注的方向是加速BERT在工业界的应用。我们第一个工作是在公有云的硬件上将BERT训练时间减少到一个小时之内,之前在一个小时之内的结果都是基于特制的集群。第二个工作是,我们在AWS G4实例上,一百万次的BERT推理开销降到1.5元钱以内。这样就使得BERT能够大量地、很便宜地应用在工业界的应用上。

如何入门深度学习?

2018年的时候,随着AI和深度学习的广泛普及,我们不断收到用户和工程师的反馈,他们都在询问想要学习深度学习,但是不知道如何开始。学习深度学习需要知道数学、模型、调参、实现、性能一样都不能少。对我个人而言,我发现最好学习的方法是将文字和公式转换成代码,并在实际数据上跑上几次,才能大概知道怎么回事儿。

在过去几年里面,我们针对不一样的用户提供了不一样的工具,针对骨灰级用户,我们提供深度学习框架,对资深用户,我们提供Python更加友好的前端,针对入门用户我们提供算法工具包。

那么,在接下来一年里,我们也在针对不一样的用户群做不一样的突破。

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/doCLr7UIvMZpze2BxBMz
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券