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