PyTorch

PyTorch
Description de l'image Pytorch logo.png.

Informations
Créateur Adam Paszke, Sam Gross, Soumith Chintala, Gregory Chanan
Dernière version 2.12.0 ()[1]Voir et modifier les données sur Wikidata
Dépôt github.com/pytorch/pytorchVoir et modifier les données sur Wikidata
Écrit en C++, Python, C et Compute Unified Device ArchitectureVoir et modifier les données sur Wikidata
Système d'exploitation Linux, macOS et Microsoft WindowsVoir et modifier les données sur Wikidata
Formats lus PyTorch Serialized File Format (d)Voir et modifier les données sur Wikidata
Formats écrits PyTorch Serialized File Format (d)Voir et modifier les données sur Wikidata
Type Bibliothèque logicielle
Bibliothèque logicielle Python (d)
Structure logicielle d'apprentissage automatique (d)Voir et modifier les données sur Wikidata
Licence BSD 3-clausesVoir et modifier les données sur Wikidata
Documentation pytorch.org/docs/stable/index.htmlVoir et modifier les données sur Wikidata
Site web pytorch.orgVoir et modifier les données sur Wikidata

PyTorch est une bibliothèque logicielle Python open source d'apprentissage automatique qui s'appuie sur Torch (en) développée par Meta[2].

PyTorch est gouverné par la PyTorch Foundation[3].

PyTorch permet d'effectuer les calculs tensoriels nécessaires notamment pour l'apprentissage profond (deep learning). Ces calculs sont optimisés et effectués soit par le processeur (CPU) soit, lorsque c'est possible, par un processeur graphique (GPU) supportant CUDA. PyTorch a été créé par les équipes de recherche de Facebook, précédées par les travaux de recherche de Ronan Collobert au cœur de l'équipe de Samy Bengio[4] à l'IDIAP.

PyTorch se présente sous les traits d'un dérivé d'un logiciel antérieur, Torch, dont l'utilisation nécessitait la maîtrise du langage Lua. PyTorch est désormais indépendant de Lua et se programme en Python.

PyTorch permet, entre autres, de:

  • manipuler des tenseurs (tableaux multidimensionnels), de les échanger facilement avec Numpy et d'effectuer des calculs efficaces sur CPU ou GPU (par exemple, des produits de matrices ou des convolutions);
  • calculer des gradients pour appliquer facilement des algorithmes d'optimisation par descente de gradient. PyTorch utilise la bibliothèque autograd[5].

Tenseurs PyTorch

PyTorch définit une classe appelée Tensor (torch.Tensor) pour stocker les données et opérer sur des tableaux rectangulaires multidimensionnels homogènes de nombres. Les tenseurs PyTorch sont similaires aux tableaux NumPy, mais peuvent également être utilisés sur un GPU Nvidia compatible CUDA. PyTorch prend en charge divers sous-types de Tensors[6].

Historique

En Caffe2 (en) fusionne avec PyTorch [7]. PyTorch rejoint la Fondation Linux en [8].

Exemple

Le programme suivant montre la fonctionnalité de la bibliothèque avec un exemple simple[9] :

import torch
dtype = torch.float
device = torch.device("cpu") # Tous les calculs seront exécutés sur le processeur
# device = torch.device("cuda:0") # Tous les calculs seront exécutés sur la carte graphique

# Création d'un tenseur rempli avec des nombres aléatoires
a = torch.randn(2, 3, device=device, dtype=dtype)
print(a) # Affichage du tenseur a
# Output: tensor([[-1.1884,  0.8498, -1.7129],
#                  [-0.8816,  0.1944,  0.5847]])

# Création d'un tenseur rempli avec des nombres aléatoires
b = torch.randn(2, 3, device=device, dtype=dtype)
print(b) # Affichage du tenseur b
# Output: tensor([[ 0.7178, -0.8453, -1.3403],
#                  [ 1.3262,  1.1512, -1.7070]])

print(a*b) # Affichage du produit (terme à terme) des deux tenseurs
# Output: tensor([[-0.8530, -0.7183,  2.58],
#                  [-1.1692,  0.2238, -0.9981]])

print(a.sum()) # Affichage de la somme de tous les éléments du tenseur a
# Output: tensor(-2.1540)

print(a[1,2]) # Affichage de l'élément de la 2ème rangée et de la 3ème colonne de a
# Output: tensor(0.5847)

print(a.min()) # Affichage de la valeur minimale du tenseur a
# Output: tensor(-1.7129)

PyTorch Tensors

PyTorch utilise essentiellement des Tensors : torch.Tensor . Similaires aux tables de NumPy, cette structure de données permet de stocker un tableau multidimensionnel de forme homogène. Les Tensors peuvent également être transférés depuis le CPU (par défaut) sur un GPU (et vice-versa). Les GPU de NVIDIA, sous plateforme CUDA sont pleinement compatibles. D’autres plateformes sont en cours de développement comme les GPU d'AMD sous la plateforme ROCm™ (en), d’Apple avec MPS [10].

De nombreuses méthodes d’algèbre linéaire sont implémentés dans cette librairie python.

Articles connexes

Notes et références

  1. « Release 2.12.0 », (consulté le )
  2. Julien Bergounhoux, « Avec PyTorch 1.0, Facebook cherche à créer la boite à outil ultime pour l'intelligence artificielle », L'Usine digitale,‎ (lire en ligne)
  3. (en) « PyTorch », sur www.pytorch.org (consulté le )
  4. (en) « Torch: A Modular Machine Learning Software Library », sur citeseerx.ist.psu.edu, (consulté le )
  5. « Automatic differentiation package - torch.autograd — PyTorch master documentation », sur pytorch.org (consulté le )
  6. « An Introduction to PyTorch – A Simple yet Powerful Deep Learning Library », sur analyticsvidhya.com, (consulté le )
  7. (en) « Caffe2 and PyTorch join forces to create a research + production platform » [« Caffe2 et PyTorch s'unissent pour créer une plateforme de recherche et de production »], sur Official Caffe2 Blog, (consulté le )
  8. #LeBrief, « Meta transfère la gouvernance de PyTorch à la Linux Foundation », sur nextinpact.com, (consulté le )
  9. Jeremy Howard, Sylvain Gugger, Deep Learning for Coders with fastai and PyTorch, O'Reilly, (ISBN 978-1492045526, lire en ligne)
  10. (en) « Introducing Accelerated PyTorch Training on Mac » [archive du ], pytorch.org (consulté le )

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.