Comparaison entre PyTorch et TensorFlow en 2022
(assemblyai.com)-
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
C’est aussi intéressant de comparer avec ce qui se disait en 2019/2020.
État actuel des frameworks de machine learning [2019] https://fr.news.hada.io/topic?id=696
La direction de l’IA en 2020 selon les prévisions des experts du machine learning https://fr.news.hada.io/topic?id=1213
Interview d’un chercheur autodidacte en IA entré chez Google https://fr.news.hada.io/topic?id=1347
L’écosystème TensorFlow : du développement du machine learning au déploiement https://fr.news.hada.io/topic?id=1757
Le cours intensif de machine learning créé par Google avec TensorFlow [en coréen] https://fr.news.hada.io/topic?id=1052