GPU (Graphics Processing Unit)
Un GPU est un processeur doté de milliers de cœurs, conçu pour les calculs parallèles, ce qui en fait le matériel de référence pour entraîner et exécuter des modèles d’apprentissage profond.
Un processeur graphique (GPU) est un processeur doté de milliers de cœurs simples qui exécutent simultanément la même opération sur de nombreux éléments de données. Les GPU ont été conçus pour générer des graphiques 3D, ce qui implique de calculer en parallèle des millions de pixels et de sommets ; ils sont devenus le matériel principal de l’apprentissage profond, car l’entraînement et l’inférence des réseaux de neurones reposent principalement sur des multiplications de matrices, qui se parallélisent de la même façon. La plateforme CUDA de NVIDIA, lancée en 2007, a rendu ses GPU programmables pour le calcul général ; en 2012, le réseau AlexNet, entraîné pendant cinq à six jours sur deux GPU NVIDIA GTX 580, a remporté le défi ImageNet avec un taux d’erreur top-5 de 15,3 %, contre 26,2 % pour le deuxième. Aujourd’hui, PyTorch, TensorFlow et JAX fonctionnent sur les GPU NVIDIA par CUDA, sur les GPU AMD par ROCm et sur les puces Apple par Metal ; des clusters de milliers de GPU entraînent les plus grands modèles de fondation.
Comment les GPU accélèrent l’apprentissage profond#
Un CPU consacre la majeure partie de la surface de sa puce aux caches et à la logique de contrôle, afin que quelques cœurs puissent exécuter rapidement du code avec branchements. Un GPU consacre cette surface aux calculs : un GPU NVIDIA est divisé en processeurs multiprocesseurs de flux, qui exécutent chacun des groupes de 32 threads appelés warps ; ceux-ci exécutent la même instruction sur des données différentes. Pendant que certains warps attendent les données en mémoire, d’autres effectuent des calculs ; la puce reste donc active tant qu’il y a suffisamment de travail parallèle. Depuis la génération Volta, en 2017, les GPU NVIDIA intègrent également des Tensor Cores, des unités qui multiplient de petites matrices en une seule étape avec une précision réduite, notamment en FP8 et, depuis Blackwell, en FP4. Un NVIDIA A100 atteint 19,5 TFLOPS en calcul FP32 standard et 312 TFLOPS en BF16 sur ses Tensor Cores, ce qui explique pourquoi la plupart des entraînements sur GPU utilisent la précision mixte. Ce code mesure le temps de la même multiplication de matrices sur le CPU et le GPU :
import time
import torch
gpu = torch.accelerator.current_accelerator() # cuda, mps, or xpu device on this machine
a = torch.randn(4096, 4096)
b = torch.randn(4096, 4096)
for device in (torch.device("cpu"), gpu):
x, y = a.to(device), b.to(device)
x @ y # warm-up run
torch.accelerator.synchronize()
start = time.perf_counter()
for _ in range(10):
x @ y
torch.accelerator.synchronize() # GPU calls return immediately, so wait for them to finish
seconds = (time.perf_counter() - start) / 10
print(f"{device.type}: {seconds * 1000:.1f} ms per multiply, {2 * 4096**3 / seconds / 1e12:.1f} TFLOPS")Sur un ordinateur portable Apple M5 Pro, il affiche cpu: 80.0 ms per multiply, 1.7 TFLOPS et mps: 18.3 ms per multiply, 7.5 TFLOPS ; le GPU intégré de l’ordinateur est donc environ 4,4 fois plus rapide en FP32. Les GPU de centres de données creusent encore l’écart, à la fois grâce à un plus grand nombre de cœurs et à la mémoire à large bande passante (HBM), qui fournit plusieurs téraoctets par seconde — assez pour alimenter les cœurs en poids et en activations. La mémoire GPU, souvent appelée VRAM, détermine également la taille du modèle et la taille de lot qui peuvent tenir sur un appareil ; des techniques comme le checkpointing de gradient et l’entraînement distribué permettent de contourner cette limite.
Entraîner et déployer des modèles sur des GPU#
Une tâche d’entraînement n’occupe pleinement le GPU que si le reste du pipeline suit le rythme : les processus CPU doivent décoder et augmenter les images assez vite, les lots doivent être assez grands pour saturer les cœurs et les calculs doivent s’exécuter en précision réduite sur les Tensor Cores. Une faible utilisation du GPU indique généralement un problème dans l’une de ces étapes :
Ultralytics YOLO s’entraîne par défaut sur le premier GPU CUDA disponible, accepte device=[0, 1] pour l’entraînement multi-GPU et, avec batch=-1, exécute AutoBatch, qui mesure la mémoire libre du GPU et choisit une taille de lot qui utilise environ 60 % de cette mémoire. Les équipes qui ne disposent pas de matériel local peuvent choisir un GPU dans le cloud sur Ultralytics Platform pour chaque exécution d’entraînement. Pour l’inférence, un modèle YOLO26n exporté vers TensorRT traite une image de 640 pixels en 1,7 ms sur un GPU NVIDIA T4, contre 38,9 ms avec ONNX sur un CPU. Ce code entraîne YOLO26 sur le premier GPU avec AutoBatch :
from ultralytics import YOLO
# Charger le plus petit modèle de détection YOLO26
model = YOLO("yolo26n.pt")
# Entraîner sur le GPU 0 et laisser AutoBatch adapter la taille du lot à la mémoire du GPU
results = model.train(data="coco8.yaml", epochs=3, imgsz=640, device=0, batch=-1)GPU, CPU, TPU et NPU : comparaison#
- CPU : quelques cœurs puissants pour le code généraliste avec branchements. Dans la plupart des pipelines d’entraînement, les CPU gèrent le chargement et le prétraitement des données ; ils prennent aussi en charge l’inférence lorsqu’aucun accélérateur n’est disponible.
- GPU : des milliers de cœurs programmables et des Tensor Cores. Les GPU exécutent presque tous les modèles et frameworks, sont proposés par plusieurs fournisseurs et sont disponibles dans tous les grands services cloud.
- TPU : puce spécialisée de Google reposant sur de grandes unités de multiplication de matrices. Les TPU privilégient l’efficacité pour les grandes opérations sur des matrices denses, au détriment de la polyvalence des GPU, et sont disponibles via Google Cloud.
- NPU : accélérateur de réseaux de neurones à faible consommation présent dans les téléphones, les ordinateurs portables et les appareils en périphérie, utilisé pour l’inférence plutôt que pour l’entraînement.
Applications concrètes#
- Entraînement de grands modèles : les modèles de langage et de vision comptant des milliards de paramètres s’entraînent sur des clusters de milliers de GPU de centres de données, reliés par des liaisons à haut débit comme NVLink et InfiniBand.
- Analyse vidéo en temps réel : un seul GPU peut exécuter simultanément la détection et le suivi d’objets sur de nombreux flux de caméras, pour la surveillance du trafic, l’analyse du commerce de détail ou l’inspection d’usines.
- Robotique et véhicules autonomes : des modules GPU embarqués comme NVIDIA Jetson exécutent des modèles de perception à bord, car l’envoi des données des caméras à un serveur entraînerait trop de latence.
- Imagerie médicale : les GPU traitent en quelques secondes de grands volumes 3D de tomodensitométrie et d’IRM afin de segmenter des organes et des tumeurs.










