PyTorch contre TensorFlow : Facebook prend le dessus sur l'IA de Google
Globalement plus mature, le framework de Mountain View est rattrapé par PyTorch qui se différencie par une structure dynamique des réseaux de neurones.
Sur le front des environnements de deep learning, TensorFlow et PyTorch font figure de standards. Développé par Google, le premier a été publié fin 2015 sous licence Apache 2.0. Issu de l'infrastructure DistBelief créée par Mountain View pour entrainer des modèles sur des clusters de centaines de serveurs, il est reconnu pour sa performance. Mis au point par Facebook, PyTorch est, lui, historiquement centré sur la recherche fondamentale. Disponible en open source sous licence BSD Modifiée depuis octobre 2016, il se distingue de TensorFlow par une architecture de réseau de neurone dynamique. Revers de la médaille : à la différence de son rival, Pytorch est peu performant pour exécuter les modèles une fois déployés. Pour résoudre ce dilemme, Facebook décide en 2018 de fusionner Pytorch avec Caffe2, son infrastructure de deep learning taillée pour les mises en production. Multiplateforme, elle est conçue pour supporter des algorithmes ingérant jusqu'à des dizaines de milliards de paramètres.
Du fait de son degré maturité dans l'industrialisation des IA, TensorFlow continue de supplanter Pytorch en termes de popularité. D'après le dernier baromètre de la Python Software Foundation, il est utilisé par 26% des développeurs Python, contre 15% pour PyTorch. "Certes, PyTorch n'atteint pas le même niveau d'usage. Mais ses dernières versions ne sont pas moins performantes que celles de TensorFlow. Grâce à sa structure dynamique, il est aussi beaucoup plus facile d'accès et même la portée d'un débutant. Il est fort à parier que ces atouts contribuent à rééquilibrer la balance en sa faveur dans les mois qui viennent", estime Didier Gaultier, directeur data science et IA chez Business & Decision, entreprise de services du numérique (ESN) filiale d'Orange. Et Aymen Chakhari, directeur IA et data science pour l'ESN Devoteam, de préciser : "A la différence de TensorFlow qui reste une librairie avec beaucoup d'opérations manuelles à réaliser, PyTorch est un véritable framework qui donne accès à des modules et des opérateurs d'optimisation packagés."
Compte tenu de sa popularité, TensorFlow supplante pour l'heure PyTorch, et de loin, en termes de compétences disponibles et d'outillages associés. Parmi ses briques les plus prisées figurent son célèbre Tensorboard. Une console de visualisation graphique permettant de monitorer l'entrainement des modèles dans l'optique d'optimiser leurs paramètres d'ajustement. "Visdom (l'équivalent du Tensorboard pour PyTorch, ndlr) ne va pas aussi loin", constate Aymen Chakhari.
"TensorFlow marque également des points dans l'inférence de modèles sur mobile", insiste Didier Gaultier. Un atout loin d'être étonnant sachant le positionnement de Google sur ce segment. Pour répondre à ce défi, la librairie est livrée avec un interpréteur C++ et Java (TensorFlow Lite) qui optimise les réseaux de neurones pour les appareils de petites tailles. "Avec sa version 1.4, PyTorch s'améliore dans ce domaine, mais sans atteindre le niveau de TensorFlow", regrette Didier Gaultier.
"PyTorch permet de réagencer en temps réel le graph du modèle pour trouver les bonnes combinaisons"
Pour booster encore les performances de sa librairie, Google planche sur un tout nouveau moteur d'exécution. Baptisé TensorFlow RunTime (TFRT), il pourra répondre directement aux appels d'API pour orchestrer l'entrainement ou l'inférence de modèles (voir le schéma ci-dessous).
La richesse fonctionnelle de TensorFlow rend mécaniquement la bibliothèque complexe à appréhender. Une critique que Google n'a pas tardé à prendre en compte. "TensorFlow 2.0 tend vers plus de simplification, mais des efforts restent à faire", reconnait Didier Gaultier. Dans cette nouvelle version, la librairie bénéficie notamment d'une intégration plus étroite avec Keras. Créée par François Chollet, ingénieur français chercheur en IA chez Google, il s'agit d'une API de deep learning de haut niveau. Déployée par Netflix, Uber, la NASA, Yelp et évidemment Google, elle permet de créer des réseaux de neurones en quelques lignes de code avant de les entrainer et les déployer via TensorFlow.
IA statique vs dynamique
Contrairement à PyTorch, TensorFlow se limite à une architecture de modélisation statique. "Ce qui implique de figer le graph du modèle pendant toute la phase d'entrainement", explique Aymen Chakhari chez Devoteam.
A l'inverse, la structure dynamique de PyTorch ouvre la possibilité de faire évoluer le réseau de neurones au fur et à mesure de l'apprentissage, ajouter de nouveaux nœuds, modifier les connexions entre eux, y compris d'une couche à l'autre. "Pour prédire la structure des protéines virales formant le Covid-19 par exemple (ce qui a été réalisé par deepMind aux Etats-Unis, ndlr), PyTorch permettra de réagencer en temps réel le graph du modèle pour trouver les bonnes combinaisons moléculaires", illustre Aymen Chakhari.
En aval, le traitement des graphs étant directement adossé au moteur d'exécution de PyTorch, le framework pourra aisément être utilisé avec divers environnements de débogage tiers comme PyCharm ou ipdb. De son côté, TensorFlow ne laisse pas cette liberté et implique de passer par un outil spécifique (TensorFlow Debugger).
"Certes Google propose ses processeurs TPU, taillés et optimisés pour TensorFlow, mais ils sont disponibles uniquement via son cloud"
Autre fonctionnalité distinguant PyTorch de TensorFlow, l'infrastructure de Facebook prend en charge la data parallelism déclaratif. Une technique qui permet de découper les traitements en multiples mini-batchs afin de paralléliser leur exécution sur des clusters de serveurs GPU. "On pourra aboutir au même résultat via TensorFlow mais au prix d'un effort nettement plus important", estime Aymen Chakhari.
Et Didier Gaultier de rappeler : "Certes Google propose des processeurs spécialement taillés et optimisés pour TensorFlow (les TPU pour Tensor Processing Unit, ndlr). Mais ils sont disponibles uniquement via son cloud." A l'inverse, Facebook concentre ses efforts sur une infrastructure hardware standard, optimisée pour les CPU et GPU, et donc déployable sur n'importe quel cloud, public comme privé.
Au-delà de ces fondamentaux, Facebook accélère ses efforts en vue d'aligner PyTorch sur TensorFlow. Fin avril, le groupe dotait son framework de deux nouvelles briques développées en lien avec AWS. La première, baptisée TorchElastic, permet de lancer des traitements PyTorch tolérant les pannes sur des clusters Kubernetes. Sur le modèle de TensorFlow Serving, la seconde (TorchServe) n'est autre qu'un outil pour gérer les déploiements de réseaux de neurones préalablement entrainés. Une brique qui était très attendues par la communauté. A l'instar de son concurrent TensorFlow Serving, elle prend en charge la gestion multi-modèle, la gestion de versions ou encore l'A/B testing.