MXNet

MXNet是开源的,用来训练部署深层神经网络的深度学习框架。它是可扩展的,允许快速模型训练,并灵活支持多种语言(C ++,Python,Julia,Matlab,JavaScript, Go,R,Scala,Perl,Wolfram语言)

来源:Wikipedia
简介

MXNet是开源的,用来训练部署深层神经网络的深度学习框架。它是可扩展的,允许快速模型训练,并灵活支持多种语言(C ++,Python,Julia,Matlab,JavaScript, Go,R,Scala,Perl,Wolfram语言)。

[描述来源:Wikipedia;URL: https://en.wikipedia.org/wiki/MXNet]

MXNet库很便携,可以扩展到多个gpu和多个计算机。MXNet支持重大公共云提供商包括AWS[2]和Azure[3]。并且amazon已经选择MXNet作为AWS的深度学习框架。目前,MXNet得到Intel,Dato,百度,微软,Wolfram Research以及CMU,MIT,华盛顿大学和香港科技大学等研究机构的支持。

Apache MXNet是一个精干,灵活,可扩展很高的深度学习框架,支持的多种深度学习模型,包括卷积神经网络(CNNs)和长短期记忆网络(LSTMs)。MXNet的主要四个优点:

  1. 可扩展性。MXNet可以通过分布式参数服务器分布到动态的云架构上,并且可以通过多个GPU / CPU实现几乎线性的规模。
  2. 灵活性。如下图所示,Chainer、Pytorch和MXNet可以称为命令式(imperative)框架,下半部分可以称为符号式(symbolic)框架。我们能注意到,MXNet同时具有支持命令式和符号式框架的特点。这使得它更容易被用来命令式编程上手深度学习的开发者。这也使得它更容易调试,修改超参数等。
  3. 多种语言支持支持。Apache MXNet支持C ++,Python, R, Scala, Julia, Perl, Matlab and Javascriptt的开发。
  4. 支持IOT和边缘设备,除了在云中处理多GPU训练和部署复杂模型之外,MXNet还可以生成轻量级的神经网络模型,这些模型可以在Raspberry Pi、智能手机或笔记本电脑等低功耗边缘设备上运行,并实时远程处理数据

发展历史

MXNet由DMLC(Distributed (Deep) Machine Learning Community)打造,DMLC的大部分成员目前大部分是中国人,以陈天奇,李沐,解浚源等为代表,创建了这个世界上目前排名第四的深度学习框架:MXNet。

2014年在NIPS上的相遇之后,陈天奇与李沐等人决定组建DMLC(Distributied(Deep)Machine Learning Community),号召大家一起合作开发MXNet,分别发挥各自的特长,避免reinvent the wheel。前期开发者主要是CXXNet团队, 核心成员十人左右。其中张铮老师指导的 Minerva 团队主要负责后端引擎,陈天奇进行接口设计,李沐负责分布式。

经过一年的开发,MXNet现身2015年NIPS的机器学习系统Workshop。并且,MXNet项目于2015年9月开源,项目代码托管在Github上。2016 年,越来越多的开源贡献者参与到了开发及维护 MXNet 的工作中,对 MXNet 进行了大量的扩展、优化和修复工作,截止2016年11月,该项目已经拥有200多位贡献者。

2016年12月初,Amazon公司的Werner Vogels宣布Amazon深度学习框架将会正式选用MXNet,并且AWS将会通过增加源代码贡献、改进文档以及支持来自其它框架的可视化、开发以及迁移工具,为实现MXNet成功的长远目标做出贡献。2017年1月23日,MXNet进入Apache基金会,成为Apache的孵化器项目。到2017年底, MXNet 贡献力量的人员达到 400 多名,其中包括来自 Amazon、Apple、Samsung 和 Microsoft 的开发人员。

2017年,MXNet0.11是MXNet正式加入Apache以后的第一个版本。这次最大的改进是加入了动态图接口Gluon,这也使得MXNet的特点更加鲜明。接下来我们就介绍一下Gluon的优缺点。

Gluon优点

  1. 支持GLUON,易于使用. MXNet的Gluon库提供一个高级接口,让用户可以轻松创建、训练和部署机器学习模型,并且不影响训练速度。Gluon可以针对预定义的层、损失函数和优化器提供高层抽象功能。它还具有灵活的结构,使用直观,易于调试。
  2. 性能更高.深度学习工作负载可以分布在具有近线性可扩展性的多个GPU中,这意味着可以在更短的时间内处理特别大的项目。而扩展会根据群集中的GPU数量自动进行。开发人员还可以批量运行无服务器的推断,从而节省时间并提高工作效率。
  3. 动态图的支持:Gluon支持开发者定义动态的神经网络模型。那就是说,MXNet不仅支持静态图,同时也支持动态图。动静态地图随意转换。相比Tensorflow,Caffe2等静态图更加灵活易用。
  4. 灵活性高,选择丰富MXNet支持大量编程语言,例如C++、JavaScript、Python、R、Matlab、Julia、Scala和Go,因此您可以使用自己了解的语言开始工作。但是在后端,所有代码都以C++编译,因此无论构建模型使用的是哪种语言,都能实现最高性能。其他性能比较:GumGum 比较了 MXNet 和 Caffe 的性能。

MXNet对于前期文档可读性较弱的问题,MXNet请了CMU知名教授Alex Smola和Zachary Lipton联手为Gluon打造文档。当然,gluon 因为刚上线不久,还存在一些Bug,在成熟度和线上部署方便还有不足。

主要事件

年份作者论文
2015Chen T等人提出MXNet框架Chen T, Li M, Li Y, et al. Mxnet: A flexible and efficient machine learning library for heterogeneous distributed systems[J]. arXiv preprint arXiv:1512.01274, 2015.
2015Girshick R提出Fast-RCNNGirshick R. Fast r-cnn[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1440-1448.
2015Ren S基于Fast-RCNN提出Faster-RCNNRen S, He K, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks[C]//Advances in neural information processing systems. 2015: 91-99.
2016Iandola, Forrest N 提出一种在同等正确率的情况下,找出更小的CNN结构,叫squeezeNet。它对多种平台进行支持:MXNet,Chainer, Keras,Pytouch,CoreML等Iandola, Forrest N., et al. "SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size." arXiv preprint arXiv:1602.07360 (2016).
2017Yang, Haojin等人基于MXNet提出BMXNet的Binary Neural Networks (BNNs)库来减小传统神经网络的内存空间。Yang, Haojin, et al. "BMXNet: An Open-Source Binary Neural Network Implementation Based on MXNet." arXiv preprint arXiv:1705.09864 (2017).
2017Yunpeng Chen, Jianan Li提出Dual Path Networkk (DPN)的图像识别算法,并在MXNet进行实现部署。Chen, Yunpeng, et al. "Dual path networks." Advances in Neural Information Processing Systems. 2017.

[描述来源:Wikipedia;URL: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software]

发展分析

瓶颈

  • 因为有Tensorflow, Caffe,Keara等深度学习框架的巨头,MXNet市场占有度很小,还需要进一步的社区发展。
  • 比 Theano 更困难的学习难度,入门门槛稍高。
  • 因为是多语言支持,需要耗费很多人力,因此核心算法开发还需要更多的contributors。
  • 依旧存在小的Bug。

未来发展方向

  • 增加文档的可读性,减小上手难度。
  • 核心人员完善框架的核心功能。

以下是几个深度学习框架的对比,更多对比看URL:https://en.wikipedia.org/wiki/Deep_belief_network

软件名创建人认证方接口OpenMP支持OpenCL支持符号框架支持命令框架支持递归神经网络平行计算
caffeBerkeley Vision and Learning CenterBSD licensePython, MATLABYes在开发YesNoYes?
caffe2FacebookApache 2.0Python, MATLABYes在开发YesNoYesYes
TensorFlowGoogle Brain teamApache 2.0Python (Keras), C/C++, Java, Go, RNoYesYesNoYesYes
MXnetDistributed (Deep) Machine Learning CommunityApache 2.0C++, Python, Julia, Matlab, JavaScript, Go, R, Scala, PerlYes在规划YesYesYesYes
TheanoUniversité de MontréalBSD licensePython (Keras)Yes在开发YesNoYesYes

Apache machine learning systems:

  1. Apache Mahout
  2. Apache Spark's MLlib

Apache Mahoutand Apache Spark's MLlib 是典型的机器学习系统. 深度学习算法可以在这两个平台上运行。 Mahout 和 Spark ML-LIB运行时同步的 . 这是与MXNet最主要的区别所在。MXNet 能异步运行也可以同步运行。除此之外,MXNet 通过一系列方法来优化了很多深度学习模型(e.g.模型的并行和数据的并行),这使得 MXNet 更佳效率,几乎近似线性加速了现有的模型。

Other Apache projects that are potentially complimentary:

  1. Apache Arrow- 从MXNet中读取Apache Arrow内部格式的数据,这样用户就可以在Spark中运行ETL/preprocessing,将结果保存在 Arrow’s的格式中,然后在上面运行深度学习算法。
  2. Apache Singa: - MXNet and Singa都是Apache深度学习项目 are both deep learning projects, and can benefit from a larger deep learning community at Apache.
  3. HORN:HORN是一个以神经为中心的编程API和用于大规模深度学习的执行框架,建立在Apache Hama之上

MXNet mentor: Sebastian Schelter, Suneel Marthi, Henri Yandell, Markus Weimer

Mxnet sponsor: Henri Yandell

MXNet 开发交流平台:

AWS MXNet 案例研究:

  1. TuSimple 开发自动驾驶汽车使用的智能.
  2. GumGum 比较了 MXNet 和 Caffe 的性能。
  3. SigOpt 加快卷积神经网络的训练速度。

DMLC主要核心开发人员GitHub logins as an FYI)

  • Tianqi Chen (@tqchen)
  • Mu Li (@mli)
  • Junyuan Xie (@piiswrong)
  • Bing Xu (@antinucleon)
  • Chiyuan Zhang (@pluskid)
  • Minjie Wang (@jermainewang)
  • Naiyan Wang (@winstywang)
  • Yizhi Liu (@javelinjs)
  • Tong He (@hetong007)
  • Qiang Kou (@thirdwing)
  • Xingjian Shi (@sxjscience)
  • Yutian Li (@hotpxl)
  • Yuan Tang (@terrytangyuan)

AWS Deep Learning AMI : available in both Ubuntu and Amazon Linux versions, let you run deep learning applications in the cloud at any scale. The Amazon Machine Images (AMIs) come with pre-installed, open source deep learning frameworks including Apache MXNet, TensorFlow, the Microsoft Cognitive Toolkit (CNTK), Caffe, Caffe2, Theano, Torch, and Keras.

Contributor: Ruiying Cai

相关人物
李沐
李沐
李沐,2008年毕业于上海交通大学计算机系,大学期间,曾在微软亚洲研究院担任实习生。2017年博士毕业后,李沐加入亚马逊任AI主任科学家。
陈天奇
陈天奇
陈天奇,华盛顿大学计算机系博士生,此前毕业于上海交通大学ACM班,研究方向为大规模机器学习。陈天奇曾获得KDD CUP 2012 Track 1第一名,并开发了SVDFeature,XGBoost,cxxnet等著名机器学习工具,是最大开源分布式机器学习项目DMLC的发起人之一。
简介
相关人物