Principais frameworks de deep learning em 2021

Principais frameworks de deep learning em 2021
Allan Segovia Spadini
Allan Segovia Spadini

Compartilhe

Quando você pesquisa sobre deep learning aparecem nomes como Tensorflow e Pytorch. Porém, será que essas são as únicas opções de frameworks existentes? E qual framework devemos usar para o nosso projeto? Vou responder a estas questões neste artigo.

TensorFlow

O TensorFlow certamente é a biblioteca mais popular. Quando pesquisamos por este termo no github encontramos cerca de 100 mil repositórios e 1 milhão de commits. Essa biblioteca criada pelo Google é aberta e possibilita controlar todos os aspectos de um sistema de aprendizado de máquina.

Além disso, pode rodar em múltiplas plataformas, como CPUs, GPUs e TPUs. Normalmente a Tensorflow é utilizada com a linguagem Python, mas existem versões experimentais para C++, Java e Go. Além de versões criadas pela comunidade para C# e Julia.

Os recursos para a biblioteca a tornam ainda mais poderosa. O TensorBoard.dev é um serviço gratuito que permite visualizar e compartilhar a estrutura da sua rede neural, a acurácia e os hiperparâmetros.

O TensorFlow Serving é outra parte importante. Essa ferramenta foi projetada para ambientes de produção e permite aos usuários servir os seus modelos com facilidade. Já o TensorFlow Lite permite que você implemente modelos de machine learning em dispositivos móveis e de Internet das Coisas.

Banner promocional da Alura, com um design futurista em tons de azul, apresentando dois blocos de texto, no qual o bloco esquerdo tem os dizeres:

Keras

Keras é uma API de deep learning escrita em Python. Essa ferramenta é de alto nível (mais próxima da linguagem humana) e foi feita originalmente para tornar a utilização de frameworks como o Theano mais intuitiva. Posteriormente, permitiu o uso de outros frameworks como o TensorFlow. Atualmente é possível utilizar o tf.keras que permite a construção rápida de modelos com o TensorFlow por trás dos panos.

Se você pretende iniciar os estudos sobre deep learning e possui interesse no TensorFlow o ideal é começar pelo Keras. Com o Keras é possível trabalhar com temas como visão computacional, processamento de linguagem natural, séries temporais, aprendizagem por reforço e diversos outros. Apenas para aplicações mais avançadas, como inovações propostas em artigos científicos, que envolvem o estado da arte de deep learning é que pode ser necessário descer um nível e utilizar diretamente o TensorFlow.

Pytorch

PyTorch é outra biblioteca popular do Facebook que permite a implementação de modelos de deep learning com facilidade. Sua popularidade é ainda maior na comunidade científica e é aí que são desenvolvidos algoritmos mais avançados. Em sites como o Papers with code, onde a comunidade tenta disponibilizar código relacionado a artigos científicos, o Pytorch é a ferramenta preferida. Além disso, quando pesquisamos no Google Trends vemos que no decorrer dos anos a popularidade deste framework vem crescendo em relação ao TensorFlow.

Comparar o TensorFlow e o Pytorch é uma tarefa difícil já que os dois possuem muitos pontos interessantes. Um dos pontos principais é que no TensorFlow temos que criar grafos computacionais estáticos no tempo de compilação. Isso significa que todas as condições e interações dentro da estrutura das redes neurais deve ser definida antes de rodar. Esses quesitos são importantes para a eficiência computacional.

Porém, muitas das novas arquiteturas de redes neurais mudam dinamicamente. Embora atualmente exista a opção enable_eager_execution() dentro do TensorFlow temos que no Pytorch a mudança dinâmica ocorre de forma mais intuitiva. A cada época do treinamento de uma rede neural é criado um grafo que pode mudar em uma época seguinte. Por outro lado, o Pytorch perde no quesito de visualização.

Esses processos são possíveis, mas não existem ferramentas tão boas quanto o tensorboard. Na verdade existe uma forma de tentar gerar a visualização da rede criada no Pytorch no TensorBoard. Na parte de entrega dos modelos o Pytorch uniu forças com o Caffe2 que seria o equivalente do TensorFlow Serving para a entrega de modelos. Assim, é possível pensar no Pytorch tanto para a pesquisa quanto para a produção.

Microsoft CNTK

A caixa de ferramentas cognitivas da Microsoft ou Microsoft Cognitive Toolkit (CNTK) é uma ferramenta de código aberto para aplicações não comerciais de deep learning. A CNTK permite que os usuários construam modelos populares de deep learning como as redes neurais convolucionais, LSTMs, dentre outros.

Pode ser utilizado com a sua linguagem de descrição de modelos (BrainScript) ou ser incluso com uma biblioteca em programas Python, C# ou C++. Um ponto interessante é que este é dos primeiros frameworks a dar suporte ao Open Neural Network Exchange (ONNX). O ONNX é uma representação de modelos de código aberto. Com o ONNX, é possível utilizar um modelo construído com o CNTK através do Pytorch, por exemplo.

MXNet

O Apache MXNET se destaca em relação aos demais pelo número de linguagens suportadas. Essas linguagens incluem o C++, Python, Java, Julia, Matlab, JavaScript, Go, R, Scala, Perl e Wolfram Language. O ecossistema do MXNET inclue o GluonCV, para a visão computacional, o GluonNLP para o processamento de linguagem natural, o GluonTS, para séries temporais e o AutoGluon para o AutoML.

Além disso, existe o Keras-MXNet que permite o uso Keras por cima do MXNet. Também existem opções como o MXBoard para visualização no TensorBoard e o MXNet Model Server para a servir modelos exportados do MXNet ou do ONNX. Apesar de menos conhecida, a MXNet também possui integração com Amazon AWS.

Sonnet

Se você precisa de uma alternativa um pouco mais avançada que o Keras, o Sonnet pode ser o framework ideal. Esse framework foi desenvolvido como uma camada acima do TensorFlow, assim como o Keras. O diferencial dele é ter sido desenvolvido por pesquisadores do Google DeepMind. Esse é um dos laboratórios de pesquisa em inteligência artificial mais importantes do mundo. Ele resolve alguns dos problemas do TensorFlow através da utilização de módulos que representam uma parte da rede neural. Isso torna o framework flexível já que o usuário pode conectar esses módulos e também criar os seus próprios módulos.

Chainer

Chainer é um framework que possui o poder do Pytorch já as redes podem ser definidas a cada rodada. O framework possui extensões como Chainer RL focada em algoritmos de aprendizagem por reforço e o Chainer CV para visão computacional. Essa biblioteca é suportada pela IBM, Intel, Microsoft, Nvidia e AWS. Porém, sua comunidade é relativamente pequena.

DL4J

Se você faz parte do mundo Java existe a DL4J. Essa biblioteca é escrita em Java e é suportada por qualquer linguagem de programação que utilize uma máquina virtual Java. Exemplos, são as linguagens, Scala, Clojure e Kotlin. A biblioteca também suporta uma grande variedade de redes neurais. Por fim, ela pode ajudar a trazer modelos construídos utilizando outros frameworks para aplicações em Java.

Conclusão

A escolha de frameworks entre tantas opções é bastante difícil. Mas levando a questão do tamanho das comunidades, ficamos entre o TensorFlow e o Pytorch. Aprender o Keras com o TensorFlow por trás dos panos, é uma escolha acertada para iniciantes. Em termos de dificuldade o Pytorch fica no meio do caminho entre o TensorFlow e o Keras. Porém, é uma escolha muito interessante para você que precisa das descobertas mais recentes focadas no deep learning. Se você quiser iniciar com o Pytorch você pode começar por este curso aqui:

Redes Neurais: Deep Learning com Pytorch.

E aí? Qual framework é o seu preferido? Conta pra gente nos comentários.

Allan Segovia Spadini
Allan Segovia Spadini

Allan trabalha como instrutor de Ciência de dados na Alura desde 2019. Também é um dos autores do livro Séries temporais com Prophet pela Casa do Código.

Veja outros artigos sobre Data Science