Apache Mxnet 简明教程

Apache MXNet - Toolkits and Ecosystem

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

ToolKits

以下是 MXNet 提供的部分最常用且最重要的工具包--

GluonCV

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

下面给出了一些 features of GluonCV — 

  1. 它训练脚本以复制最新研究中报告的最先进的结果。

  2. 170 多个高质量预训练模型。

  3. Embrace flexible development pattern.

  4. GluonCV 易于优化。我们可以部署它而无需保留重量级 DL 框架。

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

  6. Community support.

  7. Easy to understand implementations.

以下 supported applications 基于 GluonCV 工具包:

  1. Image Classification

  2. Object Detection

  3. Semantic Segmentation

  4. Instance Segmentation

  5. Pose Estimation

  6. Video Action Recognition

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

pip install --upgrade mxnet gluoncv

GluonNLP

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

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

以下是 GluonNLP 的一些特性:

  1. 它训练脚本以复制最新研究中报告的最先进的结果。

  2. 为常见 NLP 任务设置预训练的模型。

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

  4. Community support.

  5. 它还提供了教程,帮助你轻松入门新的 NLP 任务。

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

  1. Word Embedding

  2. Language Model

  3. Machine Translation

  4. Text Classification

  5. Sentiment Analysis

  6. Natural Language Inference

  7. Text Generation

  8. Dependency Parsing

  9. Named Entity Recognition

  10. 意图分类和时隙标注

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

pip install --upgrade mxnet gluonnlp

GluonTS

顾名思义,GluonTS 是由 MXNet 驱动的用于概率时间序列建模的 Gluon 工具包。

它提供以下特性 -

  1. 已准备就绪的先进深度学习模型。

  2. 加载和迭代时间序列数据集的实用工具。

  3. 定义你自己的模型的构建模块。

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

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

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

pip install gluonts

GluonFR

顾名思义,它是一个用于 FR(人脸识别)的 Apache MXNet Gluon 工具包。它提供了以下特性 -

  1. 人脸识别的最新深度学习模型。

  2. 在 MXNet 框架中使用 PyTorch/Gluon,实现了 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:

From Source

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

Pip

pip install gluonfr

Ecosystem

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

Coach RL

Intel AI 实验室创建的 Python 强化学习 (RL) 框架 Coach。它支持轻松试验 State-of-the-art RL 算法。Coach RL 支持 Apache MXNet 作为后端,并允许轻松集成新的环境进行求解。

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

以下面向 Coach RL 框架的智能体和支持算法:

Value Optimization Agents

  1. Deep Q Network (DQN)

  2. Double Deep Q Network (DDQN)

  3. Dueling Q Network

  4. Mixed Monte Carlo (MMC)

  5. Persistent Advantage Learning (PAL)

  6. Categorical Deep Q Network (C51)

  7. Quantile Regression Deep Q Network (QR-DQN)

  8. N-Step Q Learning

  9. Neural Episodic Control (NEC)

  10. Normalized Advantage Functions (NAF)

  11. Rainbow

Policy Optimization Agents

  1. Policy Gradients (PG)

  2. Asynchronous Advantage Actor-Critic (A3C)

  3. Deep Deterministic Policy Gradients (DDPG)

  4. Proximal Policy Optimization (PPO)

  5. Clipped Proximal Policy Optimization (CPPO)

  6. Generalized Advantage Estimation (GAE)

  7. Sample Efficient Actor-Critic with Experience Replay (ACER)

  8. Soft Actor-Critic (SAC)

  9. Twin Delayed Deep Deterministic Policy Gradient (TD3)

General Agents

  1. Direct Future Prediction (DFP)

Imitation Learning Agents

  1. Behavioral Cloning (BC)

  2. Conditional Imitation Learning

Hierarchical Reinforcement Learning Agents

  1. Hierarchical Actor Critic (HAC)

Deep Graph Library

Deep Graph Library (DGL) 由纽约大学和亚马逊网络服务团队(上海)开发,这是一个可在 MXNet 之上提供图神经网络 (GNN) 轻松实现的 Python 包。它还可在 PyTorch、Gluon 等其他现有主流深度学习库之上提供 GNN 的轻松实现。

Deep Graph Library 是一款免费软件。它在 Ubuntu 16.04、macOS X 以及 Windows 7 或更高版本的系统上均可用。它还需要 Python 3.5 或更高版本。

以下是 DGL 的功能 −

No Migration cost − DGL 建立在流行的现有 DL 框架之上,因此使用它没有迁移成本。

Message Passing − DGL 提供消息传递并对其具有多功能控制。消息传递的范围从低级操作(例如沿着选定的边发送)到高级控制(例如图级特征更新)。

Smooth Learning Curve − 由于强大的用户自定义函数既灵活又易于使用,因此学习和使用 DGL 非常容易。

Transparent Speed Optimization − DGL 通过自动批处理计算和稀疏矩阵乘法提供透明的速度优化。

High performance − 为了达到最大的效率,DGL 自动将 DNN(深度神经网络)训练批处理在一起或多个图。

Easy & friendly interface − DGL 为我们提供了用于边缘特征访问以及图结构操作的简单友好的界面。

InsightFace

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

  1. 高质量的大型预训练模型。

  2. State-of-the-art (SOTA) training scripts.

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

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

  5. 定义你自己的模型的构建模块。

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

pip install --upgrade insightface

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

Keras-MXNet

众所周知,Keras 是用 Python 编写的用于神经网络(NN)的高级 API,Keras-MXNet 为 Keras 提供后端支持。它可以在高性能和可扩展的 Apache MXNet DL 框架之上运行。

Keras-MXNet 的功能如下所述 −

  1. 允许用户轻松、平稳、快速地进行原型设计。这一切都是通过用户友好性、模块化和可扩展性实现的。

  2. 支持 CNN(卷积神经网络)和 RNN(循环神经网络)以及两者的组合。

  3. 在中央处理器(CPU)和图形处理器(GPU)上均能完美运行。

  4. 可以在一个或多个 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 中的大多数数据类型。

下面提到了一些数据类型:

  1. Graph

  2. Scalar

  3. Histogram

  4. Embedding

  5. Image

  6. Text

  7. Audio

  8. Precision-Recall Curve

MXFusion

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

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

  1. MXNet >= 1.3

  2. 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 的主要特性:

  1. 简化了以往基于 C++ 的开发流程。

  2. 允许跨多个硬件后端(如 CPU、GPU 等)共享相同实现。

  3. TVM 提供了各种框架(如 Kears、MXNet、PyTorch、Tensorflow、CoreML、DarkNet)中的 DL 模型编译,使其在不同的硬件后端上成为最小的可部署模块。

  4. 它还为我们提供了基础架构,用于自动生成和优化具有更好性能的张量算子。

XFer

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

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

Xfer 可用于:

  1. 对任意数字格式的数据进行分类。

  2. 对图像或文本数据的常见情况进行分类。

  3. 作为一条管道,从提取特征扩展到训练转换器(在目标任务中执行分类的对象)。

下面是 Xfer 的功能:

  1. Resource efficiency

  2. Data efficiency

  3. 轻松访问神经网络

  4. Uncertainty modeling

  5. Rapid prototyping

  6. 从 NN 提取特征的实用工具