PyTorch
PyTorch est un framework Python open source permettant de créer et d’entraîner des réseaux neuronaux avec des tenseurs GPU et l’autograd. Découvre ses concepts fondamentaux et son parcours de déploiement.
PyTorch est un framework open source permettant de créer, d’entraîner et de déployer des réseaux de neurones en Python. Il fournit des tenseurs accélérés par GPU, la différentiation automatique ainsi qu’une bibliothèque de couches, d’optimiseurs et de fonctions de perte. Il exécute le code de manière immédiate, ligne par ligne, ce qui permet d’écrire et de déboguer les modèles comme des programmes Python ordinaires. Créé chez Facebook AI Research, aujourd’hui Meta AI, PyTorch est gouverné depuis 2022 par la PyTorch Foundation, indépendante des fournisseurs, sous l’égide de la Linux Foundation, et est largement utilisé pour la recherche en apprentissage profond et les modèles de production en vision par ordinateur et en traitement du langage.
Concepts fondamentaux#
- Tenseurs : tableaux multidimensionnels, comme les tableaux NumPy, qui peuvent résider sur un CPU ou un accélérateur. PyTorch prend en charge les GPU NVIDIA via CUDA, les GPU AMD via ROCm et les puces Apple via Metal (MPS) ; le transfert des données entre ces dispositifs se fait avec un seul appel
.to(device). - Autograd : à mesure que les opérations sur les tenseurs s’exécutent, PyTorch les enregistre dans un graphe de calcul. L’appel
.backward()parcourt ce graphe à rebours et renseigne le gradient de la sortie par rapport à chaque tenseur qui en a besoin ; c’est l’étape de rétropropagation de l’entraînement. - Exécution immédiate : le graphe est reconstruit à chaque passe avant, ce qui permet aux modèles d’utiliser des boucles, des conditions et des instructions d’affichage Python ; les erreurs indiquent la ligne exacte où elles se sont produites.
- Modules et optimiseurs :
torch.nnfournit des couches comme les convolutions, l’attention et la normalisation, tandis quetorch.optimfournit des optimiseurs comme SGD et Adam, qui mettent à jour les poids à partir des gradients calculés. - torch.compile : ajouté dans PyTorch 2.0, il capture le programme exécuté immédiatement sous forme de graphe et génère des noyaux fusionnés, accélérant souvent l’entraînement et l’inférence sans modifier le code du modèle.
L’exemple ci-dessous exécute un petit calcul sur un GPU si celui-ci est disponible et laisse autograd calculer son gradient :
import torch
# Use a GPU when PyTorch can see one, otherwise fall back to the CPU
device = "cuda" if torch.cuda.is_available() else "cpu"
# Tensors record the operations applied to them when requires_grad=True
w = torch.tensor([2.0, -1.0], device=device, requires_grad=True)
x = torch.tensor([3.0, 4.0], device=device)
# Ordinary Python runs eagerly: each line executes immediately
loss = (w * x).sum() ** 2
# Autograd walks the recorded graph backward to get d(loss)/dw
loss.backward()
print(f"device={device}, loss={loss.item()}, grad={w.grad.tolist()}")Sur une machine sans GPU, le programme affiche device=cpu, loss=4.0, grad=[12.0, 16.0]. La perte est (2·3 − 1·4)² = 4, et autograd renvoie sa dérivée 2·(w·x)·x = [12, 16] sans aucun calcul différentiel écrit à la main ; c’est le même mécanisme qui entraîne des réseaux comprenant des milliards de poids.
PyTorch et les autres outils#
- TensorFlow : le framework de Google, qui construisait des graphes statiques avant de les exécuter jusqu’à ce que TensorFlow 2 fasse de l’exécution immédiate le comportement par défaut. Il reste courant dans les systèmes de production construits autour de Keras et des outils de déploiement de Google.
- JAX : la bibliothèque numérique de Google qui transforme des fonctions Python pures au moyen d’opérations
grad,jitetvmapcomposables, compilées par XLA ; elle est appréciée pour la recherche à grande échelle sur TPU. - OpenCV : une bibliothèque de vision par ordinateur permettant de lire, transformer et analyser des images à l’aide d’algorithmes classiques. Les pipelines utilisent souvent OpenCV pour charger et prétraiter les images avant leur traitement par un modèle PyTorch.
- Hugging Face : un hub et un ensemble de bibliothèques reposant en grande partie sur PyTorch, dont la bibliothèque Transformers fournit des modèles préentraînés de langage et de vision sous forme de modules PyTorch.
De la recherche au déploiement#
Un modèle PyTorch entraîné est enregistré sous forme de point de contrôle, généralement dans un fichier .pt ou .pth contenant ses poids. Il peut être exécuté tel quel dans un service Python, mais les appareils périphériques et les serveurs optimisés doivent généralement être convertis vers un environnement d’exécution conçu pour leur matériel :
Ultralytics YOLO26 est écrit en PyTorch : yolo26n.pt est un point de contrôle PyTorch, l’entraînement s’appuie sur autograd et les optimiseurs de PyTorch, et model.export() convertit le modèle vers ces formats de déploiement, notamment ONNX, TensorRT, OpenVINO, Core ML et LiteRT.










