Le mode
INCREMENTAL est pris en charge à partir de la version v0.70.0 du serveur W&B.Créer et journaliser un tableau
- Initialisez un nouveau run avec
wandb.init(). - Créez un objet Table avec la classe
wandb.Table. Indiquez les colonnes et les données du tableau dans les paramètrescolumnsetdata, respectivement. Il est recommandé de définir le paramètre facultatiflog_modesur l’un des trois modes suivants :IMMUTABLE(par défaut),MUTABLEouINCREMENTAL. Pour plus d’informations, consultez la section suivante, Modes de journalisation des tableaux. - Journalisez le tableau dans W&B avec
run.log().
a et b, et deux lignes de données, ["a1", "b1"] et ["a2", "b2"] :
Modes de journalisation
Le paramètrelog_mode de wandb.Table détermine la manière dont un tableau est journalisé et mis à jour au cours de vos expériences de ML. Le paramètre log_mode accepte l’une des trois valeurs suivantes : IMMUTABLE, MUTABLE et INCREMENTAL. Chaque mode a des implications différentes sur la façon dont un tableau est journalisé, sur la manière dont il peut être modifié et sur son rendu dans la W&B App.
Le tableau suivant décrit les trois modes de journalisation, leurs principales différences et les cas d’usage courants de chacun :
Les sections suivantes présentent des exemples d’extraits de code pour chaque mode, ainsi que les considérations à prendre en compte pour choisir le mode adapté.
Mode MUTABLE
Le modeMUTABLE met à jour un tableau existant en le remplaçant par un nouveau. Il est utile lorsque vous souhaitez ajouter de nouvelles colonnes et de nouvelles lignes à un tableau existant dans le cadre d’un processus non itératif. Dans l’interface utilisateur, le rendu du tableau affiche toutes les lignes et colonnes, y compris celles ajoutées après la journalisation initiale.
En mode
MUTABLE, l’objet tableau est remplacé chaque fois que vous journalisez le tableau. L’écrasement d’un tableau par un nouveau est coûteux en ressources de calcul et peut être lent pour les tableaux volumineux.MUTABLE, le journaliser, puis y ajouter de nouvelles colonnes. L’objet tableau est journalisé trois fois : une première fois avec les données initiales, une deuxième fois avec les scores de confiance et une dernière fois avec les prédictions finales.
L’exemple suivant utilise une fonction fictive
load_eval_data() pour charger les données et une fonction fictive model.predict() pour effectuer des prédictions. Remplacez-les par vos propres fonctions de chargement de données et de prédiction.INCREMENTAL.
Mode INCREMENTAL
En mode incrémentiel, vous journalisez des lots de lignes dans un tableau au cours de l’expérience de machine learning. Ce mode est idéal pour surveiller des jobs de longue durée ou pour travailler avec de grands tableaux qu’il serait inefficace de journaliser à chaque mise à jour pendant le run. Dans l’interface utilisateur, le tableau s’enrichit des nouvelles lignes au fur et à mesure de leur journalisation, ce qui vous permet de consulter les données les plus récentes sans attendre la fin du run. Vous pouvez également parcourir les incréments pour afficher le tableau à différents moments.
Les workspaces de run de la W&B App sont limités à 100 incréments. Si vous journalisez plus de 100 incréments, seuls les 100 plus récents sont affichés dans le workspace du run.
INCREMENTAL, le journalise, puis y ajoute de nouvelles lignes. Notez que le tableau est journalisé une fois par étape d’entraînement (step).
L’exemple suivant utilise des fonctions fictives :
get_training_batch() pour charger les données, train_model_on_batch() pour entraîner le modèle et predict_on_batch() pour générer des prédictions. Remplacez-les par vos propres fonctions de chargement de données, d’entraînement et de prédiction.log_mode=MUTABLE). Toutefois, la W&B App risque de ne pas afficher toutes les lignes du tableau si vous journalisez un grand nombre d’incréments. Si vous souhaitez mettre à jour et consulter les données de votre tableau pendant l’exécution de votre run, tout en disposant de l’ensemble des données pour l’analyse, utilisez plutôt deux tableaux : l’un avec le mode de journalisation INCREMENTAL et l’autre avec le mode de journalisation IMMUTABLE.
L’exemple suivant montre comment combiner les modes de journalisation INCREMENTAL et IMMUTABLE pour y parvenir.
incr_table est journalisé de manière incrémentielle (avec log_mode="INCREMENTAL") pendant l’entraînement. Vous pouvez ainsi journaliser et visualiser les mises à jour du tableau au fur et à mesure du traitement des nouvelles données. À la fin de l’entraînement, un tableau immuable (final_table) est créé à partir de toutes les données du tableau incrémentiel. Ce tableau immuable est journalisé afin de conserver le dataset complet pour des analyses ultérieures et vous permet de visualiser toutes les lignes dans la W&B App.
Exemples
Enrichir les résultats d’évaluation avec MUTABLE
Reprendre des runs avec des tableaux INCREMENTAL
Vous pouvez continuer à journaliser dans un tableau incrémentiel lorsque vous reprenez un run :Les incréments sont journalisés dans un nouveau tableau si vous désactivez les synthèses pour une clé utilisée par le tableau incrémentiel, avec
wandb.Run.define_metric("<table_key>", summary="none") ou wandb.Run.define_metric("*", summary="none").