Batch Size
Apprends comment la taille du lot (batch size) impacte la vitesse et la précision de l'entraînement en apprentissage automatique. Explore les contraintes matérielles et optimise Ultralytics YOLO26 en utilisant AutoBatch.
Dans le domaine du machine learning et en particulier du deep learning, la Batch Size désigne le nombre d'exemples d'entraînement utilisés lors d'une itération de l'entraînement du modèle. Plutôt que d'injecter l'ensemble des données d'entraînement dans le réseau de neurones en une seule fois — ce qui est souvent impossible en raison de contraintes de mémoire —, le jeu de données est divisé en sous-ensembles plus petits appelés lots (ou batches). Le modèle traite un lot, calcule l'erreur et met à jour les poids du modèle internes via la rétropropagation avant de passer au lot suivant. Cet hyperparamètre joue un rôle primordial dans la détermination de la vitesse d'entraînement et de la stabilité du processus d'apprentissage.
La dynamique de l'entraînement par lots#
Le choix de la batch size modifie fondamentalement la manière dont l'algorithme d'optimisation, généralement une variante de la descente de gradient stochastique, navigue dans le paysage des pertes.
- Petites tailles de lots : L'utilisation d'un petit nombre (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 à s'échapper des minima locaux, conduisant potentiellement à une meilleure généralisation. Cependant, des lots plus petits nécessitent plus de mises à jour par époque, ce qui peut ralentir l'entraînement en termes de temps réel en raison des frais généraux.
- Grandes valeurs de batch size : Un lot plus grand (par exemple, 128 ou 256) fournit une estimation plus précise du gradient, ce qui conduit à une convergence plus fluide de la fonction de perte. Il permet une parallélisation massive sur le matériel moderne, accélérant considérablement le calcul. Cependant, si le lot est trop grand, le modèle risque de se stabiliser dans des minima aigus et sous-optimaux, ce qui entraîne un surapprentissage et une capacité réduite à généraliser à de nouvelles données.
Implications matérielles et mémoire#
Les praticiens doivent souvent sélectionner une batch size en fonction des limitations matérielles plutôt que par simple préférence théorique. Les modèles de deep learning, en particulier les architectures de grande taille comme les transformers ou les réseaux de neurones convolutionnels avancés, sont stockés dans la VRAM d'un GPU.
Lors de l'utilisation de 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 batch size dépasse la mémoire disponible, l'entraînement plantera avec une erreur « Out of Memory » (OOM). Des techniques telles que l'entraînement en précision mixte sont souvent employées pour réduire l'utilisation de la mémoire, permettant d'utiliser des batch sizes plus importantes sur le même matériel.
Distinguer les concepts apparentés#
Pour configurer l'entraînement efficacement, il est essentiel de distinguer la taille de lot des autres termes temporels dans la boucle d'entraînement.
- Batch Size vs. Epoch : Une époque (epoch) représente un passage complet à travers l'ensemble du jeu de données d'entraînement. La batch size détermine en combien de morceaux les données sont divisées au sein de cette époque. Par exemple, si tu as 1 000 images et une batch size de 100, il faudra 10 itérations pour compléter une époque.
- Batch Size vs. Iteration : Une itération (ou étape) correspond au traitement d'un lot et à la mise à jour des poids. Le nombre total d'itérations lors de l'entraînement est égal au nombre de lots par époque multiplié par le nombre total d'époques.
- Batch Size vs. Batch Normalization : Bien qu'ils partagent un nom, la normalisation par lots (Batch Normalization) est un type de couche spécifique qui normalise les entrées des couches en fonction de la moyenne et de la variance du lot actuel. Cette technique dépend fortement de la batch size ; si la batch size est trop petite (par exemple, 2), les estimations statistiques deviennent peu fiables, ce qui peut dégrader les performances.
Applications concrètes#
Ajuster la taille de lot est une nécessité courante lors du déploiement de solutions de vision par ordinateur à travers diverses industries.
-
Imagerie médicale haute fidélité : Dans le domaine de l'IA en santé, les praticiens travaillent souvent avec des données volumétriques 3D telles que des scanners IRM ou CT. Ces fichiers sont extrêmement denses et gourmands en mémoire. Pour effectuer des tâches telles que l'analyse d'images médicales ou la segmentation d'images complexes sans faire planter le système, les ingénieurs réduisent souvent la batch size à un nombre très faible, parfois même à 1. Ici, la priorité est de traiter les détails haute résolution plutôt que la vitesse brute d'entraînement.
-
Contrôle qualité industriel : Inversement, dans l'IA pour la fabrication, la vitesse est primordiale. Les systèmes automatisés inspectant des produits sur un tapis roulant doivent traiter des milliers d'images par heure. Lors de l'inférence, les ingénieurs peuvent agréger les flux de caméras entrants en lots plus importants pour maximiser l'utilisation des appareils Edge AI, garantissant ainsi un haut débit pour la détection de défauts en temps réel.
Configurer la taille de lot en Python#
Lors de l'utilisation du paquet Python Ultralytics, la définition de la batch size est simple. Tu peux spécifier un entier fixe ou utiliser le paramètre dynamique batch=-1, qui utilise la fonction AutoBatch feature pour calculer automatiquement la batch size maximale que ton matériel peut gérer en toute sécurité.
L'exemple suivant montre comment entraîner un modèle YOLO26 — le nouveau standard en matière de vitesse et de précision — en utilisant 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 batch sizes sur tes métriques d'entraînement, des outils tels que la Plateforme Ultralytics fournissent un environnement complet pour enregistrer et comparer les exécutions. Un bon réglage des hyperparamètres de la batch size est souvent la dernière étape pour tirer le meilleur parti de ton modèle.






