📜  Apache MXNet-工具箱和生态系统

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


为了支持跨多个领域的深度学习应用程序的研究和开发,Apache MXNet为我们提供了丰富的工具箱,库等生态系统。让我们探索它们-

工具包

以下是MXNet提供的一些最常用和最重要的工具箱-

胶水

顾名思义,GluonCV是由MXNet支持的用于计算机视觉的Gluon工具包。它提供了计算机视觉(CV)中最新的DL(深度学习)算法的实现。借助GluonCV工具包,工程师,研究人员和学生可以验证新想法并轻松学习CV。

下面给出的是GluonCV的一些功能

  • 它训练脚本以重现最新研究报告中的最新结果。

  • 超过170多种高质量的预训练模型。

  • 拥抱灵活的开发模式。

  • GluonCV易于优化。我们可以在不保留繁重的DL框架的情况下进行部署。

  • 它提供了精心设计的API,可大大减少实现的复杂性。

  • 社区支持。

  • 易于理解的实现。

以下是GluonCV工具包支持的应用程序

  • 影像分类

  • 物体检测

  • 语义分割

  • 实例细分

  • 姿势估计

  • 视频动作识别

我们可以使用pip如下安装GluonCV-

pip install --upgrade mxnet gluoncv

胶子蛋白

顾名思义,GluonNLP是由MXNet支持的用于自然语言处理(NLP)的Gluon工具包。它提供了NLP中最新的DL(深度学习)模型的实现。

借助GluonNLP工具包,工程师,研究人员和学生可以为文本数据管道和模型构建模块。基于这些模型,他们可以快速建立研究思路和产品的原型。

以下是GluonNLP的一些功能:

  • 它训练脚本以重现最新研究报告中的最新结果。

  • 常见NLP任务的预训练模型集。

  • 它提供了精心设计的API,可大大减少实现的复杂性。

  • 社区支持。

  • 它还提供了教程,以帮助您开始新的NLP任务。

以下是我们可以使用GluonNLP工具箱实现的NLP任务-

  • 词嵌入

  • 语言模型

  • 机器翻译

  • 文字分类

  • 情绪分析

  • 自然语言推论

  • 文字产生

  • 依赖解析

  • 命名实体识别

  • 意图分类和插槽标签

我们可以使用pip如下安装GluonNLP-

pip install --upgrade mxnet gluonnlp

胶体

顾名思义,GluonTS是由MXNet支持的概率时间序列建模的Gluon工具包。

它提供以下功能-

  • 最新的(SOTA)深度学习模型已准备好进行培训。

  • 用于加载和遍历时间序列数据集的实用程序。

  • 定义您自己的模型的构建块。

借助GluonTS工具包,工程师,研究人员和学生可以根据自己的数据训练和评估任何内置模型,快速尝试不同的解决方案,并为他们的时间序列任务提供解决方案。

他们还可以使用提供的抽象和构造块来创建自定义时间序列模型,并根据基准算法对其进行快速基准测试。

我们可以使用pip如下安装GluonTS-

pip install gluonts

胶体FR

顾名思义,它是用于FR(面部识别)的Apache MXNet Gluon工具包。它提供以下功能-

  • 人脸识别中的最先进(SOTA)深度学习模型。

  • SoftmaxCrossEntropyLoss,ArcLoss,TripletLoss,RingLoss,CosLoss / AMsoftmax,L2-Softmax,A-Softmax,CenterLoss,ContrastiveLoss和LGM损失等的实现。

为了安装Gluon Face,我们需要Python 3.5或更高版本。我们还首先需要首先如下安装GluonCV和MXNet-

pip install gluoncv --pre
pip install mxnet-mkl --pre --upgrade
pip install mxnet-cuXXmkl --pre –upgrade # if cuda XX is installed

一旦安装了依赖项,就可以使用以下命令安装GluonFR-

从来源

pip install git+https://github.com/THUFutureLab/gluon-face.git@master

点子

pip install gluonfr

生态系统

现在,让我们探索MXNet的丰富库,包和框架-

教练RL

Coach,这是由英特尔AI实验室创建的Python强化学习(RL)框架。通过最先进的RL算法,可以轻松进行实验。 Coach RL支持Apache MXNet作为后端,并允许简单集成新环境来解决。

为了轻松扩展和重用现有组件,Coach RL很好地解耦了基本强化学习组件,例如算法,环境,NN结构,探索策略。

以下是Coach RL框架的代理和受支持的算法-

价值优化代理

  • 深度Q网络(DQN)

  • Double Deep Q网络(DDQN)

  • 决斗Q网络

  • 混合蒙特卡洛(MMC)

  • 持续优势学习(PAL)

  • 分类深层Q网络(C51)

  • 分位数回归深度Q网络(QR-DQN)

  • N步Q学习

  • 神经发作控制(NEC)

  • 标准化优势函数(NAF)

  • 彩虹

策略优化代理

  • 政策梯度(PG)

  • 异步优势演员关键(A3C)

  • 深度确定性策略梯度(DDPG)

  • 近端政策优化(PPO)

  • 裁剪近端策略优化(CPPO)

  • 广义优势估计(GAE)

  • 具有经验重播(ACER)的示例高效演员评论

  • 关键演员(SAC)

  • 双延迟深度确定性策略梯度(TD3)

总代理

  • 直接未来预测(DFP)

模仿学习代理

  • 行为克隆(BC)

  • 有条件的模仿学习

分层强化学习代理

  • 分级演员评论家(HAC)

深度图库

由纽约纽约大学和AWS团队开发的Deep Graph Library(DGL)是一个Python软件包,可在MXNet之上轻松实现Graph Neural Networks(GNN)。它还在其他现有的主要深度学习库如PyTorch,Gluon等之上提供了GNN的轻松实现。

Deep Graph Library是免费的软件。它在Ubuntu 16.04,macOS X和Windows 7或更高版本之后的所有Linux发行版中均可用。它还需要Python 3.5版本或更高版本。

以下是DGL的功能-

无需迁移成本-使用DGL是因为它在流行的现有DL框架之上构建,因此没有迁移成本。

消息传递-DGL提供消息传递,并且可以对其进行通用控制。消息传递的范围从低级操作(如沿选定的边缘发送)到高层控制(如图形范围的功能更新)。

平滑的学习曲线-学习和使用DGL非常容易,因为强大的用户定义功能既灵活又易于使用。

透明速度优化-DGL通过自动计算批处理和稀疏矩阵乘法来提供透明速度优化。

高性能-为了获得最大效率,DGL会自动将一个或多个图形上的DNN(深度神经网络)训练批处理一起批处理。

简单友好的界面-DGL为边缘特征访问以及图形结构操作提供了简单友好的界面。

InsightFace

InsightFace,一个用于人脸分析的深度学习工具包,提供了由MXNet支持的SOTA(最先进的)人脸分析算法在计算机视觉中的实现。它提供-

  • 高质量的大量预训练模型。

  • 最新的(SOTA)培训脚本。

  • InsightFace易于优化。我们可以在不保留繁重的DL框架的情况下进行部署。

  • 它提供了精心设计的API,可大大减少实现的复杂性。

  • 定义您自己的模型的构建块。

我们可以使用pip如下安装InsightFace-

pip install --upgrade insightface

请注意,在安装InsightFace之前,请根据您的系统配置安装正确的MXNet软件包。

Keras-MXNet

我们知道Keras是用Python编写的高级神经网络(NN)API,因此Keras-MXNet为我们提供了对Keras的后端支持。它可以在高性能和可扩展的Apache MXNet DL框架上运行。

下面提到Keras-MXNet的功能-

  • 允许用户轻松,流畅和快速地制作原型。所有这些都是通过用户友好性,模块化和可扩展性实现的。

  • 同时支持CNN(卷积神经网络)和RNN(递归神经网络),以及两者的组合。

  • 在中央处理器(CPU)和图形处理器(GPU)上完美运行。

  • 可以在一个或多个GPU上运行。

为了使用此后端,首先需要如下安装keras-mxnet-

pip install keras-mxnet

现在,如果您使用的是GPU,则按如下所示安装具有CUDA 9支持的MXNet-

pip install mxnet-cu90

但是,如果您仅使用CPU,则按如下所示安装基本的MXNet-

pip install mxnet

MXBoard

MXBoard是用Python编写的日志记录工具,用于记录MXNet数据帧并在TensorBoard中显示。换句话说,MXBoard旨在遵循tensorboard-pytorch API。它支持TensorBoard中的大多数数据类型。

下面提到其中一些-

  • 图形

  • 标量

  • 直方图

  • 嵌入

  • 图片

  • 文本

  • 音讯

  • 精确调用曲线

MXFusion

MXFusion是具有深度学习功能的模块化概率编程库。 MXFusion允许我们充分利用模块化,这是深度学习库的一项关键功能,用于概率编程。它易于使用,并为用户提供了一个方便的界面,用于设计概率模型并将其应用于实际问题。

MXFusion已在Python 3.4版及更高版本的MacOS和Linux OS上进行了验证。为了安装MXFusion,我们需要首先安装以下依赖项-

  • MXNet> = 1.3

  • Networkx> = 2.1

借助以下pip命令,您可以安装MXFusion-

pip install mxfusion

TVM

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

Apache TVM实际上是作为华盛顿大学Paul G.Allen计算机科学与工程学院SAMPL小组的一项研究项目而开始的,现在,它是由OSC(开放源代码社区),它以Apache方式涉及多个行业以及学术机构。

以下是Apache(incubating)TVM的主要功能-

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

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

  • TVM可将Kears,MXNet,PyTorch,Tensorflow,CoreML,DarkNet等各种框架中的DL模型编译为可在各种硬件后端上最少部署的模块。

  • 它还为我们提供了自动生成和优化具有更好性能的张量运算符的基础结构。

XFer

Xfer是一种转移学习框架,是用Python编写的。它基本上采用了MXNet模型并训练了元模型,或者还为新的目标数据集修改了模型。

简而言之,Xfer是一个Python库,允许用户快速轻松地传输DNN(深度神经网络)中存储的知识。

可以使用Xfer-

  • 用于任意数值格式的数据分类。

  • 以图像或文本数据的常见情况。

  • 作为从提取特征到训练重新用途程序(在目标任务中执行分类的对象)的垃圾邮件的管道。

以下是Xfer的功能:

  • 资源效率

  • 数据效率

  • 轻松访问神经网络

  • 不确定性建模

  • 快速成型

  • 从NN提取特征的实用程序