pytorch

PyTorch : tout savoir sur le framework de Deep Learning de Facebook

Margalith

Margalith

3 min

Le langage Python étant un des plus utilisés, il contient énormément de frameworks, et beaucoup sont développés exclusivement pour la Data Science. Dans cet article, nous allons donc vous parler en détail de l’un d’entre eux : PyTorch.

La popularité de la Data Science ne cesse de croître ces dernières années, et cela entraîne une explosion des ressources mises à dispositions des programmeurs : il n’est plus nécessaire de tout coder à la main. Des environnements de programmation tels que Pytorch, dits « frameworks », permettent d’utiliser des modèles complexes en seulement quelques lignes.

L'histoire de Pytorch

Les frameworks permettent de donner un cadre de travail et des outils pour faciliter la programmation. Ils sont généralement développés en « open source », c’est-à-dire que le code est accessible et modifiable par tous, ce qui permet fiabilité, transparence et un entretien continu.

PyTorch ne déroge pas à cette règle. Basé sur l’ancienne librairie Torch, PyTorch a été lancée officiellement en 2016 par une équipe du laboratoire de recherche de Facebook, et est depuis développé en open source. L’objectif de ce framework est de permettre l’implémentation et l’entraînement de modèles de Deep Learning de manière simple et efficiente. Sa fusion en 2018 avec Caffe2 (un autre framework de Python) a permis d’améliorer encore plus ses performances.

Pytorch est aujourd’hui utilisé par 17% des développeurs Python (étude Python Foundation 2020), et dans de nombreuses entreprises comme Tesla, Uber etc.

Pytorch vs Keras vs Tensorflow

Il semble difficile de présenter PyTorch sans prendre le temps de parler de ses alternatives, toutes créées à quelques années d’intervalle avec sensiblement le même objectif mais des méthodes différentes.

Keras a été développé en mars 2015 par François Chollet, chercheur chez Google. Keras a vite gagné en popularité grâce à son API facile à utiliser, qui s’inspire grandement de scikit-learn, la librairie de Machine Learning standard de Python.

Quelques mois plus tard, en novembre 2015, Google a publié une première version de TensorFlow qui est vite devenu le framework de référence en Deep Learning, car il permet d’utiliser Keras. Tensorflow a également mis au point un certain nombre de fonctionnalités en apprentissage profond dont les chercheurs avaient besoin pour créer facilement des réseaux de neurones comples.

Keras était donc très simple à utiliser, mais n’avait pas certaines fonctionnalités « bas niveau » ou certaines personnalisations nécessaires aux modèles de pointe. À l’inverse, Tensorflow donnait accès à ces fonctions, mais ne ressemblait pas au style habituel de Python et avait une documentation très compliquée pour les néophytes.

PyTorch a résolu ces problèmes en créant une API à la fois accessible et facile à personnaliser, permettant de créer de nouveaux types de réseaux, des optimiseurs et des architectures inédites.

Ceci-dit, les évolutions récentes de ces frameworks ont grandement rapproché leur mode de fonctionnement. Avant de rentrer dans les détails techniques de PyTorch, voici un tableau récapitulatif des différences entre ces outils. Keras et Tensorflow fonctionnant dorénavant de pair, il est plus pertinent de les présenter conjointement.

tableau keras

Utilisation de PyTorch pour le Deep Learning

Nous avons parlé de la complexité des modèles et des réseaux sans parler de la vitesse d’exécution des algorithmes. En effet, PyTorch est pensé pour minimiser ce temps et utiliser au mieux les spécificités du hardware.

PyTorch représente les données sous forme de tableaux multidimensionnels, similaires aux tableaux NumPy, appelés « tenseurs ». Les tenseurs stockent les inputs du réseau de neurones, les paramètres des hidden layers et les outputs. À partir de ces tenseurs, PyTorch peut effectuer, de manière cachée et efficace, 4 étapes pour entraîner le réseau :

  • Assembler un graphe à partir des tenseurs du réseau de neurones, ce qui permet une structure dynamique, il est possible de modifier le réseau de neurones (nombre de noeuds, connexions entre eux…) durant l’apprentissage.
  • Effectuer les prédictions du réseau (« forward pass »)
  • Calculer la perte ou erreur par rapport aux prédictions
  • Traverser le réseau en sens inverse : « backpropagation », et ajuster les tenseurs afin que le réseau fasse des prédictions plus précises sur la base de la perte/erreur calculée.

Cette fonction de PyTorch appelée « Autograd » est très optimisée, et est compatible avec l’utilisation des GPUs et le data parallelism, ce qui accélère considérablement les calculs. Par ailleurs, cela permet une utilisation sur tous les clouds, alors que Tensorflow par exemple n’est optimisé que pour GoogleCloud et ses TPU.

Récemment, et en partenariat avec AWS (Amazon Web Services), Pytorch a devoilé 2 nouvelles fonctionnalités. La première, baptisée TorchServe, permet de gérer efficacement le déploiement de réseaux de neurones déjà entraînés. La seconde, TorchElastic, permet d’utiliser Pytorch sur des clusters Kubernetes tout en étant résistant aux pannes. 

Ces 3 frameworks ont donc leur propre spécificité. En particulier PyTorch est très adapté pour les réseaux de neurones complexes et profonds. Pour découvrir PyTorch, le site officiel propose des tutoriels.

Pour approfondir votre pratique de ce framework, notre formation de Data Scientist propose des modules d’enseignement dédiés au Deep Learning avec PyTorch.