Apache MXNet - Kits de ferramentas e ecossistema

Para apoiar a pesquisa e o desenvolvimento de aplicativos de aprendizado profundo em muitos campos, o Apache MXNet nos fornece um rico ecossistema de kits de ferramentas, bibliotecas e muito mais. Deixe-nos explorá-los -

Kits de ferramentas

A seguir estão alguns dos kits de ferramentas mais usados ​​e importantes fornecidos pelo MXNet -

GluonCV

Como o nome indica, o GluonCV é um kit de ferramentas Gluon para visão computacional desenvolvido por MXNet. Ele fornece implementação de algoritmos de DL (Deep Learning) de última geração em visão computacional (CV). Com a ajuda de engenheiros do kit de ferramentas GluonCV, pesquisadores e alunos podem validar novas ideias e aprender CV facilmente.

Abaixo estão alguns dos features of GluonCV -

  • Ele treina scripts para reproduzir os resultados mais avançados relatados nas pesquisas mais recentes.

  • Mais de 170 modelos pré-treinados de alta qualidade.

  • Adote um padrão de desenvolvimento flexível.

  • O GluonCV é fácil de otimizar. Podemos implantá-lo sem reter uma estrutura DL de peso.

  • Ele fornece APIs cuidadosamente projetadas que reduzem muito a complexidade da implementação.

  • Suporte da comunidade.

  • Implementações fáceis de entender.

A seguir estão os supported applications por GluonCV toolkit:

  • Classificação de imagens

  • Detecção de Objetos

  • Segmentação Semântica

  • Segmentação de instância

  • Estimativa de pose

  • Reconhecimento de ação de vídeo

Podemos instalar o GluonCV usando o pip da seguinte forma -

pip install --upgrade mxnet gluoncv

GluonNLP

Como o nome indica, GluonNLP é um kit de ferramentas Gluon para Processamento de Linguagem Natural (NLP) desenvolvido por MXNet. Ele fornece implementação de modelos de DL (Deep Learning) de última geração em PNL.

Com a ajuda de engenheiros do kit de ferramentas GluonNLP, pesquisadores e alunos podem construir blocos para pipelines de dados de texto e modelos. Com base nesses modelos, eles podem criar um protótipo rápido das ideias de pesquisa e do produto.

A seguir estão alguns dos recursos do GluonNLP:

  • Ele treina scripts para reproduzir os resultados mais avançados relatados nas pesquisas mais recentes.

  • Conjunto de modelos pré-treinados para tarefas comuns de PNL.

  • Ele fornece APIs cuidadosamente projetadas que reduzem muito a complexidade da implementação.

  • Suporte da comunidade.

  • Ele também fornece tutoriais para ajudá-lo a começar em novas tarefas de PNL.

A seguir estão as tarefas de PNL que podemos implementar com o kit de ferramentas GluonNLP -

  • Word Embedding

  • Modelo de linguagem

  • Maquina de tradução

  • Classificação de Texto

  • Análise de sentimentos

  • Inferência de linguagem natural

  • Geração de Texto

  • Análise de Dependência

  • Reconhecimento de entidade nomeada

  • Classificação de Intenção e Rotulagem de Slot

Podemos instalar o GluonNLP usando pip da seguinte forma -

pip install --upgrade mxnet gluonnlp

GluonTS

Como o nome indica, GluonTS é um kit de ferramentas Gluon para Modelagem Probabilística de Séries Temporais desenvolvido por MXNet.

Ele fornece os seguintes recursos -

  • Modelos de aprendizado profundo de última geração (SOTA) prontos para serem treinados.

  • Os utilitários para carregar e iterar em conjuntos de dados de série temporal.

  • Blocos de construção para definir seu próprio modelo.

Com a ajuda do kit de ferramentas GluonTS, engenheiros, pesquisadores e alunos podem treinar e avaliar qualquer um dos modelos integrados em seus próprios dados, experimentar rapidamente diferentes soluções e apresentar uma solução para suas tarefas de série temporal.

Eles também podem usar as abstrações e blocos de construção fornecidos para criar modelos de série temporal personalizados e compará-los rapidamente com algoritmos de linha de base.

Podemos instalar o GluonTS usando pip da seguinte maneira -

pip install gluonts

GluonFR

Como o nome indica, é um kit de ferramentas Apache MXNet Gluon para FR (Face Recognition). Ele fornece os seguintes recursos -

  • Modelos de aprendizado profundo de última geração (SOTA) em reconhecimento facial.

  • A implementação de SoftmaxCrossEntropyLoss, ArcLoss, TripletLoss, RingLoss, CosLoss / AMsoftmax, L2-Softmax, A-Softmax, CenterLoss, ContrastiveLoss e LGM Loss, etc.

Para instalar o Gluon Face, precisamos do Python 3.5 ou posterior. Também precisamos primeiro instalar o GluonCV e o MXNet da seguinte forma -

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

Depois de instalar as dependências, você pode usar o seguinte comando para instalar o GluonFR -

From Source

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

Pip

pip install gluonfr

Ecossistema

Agora vamos explorar as ricas bibliotecas, pacotes e estruturas do MXNet -

Treinador RL

Coach, uma estrutura Python Reinforcement Learning (RL) criada pelo laboratório Intel AI. Ele permite uma fácil experimentação com algoritmos RL de última geração. O Coach RL oferece suporte ao Apache MXNet como back end e permite a integração simples de um novo ambiente para solução.

Para estender e reutilizar componentes existentes facilmente, o Coach RL desacoplou muito bem os componentes básicos de aprendizagem por reforço, como algoritmos, ambientes, arquiteturas NN, políticas de exploração.

A seguir estão os agentes e algoritmos suportados para a estrutura Coach RL -

Agentes de otimização de valor

  • Deep Q Network (DQN)

  • Rede Double Deep Q (DDQN)

  • Dueling Q Network

  • Monte Carlo Misto (MMC)

  • Aprendizagem de Vantagem Persistente (PAL)

  • Rede categórica Deep Q (C51)

  • Rede Q profunda de regressão de quantis (QR-DQN)

  • N-Step Q Learning

  • Controle Episódico Neural (NEC)

  • Funções Normalized Advantage (NAF)

  • Rainbow

Agentes de otimização de política

  • Gradientes de política (PG)

  • Ator-crítico do Asynchronous Advantage (A3C)

  • Gradientes de política determinísticos profundos (DDPG)

  • Otimização de Política Proximal (PPO)

  • Otimização de Política Proximal Cortada (CPPO)

  • Estimativa de vantagem generalizada (GAE)

  • Amostra de ator-crítico eficiente com repetição de experiência (ACER)

  • Ator-Crítico Suave (SAC)

  • Gradiente de política determinística profunda com atraso duplo (TD3)

Agentes Gerais

  • Previsão direta do futuro (DFP)

Agentes de Imitação de Aprendizagem

  • Clonagem Comportamental (BC)

  • Aprendizagem de imitação condicional

Agentes de Aprendizagem por Reforço Hierárquico

  • Crítico de Ator Hierárquico (HAC)

Biblioteca Deep Graph

A Deep Graph Library (DGL), desenvolvida pelas equipes da NYU e da AWS, em Xangai, é um pacote Python que fornece implementações fáceis de Redes Neurais de Grafo (GNNs) na parte superior do MXNet. Ele também fornece implementação fácil de GNNs em cima de outras bibliotecas de aprendizado profundo existentes, como PyTorch, Gluon, etc.

Deep Graph Library é um software livre. Ele está disponível em todas as distribuições Linux posteriores ao Ubuntu 16.04, macOS X e Windows 7 ou posterior. Também requer a versão Python 3.5 ou posterior.

A seguir estão os recursos do DGL -

No Migration cost - Não há custo de migração para o uso de DGL, pois ele é construído em cima de estruturas DL existentes.

Message Passing- DGL fornece passagem de mensagens e tem controle versátil sobre ela. A transmissão de mensagens varia de operações de baixo nível, como envio ao longo de bordas selecionadas, até controle de alto nível, como atualizações de recursos em todo o gráfico.

Smooth Learning Curve - É muito fácil aprender e usar o DGL, pois as poderosas funções definidas pelo usuário são flexíveis e fáceis de usar.

Transparent Speed Optimization - DGL fornece otimização de velocidade transparente, fazendo lotes automáticos de cálculos e multiplicação de matrizes esparsas.

High performance - Para alcançar a eficiência máxima, o DGL agrupa automaticamente o treinamento DNN (redes neurais profundas) em um ou mais gráficos.

Easy & friendly interface - DGL nos fornece interfaces fáceis e amigáveis ​​para acesso a recursos de borda, bem como manipulação de estrutura de gráfico.

InsightFace

InsightFace, um kit de ferramentas de aprendizado profundo para análise facial que fornece implementação de algoritmo de análise facial SOTA (estado da arte) em visão computacional com tecnologia MXNet. Ele fornece -

  • Grande conjunto de modelos pré-treinados de alta qualidade.

  • Roteiros de treinamento de última geração (SOTA).

  • O InsightFace é fácil de otimizar. Podemos implantá-lo sem reter uma estrutura DL de peso.

  • Ele fornece APIs cuidadosamente projetadas que reduzem muito a complexidade da implementação.

  • Blocos de construção para definir seu próprio modelo.

Podemos instalar o InsightFace usando pip da seguinte forma -

pip install --upgrade insightface

Observe que antes de instalar o InsightFace, instale o pacote MXNet correto de acordo com a configuração do seu sistema.

Keras-MXNet

Como sabemos que Keras é uma API de Rede Neural (NN) de alto nível escrita em Python, Keras-MXNet nos fornece um suporte de back-end para Keras. Ele pode ser executado em cima da estrutura Apache MXNet DL escalonável e de alto desempenho.

Os recursos do Keras-MXNet são mencionados abaixo -

  • Permite aos usuários uma prototipagem fácil, suave e rápida. Tudo acontece por meio da facilidade de uso, modularidade e extensibilidade.

  • Suporta tanto CNN (Redes Neurais Convolucionais) e RNN (Redes Neurais Recorrentes), bem como a combinação de ambos também.

  • Funciona perfeitamente na unidade de processamento central (CPU) e unidade de processamento gráfico (GPU).

  • Pode ser executado em uma ou várias GPUs.

Para trabalhar com este back-end, primeiro você precisa instalar o keras-mxnet da seguinte maneira -

pip install keras-mxnet

Agora, se você estiver usando GPUs, instale o MXNet com suporte CUDA 9 da seguinte maneira -

pip install mxnet-cu90

Mas se você estiver usando apenas CPU, instale o MXNet básico da seguinte forma -

pip install mxnet

MXBoard

MXBoard é uma ferramenta de registro, escrita em Python, que é usada para registrar frames de dados MXNet e exibi-los no TensorBoard. Em outras palavras, o MXBoard deve seguir a API tensorboard-pytorch. Ele é compatível com a maioria dos tipos de dados do TensorBoard.

Alguns deles são mencionados abaixo -

  • Graph

  • Scalar

  • Histogram

  • Embedding

  • Image

  • Text

  • Audio

  • Curva de Rechamada de Precisão

MXFusion

MXFusion é uma biblioteca de programação probabilística modular com aprendizado profundo. O MXFusion nos permite explorar totalmente a modularidade, que é uma característica chave das bibliotecas de aprendizado profundo, para programação probabilística. É simples de usar e fornece aos usuários uma interface conveniente para projetar modelos probabilísticos e aplicá-los aos problemas do mundo real.

MXFusion é verificado no Python versão 3.4 e mais no MacOS e Linux OS. Para instalar o MXFusion, precisamos primeiro instalar as seguintes dependências -

  • MXNet> = 1,3

  • Networkx> = 2,1

Com a ajuda do seguinte comando pip, você pode instalar MXFusion -

pip install mxfusion

TVM

Apache TVM, uma pilha de compilador de aprendizado profundo de código aberto para back-ends de hardware, como CPUs, GPUs e aceleradores especializados, visa preencher a lacuna entre as estruturas de aprendizado profundo focadas na produtividade e os back-ends de hardware orientados para o desempenho . Com a versão mais recente MXNet 1.6.0, os usuários podem aproveitar o Apache (incubando) TVM para implementar kernels de operador de alto desempenho na linguagem de programação Python.

O Apache TVM realmente começou como um projeto de pesquisa no grupo SAMPL da Escola Paul G. Allen de Ciência da Computação e Engenharia da Universidade de Washington e agora é um esforço em incubação na The Apache Software Foundation (ASF) que é conduzido por um OSC ( comunidade de código aberto) que envolve várias indústrias, bem como instituições acadêmicas sob o modelo Apache.

A seguir estão as principais características do Apache (incubando) TVM -

  • Simplifica o antigo processo de desenvolvimento baseado em C ++.

  • Permite compartilhar a mesma implementação em vários back-ends de hardware, como CPUs, GPUs, etc.

  • TVM fornece compilação de modelos DL em várias estruturas, como Kears, MXNet, PyTorch, Tensorflow, CoreML, DarkNet em módulos implantáveis ​​mínimos em diversos back-ends de hardware.

  • Ele também nos fornece a infraestrutura para gerar e otimizar automaticamente os operadores de tensores com melhor desempenho.

XFer

Xfer, um framework de aprendizagem por transferência, é escrito em Python. Basicamente, ele pega um modelo MXNet e treina um metamodelo ou também modifica o modelo para um novo conjunto de dados de destino.

Em palavras simples, Xfer é uma biblioteca Python que permite aos usuários uma transferência rápida e fácil de conhecimento armazenado em DNN (redes neurais profundas).

Xfer pode ser usado -

  • Para a classificação de dados de formato numérico arbitrário.

  • Para os casos comuns de imagens ou dados de texto.

  • Como um pipeline que envia spams desde a extração de recursos até o treinamento de um redirecionador (um objeto que realiza a classificação na tarefa de destino).

A seguir estão os recursos do Xfer:

  • Eficiência de recursos

  • Eficiência de dados

  • Fácil acesso a redes neurais

  • Modelagem de incerteza

  • Prototipagem rápida

  • Utilitários para extração de recursos do NN