Accueil les sujets Pytorch Qu'est-ce que PyTorch ?
 
Utiliser PyTorch avec watsonx.ai S’abonner aux mises à jour sur l’IA
Illustration par un collage de pictogrammes représentant des nuages, un diagramme circulaire, des pictogrammes de graphique
Qu'est-ce que PyTorch ?

PyTorch est un cadre d'apprentissage profond open source basé sur un logiciel utilisé pour construire des réseaux neuronaux, combinant la bibliothèque de machine learning (ML) de Torch avec une API de haut niveau basée sur Python . Sa flexibilité et sa facilité d'utilisation, entre autres avantages, en ont fait le principal cadre de ML pour les communautés universitaires et de recherche.

PyTorch prend en charge une grande variété d'architectures de réseaux neuronaux, depuis les simples algorithmes de régression linéaire jusqu'aux réseaux neuronaux convolutionnels complexes et aux modèles de transformation générative utilisés pour des tâches telles que la vision par ordinateur et le traitement automatique du langage naturel (NLP). Basé sur le langage de programmation Python, largement répandu, et offrant de vastes bibliothèques de modèles préconfigurés (et même préentraînés), PyTorch permet aux data scientists de construire et d'exécuter des réseaux d'apprentissage profond sophistiqués tout en minimisant le temps et les efforts consacrés au codage et à la structure mathématique.

PyTorch permet également aux data scientists d'exécuter et de tester des portions de code en temps réel, plutôt que d'attendre que l'ensemble du code soit mis en œuvre, ce qui, pour les grands modèles d'apprentissage profond, peut prendre beaucoup de temps. PyTorch est donc une excellente plateforme pour le prototypage rapide et accélère considérablement le processus de débogage.

Développé à l'origine par Facebook AI Research (aujourd'hui Meta), Python a été mis en open source en 2017 et est sous la tutelle de la PyTorch Foundation (qui fait partie de la Linux Foundation) depuis 2022. La fondation sert d'espace neutre à la communauté de l'apprentissage profond pour collaborer au développement de l'écosystème PyTorch.

En 2023, IBM est devenu un membre de premier plan de la PyTorch Foundation, ayant déjà collaboré à deux projets majeurs : permettre une formation plus efficace des modèles de fondation d'IA flexibles avec des milliards de paramètres et rendre le point de contrôle pour l'entraînement de l'IA considérablement plus rentable. La plateforme watsonx d'IBM utilise PyTorch pour fournir une pile logicielle professionnelle pour les modèles de fondation d'intelligence artificielle, de l'entraînement de bout en bout à l'optimisation des modèles.

Apprendre à utiliser Presto

Découvrez l'e-book gratuit d'O'Reilly pour apprendre à vous lancer avec Presto, le moteur SQL open source destiné à l'analyse des données.

Contenu connexe

Obtenir l’eBook sur les entrepôts de données pour l’IA

Comment fonctionne PyTorch ?

La structure mathématique et de programmation de PyTorch simplifie et rationalise les workflows de machine learning, sans limiter la complexité ou les performances des réseaux neuronaux profonds.

Python

Python est un langage de programmation général de haut niveau largement utilisé dans la science des données, ce qui en fait un choix intuitif pour les data scientists qui souhaitent approfondir leur travail en modélisant activement des réseaux d'apprentissage profond. La simplicité intrinsèque de Python en fait un langage facile à lire, dont l'apprentissage est relativement rapide et qui peut fonctionner sur n'importe quel système d'exploitation, y compris Windows, macOS, Linux ou Unix. Python est le deuxième langage de programmation le plus utilisé sur GitHub depuis plus de trois ans, ayant même dépassé Java en 2019. Il continue de gagner en popularité, avec une augmentation de 22,5 % en 20221.

Cette flexibilité et cette simplicité ont contribué à l'émergence d'une solide communauté en ligne de développeurs Python, qui collaborent à la création d'un large éventail de bibliothèques et d'API Python, telles que Numerical Python (NumPy) pour les opérations mathématiques, Pandas pour la manipulation de données ou matplotlib pour la visualisation des données et de ressources éducatives. Cette communauté a également généré un grand nombre de bibliothèques Pytorch qui limitent la monotonie et l'incertitude du codage pour le machine learning, permettant ainsi aux développeurs et aux data scientists de se concentrer sur l'innovation plutôt que sur l'écriture de tâches répétitives.

Tenseurs

Dans tout algorithme de machine learning, même ceux appliqués à des informations apparemment non numériques telles que des sons ou des images, les données doivent être représentées numériquement. Dans PyTorch, cela est possible grâce aux tenseurs, qui sont les unités de données fondamentales utilisées pour les calculs sur la plateforme.

Dans un contexte de machine learning, un tenseur est un tableau multidimensionnel de nombres qui fonctionne comme un système de comptabilité mathématique. D'un point de vue linguistique, le terme « tenseur » est un terme générique qui englobe certaines entités mathématiques plus familières :

  • Un scalaire est un tenseur à zéro dimension, contenant un seul nombre.
  • Un vecteur est un tenseur unidimensionnel, contenant plusieurs scalaires du même type. Un tuple est un tenseur unidimensionnel contenant différents types de données.
  • Une matrice est un tenseur bidimensionnel, contenant plusieurs vecteurs du même type.
  • Les tenseurs à trois dimensions ou plus, comme les tenseurs tridimensionnels utilisés pour représenter les images RVB dans les algorithmes de vision par ordinateur, sont collectivement appelés tenseurs à N dimensions.

Les tenseurs PyTorch fonctionnent de manière similaire aux ndarrays utilisés dans NumPy, mais contrairement aux ndarrays, qui ne peuvent être exécutés que sur des unités centrales de traitement (CPU), les tenseurs peuvent également être exécutés sur des unités de traitement graphique (GPU). Les GPU offrent une vitesse de calcul nettement supérieure à celle des CPU, ce qui constitue un avantage majeur compte tenu des volumes massifs de données et du traitement parallèle propres à l'apprentissage profond.

En plus d'encoder les entrées et les sorties d'un modèle, les tenseurs PyTorch encodent également les paramètres du modèle : les poids, les biais et les gradients qui sont « appris » dans le cadre du machine learning. Cette propriété des tenseurs permet la différenciation automatique, qui est l'une des fonctionnalités les plus importantes de PyTorch.

Modules

PyTorch utilise des modules comme éléments constitutifs des modèles d'apprentissage profond, ce qui permet la création rapide et directe de réseaux neuronaux sans avoir à coder manuellement chaque algorithme, ce qui est fastidieux.

Les modules peuvent contenir d'autres modules imbriqués, et c'est souvent le cas. En plus de permettre la création de réseaux neuronaux multicouches plus élaborés, cela permet également à ces modèles d'apprentissage profond complexes d'être facilement sauvegardés en tant que module nommé unique et transférés entre différentes machines, CPU ou GPU. Les modèles PyTorch peuvent même être exécutés dans des environnements non-Python, comme C++, via Torchscript (lien externe à ibm.com), ce qui permet de faire le lien entre les prototypes de recherche et le déploiement de la production.

De manière générale, il existe trois catégories principales de modules utilisés pour créer et optimiser des modèles d'apprentissage profond dans PyTorch :

  • Les modules nn sont déployés en tant que couches des réseaux neuronaux. Le package torch.nn contient une grande bibliothèque de modules qui effectuent des opérations courantes comme les convolutions, le pooling et la régression. Par exemple, torch.nn.Linear(n,m) lance un algorithme de régression linéaire avec n entrées et m sorties (dont les entrées et paramètres initiaux sont ensuite établis dans les lignes de code suivantes).

  • Le module autograd offre un moyen simple de calculer automatiquement les gradients, utilisés pour optimiser les paramètres du modèle via la descente de gradient, pour toute fonction opérée au sein des réseaux neuronaux. L'ajout d'un tenseur avec requires_grad=True indique à autograd que chaque opération sur ce tenseur doit être suivie, ce qui permet une différenciation automatique.

  • Les modules Optim appliquent des algorithmes d'optimisation à ces gradients. Torch.optim fournit des modules pour diverses méthodes d'optimisation, comme la descente de gradient stochastique (SGD) ou la propagation de la moyenne quadratique (RMSprop), afin de répondre à des besoins d'optimisation spécifiques.

Graphiques de calculs dynamiques

Les graphiques de calcul dynamique (DCG) sont la manière dont les modèles d'apprentissage profond sont représentés dans PyTorch. En résumé, les graphiques de calcul représentent le flux de données entre les différentes opérations d'un système mathématique : dans le contexte de l'apprentissage profond, ils traduisent essentiellement le code des réseaux neuronaux en un organigramme indiquant les opérations effectuées à chaque nœud et les dépendances entre les différentes couches du réseau. Il s'agit de l'agencement des étapes et des séquences qui transforment les données d'entrée en données de sortie.

Ce qui différencie les graphiques de calcul dynamiques (comme ceux utilisés dans PyTorch) des graphiques de calcul statiques (comme ceux utilisés dans TensorFlow), c'est que les DCG reportent la spécification exacte des calculs et des relations entre eux jusqu'au moment de l'exécution. En d'autres termes, alors qu'un graphique de calcul statique exige que l'architecture de l'ensemble du réseau neuronal soit entièrement déterminée et compilée pour pouvoir fonctionner, les DCG peuvent être itérés et modifiés à la volée.

Cela rend les DCG particulièrement utiles pour le débogage et le prototypage, car des parties spécifiques du code d'un modèle peuvent être modifiées ou exécutées de manière isolée sans avoir à réinitialiser l'ensemble du modèle. Pour les modèles d'apprentissage profond de très grande taille utilisés pour les tâches sophistiquées de vision par ordinateur et de NLP, cela pourrait représenter une perte de temps et de ressources informatiques. Les avantages de cette flexibilité s'étendent à l'entraînement des modèles, car les graphiques de calcul dynamiques sont facilement générés à rebours pendant la rétropropagation.

Alors que leur structure fixe peut permettre une plus grande efficacité de calcul, les graphiques de calcul statiques ont une flexibilité limitée : par exemple, élaborer un modèle qui utilise un nombre variable de couches en fonction des données d'entrée, tel qu'un réseau neuronal convolutionnel (CNN) qui peut traiter des images de différentes tailles, est une tâche extrêmement difficile avec des graphiques statiques.

Différenciation automatique

La rétropropagation est une méthode largement utilisée pour former les réseaux neuronaux, en particulier dans le cadre de l'apprentissage supervisé. Tout d'abord, un modèle est alimenté par des entrées (x) et prédit des sorties (y). En travaillant à rebours à partir de cette sortie, une fonction de perte est utilisée pour évaluer le taux d'erreur des prédictions du modèle pour différentes valeurs de x. En différenciant cette fonction de perte pour trouver sa dérivée, la descente de gradient peut être utilisée pour ajuster les poids dans le réseau neuronal, une couche à la fois.

Le module autograd de PyTorch utilise sa technique de différenciation automatique à l'aide d'une formule de calcul appelée règle de la chaîne, calculant les dérivées complexes en les divisant en dérivées plus simples et en les regroupant par la suite. Autograd calcule et enregistre automatiquement les gradients pour toutes les opérations exécutées dans un graphique de calcul, ce qui réduit considérablement le travail de rétropropagation.

Lors de l'exécution d'un modèle qui a déjà été entraîné, autograd devient une utilisation inutile des ressources informatiques. L'ajout d'une opération de tenseur avec requires_grad=False signalera à PyTorch de cesser de suivre les gradients.

Jeux de données et dataloaders

Travailler avec les grands ensembles de données nécessaires pour entraîner les modèles d'apprentissage profond peut être complexe et exigeant en termes de calcul. PyTorch fournit deux primitives de données, les jeux de données et les dataloaders, pour faciliter le chargement des données et rendre le code plus facilement lisible.

  • torch.utils.data.Dataset stocke les échantillons de données et leurs étiquettes correspondantes
  • torch.Utils.Data.DataLoader insère un itérable (un objet sur lequel on peut opérer) autour de l'ensemble des jeux de données pour permettre un accès facile aux échantillons

 

Écosystème PyTorch

Les fonctionnalités de base de PyTorch sont complétées par un solide écosystème d'outils, de bibliothèques et d'extensions (lien externe à ibm.com) développés par les membres de la communauté PyTorch. De nombreuses bibliothèques open source supplémentaires, contenant des modules spécifiques, des réseaux neuronaux préconfigurés et même des modèles pré-entraînés, sont disponibles pour compléter la bibliothèque torch préinstallée.

Torchvision

Torchvision est un outil contenant des modules, des architectures de réseau et des jeux de données pour diverses tâches de classification d'images, de détection d'objets et de segmentation d'images.

Découvrir Torchvision
TorchTexte

TorchText fournit des ressources telles que des jeux de données, des transformations élémentaires de traitement de texte et des modèles pré-entraînés à utiliser dans le cadre du NLP.

Découvrir TorchText
Open Neural Network Exchange

L'Open Neural Network Exchange (ONNX) assure l'interopérabilité entre les cadres d'IA, ce qui permet aux utilisateurs de transférer facilement leurs modèles PyTorch sur d'autres plateformes.

Découvrir ONNX
Tutoriels

De nombreux tutoriels utiles sont disponibles sur PyTorch.org. Par exemple, ce tutoriel intermédiaire (lien externe à ibm.com) enseigne les principes fondamentaux de l'apprentissage par renforcement en entraînant une IA à jouer à un jeu vidéo.

Découvrir les tutoriels PyTorch
Installation et exécution de PyTorch

PyTorch peut être installé et exécuté dans différentes configurations sur des systèmes locaux et des plateformes cloud.

L'exécution locale de PyTorch nécessite l'installation de Python à l'aide de l'Anaconda package manager, de Homebrew (lien externe à ibm.com) ou du site web de Python (lien externe à ibm.com).

PyTorch peut être installé localement via Anaconda  (lien externe à ibm.com) en utilisant la commande conda install pytorch torchvision -c pytorch, ou via pip (lien externe à ibm.com) en utilisant la commande pip3 install torch torchvision. Anaconda est recommandé, car il fournit toutes les dépendances de PyTorch (y compris Python) en une seule installation en bac à sable2.

PyTorch peut également être exécuté sur des plateformes cloud, notamment Amazon Web Services, Google Cloud et Microsoft Azure.

Il est recommandé (mais pas obligatoire) de travailler avec des GPU NVIDIA afin de profiter de la prise en charge par PyTorch de la CUDA (Compute Unified Device Architecture), qui offre un entraînement et des performances nettement plus rapides que ceux des CPU.

Solutions connexes
watsonx.ai

Entraînez, validez, ajustez et déployez en toute facilité des capacités d’IA générative et de machine learning ainsi que des modèles de fondation, et créez des applications d’IA beaucoup plus rapidement, avec seulement une fraction des données disponibles.

Découvrir watsonx.ai

Services de conseil en IA

Repensez votre façon d’exploiter l’IA : pour votre sérénité, notre équipe internationale diverse de plus de 20 000 experts en IA vous accompagnera dans la création et la mise à l’échelle de vos projets d’IA et d’automatisation. Alliant rapidité, éthique et fiabilité, vous vous appuierez sur notre technologie IBM watsonx et sur un écosystème de partenaires ouvert, pour assurer la livraison du modèle d’IA de votre choix, quel que soit le cloud utilisé.

Découvrez les services de conseil en IA proposés par IBM

watsonx.data

Mettez les workloads d’analyse et d’IA à l’échelle pour toutes vos données, partout, grâce à watsonx.data, le seul et unique entrepôt de données ouvert, hybride et gouverné du secteur.

Découvrir watsonx.data
Ressources de PyTorch Lancez-vous avec le machine learning

Ce parcours de formation est conçu pour toute personne souhaitant se familiariser rapidement avec le machine learning. Il comprend des tutoriels étape par étape et des démonstrations pratiques qui vous permettront de créer des modèles et de les utiliser dans des applications.

Guide du débutant sur Python

Nous vous présenterons les notions de base nécessaires pour utiliser ce langage de programmation simple, qu’il s’agisse d’exécuter des calculs algébriques ou de générer une sortie graphique à partir de vos données.

PyTorch : ressources et outils

Découvrir les articles, les recherches, les billets de blog, les tutoriels et les vidéos pour approfondir vos connaissances sur l'écosystème PyTorch.

Passer à l’étape suivante

Entraînez, validez, réglez et déployez une IA générative, des modèles de fondation et des capacités de machine learning avec IBM watsonx.ai, un studio professionnel de nouvelle génération pour les générateurs d’IA. Créez des applications d’IA en peu de temps et avec moins de données.

Découvrir watsonx.ai Réserver une démo en direct
Notes de bas de page

1 Octoverse 2022 : Les principaux langages de programmation (lien externe à ibm.com), Github, 17 novembre 2022
2PyTorch: Get Started – Start Locally (lien externe à ibm.com)