Taille de lot
Découvrez l'impact de la taille de lot sur l'apprentissage profond. Optimisez efficacement la vitesse d'entraînement, l'utilisation de la mémoire et la performance du modèle.
La taille de lot est un hyperparamètre fondamental en apprentissage automatique qui définit le nombre d'échantillons d'entraînement traités avant que les paramètres internes du modèle ne soient mis à jour. Au lieu de traiter l'ensemble des données d'entraînement en une seule fois, ce qui peut être excessivement coûteux en termes de calcul, les données sont divisées en sous-ensembles plus petits ou "lots". Le choix de la taille du lot est une décision critique qui a un impact direct sur la dynamique d'apprentissage du modèle, la vitesse d'entraînement et les performances finales. Elle représente un compromis entre l'efficacité du calcul et la précision de l'estimation du gradient utilisé pour mettre à jour les poids du modèle.
Le rôle de la taille du lot dans l'entraînement des modèles
Pendant l'entraînement, un réseau neuronal (NN) apprend en ajustant ses poids en fonction de l'erreur qu'il commet. Cet ajustement est guidé par un algorithme d'optimisation comme la descente de gradient. La taille du lot détermine le nombre d'exemples que le modèle "voit" avant de calculer le gradient et d'effectuer une mise à jour des poids.
- Descente de gradient stochastique (SGD) : Lorsque la taille du lot est de 1, le processus est appelé descente de gradient stochastique. Le gradient est calculé pour chaque échantillon individuel, ce qui entraîne des mises à jour fréquentes mais bruitées.
 - Descente de gradient par lot : Lorsque la taille du lot est égale au nombre total d'échantillons dans l'ensemble de données d'entraînement, on parle de descente de gradient par lot. Cela fournit une estimation très précise du gradient, mais est coûteux en termes de calcul et de mémoire.
 - Descente de gradient par mini-lots : Il s'agit de l'approche la plus courante, où la taille du lot est définie sur une valeur comprise entre 1 et la taille totale de l'ensemble de données (par exemple, 32, 64, 128). Elle offre un équilibre entre la stabilité de la descente de gradient par lots et l'efficacité de la descente de gradient stochastique.
 
La sélection de la taille du lot influence considérablement le processus d'entraînement. Une taille de lot plus grande fournit une estimation plus précise du gradient, mais le coût de calcul pour chaque mise à jour est plus élevé. Inversement, une taille de lot plus petite conduit à des estimations de gradient moins précises, mais permet des mises à jour plus rapides.
Choisir la bonne taille de lot (Batch Size)
La détermination de la taille de lot optimale est un élément essentiel du réglage des hyperparamètres et dépend de l'ensemble de données, de l'architecture du modèle et du matériel disponible.
- Grandes tailles de lots : Le traitement de plus de données à la fois peut exploiter pleinement les capacités de traitement parallèle des GPU, ce qui permet de réduire les temps d'entraînement par époque. Cependant, la recherche a montré que de très grands lots peuvent parfois entraîner un "écart de généralisation", où le modèle fonctionne bien sur les données d'entraînement, mais mal sur les données non vues. Ils nécessitent également une mémoire importante, ce qui peut être un facteur limitant.
 - Petites tailles de lots : Elles nécessitent moins de mémoire et conduisent souvent à une meilleure généralisation du modèle, car le bruit dans les mises à jour du gradient peut aider le modèle à échapper aux minima locaux et à trouver une solution plus robuste. Cela peut aider à prévenir le surapprentissage. L'inconvénient principal est que l'entraînement est plus lent, car les mises à jour des poids sont plus fréquentes et moins de données sont traitées en parallèle.
 
Pour de nombreuses applications, les tailles de lot qui sont des puissances de deux (comme 32, 64, 128, 256) sont recommandées car elles s'alignent souvent bien avec les architectures de mémoire GPU. Des outils comme Ultralytics HUB permettent d'expérimenter facilement avec différentes tailles de lot lors de l'entraînement des modèles.
Taille de lot en entraînement vs. inférence
Bien que la taille de lot soit un concept central de l'entraînement, elle s'applique également à l'inférence, mais dans un but différent. Pendant l'inférence, le traitement par lots est utilisé pour traiter simultanément plusieurs entrées (par exemple, des images ou des phrases) afin de maximiser le débit. Ceci est souvent appelé inférence par lots.
Pour les applications nécessitant des résultats immédiats, telles que l'inférence en temps réel dans un véhicule autonome, une taille de lot de 1 est utilisée pour minimiser la latence d'inférence. Dans les scénarios hors ligne, comme le traitement d'une grande collection d'images pendant la nuit, une taille de lot plus importante peut être utilisée pour améliorer l'efficacité.
Applications concrètes
- Analyse d'images médicales : Lors de l'entraînement d'un modèle YOLO11 pour la détection de tumeurs dans les images médicales, les images sont souvent en haute résolution. En raison des contraintes de mémoire sur un GPU, une petite taille de lot (par exemple, 4 ou 8) est généralement utilisée. Cela permet d'entraîner le modèle sur des données très détaillées sans dépasser la mémoire disponible, ce qui garantit un entraînement stable.
 - Contrôle qualité dans l'industrie manufacturière : Dans un contexte d'IA dans l'industrie manufacturière, un modèle peut être entraîné pour détecter les défauts sur une chaîne de montage. Avec un vaste ensemble de données de millions d'images de produits, une taille de lot plus importante (par exemple, 256 ou 512) peut être utilisée sur un puissant cluster d'entraînement distribué. Cela accélère le processus d'entraînement, permettant une itération et un déploiement plus rapides du modèle.
 
Taille de lot vs. termes associés
Il est important de distinguer la taille du lot des autres concepts connexes :
- Taille de lot vs. Époque et itération : Une itération est une mise à jour des poids du modèle. Une époque est un passage complet sur l'ensemble des données d'entraînement. Le nombre d'itérations dans une époque est le nombre total d'échantillons d'entraînement divisé par la taille du lot.
 - Taille de lot vs. Normalisation par lot : La Normalisation par lot (BatchNorm) est une technique utilisée dans une couche de réseau neuronal pour standardiser les entrées de chaque mini-lot. Bien que son efficacité puisse être influencée par la taille du lot (elle fonctionne mieux avec des lots plus importants), il s'agit d'une couche distincte dans l'architecture du modèle, et non d'un paramètre de boucle d'entraînement. La plupart des frameworks de deep learning modernes comme PyTorch et TensorFlow fournissent des implémentations robustes.