Apache MXNet - 工具包和生态系统


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

工具包

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

胶子CV

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

下面给出了GluonCV 的一些功能-

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

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

  • 拥抱灵活的发展模式。

  • GluonCV 很容易优化。我们可以在不保留重量级深度学习框架的情况下部署它。

  • 它提供了精心设计的 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

胶子TS

顾名思义,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 Loss等的实现

为了安装 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,由英特尔人工智能实验室创建的 Python 强化学习 (RL) 框架。它可以轻松地使用最先进的 RL 算法进行实验。Coach RL 支持 Apache MXNet 作为后端,并允许简单集成新环境来解决。

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

以下是 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)

  • 具有经验重播功能的高效 Actor-Critic 示例 (ACER)

  • 软演员评论家 (SAC)

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

总代理

  • 直接未来预测 (DFP)

模仿学习代理

  • Behave克隆(BC)

  • 条件模仿学习

分层强化学习代理

  • 分层演员评论家 (HAC)

深度图库

Deep Graph Library (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 是一种用于人脸分析的深度学习工具包,可在由 MXNet 提供支持的计算机视觉中实现 SOTA(最先进的)人脸分析算法。它提供 -

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

  • 最先进 (SOTA) 的训练脚本。

  • InsightFace 易于优化。我们可以在不保留重量级深度学习框架的情况下部署它。

  • 它提供了精心设计的 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

MX板

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

下面提到了其中一些 -

  • 图形

  • 标量

  • 直方图

  • 嵌入

  • 图像

  • 文本

  • 声音的

  • 精确率-召回率曲线

MX融合

MXFusion 是一个具有深度学习功能的模块化概率编程库。MXFusion 使我们能够充分利用模块化(深度学习库的关键特征)进行概率编程。它使用简单,为用户提供了一个方便的界面来设计概率模型并将其应用于现实世界的问题。

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

  • MXNet >= 1.3

  • 网络x >= 2.1

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

pip install mxfusion

电视管理系统

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 提供将 Kears、MXNet、PyTorch、Tensorflow、CoreML、DarkNet 等各种框架中的 DL 模型编译为各种硬件后端上的最小可部署模块的功能。

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

X铁

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

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

可以使用 Xfer -

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

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

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

以下是 Xfer 的功能:

  • 资源效率

  • 数据效率

  • 轻松访问神经网络

  • 不确定性建模

  • 快速原型制作

  • 从神经网络中提取特征的实用程序