TensorFlow vs Pytorch!

Original article was published on Deep Learning on Medium


Olhando tecnicamente para o Tensorflow e para o Pytorch, no que eles são diferentes? Quais são suas vantagens e desvantagens?

Os dois Frameworks são mantidos por grandes comunidades com ajuda de gigantes do mercado de tecnologia, o Google e o Facebook , com isso temos um cenário de constantes atualizações, melhorias e correções de bugs e em muitos casos, em questão de tempo, novas funcionalidades, algoritmos ou estratégias disponíveis em um dos Frameworks irão ser implementadas e estarão disponível no outro.

Mas, alguns pontos devem ser levados em consideração, sendo eles:

#Definição dinâmica ou estatística na computação gráficos

O Pytorch desde da sua criação implementou a computação gráfica visando a importância da otimização para rede neurais em grande escala, partindo inicialmente do preceito de definição dinâmica da utilização de GPU. Utilizando o Tensorflow temos a utilização de recursos computacionais durante processamento gráfico definida estatisticamente, na prática, conseguimos a não dependência de um único drive de agendamento, otimização gráfica e diferenciação automática com essa estratégia.

#Treinamento distribuído

O Pytorch aproveitando o suporte nativo para execução assíncrona do Python para implementar o paralelismo de dados, principal recurso que o diferencia em relação ao Tensorflow, pois enquanto no Tensorflow, o desenvolvedor vai ter de codificar e ajustar manualmente todas as operações a serem executadas em um dispositivo específico para permitir o treinamento distribuído, no Pytorch isso é feito de forma automática e muito simples de ser implementada, mas caso seja necessário, ele pode fazer toda essa configuração manual também.

#Visualização

Para visualização do processo de treinamento no Tensorflow temos o Tensorboard, com ele conseguimos fazer o acompanhamento e visualização de métricas como perda e precisão, visualização do grafo do modelo (ops e camadas), visualização de histogramas de pesos, viés ou outros tensores conforme eles mudam ao longo do tempo, projeção de embeddings em um espaço dimensional inferior, exibição de dados de imagem, texto e áudio,
criação de perfis de programas do TensorFlow. Para visualização do treinamento no Pytorch temos o VisDOM, solução minimalista e limitada.

#Levando para produção(Deploy) 🙂

No caso do TensorFlow, podemos fazer o uso do TensorFlow Extended (TFX), plataforma dedicada para a implantação de pipelines automatizadas de produção de Machine Learning(ML), na prática através de comandos feitos partir de um biblioteca Python instalada anteriormente ao processo, podemos fazer o deploy do modelo de maneira fácil e feliz. 🙂

Infelizmente o Pytorch, não possui nenhuma solução tão automatizada e geralmente para implantar um modelo web, será necessário criar uma aplicação back-end em flask ou Django.

Outra possibilidade para implantação tanto para o TensorFlow, quanto para o Pytorch é adotar alguma solução de MLOps/AIOPS como o MLflow ou Kubeflow para criação de pipelines automatizadas ou criar sua própria solução do zero, customizada ao seu cenário, utilizando de ferramentas de integração contínua(CI) e deploy contínuo(CD).

#Monitoramento

Nos dias atuais temos varias soluções de monitoração do ambiente aonde cada modelo será implantado, como por exemplo a stack da Elastic com os Beasts, mini aplicações que geram logs de métricas customizáveis, o Logstach para captar esses logs e trabalhar as informações deles, o Elastickseah para salvar e possibilitar a pesquisa e analises desses dados e o Kibana, uma ótima solução para visualização, com isso conseguimos monitorar o ambiente de forma eficaz e escalável.

Para monitorar o modelo, o TensorFlow disponibiliza um histórico da acurácia e perda de cada modelo, podendo ser utilizado como métrica para medir a qualidade e eficiência do modelo ao longo do tempo, no caso do Pytorch, não foram encontrados nenhuma solução par a monitoramento dos modelos.

#Model Drift

Com o passar do tempo a empresa e startups que utilizam inteligência artificial tem seu modelo de negócio alterado ou sempre estão em constantes evoluções e os modelos que antes funcionavam podem começar a apresentar resultados incoerentes ou até mesmo falsos positivos e afetar o negócio como um todo.
Para resolver esse problemas, o TensorFlow com o uso do TFX podemos analisar os dados passados para o modelo em relação ao dataset de treino do modelo para acompanhar o desvio e tomar a atitude de retreino do modelo.
O Pytorch não possui uma solução própria para lidar com esse problema, mas a várias empresas que tem a opção de deploy de modelos feitos com o Framework criaram sua própria alternativa, como é o caso da Microsoft que em sua solução de computação em nuvem, a Azure disponha de monitores para detectar o ¨descompasso de dados¨ nos conjuntos de dados utilizados.