Apache MXNet - 工具包和生态系统



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

工具包

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

GluonCV

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

下面列出了一些 **GluonCV 的特性** -

  • 它提供了用于复现最新研究报告的最先进结果的训练脚本。

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

  • 采用灵活的开发模式。

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

  • 它提供了精心设计的 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 是一个由 MXNet 支持的用于概率时间序列建模的 Gluon 工具包。

它提供以下功能 -

  • 准备好进行训练的最先进 (SOTA) 深度学习模型。

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

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

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

他们还可以使用提供的抽象和构建模块来创建自定义时间序列模型,并将其快速与基线算法进行比较。

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

pip install gluonts

GluonFR

顾名思义,它是一个 Apache MXNet Gluon 人脸识别 (FR) 工具包。它提供以下功能 -

  • 人脸识别领域最先进 (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 安装

pip install gluonfr

生态系统

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

Coach RL

Coach 是英特尔 AI 实验室创建的一个 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)

  • 异步优势行动者评论家 (A3C)

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

  • 近端策略优化 (PPO)

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

  • 广义优势估计 (GAE)

  • 具有经验回放的样本高效行动者评论家 (ACER)

  • 软行动者评论家 (SAC)

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

通用代理

  • 直接未来预测 (DFP)

模仿学习代理

  • 行为克隆 (BC)

  • 条件模仿学习

分层强化学习代理

  • 分层行动者评论家 (HAC)

深度图库

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

深度图库是一个免费软件。它可以在 Ubuntu 16.04 之后的 Linux 发行版、macOS X 和 Windows 7 或更高版本上使用。它还需要 Python 3.5 版本或更高版本。

以下是 DGL 的特性 -

**无迁移成本** - 使用 DGL 没有迁移成本,因为它构建在流行的现有深度学习框架之上。

**消息传递** - DGL 提供消息传递,并且可以对其进行灵活的控制。消息传递的范围从低级操作(如沿着选定的边发送)到高级控制(如图范围内的特征更新)。

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

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

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

**简单友好的接口** - DGL 为我们提供了简单友好的接口,用于访问边特征以及操作图结构。

InsightFace

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 深度学习框架之上运行。

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已在macOS和Linux操作系统上的Python 3.4及更高版本上进行了验证。为了安装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提供将Kears、MXNet、PyTorch、Tensorflow、CoreML、DarkNet等各种框架中的DL模型编译成可在不同硬件后端上部署的最小模块。

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

XFer

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

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

Xfer可以用于:

  • 对任意数值格式的数据进行分类。

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

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

以下是Xfer的功能

  • 资源效率

  • 数据效率

  • 轻松访问神经网络

  • 不确定性建模

  • 快速原型设计

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

广告