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 particulièrement du deep learning, la Taille de lot (Batch Size) fait référence au nombre d'exemples d'entraînement utilisés lors d'une itération de l'entraînement du modèle. Plutôt que de fournir l'intégralité des données d'entraînement au réseau de neurones 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 (batches). Le modèle traite un lot, calcule l'erreur et met à jour ses poids du modèle internes via la rétropropagation avant de passer au lot suivant. Cet hyperparamètre joue un rôle pivot dans la détermination à la fois de la vitesse d'entraînement et de la stabilité du processus d'apprentissage.
Link to this sectionLa dynamique de l'entraînement par lots#
Le choix de la taille de lot modifie fondamentalement la façon dont l'algorithme d'optimisation, généralement une variante de la descente de gradient stochastique, navigue dans le paysage de la fonction de perte.
- 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 tailles de lots : Un lot plus grand (par exemple 128 ou 256) fournit une estimation plus précise du gradient, menant à une convergence plus fluide de la fonction de perte. Cela permet une parallélisation massive sur du matériel moderne, accélérant considérablement les calculs. Cependant, si le lot est trop grand, le modèle pourrait se stabiliser dans des minima nets et sous-optimaux, conduisant à un surapprentissage et une capacité réduite à généraliser sur de nouvelles données.
Link to this sectionImplications matérielles et mémoire#
Les praticiens doivent souvent sélectionner une taille de lot 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 volumineuses comme les transformers ou les réseaux convolutifs 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 taille du lot dépasse la mémoire disponible, l'entraînement échouera avec une erreur "Out of Memory" (OOM). Des techniques comme l'entraînement en précision mixte sont souvent employées pour réduire l'utilisation de la mémoire, permettant des tailles de lots plus grandes sur le même matériel.
Link to this sectionDistinguer 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.
- Taille de lot vs Époque : Une époque représente un passage complet à travers l'intégralité du jeu de données d'entraînement. La taille de lot 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 taille de lot de 100, il faudra 10 itérations pour compléter une époque.
- Taille de lot vs Itération : Une itération (ou étape) est l'acte de traiter un lot et de mettre à jour les poids. Le nombre total d'itérations lors de l'entraînement est le nombre de lots par époque multiplié par le nombre total d'époques.
- Taille de lot vs Normalisation par lots : Bien qu'ils partagent un 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 repose fortement sur la taille de lot ; si la taille de lot est trop petite (par exemple 2), les estimations statistiques deviennent peu fiables, dégradant potentiellement les performances.
Link to this sectionApplications 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 dans la santé, les praticiens travaillent souvent avec des données volumétriques 3D telles que des IRM ou des scanners CT. Ces fichiers sont incroyablement denses et gourmands en mémoire. Pour effectuer des tâches comme l'analyse d'images médicales ou une segmentation d'image complexe sans faire planter le système, les ingénieurs réduisent souvent la taille du lot à un très petit nombre, parfois même un lot de 1. Ici, la priorité est le traitement des détails haute résolution plutôt que la vitesse d'entraînement brute.
-
Contrôle qualité industriel : À l'inverse, dans l'IA dans l'industrie manufacturière, la vitesse est primordiale. Les systèmes automatisés inspectant des produits sur une chaîne de montage doivent traiter des milliers d'images par heure. Durant l'inférence, les ingénieurs peuvent agréger les flux de caméra entrants en lots plus grands pour maximiser l'utilisation des appareils d'edge AI, assurant un débit élevé pour la détection de défauts en temps réel.
Link to this sectionConfigurer la taille de lot en Python#
Lors de l'utilisation du paquet Python Ultralytics, définir la taille de lot est simple. Tu peux spécifier un entier fixe ou utiliser le paramètre dynamique batch=-1, qui utilise la fonctionnalité AutoBatch pour calculer automatiquement la taille de lot maximale que ton matériel peut gérer en toute sécurité.
The following example demonstrates how to train a YOLO26 model—the latest standard for speed and accuracy—using a specific batch setting.
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 comment différentes tailles de lots affectent tes métriques d'entraînement, des outils comme la Plateforme Ultralytics fournissent un environnement complet pour consigner et comparer les exécutions. Un réglage des hyperparamètres approprié de la taille de lot est souvent l'étape finale pour tirer la meilleure performance de ton modèle.






