15 pontos por xguru 2021-12-20 | 1 comentários | Compartilhar no WhatsApp
  • Costuma-se dizer que o TensorFlow é para uso industrial e o PyTorch para pesquisa, mas isso se baseia em informações antigas

  • Considerações práticas: em geral, a comparação acaba se resumindo a 3 pontos

→ disponibilidade de modelos: quantos modelos podem ser usados publicamente

→ infraestrutura de deploy: com quanta eficiência é possível fazer deploy

→ ecossistema: variedade de ambientes/hardwares

Model Availability

  • Tanto PyTorch quanto TensorFlow têm seus próprios repositórios oficiais de modelos

  • HuggingFace

→ 85% só podem ser usados no PyTorch, e mesmo entre os modelos não exclusivos, 50% podem ser usados. No total, apenas 16% podem ser usados no TensorFlow (só 8% apenas em TF)

→ No caso dos 30 modelos mais populares, todos estão disponíveis no PyTorch, mas no TensorFlow apenas 18 deles estão disponíveis

  • Artigos de pesquisa

→ o uso de PyTorch nos artigos submetidos a cada ano continua aumentando

→ começou em 7% em 2017 e em 2021 já chegou a quase 80%

→ muita gente escolheu PyTorch por causa da dificuldade do TensorFlow 1

→ essas dificuldades melhoraram bastante no TensorFlow 2, lançado em 2019, mas o PyTorch já havia se consolidado como foco de pesquisa

→ 55% dos pesquisadores que usavam TensorFlow em 2018 migraram para PyTorch em 2019

→ 85% dos pesquisadores que usavam PyTorch em 2018 continuaram usando PyTorch em 2019

  • Segundo dados do Papers With Code

→ o TensorFlow segue em queda, enquanto PyTorch e outros frameworks vêm sendo cada vez mais usados

→ essa tendência continuou mesmo após o lançamento do TensorFlow 2. Não foi suficiente para reverter as dificuldades vividas no TF1

  • Em resumo, em disponibilidade de modelos o PyTorch domina o mercado

  • Outras exceções

→ o GoogleAI usava principalmente TensorFlow, mas o Google Brain usa JAX/Flax

→ a DeepMind também adotou JAX e desenvolveu o Haiku, uma biblioteca de redes neurais para JAX (Sonnet for JAX)

→ JAX: framework criado separadamente pelo Google. Está ganhando popularidade no lado de pesquisa

Deployment

  • O TensorFlow desde o início foi otimizado para aplicações orientadas a deploy

→ com TensorFlow Serving, TensorFlow Lite etc., é possível fazer deploy sem dor em cloud/servidor/mobile/dispositivos IoT

  • O PyTorch era muito fraco do ponto de vista de deploy, mas nos últimos anos tem se esforçado para reduzir essa diferença

→ TorchServe e PyTorch Live

  • Em resumo, do ponto de vista de deploy, o TensorFlow ainda é superior

→ em especial, a possibilidade de usar o TFLite localmente e em dispositivos Coral é algo essencial também para outras indústrias

→ o PyTorch Live foca apenas em mobile, e o TorchServe ainda está em estágio inicial

Ecosystems

  • PyTorch

→ existe o PyTorch Hub oficial: tem vários modelos de Audio/Vision/NLP etc.

→ SpeechBrain: toolkit oficial open source de fala, com muitos recursos como ASR/reconhecimento e autenticação de locutor

→ há várias ferramentas e bibliotecas, incluindo o Fast.ai

→ TorchElastic: projeto colaborativo entre AWS e Facebook

→ TorchX: biblioteca para desenvolvimento e deploy rápido de machine learning

→ PyTorch Lightning: Keras of PyTorch

  • TensorFlow

→ TensorFlow Hub oficial: diversos modelos, incluindo BERT

→ Model Garden: repositório de código-fonte para modelos SOTA(State-of-the-ART)

→ TensorFlow Extended(TFX): plataforma E2E para deploy de modelos

→ Vertex AI: plataforma unificada de machine learning do Google Cloud

→ Media Pipe: framework multimodal e multiplataforma para criar pipelines de machine learning com recursos como reconhecimento facial, hand tracking e reconhecimento de objetos

→ Coral: toolkit criado para dar suporte a produtos com AI embarcada localmente (IOT)

→ TensorFlow.js: biblioteca JavaScript para machine learning

→ TensorFlow Cloud: conecta o ambiente local de desenvolvimento ao Google Cloud

→ Colab: ambiente de notebook baseado em cloud (parecido com Jupyter)

→ Playground: ferramenta educacional excelente para entender o básico de redes neurais

→ Datasets: armazena datasets que o Google publica periodicamente (usuários de PyTorch também podem usar)

  • Em resumo, o TensorFlow tem um ecossistema superior

→ o Google investiu muito nisso ao longo do tempo

→ em alguns campos, também é melhor para conectar com o Google Cloud ou portar para dispositivos Coral

Então, qual dos dois devo usar?

  • Se você está na indústria, a escolha pode variar dependendo do setor em que atua (o original traz um fluxograma para facilitar a escolha)

→ se você usa deep learning em ambiente industrial, provavelmente já usa TensorFlow e pode continuar com ele

→ por causa do TorchServe, também vale considerar PyTorch

→ se for mobile, use PyTorch Live; se a entrada for áudio/vídeo, use TensorFlow

→ se for usar AI em IoT, TensorFlow Lite + Coral

  • E se for pesquisador?

→ provavelmente você já usa PyTorch e pode continuar com ele

→ como exceção, se trabalhar com Reinforcement Learning, considere TensorFlow

→ se não quiser usar TensorFlow, JAX também merece consideração

→ independentemente da escolha, em 2022 vale a pena ficar de olho no JAX

  • E se for professor?

→ pode variar conforme o objetivo do curso

→ para formar engenheiros que vão usar machine learning imediatamente no mercado, TensorFlow

→ para entender deep learning e modelos de deep learning, PyTorch

  • E se estiver mudando de carreira?

→ tanto PyTorch quanto TensorFlow são boas opções

→ escolha o que for mais fácil de usar

→ se você não estiver preso a um framework específico, o TensorFlow, usado como padrão na indústria, pode ser melhor

→ na hora de buscar emprego ou contratar, o lado do TensorFlow se saía melhor

  • E se fizer deep learning como hobby?

→ depende do que você quer fazer, mas no geral PyTorch é melhor

  • E se for totalmente iniciante em deep learning?

→ a recomendação é começar com Keras

→ se busca um ambiente mais parecido com Python nativo, PyTorch, especialmente PyTorch Lightning

1 comentários

 
xguru 2021-12-20

Também é interessante comparar com as discussões que surgiram em 2019/2020.