Skip to main content
Utilisez les callbacks Keras de W&B pour suivre les expériences, journaliser les points de contrôle de vos modèles et visualiser les prédictions du modèle pendant l’entraînement. Grâce à cette intégration, vous pouvez ajouter le suivi des expériences et la gestion des versions des modèles à vos flux de travail d’entraînement Keras sans réécrire votre boucle d’entraînement. Les callbacks Keras sont disponibles dans le module wandb.integration.keras à partir de la version 0.13.4 du SDK Python. L’intégration Keras de W&B fournit les callbacks suivants :
  • WandbMetricsLogger : utilisez ce callback pour le suivi des expériences. Il journalise dans W&B vos métriques d’entraînement et de validation, ainsi que les métriques système.
  • WandbModelCheckpoint : utilisez ce callback pour journaliser les points de contrôle de votre modèle dans W&B Artifacts.
  • WandbEvalCallback : ce callback de base journalise les prédictions du modèle dans W&B Tables afin de les visualiser de manière interactive.

Installer et importer l’intégration Keras

Installez la dernière version de W&B.
Pour utiliser l’intégration Keras, importez les classes requises depuis wandb.integration.keras.
Les sections suivantes décrivent en détail chaque callback, avec des exemples de code.

Suivre les expériences avec WandbMetricsLogger

wandb.integration.keras.WandbMetricsLogger() journalise le dictionnaire logs de Keras, que les méthodes de callback telles que on_epoch_end et on_batch_end reçoivent en argument. L’exemple partiel suivant montre comment utiliser WandbMetricsLogger() dans un flux de travail Keras. Commencez par compiler le modèle avec l’optimiseur, la fonction de perte et les métriques de votre choix. Initialisez ensuite un run W&B à l’aide de wandb.init(). Enfin, passez le callback WandbMetricsLogger() à model.fit().
L’exemple précédent journalise dans W&B les métriques d’entraînement et de validation, telles que loss, accuracy et top@5_accuracy, à la fin de chaque époque.

Référence de WandbMetricsLogger

Créer des points de contrôle d’un modèle avec WandbModelCheckpoint

Utilisez le callback WandbModelCheckpoint pour enregistrer périodiquement le modèle Keras (format SavedModel) ou les poids du modèle, et les téléverser dans W&B en tant que wandb.Artifact afin d’assurer la gestion des versions des modèles. Ce callback hérite de tf.keras.callbacks.ModelCheckpoint() ; c’est donc le callback parent qui gère la logique de création des points de contrôle. Ce callback enregistre :
  • Le modèle ayant obtenu les meilleures performances selon la valeur surveillée (monitor).
  • Le modèle à la fin de chaque époque, quelles que soient les performances.
  • Le modèle à la fin de l’époque ou après un nombre fixe de lots d’entraînement.
  • Uniquement les poids du modèle, ou le modèle complet.
  • Le modèle au format SavedModel ou au format .h5.
Utilisez ce callback conjointement avec WandbMetricsLogger().

Référence de WandbModelCheckpoint

Journaliser des points de contrôle toutes les N époques

Par défaut (save_freq="epoch"), le callback crée un point de contrôle et le téléverse en tant qu’artifact à la fin de chaque époque. Pour créer un point de contrôle après un nombre donné de lots, définissez save_freq sur un entier. Pour créer un point de contrôle toutes les N époques, calculez la cardinalité du dataloader train et passez-la à save_freq :

Journaliser efficacement des points de contrôle sur une architecture TPU

Lors de la création de points de contrôle sur des TPU, vous pouvez rencontrer le message d’erreur UnimplementedError: File system scheme '[local]' not implemented. Cette erreur se produit parce que le répertoire du modèle (filepath) doit utiliser le chemin d’un bucket de stockage cloud (gs://bucket-name/...), et ce bucket doit être accessible depuis le serveur TPU. Pour contourner ce problème, W&B utilise le chemin local pour créer les points de contrôle, puis les téléverse en tant qu’artifact.

Visualiser les prédictions du modèle avec WandbEvalCallback

WandbEvalCallback() est une classe de base abstraite qui permet de créer des callbacks Keras, principalement pour visualiser les prédictions du modèle et, accessoirement, les datasets. Ce callback abstrait ne dépend ni du dataset ni de la tâche. Pour l’utiliser, héritez de la classe de callback de base WandbEvalCallback() et implémentez les méthodes add_ground_truth et add_model_prediction. WandbEvalCallback() est une classe utilitaire qui fournit des méthodes pour :
  • Créer des instances wandb.Table() pour les données et les prédictions.
  • Journaliser les Tables de données et de prédictions en tant que wandb.Artifact().
  • Journaliser le tableau de données lors de on_train_begin.
  • Journaliser le tableau de prédictions lors de on_epoch_end.
L’exemple suivant utilise WandbClfEvalCallback pour une tâche de classification d’images. Ce callback d’exemple journalise les données de validation (data_table) dans W&B, effectue l’inférence, puis journalise les prédictions (pred_table) dans W&B à la fin de chaque époque.

Référence de WandbEvalCallback

Détails de l’empreinte mémoire

W&B journalise le data_table lors de l’appel de la méthode on_train_begin. Une fois que W&B l’a téléversé en tant qu’artifact W&B, vous obtenez une référence à ce tableau, accessible via la variable de classe data_table_ref. data_table_ref est une liste 2D que vous pouvez indexer sous la forme self.data_table_ref[idx][n], où idx est le numéro de ligne et n le numéro de colonne. Voir l’exemple d’utilisation ci-dessous.

Personnaliser le callback

Pour mieux contrôler le moment où les données et les prédictions sont journalisées, vous pouvez redéfinir les méthodes par défaut du callback. Redéfinissez les méthodes on_train_begin ou on_epoch_end pour un contrôle plus fin. Pour journaliser les échantillons tous les N lots, implémentez la méthode on_train_batch_end.
Si vous implémentez un callback de visualisation des prédictions du modèle en héritant de WandbEvalCallback et que certains points méritent d’être clarifiés ou corrigés, ouvrez une issue.

WandbCallback (ancienne version)

WandbCallback est l’ancien callback tout-en-un. Pour les nouveaux projets, utilisez plutôt les callbacks dédiés décrits dans les sections précédentes (WandbMetricsLogger, WandbModelCheckpoint et WandbEvalCallback). Utilisez la classe WandbCallback() de la bibliothèque W&B pour enregistrer l’ensemble des métriques et des valeurs de perte suivies dans model.fit().
Vous pouvez regarder la courte vidéo Get Started with Keras and W&B in Less Than a Minute. Pour une vidéo plus détaillée, regardez Integrate W&B with Keras. Vous pouvez également consulter le Jupyter Notebook Colab. Pour d’autres exemples de scripts, consultez le dépôt d’exemples W&B, notamment un exemple Fashion MNIST et le tableau de bord W&B qu’il génère. La classe WandbCallback prend en charge diverses options de configuration de la journalisation : choix d’une métrique à surveiller, suivi des poids et des gradients, journalisation des prédictions sur training_data et validation_data, etc. Pour plus de détails, consultez la documentation de référence de keras.WandbCallback. WandbCallback :
  • Journalise l’historique de toutes les métriques collectées par Keras : la perte et tout ce qui est passé à keras_model.compile().
  • Définit les métriques de synthèse du run à partir de la « meilleure » étape d’entraînement, telle que définie par les attributs monitor et mode. Par défaut, il s’agit de l’époque présentant la val_loss minimale. Par défaut, WandbCallback enregistre le modèle associé à la meilleure epoch.
  • Journalise, en option, les histogrammes des gradients et des paramètres.
  • Enregistre, en option, les données d’entraînement et de validation afin que wandb puisse les visualiser.

Référence de WandbCallback

Questions fréquentes

Utiliser le multiprocessing de Keras avec wandb

Lorsque vous définissez use_multiprocessing=True, l’erreur suivante peut se produire :
Pour contourner ce problème :
  1. Lors de la construction de la classe Sequence, ajoutez : wandb.init(group='...').
  2. Dans main, veillez à utiliser if __name__ == "__main__": et placez-y le reste de la logique de votre script.
Dernière modification le 30 septembre 2026