Apache MXNet - 工具包和生态系统


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

工具包

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

GluonCV

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

下面给出了 GluonCV 的一些功能

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

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

  • 采用灵活的开发模式。

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

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

  • 社区支持。

  • 易于理解的实现。

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

  • 图像分类

  • 对象检测

  • 语义分割

  • 实例分割

  • 姿势估计

  • 视频动作识别

我们可以使用 pip 安装 GluonCV,如下所示 −

pip install --upgrade mxnet gluoncv

GluonNLP

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

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

下面给出了 GluonNLP 的一些功能:

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

  • 一组用于常见 NLP 任务的预训练模型。

  • 它提供了精心设计的 API,大大降低了实现的复杂性。

  • 社区支持。

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

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

  • 词向量

  • 语言模型

  • 机器翻译

  • 文本分类

  • 情感分析

  • 自然语言推理

  • 文本生成

  • 依赖解析

  • 命名实体识别

  • 意图分类和槽位标记

我们可以使用 pip 安装 GluonNLP,如下所示 −

pip install --upgrade mxnet gluonnlp

GluonTS

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

它提供以下功能 −

  • 可供训练的最先进的 (SOTA) 深度学习模型。

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

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

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

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

我们可以使用 pip 安装 GluonTS,如下所示 −

pip install gluonts

GluonFR

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

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

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

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

pip install gluoncv --pre
pip install mxnet-mkl --pre --upgrade
pip install mxnet-cuXXmkl --pre –upgrade # 如果安装了 cuda XX

安装依赖项后,您可以使用以下命令安装 GluonFR −

来自源代码

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

Pip

pip install gluonfr

生态系统

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

Coach RL

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

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

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

价值优化代理

  • 深度 Q 网络 (DQN)

  • 双深度 Q 网络 (DDQN)

  • 决斗 Q 网络

  • 混合蒙特卡罗 (MMC)

  • 持续优势学习 (PAL)

  • 分类深度 Q 网络 (C51)

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

  • N 步 Q 学习

  • 神经情景控制 (NEC)

  • 正则化优势函数 (NAF)

  • 彩虹

策略优化代理

  • 策略梯度 (PG)

  • 异步优势 Actor-Critic (A3C)

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

  • 近端策略优化 (PPO)

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

  • 广义优势估计(GAE)

  • 具有经验重放的样本高效演员-评论家(ACER)

  • 软演员-评论家(SAC)

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

通用代理

  • 直接未来预测(DFP)

模仿学习代理

  • 行为克隆(BC)

  • 条件模仿学习

分层强化学习代理

  • 分层演员评论家(HAC)

深度图库

深度图库 (DGL) 由纽约大学和上海 AWS 团队开发,是一个 Python 包,可在 MXNet 之上轻松实现图形神经网络 (GNN)。它还提供了在其他现有主要深度学习库(如 PyTorch、Gluon 等)之上轻松实现 GNN。

深度图库是一款免费软件。它适用于 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 小组的一个研究项目,现在它是 Apache 软件基金会 (ASF) 孵化的一项工作,由 OSC(开源社区)推动,涉及 Apache 方式下的多个行业和学术机构。

以下是 Apache(孵化)TVM 的主要功能 −

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

  • 能够在多个硬件后端(如 CPU、GPU 等)之间共享相同的实现。

  • TVM 提供各种框架中的 DL 模型编译,例如 Kears、MXNet、 PyTorch、Tensorflow、CoreML、DarkNet 分解为可在各种硬件后端部署的最小模块。

  • 它还为我们提供了自动生成和优化性能更佳的张量运算符的基础设施。

XFer

Xfer 是一个迁移学习框架,用 Python 编写。它基本上采用 MXNet 模型并训练元模型或修改模型以适应新的目标数据集。

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

Xfer 可用于 −

  • 用于对任意数字格式的数据进行分类。

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

  • 作为从提取特征到训练重新利用器(在目标任务中执行分类的对象)的管道。

以下是 Xfer 的功能:

  • 资源效率

  • 数据效率

  • 轻松访问神经网络网络

  • 不确定性建模

  • 快速原型设计

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