Home  >  Plataformas

Conheça os melhores software open source para machine learning

Estudo Best of Software Source 2018, da InfoWorld, enumera principais ferramentas de machine learning

Martin Heller e Ian Pointer - InfoWorld (EUA)

27/09/2018 às 7h58

software
Foto: Shutterstock

Amazon, Google, Microsoft, Facebook e muitas outras estão dispostas a criar as bibliotecas mais ricas e fáceis para machine learning. Confira os vencedores do prêmio Best of Software Source 2018, feito pelo portal InfoWorld, e entenda mais sobre as melhores ferramentas open source de machine learning e deep learning.

TensorFlow

Entre os recursos e melhorias do TensorFlow incluem a integração com o Google Cloud Bigtable como fonte de dados, melhor módulo tk.keras, melhor geração de modelos otimizados para dispositivos móveis, melhor carregamento de dados e processamento de texto, nova busca de dados para memória GPU, melhor desempenho com o Google Cloud TPUs e elevação do modo de execução para o status totalmente suportado.

Keras

A ferramenta é tão simples quanto uma estrutura de rede neural profunda poderia ser – uma linha de código Python por camada e uma chamada para compilar e treinar um modelo, usando modelos seqüenciais. O Keras também oferece suporte a topologias arbitrárias por meio de sua API funcional. Ele usa o TensorFlow, o Theano e o CNTK 2 como backends e obtém um bom suporte para as GPUs deles (e TPUs no Google Cloud com o TensorFlow). O treinamento em Keras usa matrizes Numpy como entrada, embora possa suportar outros formatos por meio de uma interface do gerador Python. A ferramenta tem também uma boa variedade de opções de implantação, que vão desde serviços em nuvem até dispositivos móveis.

PyTorch

O PyTorch é uma rede neural profunda de alto nível que usa o Phyton como linguagem de script e usa um back-end Torch C/ CUCA evoluído. Os recursos de produção do Caffe2 também estão sendo incorporados ao projeto. Ele apresenta redes neurais dinâmicas, ou seja, a própria topologia da rede pode mudar de iteração para iteração durante o treinamento.

Para permitir redes dinâmicas, que são mais fáceis de depurar e mais rápidas de interagir do que as redes estáticas, os programas PyTorch criam um gráfico em tempo real. Em seguida, a retropropagação usa o gráfico criado dinamicamente, calculando automaticamente os gradientes dos estados do tensor salvos. Dado que o PyTorch se baseia na estrutura madura do Torch, ele já possui uma forte coleção de redes neurais, algoritmos de otimização e funções de perda.

Fast.ai

Fast.ai não é apenas um MOOC de aprendizado profundo, é também uma biblioteca de deep learning que se baseia no PyTorch. O framework fornece um conjunto de invólucros consistentes e opinativos para construir e treinar modelos, assim como incorpora algumas técnicas de ponta para o treinamento de modelos de aprendizagem profunda. Em outras palavras, o Fast.ai ajuda a construir modelos para competições de Kaggle e para as aplicações reais de produção.

Chainer

Chainer é uma estrutura flexível do Python para redes neurais. Ao contrário dos frameworks que primeiro definem e consertam a topologia de rede neural, a ferramenta usa um esquema de definição por execução. Ou seja, a rede é definida dinamicamente por meio do cálculo real - o cálculo de retropropagação calcula o array de gradiente e chama o otimizador para encontrar os pesos atualizados.

O Chainer usa o CuPy como back-end para computação de GPU, que por sua vez chama CUDA e cuDNN. Em particular, a classe cupy.ndarray é a implementação da matriz GPU para o Chainer. O CuPy suporta um subconjunto de recursos do NumPy com uma interface compatível.

H2O

É uma plataforma de machine learning distribuída na memória com escalabilidade linear. Ele suporta os algoritmos estatísticos e de machine learning mais amplamente utilizados, incluindo máquinas impulsionadas por gradiente, modelos lineares generalizados e aprendizado profundo. H2O suporta programação em R, Python, Scala, Javan e seus próprios portáteis interativos.

Microsoft Cognitive Toolkit

O Microsoft Cognitive Toolkit – ou mais simplesmente o CNTK – é o kit de ferramentas de deep learning que sustenta os recursos de inteligência artificial dos serviços da Microsoft, incluindo Skype, Cortana, Bing e Xbox. Ele lida com dados multidimensionais densos ou esparsos de Python, C + + ou BrainScript e inclui uma ampla variedade de tipos de redes neurais: FeedForward (FFN), Convolucional (CNN), Memória de Curto Prazo Recorrente / Longo (RNN / LSTM), normalização em lote e sequência-a-sequência com atenção, para iniciantes.

MXNet

O MXNet foi desenvolvido sob o guarda-chuva da Apache Software Foundation no início de 2017 e ainda é considerado “incubador” na v1.2.1. Ele possui um bom controle sobre o posicionamento da estrutura de dados em dispositivos, treinamento em várias GPUs, diferenciação automática e camadas de rede neural pré-definidas e otimizadas. Ele tem em Gluon uma interface fácil de usar que também pode ajudar a treinar rapidamente.

Featuretools

O Featuretools é uma biblioteca Python de software livre para engenharia de recursos automatizada. Ele implementa a síntese de recursos profundos. Ou seja, a pessoa pode combinar seus dados brutos com o que sabe sobre os dados para criar recursos significativos para machine learning e modelagem preditiva. O recurso fornece APIs para garantir que apenas dados válidos sejam usados para cálculos, mantendo seus vetores de recursos seguros contra problemas comuns de vazamento de etiquetas.

Horovod

Criado no Uber, o Horovod é um framework de treinamento distribuído para o TensorFlow, Keras e PyTorch. O objetivo da ferramenta é tornar o deep learning distribuído rápido e fácil de usar.

Horovod usa Open MPI (ou outra implementação MPI) para passar mensagens e a Nvidia Collective Communications Library (NCCL) para sua versão otimizada de anel-allreduce.

Fabric for Deep Learning

O Fabric for Deep Learning (ou FfDL) é uma plataforma de machine learning que oferece o TensorFlow, Caffe, PyTorch, Keras e H2O como um service no Kubernetes. Ele foi desenvolvido originalmente para o IBM Cloud, mas também pode ser executado em outras nuvens que suportam clusters Kubernetes e localmente no Docker via Kubeadm-DIND.