TensorFlow vs Pytorch!
¨Breve¨ comparativo entre Tensorflow e o Pytorch, que vença o melhor do melhor do mundo! :)
Nas ultimas semanas fui levado a pesquisa e considerar dois Frameworks para deep learning muito populares, o Tensorflow e o Pytorch. Abaixo teremos um acumulado de todos os comprativos encontrados durante minha pesquisa.

Tensorflow é um Framework open source de deep learning desenvolvido é mantido principalmente pelo Google desde 2015 , sendo amplamente utilizado por empresas, startups e firmas de negócio para automatização e desenvolvimento de novas soluções. Sua grande adoção pelo mercado se têm principalmente pela facilidade de utilização, suporte para treinamento distribuído, opções de desenvolvimento e implantação escaláveis.
O Airbnb utiliza do Tensorflow para classificar imagens e detectar objetos a fim de melhorar a experiência dos hóspedes, a Coca-cola com uso do Framework conseguiu comprovar comprovar compras de maneira simplificada, a Lenovo criou um plataforma para acelerar a revolução inteligente, o Paypal utiliza na prevenção de fraudes, o WPS criou um escritório inteligente para diferentes cenários com reconhecimento de imagem e reconhecimento de caracteres em imagens.

Pytorch é o primeiro e o último Framework open source criado em 2017 e mantido até hoje no Github pelo Facebook. A cada dia que passa, mais e mais, sua comunidade cresce principalmente pela facilidade de sua utilização, eficiência no uso de memória.
O seu uso não é limitado apenas dentro de grandes instituições de ensino, mas nos mais diversos projetos pelo mundo, até mesmo já está presente em área da computação quântica, incorporada no projeto da empresa Xanadu, a Pennylane, um misto entre plataforma e biblioteca Python para o desenvolvimento de machine learning quântica(QML), diferenciação automática e otimização de hybrid quantum-classical computations, além de integração com outras bibliotecas para computação quântica como é o caso do Q# da Microsoft.
Olhando para esses dois Frameworks, temos diferença distintas no comportamento da comunidade de cada um deles, como se deve a popularidade de cada um e as diversas oportunidades crescentes e até mesmo a forma de aprendizado para aqueles que querem iniciar na área de deep learning.
#Aprendizado
Um dos fatores que tornaram tanto o Tensorflow, como o Pytorch tão populares é a facilidade de utilização e a rica documentação com variados exemplos de uso nos mais diferentes repositórios de código como o github e o gitlab e a crescente onda de artigos publicados em faculdades, universidades, revistas e até mesmo em site que hospedam blogs sobre o assunto como o Medium.
Para sair do zero com o Tensorflow, o estudante pode utilizar de cursos disponibilizados pelo Google com certificado, no caso do Pytorch, exites varias faculdade e universidade que ministram cursos gratuitos utilizando algum Framework descendente do Pytorch para ensinar deep learning como é o caso do Fast.ia.
Outra forma de apreender a utilizar esse Frameworks e ganhar experiência é participando de competições em sites especializado como o kaggle, onde muita empresas que tem um desafio podem criar competições para resolução deste com prêmios em dinheiro para a pessoa ou equipe que devolver o melhor modelo.
#Comunidade
Enquanto a comunidade de estudiosos, pesquisadores, desenvolvedores, cientistas de dados, engenheiros de machine learning do Tensorflow está lutando todos dias e utilizando suas força em conjunto para fazer do Tensorflow, um Framework melhor, vemos que a partir do Pytorch surgirão vários outros Frameworks com propostas e objetivos únicos e com sua própria comunidade como é o caso do Fastia.
No Brasil, temos várias comunidades e eventos, onde os Frameworks aparecem regulamento, em especial, no caso do Tensorflow, temos o google developer group e no caso do Pytorch, o Facebook Cicle, ambas ativas principalmente nos grandes centros do país.
#Popularidade
Estamos olhando para dois gigantes que a cada dia que se passar, ganham novos ¨convertidos¨ por sua simplicidade de serem utilizados e pela grande quantidade de documentação e exemplos de sua utilização disponível na internet.
Outra forma de entender a popularidade de cada um é olhar a procura deles na internet, para isso podemos utilizar o Google Trends colocando o Tensorflow e o Pytorch como termo de pesquisa podemos que ambos são muito populares, mas no quesito de procura temos o Tensorflow como mais procurado.
link da pesquisa: : https://trends.google.com/trends/explore?q=TensorFlow,pytorch
#Oportunidades
Olhando para vagas disponíveis, podemos notar que em muitas delas, os recrutadores estão atrás das pessoas que sabem solucionar o problema ou atuar em uma determinada área da inteligência artificial e não somente quem é especialista de Tensorflow ou Pytorch somente.
Existe uma infinidade de sites com vagas abertas para os mais diversificados perfis de atuação na área de inteligência artificial, aquele profissional que conseguir entender e conseguir atuar com ambos, terá um maior leque de opções disponíveis.
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.
Levando tudo isso em consideração podemos perceber que ambos os Frameworks estão amplamente difundidos e pousem comunidades extremamente ativas, além da grande quantidade de empresas e startups que utilizam e ajudam a manter, tendo cada um peculiaridades, que com o tempo estarão também disponível e evoluídas no outro Framework.
Referências:
Obrigado por sua leitura! :)