Callback
Découvre comment les fonctions de rappel optimisent l'entraînement d'Ultralytics YOLO26. Apprends à mettre en œuvre l'arrêt anticipé, la sauvegarde de points de contrôle et la journalisation personnalisée pour améliorer tes workflows d'IA.
Dans le domaine de l’ingénierie logicielle et de l’intelligence artificielle (AI), un callback est un fragment de code exécutable transmis comme argument à un autre code, qui est ensuite censé exécuter (rappeler) cet argument à un moment donné. Dans le contexte spécifique des frameworks d’apprentissage profond (DL), les callbacks sont des outils essentiels qui permettent aux développeurs de personnaliser le comportement de la boucle d’entraînement du modèle sans modifier le code d’entraînement principal. Ils agissent comme des déclencheurs automatisés qui exécutent des actions spécifiques à différentes étapes du processus d’entraînement, par exemple au début ou à la fin d’une époque, d’un lot d’entraînement ou de toute la session d’entraînement.
Le rôle des callbacks en apprentissage automatique#
L’entraînement d’un réseau de neurones complexe peut prendre des heures, voire des jours. Sans callbacks, le processus d’entraînement est essentiellement une « boîte noire » qui s’exécute jusqu’à son terme et nécessite souvent une supervision manuelle. Les callbacks apportent de l’observabilité et du contrôle, ce qui permet au système de s’autoréguler en fonction de métriques de performance en temps réel.
Lorsqu’on utilise des bibliothèques de haut niveau comme PyTorch ou TensorFlow, les callbacks permettent d’injecter de la logique dans l’algorithme d’optimisation. Par exemple, si un modèle apprend correctement, un callback peut enregistrer son état actuel ; s’il cesse d’apprendre, un callback peut interrompre le processus pour économiser des ressources. Le workflow d’apprentissage automatique (ML) gagne ainsi en efficacité et en robustesse.
Applications courantes et exemples concrets#
Les callbacks sont polyvalents et peuvent être utilisés pour un large éventail de tâches lors de la surveillance du modèle et de l’optimisation.
- Arrêt anticipé : l’une des utilisations les plus courantes est l’arrêt anticipé. Ce callback surveille une métrique donnée, telle que la perte sur les données de validation. Si la perte cesse de diminuer pendant un nombre défini d’époques, le callback interrompt l’entraînement. Cela évite le surapprentissage et garantit que le modèle se généralise correctement à de nouvelles données au lieu de mémoriser les données d’entraînement.
- Création de points de contrôle du modèle : lors de longues sessions d’entraînement, les défaillances matérielles peuvent être catastrophiques. Un callback de création de points de contrôle enregistre les poids du modèle à intervalles réguliers (par exemple, à chaque époque) ou uniquement lorsque le modèle obtient un nouveau meilleur score pour des métriques telles que l’exactitude ou la précision moyenne (mAP). Tu disposes ainsi toujours d’une version enregistrée du modèle le plus performant.
- Planification du taux d’apprentissage : le taux d’apprentissage contrôle l’ampleur des changements apportés au modèle en réponse à l’erreur estimée chaque fois que les poids du modèle sont mis à jour. Un callback peut ajuster dynamiquement ce taux et le réduire lorsque l’apprentissage atteint un plateau, afin d’aider le modèle à converger vers une solution optimale, une technique souvent appelée décroissance du taux d’apprentissage.
- Journalisation et visualisation : les callbacks sont fréquemment utilisés pour s’intégrer à des outils de suivi des expériences. Ils transmettent les métriques à des tableaux de bord comme TensorBoard ou MLflow, ce qui permet aux data scientists de visualiser les fonctions de perte et les graphiques de performance en temps réel.
Implémenter des callbacks avec Ultralytics YOLO#
La bibliothèque Ultralytics prend en charge un système de callbacks robuste, permettant aux utilisateurs de se connecter aux événements qui surviennent pendant l’entraînement de modèles comme YOLO26. Cela est particulièrement utile pour les utilisateurs qui gèrent des workflows sur l’Ultralytics Platform et qui ont besoin d’une journalisation personnalisée ou d’une logique de contrôle spécifique.
Voici un exemple concis montrant comment définir et enregistrer un callback personnalisé qui affiche un message à la fin de chaque époque d’entraînement à l’aide de l’API Python :
from ultralytics import YOLO
# Define a custom callback function
def on_train_epoch_end(trainer):
"""Callback function to execute at the end of each training epoch."""
print(f"Epoch {trainer.epoch + 1} complete. Current Fitness: {trainer.fitness}")
# Load the YOLO26 model (latest generation)
model = YOLO("yolo26n.pt")
# Register the custom callback to the model
model.add_callback("on_train_epoch_end", on_train_epoch_end)
# Train the model with the callback active
model.train(data="coco8.yaml", epochs=3)Callbacks et hooks#
Bien qu’ils soient apparentés, il est utile de distinguer les callbacks des hooks. Dans des frameworks comme PyTorch, les hooks sont généralement des fonctions de niveau inférieur attachées à des opérations spécifiques sur des tenseurs ou à des couches de réseaux de neurones afin d’inspecter ou de modifier les gradients et les sorties pendant la propagation avant ou arrière. En revanche, les callbacks sont généralement des abstractions de niveau supérieur liées aux événements de la boucle d’entraînement (début, fin, traitement des lots), plutôt qu’au graphe de calcul mathématique lui-même.
Lectures et ressources complémentaires#
Pour approfondir ta compréhension de l’optimisation des workflows d’entraînement, explorer l’ajustement des hyperparamètres constitue une étape logique. De plus, comprendre les tâches sous-jacentes de vision par ordinateur (CV), telles que la détection d’objets et la segmentation d’instances, permettra de comprendre pourquoi un contrôle précis de l’entraînement au moyen de callbacks est nécessaire. Pour la gestion de ces processus à l’échelle de l’entreprise, l’Ultralytics Platform propose des solutions intégrées qui automatisent bon nombre de ces comportements pilotés par des callbacks.









