Batch Size
Découvre comment la taille des lots affecte la vitesse et la précision de l’entraînement en machine learning. Explore les contraintes matérielles et optimise Ultralytics YOLO26 avec AutoBatch.
Dans le domaine de l’apprentissage automatique, et plus particulièrement de l’apprentissage profond, la taille des lots désigne le nombre d’exemples d’entraînement utilisés lors d’une itération de l’entraînement d’un modèle. Plutôt que d’injecter toutes les données d’entraînement dans le réseau neuronal en une seule fois — ce qui est souvent impossible sur le plan informatique en raison des contraintes de mémoire — le jeu de données est divisé en sous-ensembles plus petits appelés lots. Le modèle traite un lot, calcule l’erreur, puis met à jour ses poids de modèle internes via la rétropropagation avant de passer au lot suivant. Cet hyperparamètre joue un rôle essentiel dans la détermination de la vitesse d’entraînement et de la stabilité du processus d’apprentissage.
Dynamique de l’entraînement avec des lots#
Le choix de la taille des lots modifie fondamentalement la manière dont l’algorithme d’optimisation, généralement une variante de la descente de gradient stochastique, parcourt le paysage de la fonction de perte.
- Petites tailles de lots : L’utilisation d’un petit nombre d’exemples (par exemple, 8 ou 16) entraîne des mises à jour « bruitées ». Bien que l’estimation du gradient soit moins précise pour l’ensemble du jeu de données, ce bruit peut parfois aider le modèle à échapper aux minima locaux et potentiellement conduire à une meilleure généralisation. Cependant, les lots plus petits nécessitent davantage de mises à jour par époque, ce qui peut ralentir l’entraînement en temps réel en raison des surcoûts.
- Grandes tailles de lots : Un lot plus important (par exemple, 128 ou 256) fournit une estimation plus précise du gradient, ce qui entraîne une convergence plus régulière de la fonction de perte. Il permet une parallélisation massive sur le matériel moderne et accélère considérablement les calculs. Cependant, si le lot est trop grand, le modèle peut se stabiliser dans des minima étroits et sous-optimaux, ce qui entraîne du surapprentissage et une capacité réduite à généraliser à de nouvelles données.
Conséquences sur le matériel et la mémoire#
Les professionnels doivent souvent choisir une taille de lots en fonction des limitations matérielles plutôt que d’une préférence purement théorique. Les modèles d’apprentissage profond, en particulier les architectures volumineuses comme les transformateurs ou les réseaux convolutionnels avancés, sont stockés dans la VRAM d’un GPU.
Lorsqu’ils utilisent NVIDIA CUDA pour l’accélération, la VRAM doit contenir les paramètres du modèle, le lot de données d’entrée et les sorties d’activation intermédiaires nécessaires au calcul du gradient. Si la taille des lots dépasse la mémoire disponible, l’entraînement s’interrompt avec une erreur de « mémoire insuffisante » (OOM). Des techniques comme l’entraînement en précision mixte sont souvent employées pour réduire l’utilisation de la mémoire et permettre des tailles de lots plus importantes sur le même matériel.
Distinction entre concepts connexes#
Pour configurer efficacement l’entraînement, il est essentiel de distinguer la taille des lots des autres termes temporels utilisés dans la boucle d’entraînement.
- Taille des lots et époque : Une époque représente un parcours complet de l’ensemble du jeu de données d’entraînement. La taille des lots détermine en combien de blocs les données sont divisées au cours de cette époque. Par exemple, si tu as 1 000 images et une taille de lots de 100, il faudra 10 itérations pour terminer une époque.
- Taille des lots et itération : Une itération (ou étape) consiste à traiter un lot et à mettre à jour les poids. Le nombre total d’itérations pendant l’entraînement correspond au nombre de lots par époque multiplié par le nombre total d’époques.
- Taille des lots et normalisation par lots : Bien qu’elles partagent un même nom, la normalisation par lots est un type de couche spécifique qui normalise les entrées de la couche en fonction de la moyenne et de la variance du lot actuel. Cette technique dépend fortement de la taille des lots ; si celle-ci est trop petite (par exemple, 2), les estimations statistiques deviennent peu fiables, ce qui peut dégrader les performances.
Applications concrètes#
L’ajustement de la taille des lots est une nécessité courante lors du déploiement de solutions de vision par ordinateur dans différents secteurs.
-
Imagerie médicale haute fidélité : Dans le domaine de l’IA dans la santé, les professionnels travaillent souvent avec des données volumiques 3D, comme des examens IRM ou CT. Ces fichiers sont extrêmement denses et nécessitent beaucoup de mémoire. Pour effectuer des tâches comme l’analyse d’images médicales ou la segmentation d’images complexe sans faire planter le système, les ingénieurs réduisent souvent la taille des lots à un nombre très faible, parfois même à un lot de 1. Ici, la priorité est le traitement des détails en haute résolution plutôt que la vitesse d’entraînement brute.
-
Contrôle qualité industriel : À l’inverse, dans le domaine de l’IA dans la fabrication, la vitesse est primordiale. Les systèmes automatisés qui inspectent les produits sur un tapis roulant doivent traiter des milliers d’images par heure. Lors de l’inférence, les ingénieurs peuvent regrouper les flux vidéo entrants des caméras en lots plus importants afin de maximiser l’utilisation des appareils d’IA en périphérie et garantir un débit élevé pour la détection des défauts en temps réel.
Configurer la taille des lots dans Python#
Lorsque tu utilises le package Python Ultralytics, définir la taille des lots est simple. Tu peux spécifier un entier fixe ou utiliser le paramètre dynamique batch=-1, qui exploite la fonctionnalité AutoBatch pour calculer automatiquement la taille maximale de lot que ton matériel peut gérer en toute sécurité.
L’exemple suivant montre comment entraîner un modèle YOLO26 — la référence la plus récente en matière de vitesse et de précision — à l’aide d’un paramètre de lot spécifique.
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train on the COCO8 dataset
# batch=16 is manually set.
# Alternatively, use batch=-1 for auto-tuning based on available GPU memory.
results = model.train(data="coco8.yaml", epochs=5, batch=16)Pour gérer des expériences à grande échelle et visualiser l’impact de différentes tailles de lots sur tes métriques d’entraînement, des outils comme la plateforme Ultralytics fournissent un environnement complet pour journaliser et comparer les exécutions. Un réglage des hyperparamètres approprié de la taille des lots constitue souvent la dernière étape pour tirer les meilleures performances de ton modèle.









