Article de reference

PyTorch

PyTorch demeure l'une des bibliothèques d'apprentissage profond les plus populaires, aux côtés d'autres telles que TensorFlow et Keras . Elle peut être installée à l'aide du ges...

PyTorch demeure l'une des bibliothèques d'apprentissage profond les plus populaires, aux côtés d'autres telles que TensorFlow et Keras . Elle peut être installée à l'aide du gestionnaire de paquets Anaconda . Plusieurs systèmes d'apprentissage profond commerciaux sont construits sur PyTorch, notamment ChatGPT , Tesla Autopilot , Pyro d' Uber , et Transformers de Hugging Face .

Histoire

En 2001, Torch a été écrit et publié sous licence GPL par l' Idiap Research Institute . Il s'agissait d'une bibliothèque d'apprentissage automatique écrite en C++ et CUDA, prenant en charge des méthodes telles que les réseaux de neurones, les machines à vecteurs de support (SVM), les modèles de Markov cachés , etc. Vers 2010, elle a été réécrite par Ronan Collobert, Clement Farabet et Koray Kavuckuoglu. Cette version, connue sous le nom de Torch7 ou LuaTorch, présentait un backend en C et un frontend en Lua . Au milieu de l'année 2016, des développeurs l'ont remaniée afin de découpler le frontend et le backend, en s'inspirant fortement de torch-autograd et Chainer . Torch-autograd, quant à lui, était influencé par HIPS/autograd. Le développement de Torch7 a cessé en 2018 et a été intégré au projet PyTorch.

Meta (anciennement Facebook) exploite à la fois PyTorch et Caffe2 (Convolutional Architecture for Fast Feature Embedding ), mais les modèles définis par ces deux frameworks étaient incompatibles. Le projet ONNX ( Open Neural Network Exchange ) a été créé par Meta et Microsoft en septembre 2017 afin de dissocier les frameworks d'apprentissage profond des environnements d'exécution spécifiques au matériel, permettant ainsi la conversion des modèles entre frameworks et leur optimisation pour des fournisseurs d'exécution tels que TensorRT de NVIDIA. Caffe2 a été intégré à PyTorch fin mars 2018. En septembre 2022, Meta a annoncé que PyTorch serait désormais géré par la fondation indépendante PyTorch, une filiale nouvellement créée de la Linux Foundation .

PyTorch 2.0 a été publié le 15 mars 2023, introduisant compilateur de niveau Python qui permet d'exécuter le code jusqu'à deux fois plus vite, ainsi que des améliorations significatives des performances d'entraînement et d'inférence sur les principales plateformes cloud .

Tenseurs PyTorch

PyTorch définit un module appelé nn( torch.nn) pour décrire les réseaux de neurones et faciliter leur entraînement. Ce module offre un ensemble complet de composants de base pour les réseaux de neurones, incluant différentes couches et fonctions d'activation, permettant ainsi la construction de modèles complexes. Les réseaux sont construits en héritant du torch.nnmodule et en définissant la séquence d'opérations dans la forward()fonction nn().

Format de fichier sérialisé PyTorch

PyTorch peut enregistrer et charger des modèles à l'aide de son propre format de fichier, une archive ZIP64 contenant les poids du modèle dans un fichier pickle Python , ainsi que d'autres informations telles que l' ordre des octets . Les extensions de fichier .pt et .pth sont couramment utilisées pour ces fichiers.

Exemple

Le programme suivant illustre les fonctionnalités de bas niveau de la bibliothèque à l'aide d'un exemple simple.

Importer Torchdtype = torch.floatpériphérique = torch.device ( "cpu" ) # Exécuter tous les calculs sur le processeur# device = torch.device("cuda:0") # Exécute tous les calculs sur le GPU# Créer un tenseur et le remplir de nombres aléatoiresa = torch.randn ( 2 , 3 , device = device , dtype = dtype )imprimer ( a )# Sortie : tenseur([[-1.1884, 0.8498, -1.7129],# [-0,8816, 0,1944, 0,5847]])b = torch.randn ( 2 , 3 , device = device , dtype = dtype )imprimer ( b )# Sortie : tenseur([[ 0.7178, -0.8453, -1.3403],# [ 1,3262, 1,1512, -1,7070]])imprimer ( a * b )# Sortie : tenseur([[-0.8530, -0.7183, 2.58],# [-1,1692, 0,2238, -0,9981]])imprimer ( a . somme ())# Sortie : tenseur(-2,1540)print ( a [ 1 , 2 ]) # Affichage de l'élément de la troisième colonne de la deuxième ligne (indexation à partir de zéro)# Sortie : tenseur(0,5847)imprimer ( a . max ())# Sortie : tenseur(0,8498)

Le bloc de code suivant définit un réseau neuronal avec des couches linéaires utilisant le nnmodule.

from torch import nn # Importe le sous-module nn de PyTorchclass NeuralNetwork ( nn . Module ): # Les réseaux de neurones sont définis comme des classesdef __init__ ( self ): # Les couches et les variables sont définies dans la méthode __init__super () . __init__ () # Doit être présent dans chaque réseau.self.flatten = nn.Flatten ( ) # Construire une couche d' aplatissement .self.linear_relu_stack = nn.Sequential ( # Construire une pile de couches .nn.Linear ( 28 * 28 , 512 ), # Les couches linéaires ont une forme d'entrée et de sortienn.ReLU (), # ReLU est l'une des nombreuses fonctions d'activation fournies par nnnn . Linéaire ( 512 , 512 ),nn.ReLU ( ) ,nn . Linéaire ( 512 , 10 ),)def forward ( self , x ): # Cette fonction définit la passe avant.x = self.flatten ( x )logits = self.linear_relu_stack ( x )retour logits

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index