深度学习框架对比分析

深度学习框架和深度学习技术的四大阵营概述

[En]

An overview of the deep learning framework and the four camps of deep learning technology

在从学术理论研究到生产应用产品开发的过程中,人工智能通常涉及许多不同的步骤和工具。这使得人工智能发展所依赖的环境安装、部署、测试以及精度和性能调优的迭代改进变得非常繁琐和耗时。为了简化、加速和优化这一过程,学术界和产业界做出了大量努力,开发和完善了一批基础平台和通用工具,也称为机器学习框架或深度学习框架。有了这些基础平台和工具,我们就可以避免重复发明轮子,专注于技术研究和产品创新。这些框架从早期走出学术界的Caffe、Torch和Theano,到微软PyTorch内部的开源CNTK,现在被TensorFlow、以谷歌为首的亚马逊在业界押注于MXNet、Facebook。

[En]

Artificial intelligence usually involves many different steps and tools in the process from academic theoretical research to production application product development. this makes the environment installation, deployment, testing and iterative improvement of accuracy and performance tuning that artificial intelligence development depends on become very tedious and time-consuming. In order to simplify, accelerate and optimize this process, academia and industry have made a lot of efforts to develop and improve a number of basic platforms and general tools, also known as machine learning framework or deep learning framework. With these basic platforms and tools, we can avoid reinventing the wheel and focus on technological research and product innovation. These frameworks range from Caffe, Torch and Theano, which came out of academia in the early days, to the open source CNTK within PyTorch,Microsoft, which is now chosen by TensorFlow,Amazon led by Google to bet on MXNet,Facebook in the industry.

哪种深度学习框架最适合使用?哪种深度学习框架更适合您?这确实是一个很麻烦的问题。不过,在你选择排队之前,不妨跟我一起来了解一下每个框架的来龙去脉,先看看哪个框架更能引起你的兴趣。有了兴趣,剩下的问题就变得简单了。我们可以通过浮躁的排名和比较,深入研究这些框架背后的设计思想和技术性质。这样每个框架的优点都能为我所用。

[En]

Which deep learning framework is the best to use? Which deep learning framework is more suitable for you? This is really a very troublesome question. However, before you choose to stand in line, you might as well come with me to understand the context of each framework, and first take a look at which framework can arouse your interest more. With interest, the remaining questions become simple. We can deeply study the design ideas and technical nature behind these frameworks through impetuous ranking and comparison. So that the advantages of each framework can be used by me.

当前主流深度学习框架一览:

[En]

List of current mainstream deep learning frameworks:

  1. TensorFlow

  2. Keras

  3. PyTorch

  4. MXNet

  5. Caffe

  6. Caffe2

  7. Theano

  8. FastAI

  9. CNTK

  10. Gluon

  11. Torch

  12. Deeplearning4j

  13. Chainer

其他小众深度学习框架包括亚马逊曾经使用过的深度学习引擎DSSTNE,卡内基梅隆大学的小众DyNet,基于英特尔开源Spark的深度学习库BigDL,只能运行在英特尔CPU芯片上的Nervana,基于Python的深度学习库Neon,简洁,独立并符合Craft 11标准的mini-dnn,基于Theano的轻量级库Lasagne等等。

[En]

Other niche deep learning frameworks include Amazon’s once used deep learning engine DSSTNE, Carnegie Mellon University’s niche DyNet,Intel open source Spark-based deep learning library BigDL,Nervana that can only run on Intel CPU chips, Python-based deep learning library Neon, concise, independent and in line with the Craft 11 standard tiny-dnn, Theano-based lightweight library Lasagne, and so on.

这些框架中有几个曾经很出色,但现在已经被更新的框架所取代,或者被新一代版本所取代,我们称之为衰落的贵族,如Torch,基于Python的版本已经取代了Torch。Caffe和Caffe2,Facebook已经将Caffe和Caffe2与PyTorch整合,推出了新的PyTorch 1.0,而最古老的框架之一Theano的创始人已经搬到TensorFlow,并停止更新和维护。

[En]

Several of these frameworks were once brilliant, but have now been replaced by newer frameworks, or incorporated by a new generation of versions, which we call declining aristocrats, such as Torch, and the Python-based version of PyTorch has replaced Torch. Caffe and Caffe2,Facebook have integrated Caffe and Caffe2 with PyTorch to launch a new PyTorch 1.0, and the founder of Theano, one of the oldest frameworks, has moved to TensorFlow and has stopped updating and maintenance.

基于Java和Scala的开源的分布式深度学习库Deeplearning4J在深度学习领域缺少像Python这样强大的社区支持,日本公司Preferred Networks开源的Chainer曾经是动态计算图的首选框架,特别适用于自然语言处理,但后来MXNet,PyTorch等也支持了这个特性,其优势也不复存在了。由于没有巨头的支持,Deeplearning4J和Chainer都只能默默的发展。

看起来我们有很多选择,但实际上,如果我们进一步细分,我们会发现我们没有太多选择,没有巨人背书的框架只能面临被淘汰和边缘化的命运。事实上,顶级深度学习框架中只有四个阵营,也就是四所学校。以谷歌为首的TensorFlow,亚马逊选择了MXnet、Facebook来打造内部核心技术开源CNTK。虽然Kera等框架在深度学习框架中排名较高,但它不是一个独立的框架,而是一个高级别的API层,将底层引擎封装为前端,以提高易用性。这种深度学习框架的目标是让你只用几行代码就能构建一个神经网络,以及FastAI和Gluon。幸运的是,每个前端上层轻量级框架都对应着最适合的基础底层框架,所以深度学习框架有四大技术方向,每个技术方向背后都有一个巨无霸的背书和推广。

[En]

It seems that we have a lot of choices, but in fact, if we further subdivide, we will find that we do not have many choices, and the framework without giant endorsement can only face the fate of elimination and marginalization. In fact, there are only four camps, or four schools, in the top deep learning framework. Google-led TensorFlow,Amazon chose MXnet,Facebook to create the internal core technology open source CNTK. Although frameworks such as Keras rank high in the deep learning framework, it is not an independent framework, but a high-level API layer that encapsulates the underlying engine as a front end to improve ease of use. The goal of such a deep learning framework is to allow you to build a neural network with only a few lines of code, as well as FastAI and Gluon. Fortunately, each front-end upper-layer lightweight framework corresponds to the most suitable basic bottom framework, so there are four major technical directions of the deep learning framework, and there is a giant endorsing and promoting behind each technical direction.

深度学习框架的四大阵营及其技术方向是:

[En]

The four camps of the deep learning framework and their technological directions are:

(1)TensorFlow,前端框架Keras,背后巨头Google;

(2)PyTorch,前端框架FastAI,背后巨头Facebook;

(3)MXNet,前端框架Gluon,背后巨头Amazon;

(4)Cognitive Toolkit (CNTK),前端框架Keras或Gluon,背后巨头Microsoft。

第二,主流开源深度学习框架的背景。

[En]

Second, the context of the mainstream open source deep learning framework.

下面我们将对每个主流框架的背景进行详细的梳理和理解。

[En]

Below we will do a detailed carding and understanding of the context of each mainstream framework.

Google在2015年11月正式开源发布TensorFlow,TensorFlow由Google大脑团队开发,其命名来源于本身的运行原理。由于Google的巨大影响力和巨大支持,很快就成为深度学习领域占据绝对统治地位的框架。很多企业都在基于TensorFlow 开发自己的产品或将 TensorFlow整合到自己的产品中去,如Airbnb、Uber、Twitter、英特尔、高通、小米、京东等。

Google大脑一开始是Google X的一个研究项目,2011年,Google大脑的雏形起源于一项斯坦福大学与谷歌公司的联合研究项目,由Google Fellow杰夫·迪恩(Jeff Dean)、研究员格雷科拉多(Greg Corrado)与斯坦福大学人工智能教授吴恩达(Andrew Ng)共同发起,把深度学习技术带到了人工智能问题的解决中,并建立起了第一代大型深度学习软件系统DistBelief,这是一个运行在谷歌云计算平台上的一个服务。随后,Google在其商业产品广泛应用部署了DistBelief的深度学习神经网络,包括搜索、YouTube、语音搜索、广告、相册、地图、街景和Google翻译等。

2013年3月,Google收购了DNNResearch,DNNResearch创始人Geoffrey Hinton也由此进入Google大脑团队工作。Google指派Geoffrey Hinton和Jeff Dean等开始简化和重构DistBelief的代码库,使其变成一个更快、更健壮的应用级别代码库,形成了TensorFlow。对DistBelief 进行了多方面的改进后,使其可在小到一部手机,大到数千台数据中心服务器的各种设备上运行,TensorFlow也成为了基于 DistBelief 进行研发的第二代人工智能学习系统,可被用于语音识别或图像识别等多想机器学习和深度学习领域。一个突破性的成果是在2012年6月Google大脑用16000台电脑模拟人类电脑的活动,并在学习1000万张图像后,成功在YouTube视频中找出了”猫”,这可能意味着机器第一次有了猫的概念。

Google在2014年1月又收购了英国DeepMind,DeepMind成为谷歌大脑之外另一个研究人工智能方向的团队。DeepMind在4年来的首要的人工智能研究平台是开源软件Torch7机器学习库,Torch7非常灵活和快速,能够快速建模。在Google的大力支持下,AlphaGo横空出世,使人工智能第一次战胜人类职业围棋高手,轰动世界,以一己之力推动人工智能应用到了一个新的高度。2016年4月,DeepMind宣布将开始在将来所有的研究中开始使用TensorFlow。这样Google的两大人工智能团队也统一到了统一的深度学习框架TensorFlow上。

TensorFlow的编程接口支持C++和Python,Java、Go、R和Haskell API也将被支持,是所有深度学习框架中对开发语言支持的最全面的,TensorFlow可以在AWS和Google Cloud中运行,支持Windows 7、Windows 10、Windows Server 2016,TenserFlow使用C++ Eigen库,可以在ARM架构上编译和优化,使其可以在各种服务器和移动设备上部署自己的训练模型,也是在所有深度学习框架中支持运行平台最多的。TensorFlow基于计算图实现自动微分系统,使用数据流图进行数值计算,图中的节点代表数学运算,图中的线条则代表在这些节点之间传递的张量(多维数组)。TensorFlow追求对运行平台和开发语言最广泛的支持,力求统一深度学习领域,但是这也带来了过于复杂的系统设计,TensorFlow在GitHub上的总代码数已经超过100万行了,TensorFlow在接口设计中创造了很多新的抽象概念,如图、会话、命名空间和Place-Holder等,同一个功能又提供了多种实现,使用上可能有细微的区别,频繁的接口变动也导致了向后兼容性上的问题。由于直接使用TensorFlow过于复杂,包括Google官方在内的很多开发者尝试构建一个高级API作为TensorFlow更易用的接口,包括Keras、Sonnet、TFLearn、TensorLayer、Slim、Fold、PrettyLayer等,其中Keras在2017年成为第一个被Google添加到TensorFlow核心中的高级别框架,这让Keras变成TensorFlow的默认API,使Keras + TensorFlow的组合成为Google官方认可并大力支持的平台。TensorFlow仍在快速的发展中,是最具野心和最具统治力的深度学习框架,十分期待2019年即将发布的TensorFlow 2.0带来的新技术。

Keras是第二流行的深度学习框架,但并不是独立框架。Keras由纯Python编写而成,以TensorFlow、Theano或CNTK为底层引擎。Keras是在Tensorflow上层封装的高级API层,提升易用性。Keras的目标是只需几行代码就能让你构建一个神经网络。

Keras的创造者是谷歌AI研究员Francois Chollet,也同时参与TensorFlow的开发,最初创建Keras是为了自己有一个好的工具来使用RNNs。在研究LSTM在自然语言处理中的应用时用Theano做了一个可重用的开源实现,逐渐变成了一个框架,并命名为Keras。Keras在2015年3月开源,最初因为同时支持CNN和RNN,可以通过Python代码而不是通过配置文件来定义模型等特点而逐渐流行起来。2017年,Keras成为第一个被Google添加到TensorFlow核心中的高级别框架,这让Keras变成Tensorflow的默认API,使Keras + TensorFlow的组合成为Google官方认可并大力支持的平台。

学习使用Keras很容易,但是大多数时间都在学习如何调用接口,难以真正学习到深度学习的内容,Keras层层封装让用户在新增操作或获取底层的数据信息时过于困难,存在过度封装导致缺乏灵活性的问题,性能也存在瓶颈。Keras有助于快速入门,但是不应该依赖它,需要进一步学习使用TensorFlow。

PyTorch是Facebook开发的用于训练神经网络的Python包,也是Facebook倾力打造的首选深度学习框架,在2017年1月首次推出,Facebook人工智能研究院(FAIR)在GitHub上开源了PyTorch,迅速占领了GitHub热度榜榜首,Facebook用Python重写了基于Lua语言的深度学习库Torch,PyTorch不是简单的封装Torch提供Python接口,而是对Tensor上的全部模块进行了重构,新增了自动求导系统,使其成为最流行的动态图框架,这使得PyTorch对于开发人员更为原生,与TensorFlow相比也更加年轻更有活力,PyTorch继承了Torch灵活、动态的编程环境和用户友好的界面,支持以快速和灵活的方式构建动态神经网络,还允许在训练过程中快速更改代码而不妨碍其性能,即支持动态图形等尖端AI模型的能力,是快速实验的理想选择。

PyTorch专注于快速原型设计和研究的灵活性,很快就成为AI研究人员的热门选择,流行度的增长十分迅猛,现在已经是第二流行的独立框架。PyTorch的社区迅速发展起来。PyTorch 现在是GitHub 上增长速度第二快的开源项目,在过去的12个月里,贡献者增加了2.8倍。这个增速是十分可怕的,意味着PyTorch成为现在最受关注的深度学习框架,能够挑战TensorFlow的霸主地位。

2018年12月08号,在 NeurIPS 大会上,Facebook 正式发布 PyTorch 1.0稳定版,目前领导PyTorch 1.0核心开发工作的是Facebook的AI基础设施技术负责人Dmytro Dzhulgakov。Caffe的作者贾扬清发文介绍PyTorch 1.0 = Caffe2 + PyTorch。现在,PyTorch 1.0已经为大量Facebook产品和服务提供了支持,包括每天执行60亿次文本翻译。

根据贾阳青的帖子,PyTorch 1.0具有在命令式和声明式执行模式之间无缝转换的混合前端,因此开发人员不需要重写代码来优化性能或从Python迁移,并且可以在原型的即时模式和生产环境的图表执行模式之间无缝共享大部分代码。PyTorch 1.0结合了即时模式和图形执行模式,既具有研究的灵活性,又具有生产所需的最佳性能。

[En]

According to Jia Yangqing’s post, PyTorch 1.0 has a hybrid front end that seamlessly converts between imperative and declarative execution modes, so that developers do not need to rewrite code to optimize performance or migrate from Python, and can seamlessly share most of the code between the just-in-time pattern for prototyping and the diagram execution mode for production environments. PyTorch 1.0 combines the just-in-time mode with the graph execution mode, which not only has the flexibility of research, but also has the optimal performance needed for production.

PyTorch 1.0重构和统一了Caffe2和PyTorch 0.4框架的代码库,删除了重复的组件并共享上层抽象,得到了一个统一的框架,支持高效的图模式执行、移动部署和广泛的供应商集成等。这让开发人员可以同时拥有PyTorch和Caffe2的优势,同时做到快速验证和优化性能。PyTorch的命令式前端通过其灵活而高效的编程模型实现了更快速的原型设计和实验,又吸取了Caffe2和ONNX的模块化以及面向生产的特点,使得深度学习项目能从研究原型快速无缝衔接到生产部署,在一个框架中统一实验研究和生产能力。

Theano最早始于2007,以一个希腊数学家的名字命名,早期开发者是蒙特利尔大学的Yoshua Bengio 和 Ian Goodfellow。Theano是最老牌和最稳定的库之一,是第一个有较大影响力的Python深度学习框架,早期的深度学习库的开不是Caffe就是Theano。

Theano是一个比较底层的Python库,这一点上和TensorFlow类似,专门用于定义、优化和求值数学表达式,效率高,非常适用于多维数组,所以特别适合做机器学习。Theano可以被理解为一个数学表达式的编译器,Theano框架会对用符号式语言定义的程序进行编译,来高效运行于 GPU 或 CPU上。但是Theano不支持分布式计算,这使其更适合于在实验室的学习入门,并不适用于大型的工业界的项目,这可能是其技术上落后的一个重要原因。

Theano来自学界,它最初是为学术研究而设计,这使得深度学习领域的许多学者至今仍在使用 Theano,但Theano在工程设计上有较大的缺陷,有难调试,构建图慢的缺点,开发人员在它的基础之上,开发了Lasagne、Blocks、PyLearn2和Keras上层接口封装框架。但随着 Tensorflow 在谷歌的大力支持下强势崛起,使用Theano的人已经越来越少了。标志性的事件就是创始者之一的 Ian Goodfellow 放弃 Theano 转去谷歌开发 Tensorflow了。而另一位创始人Yoshua Bengio 于 2017 年 09 月宣布不再维护 Theano,所以这个项目事实上已经宣告死亡了。基于 Theano 的前端轻量级的神经网络库,如 Lasagne和Blocks也同样没落了。但我们可以说,Theano作为第一个主要的Python深度学习框架,已经完成了自己的使命,为早期的研究人员提供了强大的工具和很大的帮助,为后来的深度学习框架奠定了以计算图为框架核心 ,采用GPU加速计算的基本设计理念。

Caffe的全称是Convolutional Architecture for Fast Feature Embedding,意为”用于特征提取的卷积架构”,它是一个清晰、高效的深度学习框架,核心语言是C++。作者是贾扬清,贾扬清在清华大学获得本科和硕士学位。在UC Berkeley获得计算机科学博士学位。他曾在Google Brain工作,参与过TensorFlow的开发。贾扬清现在是Facebook AI架构总监,但据2019年3月的最新消息贾扬清可能加入阿里巴巴任VP。Caffe最初发起于2013年9月,从贾扬清用NVIDIA的学术捐赠的一块K20 GPU开始攒了一个机器开始,然后用大概两个多月的时间写了整个架构和ImageNet所需要的各个实现。12月份正式在Github上发布开源。

Caffe是一款十分适合深度学习入门的开源框架,它的代码和框架都比较简单,代码易于扩展,运行速度快,也适合深入学习分析。正是由于Caffe有着更小的系统框架,使得一些探索性的实验更加容易一些。即使在Google工作时,贾扬清仍然会经常使用Caffe来做一些快速的prototype和实验,Google的研究人员通常使用各种自己熟悉的开源框架来进行小规模的研究,然后用DistBelief(Google Brain的大规模的机器学习框架)来作为一个通用的框架实现大规模产品级别的部署。

在Caffe之前,深度学习领域缺少一个完全公开所有的代码、算法和各种细节的框架,导致很多的研究人员和博士需要一次又一次重复实现相同的算法,所以说Caffe对于深度学习开源社区的贡献非常大,Caffe是学术界和业界公认的最老牌的框架之一,是很多人入门的基础。

Caffe不支持分布式,与其它更新的深度学习框架相比,Caffe确实不够灵活,文档也不够用,Caffe的安装也比较复杂,安装需要解决大量的依赖包。大家会发现套用原有模型很方便,但个性化就要读源代码,灵活性明显不足,为模型做调整常常需要用 C++ 和 CUDA编程,虽然使用Python 和Matlab 也能做一些小调整。与Keras过度封装导致缺乏灵活性不同,Caffe缺乏灵活性主要是由于其自身的设计,在Caffe中最主要的抽象对象是层,每实现一个新层,必须要利用C++实现其前向传播和反向传播代码,如果需要新层在GPU上运行,还需要同时用CUDA实现这一层的前向传播和反向传播,这让不熟悉C++和CUDA的用户扩展Caffe非常困难。这也是由于Caffe最初定位在科研上面,并假设说大家都会有一定的时间和精力来读代码。

与Theano的没落与终结不同,随着贾扬清在2016年2月加入Facebook,2016年11月,贾扬清在 Facebook 官网发文,介绍了Caffe2go,它使用Unix理念构建的轻量级、模块化框架,核心架构非常轻量化,可以附加多个模块,是一个在手机上也能运行神经网络模型,可以在移动平台上实时获取、分析、处理像素。Caffe2go规模更小、训练速度更快、对计算性能要求较低。Caffe2go是Facebook继Torch后的第二个AI平台,因为其大小、速度和灵活性上的优势,Facebook曾将Caffe2go推上了战略地位,和研究工具链Torch一起组成了Facebook 机器学习产品的核心。

2017年4 月 18 日,Facebook 开源了 Caffe2,Facebook 的AI双平台定位已经清晰了,Caffe2 的开发重点是性能和跨平台部署,PyTorch 则专注于快速原型设计和研究的灵活性。Caffe2一开始的定位就是工业界产品级别的一个轻量化的深度学习算法框架,更注重模块化,支持大规模的分布式计算,支持跨平台,如同 TensorFlow,Caffe2 使用 C++ Eigen 库,支持 ARM 架构。并且为移动端实时计算做了很多优化,支持移动端iOS, Android, 服务器端Linux, Mac, Windows, 甚至一些物联网设备如Raspberry Pi, NVIDIA Jetson TX2等平台部署。Caffe2将AI生产工具标准化,目前全球各地的Facebook服务器和超过10亿部手机通过Caffe2运行神经网络,其中包含了最新的iPhone和Android手机。

虽然Facebook的Caffe2和PyTorch两个团队一直在独立的发展,但是二者的组件已经被大量共享,双方也意识到将各自的优势特性整合到一个包中的重要性,实现从快速原型到快速部署执行的平稳过渡是有重要意义的,这样也可以轻松地使用共享工具提高开发效率。最终可以将 PyTorch 前端的灵活用户体验与 Caffe2 后端的扩展、部署和嵌入式功能相结合。在2018年12月的 NeurIPS 大会上,Facebook 正式发布 PyTorch 1.0稳定版,支持AWS、谷歌云、微软Azure等云平台。贾扬清发文介绍PyTorch 1.0 = Caffe2 + PyTorch,至此,Facebook的AI深度学习框架正式统一。Caffe, Caffe2, Torch, PyTorch的用户们都不用再纠结了,有了统一明确的技术架构与技术路线,就是PyTorch 1.0。

Torch在2002年诞生于纽约大学Torch,后续加入了深度学习的内容,是一个著名开源深度学习框架,是BSD3协议下的开源项目。由Facebook的Ronan Collobert和Soumith Chintala,Twitter的Clement Farabet,DeepMind的Koray Kavukcuoglu共同开发和维护,所以Torch7自然也成为Facebook和DeepMind一开始使用的深度学习工具,Twitter和英伟达也都使用定制版的Torch用于人工智能研究,DeepMind在被Google收购后转向了TensorFlow。

Torch的编程语言为1990 年代诞生于巴西的 Lua,Lua相当于一个小型加强版的C,支持类和面向对象,运行效率极高,所以需要先学习Lua语言然后才能使用Torch,在开发人员没有熟练掌握Lua之前,使用Torch很难提高开发的整体生产力。其实Lua和Python都属于比较容易入门的语言,但Python很明显已经抢先统治了机器学习领域,大多数开发人员都不愿意为了使用一个框架而学习一门新语言,相反,一些开发人员在学习并掌握一门新语言后才会愿意使用基于这门语言的框架,这一点使Torch的进一步发展受到了限制,并导致Torch推广的困难。

Torch是命令式的,因此与TensorFlow和Theano相比,Torch的灵活度更高,而前两者是陈述式的(declarative),必须declare一个计算图。Torch 非常适用于卷积神经网络,Torch的原生交互界面比其他框架用起来更自然、更得心应手。第三方的扩展工具包提供了丰富的递归神经网络RNN模型。

FastAI不是一个独立的深度学习框架,而是一个基于PyTorch的上层封装的高级API层,提升PyTorch的易用性,目标是只需几行代码就能让你构建一个神经网络。FastAI并不是简单意义上的将PyTorch封装了一遍,而是类似于Keras与TensorFlow的关系,充分借鉴了Keras,将PyTorch的强大性易用化。

FastAI的作者Jeremy Howard,Jeremy Howard也是Kaggle的主席,写过一篇Introducing Pytorch for fast.ai,讨论为何FastAI从使用Keras转向创建自己的框架。FastAI的出品方是fast.ai,提供大量免费机器学习课程,有业界有一定的影响力,fast.ai也是美国军方的合作伙伴,研究如何加速人工智能技术的发展。

FastAI最初的版本在2018年9月发布,FastAI 1.0版本在2018年10月Facebook开发者大会上和Facebook的PyTorch 1.0 rc1预览版一起发布,在实验和测试比拼中,用5行代码就可以完成Keras用31行才能解决的事情,因此,在Hacker News上关注度比PyTorch 1.0还高,FastAI基于PyTorch 1.0框架,也被Facebook官方重点宣传。

MXNet是一个轻量级、可移植、灵活的分布式的开源深度学习框架,也是Amazon官方主推的深度学习框架,MXNet 支持卷积神经网络(CNN)、循环神经网络(RNN)和长短时间记忆网络(LTSM),为图像、手写文字和语音的识别和预测以及自然语言处理提供了出色的工具。

MXNet项目诞生于2015年9月,作者是当时在卡耐基梅隆大学CMU读博士的李沐,MXNet 在2016年11月被亚马逊选为官方开源平台,2017年1月23日,MXNet项目进入Apache基金会,成为Apache的孵化器项目。Amazon和Apache的双重认可使其生命力更加强大,成为能够与Google的TensorFlow,Facebook的PyTorch和微软的CNTK分庭抗礼的顶级深度学习框架。值得一提的是,其实MXNet的很多作者都是中国人,其最大的贡献组织为百度。

Amazon的AWS虽然支持TensorFlow等主流深度学习框架,但是Amazon不会傻到为Google做嫁衣而依赖Tensorflow,深度学习技术平台太重要了,Amazon不会受制于人。Amazon之所以选择MXNet作为首选开源深度学习框架与平台与李沐在 CMU 的两位博士导师之一的Alex Smola有很大的关系,2015 年Alex从CMU重返工业界,加入亚马逊AWS 担任机器学习总监。

在2014年NIPS上,同为上海交大校友的陈天奇和李沐在讨论到各自在做深度学习Toolkits的项目时,发现他们都在做很多重复性的工作,如文件加载等,于是他们又拉来几个优秀的C++机器学习系统的开发人员共同成立了DMLC(Distributed (Deep) Machine Learning Community),一个小的机器学习爱好者圈子,号召大家发挥各自所长,一起合作开发,发起了通过配置来定义和训练神经网络的CXXNet和提供类似numpy一样的张量计算接口的Minerva两个深度学习项目,本意是更方便共享各自项目的代码,并给用户提供一致的体验。CXXNet擅长使用卷积神经网络进行图片分类,但它的灵活性不足,用户只能通过配置来定义模型,而无法进行交互式的编程。Minerva则更灵活,但不够稳定,李沐想同时给两个项目做分布式的扩展,后来自然想到把两个项目合并起来,于是就有了MXNet,可以读作”mix net”,其名字来自Minerva的M和CXXNet的XNet。其中Symbol的想法来自CXXNet,而NDArray的想法来自Minerva。

目前,主流的深度学习系统普遍采用两种编程模式中的一种:命令式编程(命令式编程,如Torch)或声明式编程(声明式编程,如Caffe、Theano和TensorFlow),而MXNet则试图将这两种模式结合起来。MXNet在命令式编程中提供张量运算,而MXNet在声明性编程中支持符号表达式。用户可以根据需要自由选择,MXNet支持多种语言的API接口,包括Python、C++(在Android和iOS上编译)、R、Scala、Julia、MatLab和JavaScript。

[En]

At present, the mainstream deep learning systems generally adopt one of the two programming modes: imperative programming (imperative programming, such as Torch) or declarative programming (declarative programming, such as Caffe,theano and TensorFlow), while MXNet tries to combine the two modes. MXNet provides tensor operation in imperative programming, while MXNet supports symbolic expressions in declarative programming. Users are free to choose as needed, and MXNet supports API interfaces in multiple languages, including Python, C++ (and compiling on Android and iOS), R, Scala, Julia, Matlab and JavaScript.

MXNet长期处于快速迭代的过程中,文档却长时间没有更新,导致新用户难以上手,老用户也需要查阅源码才能理解MXNet接口的用法,为了完善MXNet的生态圈并推广,MXNet先后推出了MinPy,Keras和Gluon等高级API封装接口,但目前前两个高级接口已经停止了开发,Gluon模仿了PyTorch的接口设计,成为李沐和Amazon主推的配套MXNet使用的上层API。

MXNet的优势是分布式支持和对内存、显存的明显优化,同样的模型,MXNet往往占用更小的内存和显存,在分布式环境下,MXNet的扩展性能也显示优于其他框架。Keras作Francois Chollet认为除了TensorFlow,MXNet和它的高级API接口Gluon也很有前景,与TensorFlow一样,MXNet是为数不多的具有实际生产级和可扩展性的框架。亚马逊有一个庞大的团队在很认真的支持MXNet,成为了MXNet背后强大的工程力量。

2017年10月20日,Amazon和 Microsoft 联合发布了Gluon,Gluon是一种新的动态计算图的开源深度学习框架的高级接口,简而言之,是一个基于MXNet深度学习框架的类似Keras和FastAI的上层API接口,但其最大的特点是Gluon同时支持灵活的动态图和高效的静态图,支持符号式和命令式编程的API,支持高度可扩展的训练,能够高效的评估模型,可帮助开发人员更轻松、更快速地构建机器学习模型,而不牺牲任何性能。Gluon现已在Apache MXNet 中可用,后续将支持Microsoft Cognitive Toolkit及其他架构。微软Azure的所有服务、工具和基础结构也将全面支持Gluon。

微软的人工智能工具包CNTK,全称为计算网络工具包,于2016年1月26日在GitHub上宣布开源,并于10月更名为微软认知工具包微软认知工具包。CNTK最初是一个语音识别框架。早在2014年,黄学东博士和他的团队就在提高计算机理解语音的能力,但手头的工具让他们慢了下来。一群自发的团队构思和设计了一个新的方案,从而诞生了CNTK。微软的语音识别研究团队继续打破世界纪录,接近人类在语音识别方面的标准。微软的技术引起了广泛关注,它是处理图像、手写字体和语音识别的好选择。认知工具包工具包在微软内部被广泛使用。微软的人工智能工具包与其他工具包最大的区别在于数据。认知工具包的数据来自微软自己的量产数据。包括Cognitive Services中的Cortana、Bing和Effect API,所有这些都是使用Cognitive Toolkit创建的。

[En]

Microsoft’s artificial intelligence toolkit, CNTK,CNTK, whose full name is Computational Network Toolkit, announced it was open source on GitHub on January 26, 2016, and renamed it Microsoft Cognitive Toolkit Microsoft Cognitive Toolkit in October. CNTK was originally a framework for speech recognition. As early as 2014, Dr. Huang Xuedong and his team were improving the ability of computers to understand speech, but the tools at hand slowed them down. A group of spontaneous teams conceived and designed a new scheme, which gave birth to CNTK. Microsoft’s speech recognition research team continues to break world records and approach human standards in speech recognition. Microsoft’s technology has attracted wide attention, and it is a good choice for dealing with images, handwritten fonts and speech recognition. The Cognitive Toolkit toolkit is widely used within Microsoft. The biggest difference between Microsoft’s artificial intelligence toolkit and other toolkits is the data. The data of Cognitive Toolkit comes from Microsoft’s own mass production data. Including Cortana, Bing, and Emotion API in Cognitive Services, all of which are created with Cognitive Toolkit.

CNTK基于C++架构,Python或C++编程接口,CNTK 支持 64 位的 Linux 和 Windows 系统,在 MIT 许可证下发布。支持跨平台的CPU/GPU 部署。CNTK 在 Azure GPU Lab 上显示出最高效的分布式计算性能。但CNTK现在还不支持ARM 架构,使其在移动设备上的功能受到了限制。

Deeplearning4J,简称DL4J,是一个基于Java和Scala的开源的分布式深度学习库,开发语言是Java,由Skymind于2014年6月发布,DeepLearning4j的目标是提供一个即插即用的面向生产环境和商业应用的高成熟度深度学习开源库,可以方便的与Hadoop和Spark集成。DL4J选择Java作为其开发语言的原因在于目前基于Java的分布式计算、云计算、大数据的生态和开发者群体非常庞大。用户可能拥有大量的基于Hadoop和Spark的集群,因此在这类集群上搭建深度学习平台的需求便很容易被DL4J满足。同时JVM的生态圈内还有很多的Library的支持,DL4J也创建了ND4J,依靠ND4J进行基础的线性代数运算,其处理大矩阵乘法的速度比NumPy更快,可以说是JVM中的NumPy,支持大规模的矩阵运算

Deeplearning4j为多芯片运行而优化,支持采用CUDA C的x86和GPU。DL4J的并行运行是自动化的,实现了从节点(worker nodes)和连接的自动化设置,可以与Hadoop及Spark自动整合,同时可以方便地在现有集群(包括但不限于AWS,Azure等)上进行扩展,同时DL4J的并行化是根据集群的节点和连接自动优化,不像其他深度学习库那样可能需要用户手动调整。DL4J也被NASA的喷气推进实验室所采用,埃森哲、雪弗兰、博斯咨询和IBM等都是DL4J的客户,DL4J与其它开源深度学习框架的一个明显区别是DL4J有商业版的支持,付费用户可以通过电话咨询寻求技术支持。

Chainer是由日本深度学习创业公司Preferred Networks于2015年6月发布的深度学习框架。最大的特点是支持动态图,曾经是动态计算图的首选框架,特别适用于自然语言处理。Chainer是用Python开发的,支持多种前馈神经网络,包括卷积网络、循环网络、递归网络,支持运行中动态定义的网络(Define-by-Run)。前馈计算可以引入Python的各种控制流,同时反向传播时不受干扰,简化了调试错误的难度。

深度学习框架的标准化ONNX

[En]

Standardized ONNX of Deep Learning Framework

开放式神经网络交换(ONNX,全称为《开放式神经网络交换》)格式的发布诞生于2017年9月。ONNX最初是由微软和Facebook发布的,后来亚马逊也加入进来,并在12月发布了V1版本,宣布ONNX也得到了AMD、ARM、华为、IBM、英特尔、高通等公司的支持。ONNX是一种代表深度学习模式的开放格式。它使用户更容易在不同的框架之间传输模型。例如,它允许用户构建一个PyTorch模型,然后使用MXNet运行该模型进行推理。ONNX从一开始就支持Caffe2、微软认知工具包、MXNet和PyTorch、Google,虽然还不在这个阵营中,但像其他开源项目一样,社区为TensorFlow添加了一个转换器。

[En]

The release of the open neural network switching (ONNX, full name is “Open Neural Network Exchange”) format was born in September 2017. ONNX was originally released by Microsoft and Facebook, and later Amazon joined in and released the V1 version in December, announcing that ONNX is also supported by AMD, ARM, Huawei, IBM, Intel, Qualcomm and others. ONNX is an open format that represents a deep learning model. It makes it easier for users to transfer models between different frameworks. For example, it allows users to build a PyTorch model and then use MXNet to run the model for reasoning. ONNX has supported Caffe2,Microsoft Cognitive Toolkit,MXNet and PyTorch,Google from the beginning, although not yet in this camp, but like other open source projects, the community has added a converter for TensorFlow.

第三,诞生于中国的深度学习框架。

[En]

Third, the deep learning framework born in China.

下面就来关注一下诞生于中国的深度学习框架,它们正在崛起:

[En]

The following would like to focus on the deep learning framework born in China, they are on the rise:

  1. 华为MindSpore

2018年10月10日,华为在上海全联接大会上首次发布华为AI战略与全栈全场景AI解决方案,包括Ascend(昇腾)系列AI芯片以及CANN算子库、MindSpore深度学习框架、AI开发平台ModelArts。华为MindSpore支持端、边、云独立的和协同的统一训练和推理框架。但是目前仍然在开发中,以华为在中国科技界地位和研发投入,自然是最受大家期待的。华为云虽然可以支持其它所有主流的深度学习框架,但就如同Amazon选择MXNet一样,这不是一个可以讨论的问题,为了不受制于人,是一定要有的。我相信为了与其它主流框架进行竞争,MindSpore将来也一定会开源的。

  1. 百度PaddlePaddle

2016年8月底百度开源了内部使用多年的深度学习平台PaddlePaddle,PaddlePaddle 100% 都在Github上公开,没有内部版本。PaddlePaddle能够应用于自然语言处理、图像识别、推荐引擎等多个领域,其优势在于开放的多个领先的预训练中文模型。PaddlePaddle的2013年版本是百度杰出科学家徐伟主导设计和开发的,其设计思路是每一个模型的表示方式都是”一串Layers”, Caffe的作者贾扬清称赞了百度的 PaddlePaddle,并说”整体的设计感觉和 Caffe 心有灵犀”。三年后,百度AI团队在徐伟的指导下作了两次升级,2017年4月推出PaddlePaddle v2,v2参考TensorFlow增加了Operators的概念,把Layers打碎成更细粒度的Operators,同时支持更复杂的网络拓扑图而不只是”串”。2017 年底推出PaddlePaddleFluid。Fluid类似PyTorch,提供自己的解释器甚至编译器,所以不受限于 Python 的执行速度问题。

  1. 阿里巴巴XDL (X-Deep Learning)

2018年11月,阿里巴巴宣布,其大数据营销平台阿里妈妈将把其应用于自身广告业务的算法框架XDL (X-Deep Learning)进行开源,正式加入开源学习框架的激烈竞争。XDL主要是针对特定应用场景如广告的深度学习问题的解决方案,是上层高级API框架而不是底层框架。XDL需要采用桥接的方式配合使用 TensorFlow 和 MXNet 作为单节点的计算后端,XDL依赖于阿里提供特定的部署环境。

  1. 小米MACE

2018年6月28日,小米首席架构师、人工智能与云平台副总裁崔宝秋宣布正式开源小米自研的移动端深度学习框架(MACE) Mobile AI Compute Engine。它针对移动芯片特性进行了大量优化,目前在小米手机上已广泛应用,如人像模式、场景识别等。该框架采用与 Caffe2 类似的描述文件定义模型,因此它能非常便捷地部署移动端应用。目前该框架为 TensorFlow 和 Caffe 模型提供转换工具,并且其它框架定义的模型很快也能得到支持。

第四,如何选择深度学习的框架

[En]

Fourth, how to select the framework of deep learning

要进入深度学习领域,基础就是学习Python。可以说,现在进入深度学习领域是比较容易的。五年前,研究深度学习需要用C++或MatLab编写大量低级算法,这需要研究生教育甚至博士教育。现在不同了。您只需要学习Python,就很容易上手了。尽管深度学习支持越来越多的编程语言,但Python是最简单、使用最广泛的一种。关于Python最强大的一点是,它有一个非常好的生态系统和来自社区的强有力的支持,比如安装了Python,方便了Anaconda;使用了Python可视化,并使用了Matplotlib。数值计算有NumPy和SciPy可供选择,图像处理和Scikit-IMAGE。有很多现成的工具可以为您节省大量时间,这正是工程师所需要的。

[En]

To enter the field of deep learning, the foundation is to learn Python. It can be said that it is relatively easy to enter the field of deep learning now. Five years ago, studying deep learning required a large number of low-level algorithms to be written in C++ or Matlab, which required postgraduate education and even doctoral education. It’s different now. You only need to learn Python, and it’s easy to get started. Although deep learning is supporting more and more programming languages, Python is the simplest and most widely used one. The most powerful thing about Python is that it has a very good ecosystem and strong support from the community, such as installing Python, convenient Anaconda; to use Python visualization, and Matplotlib to use. Numerical computation has NumPy and SciPy to choose from, image processing, and Scikit-image. There are a lot of off-the-shelf tools that can save you a lot of time, which is exactly what engineers need.

在了解了所有主流的深度学习框架后,我认为是时候放弃开发语言(基本支持特定社区的Python和Clipper Java和Lua)、简单的界面、良好的文档记录、快速的计算、性能、易于安装和部署等纯技术。也许在这些框架的早期,我们更关注这些方面。然而,随着各种框架的不断完善,以及大型企业的支持和投入,各种框架正在不断相互学习。最终的结果是,每个人都是相似的,都有自己的长处。现在我们要进入更深层次的竞争。我们至少应该考虑以下几个方面:

[En]

After having an understanding of all the mainstream deep learning frameworks, I think it’s time to abandon the pure technologies such as development language (basically supporting Python and Clipper Java and Lua for specific communities), simple interface, well-documented, fast computing, performance, easy installation and deployment, and so on. Maybe in the early days of these frameworks, we paid more attention to these aspects. However, with the continuous improvement of various frameworks and the support and investment of large enterprises, various frameworks are constantly learning from each other. The final result is that everyone is similar and has their own strengths. Now we want to enter the competition of a deeper dimension. We should at least consider the following dimensions:

  1. 深度学习框架是否支持分布式计算,是不是分布式框架?

分布式:TensorFlow、MXNet、PyTorch、CNTK、Caffe2、DL4J

不支持分发:Caffe、Theano、Torch

[En]

Does not support distribution: Caffe, Theano, Torch

  1. 深度学习框架是否支持移动端部署?

支持:PyTorch、MXNet、TensorFlow、Caffe2

不支持:CNTK

  1. 编程接口的设计是命令式编程(imperative programming)还是声明式语言(declarative programing)?

命令:易于理解的编程接口PyTorch、NumPy和Torch、Theano

[En]

Imperative: easy to understand programming interfaces PyTorch,NumPy and Torch, Theano

MXNet通过NDarray模块和Gluon高级接口提供了非常类似PyTorch的编程接口。

声明式:TensorFlow、Theano、Caffe

  1. 深度学习框架是基于动态计算图还是静态计算图?

目前,使用动态计算图的框架有PyTorch、MXNet和Chainer。

[En]

At present, the frameworks that use dynamic computing diagrams are PyTorch, MXNet and Chainer.

目前,TensorFlow、Kera、CNTK、Caffe/Caffe2、Theano等都使用静态计算图,其中TensorFlow主要使用静态计算图。TensorFlow在2018年10月宣布了一项动态计算选项渴望执行,但这一功能仍然相对较新,可能还不是很成熟,TensorFlow文档和项目仍然是静态计算示意图。MXNet有两种机制:动态计算图和静态计算图。

[En]

At present, static computing diagrams are used in TensorFlow, Keras, CNTK, Caffe/Caffe2, Theano and so on, of which TensorFlow mainly uses static computing diagrams. TensorFlow announced a dynamic computing option Eager Execution in October 2018, but this feature is still relatively new and may not be very mature, and TensorFlow documents and projects are still static computing diagrams. MXNet has two mechanisms: dynamic computing graph and static computing graph.

  1. 深度学习框架是否有强大的社区和生态支持?

重金打造的TensorFlow,多方押注的MXNet,正在崛起的PyTorh,技术稳重的CNTK,

这四个开源深度学习框架都符合这一点。

[En]

These four open source deep learning frameworks all meet this point.

  1. 深度学习框架背后是否有巨头支持?

Google领导的TensorFlow,Amazon选择的MXNet,Facebook倾力打造的PyTorch,Microsoft把内部核心技术开源的CNTK,这四大开源深度学习框架都满足这一点。

通过思考以上六个维度,我认为你应该知道如何做出选择:首先,静态计算图是好的,但动态图才是未来和趋势。对于大多数开发人员来说,Python是基础,而其成熟的可用库、工具以及生态和社区支持太重要了。对于深度学习而不是纯实验室研究的商业应用来说,支持分布式和移动操作平台是必须的,未来也会使用;前端编程接口越灵活,越需要考虑不同的应用场景,所以前端编程接口的设计需要兼容简单高效的命令和清晰的逻辑声明。深度学习框架必须有背后巨人的大力支持和强大的社区,以及专业的团队不断更新和完善代码库。从这个角度来看,只有以下四个顶级深度学习框架营才能满足我们的要求。

[En]

By thinking about the above six dimensions, I think you should know how to make a choice: first of all, static computing diagrams are good, but dynamic diagrams are the future and trend. For most developers, Python is the foundation, and Python’s mature available libraries, tools and ecological and community support are too important. For commercial applications of deep learning rather than pure laboratory research, supporting distributed and mobile operating platforms is a must and will be used in the future; the more flexible the front-end programming interface is, the better we need to consider different application scenarios, so the design of the front-end programming interface needs to be compatible with simple and efficient commands and clear logic declarations. The deep learning framework must have the strong support of the giant behind and a strong community, as well as a professional team to constantly update and improve the code base. From this point of view, only the following four top deep learning framework camps can meet our requirements.

深度学习框架的四大阵营及其技术方向是:

[En]

The four camps of the deep learning framework and their technological directions are:

(1)TensorFlow,前端框架Keras,背后巨头Google;

(2)PyTorch,前端框架FastAI,背后巨头Facebook;

(3)MXNet,前端框架Gluon,背后巨头Amazon;

(4)Cognitive Toolkit (CNTK),前端框架Keras或Gluon,背后巨头Microsoft。

那么如何在这四大阵营中做出选择呢?这取决于具体项目的需要。重视谷歌无与伦比的影响力的开发人员不需要太多挣扎。TensorFlow将支持最广泛的开发语言和最多的运行平台。开发者很难逃出谷歌的覆盖范围,更多的开发者将被包括在内。AlphaGo帮助谷歌证明了谷歌在人工智能领域的领先地位,Kera+TensorFlow的解决方案也得到了谷歌的正式认可。新技术和突破谷歌的TensorFlow2.0将为喜欢学习新事物、追求完美的开发者带来,千万不要错过Facebook的PyTorch的强势崛起,它是动态图形技术的最好代表,也是目前最活跃、最具活力的深度学习框架。这一次谷歌遇到了一个真正的竞争对手;亚马逊在云计算和云服务领域的领先地位给开发者带来了更多的信心,选择亚马逊人工智能背后的技术肯定没有错。微软的技术正在不断挑战人类语音识别和图像识别的极限。长期受益于微软阵营的开发人员对微软的核心技术开源感到非常兴奋。Kera和Gluon都可以支持认知工具包(CNTK),这很棒,确实给开发人员提供了更多的选择。

[En]

So how to choose among these four camps? It depends on the needs of the specific project. Developers who value the unparalleled influence of Google do not need to struggle too much. TensorFlow will support the widest range of development languages and the largest number of running platforms. It is very difficult for developers to escape from the coverage of Google, and more developers will be included. AlphaGo has helped Google prove Google’s leading position in artificial intelligence, and Keras+TensorFlow ‘s solution has been officially recognized by Google. New Technology and Breakthrough that Google’s TensorFlow2.0 will bring Developers who like to learn new things and pursue perfection must not miss the strong rise of Facebook’s PyTorch,PyTorch, which is the best representative of dynamic graph technology and the most active and dynamic deep learning framework at present. this time Google has encountered a real competitor; Amazon’s leading position in cloud computing and cloud services brings developers more confidence, and there must be nothing wrong with choosing the technology behind Amazon artificial intelligence. Microsoft’s technology is constantly challenging the limits of human voice recognition and image recognition. Developers who have long benefited from the Microsoft camp are very excited about Microsoft’s open source of its core technology. Cognitive Toolkit (CNTK) can be supported by both Keras and Gluon, which is great and does give developers more choices.

最后我们会发现,深度学习框架其实只是一个工具和平台,虽然它分为四大阵营和四条技术路线,但得益于这些主流框架之间的不断竞争和相互学习,我们最终会发现我们都是一样的。最好的是,这些主流的深度学习框架都是基于Python的,只要我们掌握了Python的设计思想和深度学习算法。每个框架都是一个可用的库或工具集,我们是工程师,工程师需要善于学习,善于选择最好的工具。初学者可以从Kera、Gluon、FastAI等上层的高层API框架入手,但不能依赖这些层层包装的高级API,否则无法真正掌握深度学习的技术本质。深度学习和熟练掌握一个顶级的深度学习框架是非常重要的,比如PyTorch,然后运行一个Run TensorFlow和MXNet,我们可以学习反差,在深度学习领域,我们可以深刻理解什么是“纸上所学的道理不深刻”,我认为要学习深度学习和人工智能技术,我们必须实践,只有动手做过的才是自己的,否则,一切都还停留在书本上。

[En]

Finally, we will find that the deep learning framework is actually just a tool and platform, although it is divided into four camps and four technical routes, but thanks to the constant competition between these mainstream frameworks and learning from each other, we will finally find that we are all the same. the best thing is that these mainstream deep learning frameworks are all based on Python, as long as we master the design ideas of Python and deep learning algorithms. Each framework is an available library or tool set, we are engineers, engineers need to be good at learning and good at choosing the best tools. Beginners can start from the upper-level high-level API frameworks, such as Keras, Gluon and FastAI, but can not rely on these layers of packaging of advanced API, otherwise they will not be able to really grasp the technical nature of deep learning. In-depth learning and proficiency in a top deep learning framework is very important, such as PyTorch, and then run a run TensorFlow and MXNet, we can learn in contrast, in the field of deep learning, we can deeply understand what is “the truth learned on paper is not profound”, I think to learn deep learning and artificial intelligence technology, we must practice, only hands-on has done is their own, otherwise, everything is still on books.

在深度学习领域,我想谈的另一个问题是“我们需要自己重新发明轮子吗?”我们是否需要自己重新设计和实施深度学习框架?

[En]

One more question I’d like to talk about in the field of deep learning is “do we need to reinvent the wheel ourselves?” Do we need to redesign and implement a deep learning framework ourselves?

我想这取决于你的兴趣和你的时间。如果你立志成为一名有充足时间和浓厚兴趣的伟大专家,那么根据你对算法和数据结构的独特理解,将你自己的哲学和艺术思维融入到你的设计想法中,从头开始设计和实现深度学习框架是可以的。启动一个开源项目,召集一群志同道合的合作伙伴一起工作,是一件非常具有挑战性和趣味性的事情。我认为我们应该大力鼓励有这种抱负的年轻人,即使这只是为了更深入的学习。更重要的是,我们中国人已经拥有了业内最成功的例子。加州大学伯克利分校的贾阳青开发了Caffe,随后卡内基梅隆大学的李牧创建了MXNet。他们都创建了自己的深度学习框架,并在攻读博士学位时启动了开源项目。看看他们今天在行业中的位置,都是谷歌、Facebook、亚马逊、苹果等巨头必须抢的顶尖人才,对于中小企业来说,最重要的是快速做好商业应用,服务消费者,所以选择顶级深度学习阵营和成熟的技术路线更重要,真的没有必要重新发明车轮。但对于华为、阿里巴巴或百度这样严重依赖人工智能基础技术的超级巨头来说,必须有自己的深度学习框架和平台,这不是可以讨论的问题。就像亚马逊选择了MXNet,AWS来支持TensorFlow一样,亚马逊也不会愚蠢到依赖谷歌。

[En]

I think it depends on your interest and your time. If you are determined to become a great expert with plenty of time and strong interest, then according to your unique understanding of algorithms and data structures, integrate your own philosophical and artistic thinking into your design ideas, and it’s okay to design and implement a deep learning framework from scratch. Launching an open source project and gathering a group of like-minded partners to work together is a very challenging and interesting thing. I think we should strongly encourage young people with such aspirations, even if it’s just for more in-depth study. What’s more, we Chinese already have the most successful example in the industry. Jia Yangqing of UC Berkeley developed Caffe, and then Li Mu of CMU Carnegie Mellon created MXNet. They all created their own deep learning framework and launched open source projects when they were studying for a doctorate. Take a look at their position in the industry today, which are all top talents that must be grabbed by giants such as Google, Facebook, Amazon, Apple, etc. For small and medium-sized enterprises, it is most important to quickly do a good job in business applications and serve consumers, so it is more important to choose a top deep learning camp and a mature technological route, and there is really no need to reinvent the wheel. but for a super giant that relies heavily on the basic technology of artificial intelligence, such as Huawei, Alibaba or Baidu Must have their own deep learning framework and platform, which is not an issue that can be discussed. Just as Amazon chose MXNet,AWS to support TensorFlow, Amazon is not stupid enough to rely on Google.

原文链接:https://zhuanlan.zhihu.com/p/59086302

Original: https://www.cnblogs.com/sddai/p/15547603.html
Author: stardsd
Title: 深度学习框架对比分析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/7155/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总