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.
Le bloc de code suivant définit un réseau neuronal avec des couches linéaires utilisant le nnmodule.