王敏捷 - 深度学习框架这十年!

**内容概览 **介绍了深度学习框架发展的三个时期:工具包时代(2014年前)、数据流时期(2014-2018)、新时代(2019年后)。强调了深度学习框架的重要性与推动因素,介绍了3位ACM人李沐、陈天奇和他一起将各自的技术Parameter Server、CXXNet、Minerva融合并创造了新的深度学习框架MXNet。敏捷学长也指出了在深度学习新时代,随着可微分编程、图神经网络等新领域的出现以及专用芯片的发展,深度学习框架会迎来更多机遇与挑战。

图片

完整版演讲视频:
http://mpvideo.qpic.cn/0bf2oeaagaaayeaexuphezpfa4odanyqaaya.f10002.mp4?dis_k=3977c0780513b85b6f04e763ecfd1aea&dis_t=1608187659&vid=wxv_1386191585075134465&format_id=10002

深度学习的浪潮其实到现在仅仅发展了十几年的时间。深度学习的火热到底是什么在驱动?

原因主要来自于三个方面:

(1)首先是规模很大的数据。俗话说巧妇难为无米之炊,大数据使得我们在训练神经网络的过程中有充分的资源可以利用;

(2)其次,算法也是非常非常重要的突破。比如说卷积神经网络、residual network、注意力机制这些算法的兴起,也是促成深度学习浪潮的重要因素。

(3)最后是算力。算力主要体现在两个方面:软件和硬件,其中软件对应的就是今天要讲的深度学习框架。

对于做人工智能方面的研究或者工业界的人士,或多或少都用过深度学习框架。在过去的几十年里,有很多深度学习框架被提出,被使用,但最后销声匿迹。我们需要去了解一代又一代的深度学习框架被提出的原因,框架之间的关系及其演变的历史,也就是今天的主题:深度学习框架这十年。

深度学习框架

讲深度学习框架之前,可以先了解一下什么是Rube Goldberg’s Machine。这是一个在美国高中的科创文化中非常流行的概念。它的目的是设计一个复杂、可能有很多机关技巧的机器,但完成的却是一个非常简单的工作。比如去年Rube Goldberg’s Machine比赛的题目是设计一个能把一枚硬币放到储蓄罐里的机器。另一个例子是self operating napkin,一个自动递纸巾的机器。这个机器的工作非常简单,但是流程却非常复杂,比如客人把手放下,就要触发各个机关,最后把纸巾递到面前。

图片

要理解一个复杂的system,最简单的方式是看system的上游和下游,比如上述的机器,虽然流程很复杂,但触发条件就是客人放下手,下游就是把纸巾送嘴边。

深度学习系统也是类似的思维。对于深度学习框架来说,系统上游是各种神经网络模型,系统的下游是各类硬件,例如GPU、CPU等。理解了上下游后,深度学习系统的边界和目的就变得简单而清晰了。深度学习框架就是使用最精简的设计,灵活地支持各类神经网络,并且不同硬件条件下,也能让神经网络高效执行

Rube Goldberg’s Machine和深度学习框架两者的区别在于:Rube Goldberg’s Machine将模型复杂化,而深度学习框架的目的是用最精简的方完成任务。The simple is the better。从这个角度上,我们可以把十几年间涌现的大量深度学习框架划分为三个时代,分别是:工具包时代数据流时代新时代

图片

工具包时代

工具包时代是接触神经网络较早的时期,一般指2014年前,代表性的框架有Cuda-ConvNet2Caffe

特征

这个时代的特点是计算机视觉领域的井喷。起源于07年的第一篇深度学习网络论文在mnist数据集上得到了很好的效果,12年AlexNet诞生也鼓励了深度学习的浪潮。在这个阶段,卷积神经网络是很多工具包关注的要点。Cuda-ConvNet2或Caffe定义模型的方式也因此是以写configuration为主,和现在的框架有很大的区别。例如用Caffe写AlexNet时,要定义 layer和它的name、type、input_param等参数。这样设计的原因就是卷积神经网络是深度学习系统上游的主流,那个时代对这方面的研究也非常火热。这些框架的interface是完全可以满足需求的,因为当时的研究只是把不同的卷积层拼接,从而了解不同的神经网络结构的效果。

优势

工具包时代的系统设计非常简单

在用户层,它仅仅是模型配置文件,在硬件层,系统通过手写GPU和CPU的神经网络算子来解决硬件问题,例如Cuda能明显实现神经网络加速。

随着网络和硬件的发展,个人作为单独的团队来编写神经网络算子变得困难,所以大厂商,包括英伟达、英特尔,会开发专门针对神经网络的算子库,比如说CuDNN和MKLDNN,这些算子在现在的神经网络系统框架 中依然常用。

这就是工具包时代的Cuda-ConvNet2和Caffe成功的原因。

劣势

工具包时代的框架也存在一些缺点。

首先是模型配置文件非常不灵活,很难表达复杂的模型例如RNN,虽然对于计算机视觉的网络处理比较方便,但是对于变长的数据,例如文本的支持并不理想。

其次,它并不是非常灵活的编程语言,随着深度学习网络可学习参数的增多,它难以利用多机和多GPU训练,因为配置文件很难去表达如何在多机和多GPU的环境下训练,同时算子库也无法解决运行时的问题。

最后,随着模型复杂化,工具包对新出现的算子的支持也非常有限

在这个时代如何去解决框架的问题是值得思考的。

数据流时代

2014年在Denver,我、李沐和陈天奇三位ACM班的学生在OSDI开会。李沐实现的是 parameter server,他的专业领域在于多机分布式训练。陈天奇的项目是CXXNet,包含了高效而丰富的算子库。我的项目是Minerva核心思想是****使用数据流的引擎,令多GPU的训练加速。我们共同的思想是如何设计更好的深度学习系统,同时我们的项目和专业领域正好互补。于是我们的MXNet应运而生。

图片

接下来的一段时间(2014-2018年),就是数据流时期框架的爆发。主流的框架有MXNet、TensorFlow、PyTorch、Chainer、Caffe2。

主导因素

随着深度学习的领域的不断发展,NLP也进入井喷阶段,这是这些框架出现的一大诱因。同时随着数据的增加,对并行的需求也随之上升,因此在数据流时期,很多模型如ResNet在ImageNet上训练只需要一小时,通过在大量机器上并行,甚至在分钟、秒的量级上可以完成。这都得益于数据流的概念和数据流天然具有的并行性。

时代特点

数据流时代的模型和工具包时代的区别就是在用户层和硬件层中间加了一层中间表达:数据流图。系统分为前端和后端,前端只关注用户使用方面的问题,而后端负责系统优化。

第二个区别是,前端也放弃模型配置文件了,Python成为了整个深度学习框架的一个标杆,通过Python提供张量运算的接口。随着Pytorch为典型的用户友好的框架的出现,NN模型库,包括动态自动求导成为了整个深度学习框架的标配。后端也逐渐把专用的算子替代成更丰富的张量算子库,同时增加了参数服务器,使得整个系统能够在多机多GPU的环境下训练。

新时代

数据流时代其实就是新时代的开端。虽然通用深度学习框架的设计趋向于稳定,但是新的概念,新的模型不断涌现,让系统的设计也有新的一些挑战。

第一个概念是可微分编程。这是近两年提出的一个广大的思路概念。在编写模型时,程序本身是可微分编程的,很多系统设计的工作在往这个方向迈进。第二点是新领域的出现,例如图神经网络,图神经网络可以处理原本难以解决的数据,比如知识图谱,制药中分子的生物图,新领域出现,也对系统产生了新的挑战。第三个概念是AI-chip,神经网络专用芯片。这是深度学习发展的大趋势,也是系统无可避免的问题。

在2019年后,系统的趋势有了明显的变化。

首先是前端垂直化。开发过程中,不再以通用系统为目标,而是基于通用系统开发面向垂直领域的工具,包括计算机视觉,自然语言处理,图领域等领域,DGL、AutoGluon、Captum等垂直领域的工具包。

其次,新概念也在慢慢渗透到系统设计中。对于Python,很多人提出Python并不是很好的选择,也有很多的工作来优化对应的语言的编译。对于数据流图,它并不是一种非常强大的编程语言。而实现可微分编程需要更强大的中间表达比如Relay、MLIR。对于张量算子库,AI chip的出现让张量算子编译器应运而生,其代表作有TVM,TC等工作。

图片

总结

深度学习框架虽然非常年轻,但已经经历了多轮的演变,而每一轮的演变都是由于算法和硬件的新趋势带来的新的挑战。

2019年之后,新挑战不断涌现,对于有志于投身这个领域的同学是非常好的时机。我们ACM班人在深度学习框架演变中也起到了非常重要的推动作用,很多的学长学姐在各个领域有非常好的成就,在研究过程中,如果能和同学或者学长产生一些思维的火花,不要犹豫,可能你们要做的工作也能在历史中留下印记。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容