15 points par xguru 2021-12-20 | 1 commentaires | Partager sur WhatsApp
  • On dit souvent que TensorFlow est destiné à l’industrie et PyTorch à la recherche, mais cette idée repose sur des informations anciennes

  • En pratique, la comparaison se ramène généralement à 3 points

→ disponibilité des modèles : combien de modèles sont accessibles publiquement

→ infrastructure de déploiement : avec quelle efficacité peut-on déployer

→ écosystème : diversité des environnements et du matériel

Disponibilité des modèles

  • PyTorch et TensorFlow disposent tous deux de leurs propres dépôts officiels de modèles

  • HuggingFace

→ 85 % ne sont utilisables que sur PyTorch, et même parmi les modèles non exclusifs, 50 % sont disponibles. Au total, seuls 16 % sont disponibles sur TensorFlow (8 % uniquement sur TF)

→ Parmi les 30 modèles les plus populaires, tous sont disponibles sur PyTorch, alors que TensorFlow n’en prend en charge que 18

  • Articles de recherche

→ l’usage de PyTorch dans les articles soumis chaque année continue d’augmenter

→ il est passé de 7 % en 2017 à presque 80 % en 2021

→ beaucoup ont choisi PyTorch à cause des difficultés de TensorFlow 1

→ ces difficultés ont été largement corrigées dans TensorFlow 2, sorti en 2019, mais PyTorch s’était déjà imposé côté recherche

→ 55 % des chercheurs qui utilisaient TensorFlow en 2018 sont passés à PyTorch en 2019

→ parmi les chercheurs qui utilisaient PyTorch en 2018, 85 % l’utilisaient encore en 2019

  • D’après les données de Papers With Code

→ TensorFlow continue de reculer, tandis que PyTorch et d’autres frameworks sont de plus en plus utilisés

→ cette tendance s’est poursuivie après la sortie de TensorFlow 2. Cela n’a pas suffi à effacer les difficultés rencontrées auparavant avec TF1

  • En conclusion, sur le plan de la disponibilité des modèles, PyTorch domine le marché

  • Autres exceptions

→ GoogleAI utilisait surtout TensorFlow, mais Google Brain utilise JAX/Flax

→ DeepMind a également adopté JAX et a développé Haiku, une bibliothèque de réseaux neuronaux pour JAX (Sonnet for JAX)

→ JAX : framework distinct créé par Google, qui gagne en popularité dans la recherche

Déploiement

  • TensorFlow a été dès le départ optimisé pour les applications orientées déploiement

→ avec TensorFlow Serving, TensorFlow Lite, etc., il peut être déployé sans douleur sur le cloud, les serveurs, le mobile, les appareils IoT, etc.

  • PyTorch a longtemps été très en retard sur l’aspect déploiement, mais a fait des efforts ces dernières années pour réduire l’écart

→ TorchServe et PyTorch Live

  • En conclusion, TensorFlow reste pour l’instant supérieur du point de vue du déploiement

→ en particulier, la possibilité d’utiliser TFLite en local et sur les appareils Coral est indispensable dans d’autres secteurs aussi

→ PyTorch Live se concentre uniquement sur le mobile, et TorchServe en est encore à ses débuts

Écosystèmes

  • PyTorch

→ il existe le PyTorch Hub officiel : avec divers modèles en Audio/Vision/NLP, etc.

→ SpeechBrain : toolkit officiel open source pour la parole, avec de nombreuses fonctions comme l’ASR, la reconnaissance et la vérification du locuteur

→ il existe divers outils et bibliothèques, dont Fast.ai

→ TorchElastic : projet collaboratif AWS + Facebook

→ TorchX : bibliothèque pour le développement et le déploiement rapides en machine learning

→ PyTorch Lightning : le Keras de PyTorch

  • TensorFlow

→ TensorFlow Hub officiel : divers modèles, dont BERT

→ Model Garden : dépôt de code source pour les modèles SOTA(State-of-the-ART)

→ TensorFlow Extended(TFX) : plateforme E2E pour le déploiement de modèles

→ Vertex AI : plateforme unifiée de machine learning de Google Cloud

→ Media Pipe : framework multimodal et multiplateforme permettant de créer des pipelines de machine learning pour des fonctions comme la reconnaissance faciale, le suivi des mains ou la reconnaissance d’objets

→ Coral : toolkit créé pour prendre en charge les produits intégrant de l’IA locale (IoT)

→ TensorFlow.js : bibliothèque JavaScript pour le machine learning

→ TensorFlow Cloud : connecte l’environnement de développement local à Google Cloud

→ Colab : environnement de notebook dans le cloud (similaire à Jupyter)

→ Playground : outil pédagogique utile pour comprendre les bases des réseaux neuronaux

→ Datasets : stockage des jeux de données publiés régulièrement par Google (également utilisables par les utilisateurs de PyTorch)

  • En conclusion, TensorFlow est supérieur sur l’écosystème

→ Google y a beaucoup investi jusqu’à présent

→ le lien avec Google Cloud, ou la facilité de portage vers des appareils comme Coral, sont aussi meilleurs dans certains domaines

Alors, lequel des deux faut-il utiliser ?

  • Si vous travaillez dans l’industrie, le choix peut varier selon le secteur concerné (l’article original fournit un organigramme pour aider à choisir)

→ si vous utilisez déjà le deep learning dans un environnement industriel, vous utilisez probablement déjà TensorFlow, et vous pouvez continuer ainsi

→ PyTorch peut aussi être envisagé grâce à TorchServe

→ pour le mobile, utiliser PyTorch Live ; pour les entrées audio/vidéo, TensorFlow

→ si vous utilisez l’IA dans l’IoT, TensorFlow Lite + Coral

  • Et pour les chercheurs ?

→ vous utilisez probablement déjà PyTorch, et vous pouvez continuer ainsi

→ exception notable : si vous faites du Reinforcement Learning, envisagez TensorFlow

→ si vous ne voulez pas utiliser TensorFlow, JAX mérite aussi d’être considéré

→ quel que soit votre choix, JAX est à surveiller en 2022

  • Et pour les enseignants ?

→ cela peut dépendre des objectifs du cursus

→ pour former des ingénieurs capables d’utiliser immédiatement le machine learning en entreprise : TensorFlow

→ pour comprendre le deep learning et les modèles de deep learning : PyTorch

  • En cas de reconversion ?

→ PyTorch / TensorFlow sont tous deux de bonnes options

→ choisissez celui qui est le plus simple à utiliser

→ si vous ne voulez pas dépendre d’un framework précis, TensorFlow, plus standard dans l’industrie, peut être préférable

→ pour les offres d’emploi et le recrutement, TensorFlow était plus avantageux

  • Si vous faites du deep learning comme hobby ?

→ cela dépend de ce que vous voulez faire, mais PyTorch est globalement préférable

  • Et si vous débutez complètement en deep learning ?

→ il est recommandé de commencer avec Keras

→ si vous cherchez un environnement proche du natif Python, PyTorch, surtout PyTorch Lightning

1 commentaires

 
xguru 2021-12-20

C’est aussi intéressant de comparer avec ce qui se disait en 2019/2020.