MXNet名字源于“Mix and Maximize”,与其他工具相比,MXNet结合了符号语言和过程语言的编程模型,并试图最大化各自优势,利用统一的执行引擎进行自动多GPU并行调度优化。
不同的编程模型有各自的优势,以往的深度学习库往往着重于灵活性,或者性能。MXNet通过融合的方式把各种编程模型整合在一起,并且通过统一的轻量级运行引擎进行执行调度。这使得用户可以直接复用稳定高效的神经网络模块,并且可以通过R等高级语言进行快速扩展。
MXNet融合了Minerva的动态执行、Cxxnet的静态优化和Purine2的符号计算等思想,直接支持C接口和静态/动态Library,使得对于新语言的扩展更加容易。
MXNet主要技术特点如下:
1)轻量级调度引擎。在数据流调度的基础上引入了读写操作调度,并且使得调度和调度对象无关,用以直接有机支持动态计算和静态计算的统一多GPU多线程调度,使得上层实现更加简洁灵活。
2)符号计算支持。MXNet支持基于静态计算流图符号计算。计算流图不仅使设计复杂网络更加简单快捷,而且基于计算流图,MXNet可以更加高效地利用内存。同时进一步优化了静态执行的规划,内存需求比Cxxnet还要少。
3)混合执行引擎。相比Cxxnet的全静态执行、Minerva的全动态执行,MXNet采用动静态混合执行引擎,可以把Cxxnet静态优化的效率和Ndarray动态运行的灵活性结合起来,把高效的C++库更加灵活地和Python等高级语言结合在一起。(www.xing528.com)
4)更加灵活。在MShadow C++表达式模板的基础上,符号计算和NDArray使在R等高级语言内编写优化算法、损失函数和其他深度学习组件并高效无缝地支持CPU/GPU成为可能。用户无须关心底层实现,在符号和NDArray层面完成逻辑即可进行高效的模型训练和预测。
5)对于云计算更加友好。所有数据模型可以从S3/HDFS/Azure上直接加载训练。
6)代码更加简洁高效。大量使用C++11特性,使MXNet利用最少的代码实现尽可能最大的功能。用约11k行C++代码(加上注释4k行)实现了以上核心功能。
7)开源用户和设计文档。MXNet提供了非常详细的用户文档和设计文档以及样例。所有的代码都有详细的文档注释,并且会持续更新代码和系统设计细节,对广大深度学习系统开发和爱好者有所帮助。
9)它能够在R上构建和定制最先进水平的深度学习模型,并将它们应用到图像分类和数据科学等挑战性任务。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。