📜  Apache MXNet-简介

📅  最后修改于: 2020-12-10 04:43:28             🧑  作者: Mango


本章重点介绍Apache MXNet的功能,并讨论该深度学习软件框架的最新版本。

什么是MXNet?

Apache MXNet是功能强大的开源深度学习软件框架工具,可帮助开发人员构建,训练和部署深度学习模型。过去几年,从医疗保健到运输再到制造业,实际上,在我们日常生活的各个方面,深度学习的影响已经广泛传播。如今,公司正在寻求深度学习以解决一些难题,例如面部识别,对象检测,光学字符识别(OCR),语音识别和机器翻译。

这就是以下原因支持Apache MXNet的原因:

  • 一些大公司,例如英特尔,百度,微软,Wolfram Research等。

  • 公共云提供商,包括Amazon Web Services(AWS)和Microsoft Azure

  • 卡内基·梅隆大学,麻省理工学院,华盛顿大学和香港科技大学等一些大型研究机构。

为什么选择Apache MXNet?

有各种各样的深度学习平台,例如Torch7,Caffe,Theano,TensorFlow,Keras,Microsoft Cognitive Toolkit等。那么您可能想知道为什么使用Apache MXNet?让我们检查一下其背后的一些原因:

  • Apache MXNet解决了现有深度学习平台的最大问题之一。问题是,为了使用深度学习平台,必须必须学习另一种具有不同编程风格的系统。

  • 在Apache MXNet的帮助下,开发人员可以利用GPU以及云计算的全部功能。

  • Apache MXNet可以加速任何数值计算,并特别强调加快大规模DNN(深度神经网络)的开发和部署。

  • 它为用户提供命令式和符号编程的功能。

各种功能

如果您正在寻找一个灵活的深度学习库来快速开发前沿的深度学习研究,或者正在寻找一个强大的平台来推动生产工作量,那么搜索将以Apache MXNet结尾。这是因为它具有以下功能:

分布式培训

无论是多GPU还是具有近乎线性扩展效率的多主机培训,Apache MXNet都能使开发人员充分利用其硬件。 MXNet还支持与Horovod集成,后者是在Uber创建的开源分布式深度学习框架。

对于此集成,以下是Horovod中定义的一些常见的分布式API:

  • horovod.broadcast()

  • horovod.allgather()

  • horovod.allgather()

在这方面,MXNet为我们提供以下功能:

  • 设备放置-借助MXNet,我们可以轻松地指定每个数据结构(DS)。

  • 自动微分-Apache MXNet自动执行微分,即微分计算。

  • 多GPU训练-MXNet使我们能够利用可用GPU的数量实现缩放效率。

  • 优化的预定义层-我们可以在MXNet中编码自己的层,也可以为速度优化预定义的层。

杂种

Apache MXNet为用户提供了混合前端。借助Gluon Python API,它可以弥合其命令性和符号功能之间的差距。可以通过调用其混合功能来完成。

计算速度更快

数十或数百个矩阵乘法之类的线性运算是深层神经网络的计算瓶颈。为了解决这个瓶颈,MXNet提供了-

  • GPU的优化数值计算

  • 分布式生态系统的优化数值计算

  • 借助标准NN可以简单表达通用工作流程的自动化。

语言绑定

MXNet已与Python和R等高级语言进行了深度集成。它还支持其他编程语言,例如-

  • 斯卡拉

  • 朱莉亚

  • Clojure

  • 爪哇

  • C / C++

  • 佩尔

我们不需要学习任何新的编程语言,而是可以将MXNet与混合功能结合使用,从而以自选的编程语言异常平稳地从Python过渡到部署。

最新版本MXNet 1.6.0

Apache Software Foundation(ASF)于2020年2月21日根据Apache License 2.0发布了稳定版本的Apache MXNet 1.6.0。这是最后一个支持Python 2的MXNet版本,因为MXNet社区投票赞成在进一步的版本中不再支持Python 2。让我们检查一下此版本为其用户带来的一些新功能。

NumPy兼容接口

由于其灵活性和通用性,NumPy已被机器学习从业人员,科学家和学生广泛使用。但是,正如我们所知,当今的硬件加速器(例如图形处理单元(GPU))已越来越多地被各种机器学习(ML)工具包所吸收,NumPy用户要利用GPU的速度,需要切换到新的框架具有不同的语法。

借助MXNet 1.6.0,Apache MXNet正朝着与NumPy兼容的编程体验发展。新接口为熟悉NumPy语法的从业人员提供了等效的可用性和表达能力。借助MXNet 1.6.0,现有的Numpy系统还可以利用诸如GPU之类的硬件加速器来加速大规模计算。

与Apache TVM集成

Apache TVM是用于CPU,GPU和专用加速器等硬件后端的开源端到端深度学习编译器堆栈,旨在填补以生产力为中心的深度学习框架与面向性能的硬件后端之间的空白。使用最新版本的MXNet 1.6.0,用户可以利用Apache(正在孵化)TVM以Python编程语言实现高性能的运算符内核。此新功能的两个主要优点如下-

  • 简化了以前基于C++的开发过程。

  • 支持在多个硬件后端(例如CPU,GPU等)之间共享相同的实现。

现有功能的改进

除了上面列出的MXNet 1.6.0的功能之外,它还对现有功能进行了一些改进。改进如下-

为GPU分组按元素操作

众所周知,按元素操作的性能是内存带宽,这就是原因,链接此类操作可能会降低整体性能。 Apache MXNet 1.6.0执行按元素进行的操作融合,实际上会在可能的情况下实时生成即时融合操作。这种逐元素的操作融合还减少了存储需求并提高了整体性能。

简化常用表达

MXNet 1.6.0消除了冗余表达式,并简化了通用表达式。这种增强还改善了内存使用率和总执行时间。

最佳化

MXNet 1.6.0还提供了对现有功能和运算符的各种优化,如下所示:

  • 自动混合精度

  • Gluon Fit API

  • MKL-DNN

  • 大张量支持

  • TensorRT集成

  • 高阶梯度支持

  • 经营者

  • 运营商绩效概况

  • ONNX导入/导出

  • Gluon API的改进

  • 符号API的改进

  • 修复了100多个错误