| Fiche technique | |
|---|---|
| Type de produit : | Cadre d'application |
| Auteur : | Idiap Research Institute, Facebook, Inc |
| Date de publication : | 2016 |
| Licence : | BSD |
| Site Web : | https://pytorch.org/ |
Introduction
Le PyTorch est un cadre d'application destiné à l'apprentissage automatique open source accélérant le passage du prototypage de recherche au déploiement en production. Le projet est développé en Python et C++ mais supporte également le Java.
Voici les principales caractéristiques de PyTorch :
- Calcul tensoriel avec GPU : PyTorch propose une API intuitive pour manipuler des tenseurs, similaires à ceux de NumPy, mais avec accélération GPU grâce à CUDA. Cela permet d'effectuer des calculs massifs de manière rapide et parallèle.
- Définition dynamique des graphes (Dynamic Computational Graphs) : Contrairement à TensorFlow 1.x utilisant des graphes statiques, PyTorch construit le graphe au moment de l'exécution. Cela rend le débogage plus facile, et permet une grande flexibilité dans la conception des modèles, notamment pour les boucles ou les structures conditionnelles.
- API Pythonique : PyTorch s'intègre naturellement à l'écosystème Python : il utilise des conventions de nommage et des structures Python standards, ce qui le rend facile à apprendre pour les développeurs Python et à intégrer dans des projets existants.
- Support de l'apprentissage profond : PyTorch propose un module appelé torch.nn permettant de créer facilement des réseaux de neurones. Il fournit des couches standards (linéaires, convolutives, récurrentes,...) ainsi que des fonctions de perte, des fonctions d'activation et des optimisateurs.
- Interopérabilité avec NumPy : Les tenseurs PyTorch peuvent être convertis facilement en tableaux NumPy et inversement. Cela facilite l'utilisation d'outils scientifiques existants dans la communauté Python.
- Autograd (différentiation automatique) : PyTorch possède un moteur d'auto-différenciation intégré appelé Autograd. Il suit les opérations effectuées sur les tenseurs et calcule automatiquement les gradients, ce qui est essentiel pour l'apprentissage supervisé.
- Module torch.utils.data : Ce module fournit des classes comme Dataset et DataLoader facilitant la gestion et le chargement des données en mini-traitement par lots, avec shuffle, multitraitement,...
- Extensibilité et personnalisation : Il est facile de créer ses propres couches, fonctions de perte ou architectures en héritant des classes de base, ce qui rend PyTorch très adapté à la recherche.
- Large communauté et documentation : PyTorch bénéficie d'une grande communauté, de tutoriels abondants, de notebooks open source (notamment sur Kaggle et GitHub), et d'une documentation complète.
- Support de TorchScript et de ONNX : Pour passer du prototypage à la production, PyTorch offre TorchScript, un système permettant de convertir des modèles en une version exécutable plus performante. Il est aussi compatible avec ONNX (Open Neural Network Exchange) pour exporter des modèles vers d'autres cadres d'applications.
- PyTorch Lightning & Ecosystème : De nombreux outils autour de PyTorch simplifient le développement :
| Outils | Description |
|---|---|
| PyTorch Lightning | Structure de code propre pour la recherche. |
| TorchVision, TorchAudio, TorchText | Modules spécialisés pour le traitement d'images, de sons, et de texte. |
| Hugging Face Transformers, fastai | Bibliothèques haut niveau basées sur PyTorch. |
Dernière mise à jour : Vendredi, le 6 mars 2020