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的主要四个优点:
- 可扩展性。MXNet可以通过分布式参数服务器分布到动态的云架构上,并且可以通过多个GPU / CPU实现几乎线性的规模。
- 灵活性。如下图所示,Chainer、Pytorch和MXNet可以称为命令式(imperative)框架,下半部分可以称为符号式(symbolic)框架。我们能注意到,MXNet同时具有支持命令式和符号式框架的特点。这使得它更容易被用来命令式编程上手深度学习的开发者。这也使得它更容易调试,修改超参数等。
- 多种语言支持支持。Apache MXNet支持C ++,Python, R, Scala, Julia, Perl, Matlab and Javascriptt的开发。
- 支持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优点
- 支持GLUON,易于使用. MXNet的Gluon库提供一个高级接口,让用户可以轻松创建、训练和部署机器学习模型,并且不影响训练速度。Gluon可以针对预定义的层、损失函数和优化器提供高层抽象功能。它还具有灵活的结构,使用直观,易于调试。
- 性能更高.深度学习工作负载可以分布在具有近线性可扩展性的多个GPU中,这意味着可以在更短的时间内处理特别大的项目。而扩展会根据群集中的GPU数量自动进行。开发人员还可以批量运行无服务器的推断,从而节省时间并提高工作效率。
- 动态图的支持:Gluon支持开发者定义动态的神经网络模型。那就是说,MXNet不仅支持静态图,同时也支持动态图。动静态地图随意转换。相比Tensorflow,Caffe2等静态图更加灵活易用。
- 灵活性高,选择丰富MXNet支持大量编程语言,例如C++、JavaScript、Python、R、Matlab、Julia、Scala和Go,因此您可以使用自己了解的语言开始工作。但是在后端,所有代码都以C++编译,因此无论构建模型使用的是哪种语言,都能实现最高性能。其他性能比较:GumGum 比较了 MXNet 和 Caffe 的性能。
MXNet对于前期文档可读性较弱的问题,MXNet请了CMU知名教授Alex Smola和Zachary Lipton联手为Gluon打造文档。当然,gluon 因为刚上线不久,还存在一些Bug,在成熟度和线上部署方便还有不足。
主要事件
年份 | 作者 | 论文 |
2015 | Chen 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. |
2015 | Girshick R提出Fast-RCNN | Girshick R. Fast r-cnn[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1440-1448. |
2015 | Ren S基于Fast-RCNN提出Faster-RCNN | Ren 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. |
2016 | Iandola, 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). |
2017 | Yang, 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). |
2017 | Yunpeng 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支持 | 符号框架支持 | 命令框架支持 | 递归神经网络 | 平行计算 |
caffe | Berkeley Vision and Learning Center | BSD license | Python, MATLAB | Yes | 在开发 | Yes | No | Yes | ? |
caffe2 | Apache 2.0 | Python, MATLAB | Yes | 在开发 | Yes | No | Yes | Yes | |
TensorFlow | Google Brain team | Apache 2.0 | Python (Keras), C/C++, Java, Go, R | No | Yes | Yes | No | Yes | Yes |
MXnet | Distributed (Deep) Machine Learning Community | Apache 2.0 | C++, Python, Julia, Matlab, JavaScript, Go, R, Scala, Perl | Yes | 在规划 | Yes | Yes | Yes | Yes |
Theano | Université de Montréal | BSD license | Python (Keras) | Yes | 在开发 | Yes | No | Yes | Yes |
Apache machine learning systems:
Apache Mahoutand Apache Spark's MLlib 是典型的机器学习系统. 深度学习算法可以在这两个平台上运行。 Mahout 和 Spark ML-LIB运行时同步的 . 这是与MXNet最主要的区别所在。MXNet 能异步运行也可以同步运行。除此之外,MXNet 通过一系列方法来优化了很多深度学习模型(e.g.模型的并行和数据的并行),这使得 MXNet 更佳效率,几乎近似线性加速了现有的模型。
Other Apache projects that are potentially complimentary:
- Apache Arrow- 从MXNet中读取Apache Arrow内部格式的数据,这样用户就可以在Spark中运行ETL/preprocessing,将结果保存在 Arrow’s的格式中,然后在上面运行深度学习算法。
- Apache Singa: - MXNet and Singa都是Apache深度学习项目 are both deep learning projects, and can benefit from a larger deep learning community at Apache.
- HORN:HORN是一个以神经为中心的编程API和用于大规模深度学习的执行框架,建立在Apache Hama之上
MXNet mentor: Sebastian Schelter, Suneel Marthi, Henri Yandell, Markus Weimer
Mxnet sponsor: Henri Yandell
MXNet 开发交流平台:
- MXNet Apache mailing list (dev@mxnet.apache.org): To subscribe, send an email to dev-subscribe@mxnet.apache.org.
- MXNet Slack channel: To request an invitation to the channel please subscribe to the mailing list above and then email: dev@mxnet.apache.org. Note: if you have an email address with apache.org, you do not need an approval to join the MXNet Slack channel.
AWS MXNet 案例研究:
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