Journalisation avancée en quelques lignes

Si vous préférez passer directement à du code prêt à l’emploi, consultez ce Google Colab.
Premiers pas : suivre les expériences
Inscrivez-vous et créez une clé API
Pour une méthode plus directe, accédez aux Paramètres utilisateur et créez une clé API. Copiez immédiatement la clé API et conservez-la dans un endroit sûr, par exemple dans un gestionnaire de mots de passe.
- Cliquez sur l’icône de votre profil dans le coin supérieur droit.
- Sélectionnez Paramètres utilisateur, puis faites défiler jusqu’à la section Clés API.
Installez la bibliothèque wandb et connectez-vous
wandb localement et vous connecter :
- Ligne de commande
- Python
- Python notebook
-
Définissez la variable d’environnement
WANDB_API_KEYsur votre clé API. -
Installez la bibliothèque
wandbet connectez-vous.
Nommez le projet
WANDB_PROJECT sur le nom de votre projet. Le WandbCallback récupérera cette variable d’environnement et l’utilisera lors de la configuration de votre run.
- Ligne de commande
- Python
- Python notebook
Assurez-vous de définir le nom du projet avant d’initialiser le
Trainer.huggingface par défaut.
Enregistrez vos runs d’entraînement dans W&B
Trainer, dans votre code ou en ligne de commande, l’étape la plus importante consiste à définir report_to sur "wandb" afin d’activer la journalisation avec W&B.
L’argument logging_steps dans TrainingArguments contrôle la fréquence à laquelle les métriques d’entraînement sont envoyées à W&B pendant l’entraînement. Vous pouvez aussi donner un nom au run d’entraînement dans W&B à l’aide de l’argument run_name.
C’est tout. Désormais, vos modèles journaliseront les pertes, les métriques d’évaluation, l’architecture du modèle et les gradients dans W&B pendant leur entraînement.
- Ligne de commande
- Python
Vous utilisez TensorFlow ? Remplacez simplement le
Trainer de PyTorch par le TFTrainer de TensorFlow.Activez l’enregistrement des points de contrôle du modèle
WANDB_LOG_MODEL sur l’une des valeurs suivantes :
checkpoint: Téléverse un point de contrôle tous lesargs.save_stepsà partir deTrainingArguments.end: Téléverse le modèle à la fin de l’entraînement, siload_best_model_at_endest également défini.false: Ne téléverse pas le modèle.
- Ligne de commande
- Python
- Python notebook
Trainer Transformers que vous initialisez à partir de maintenant téléverseront des modèles dans votre projet W&B. Les points de contrôle du modèle que vous journalisez seront visibles dans l’interface Artifacts et incluront la traçabilité complète du modèle (voir un exemple de point de contrôle du modèle dans l’interface ici).
Par défaut, votre modèle sera enregistré dans W&B Artifacts sous la forme
model-{run_id} lorsque WANDB_LOG_MODEL est défini sur end, ou checkpoint-{run_id} lorsque WANDB_LOG_MODEL est défini sur checkpoint.
Cependant, si vous transmettez un run_name dans vos TrainingArguments, le modèle sera enregistré sous la forme model-{run_name} ou checkpoint-{run_name}.W&B registre
Visualiser les sorties d’évaluation pendant l’entraînement

Terminez votre run W&B (Notebook uniquement)
run.finish().
Visualisez vos résultats
Fonctionnalités avancées et FAQ
Comment puis-je enregistrer le meilleur modèle ?
TrainingArguments avec load_best_model_at_end=True à votre Trainer, W&B enregistre le point de contrôle du modèle le plus performant dans Artifacts.
Si vous enregistrez les points de contrôle de votre modèle dans Artifacts, vous pouvez les promouvoir vers le registre. Dans le registre, vous pouvez :
- Organiser les versions de votre meilleur modèle par tâche de ML.
- Centraliser les modèles et les partager avec votre équipe.
- Préparer les modèles pour la production ou les marquer pour une évaluation plus approfondie.
- Déclencher des processus CI/CD en aval.
Comment puis-je charger un modèle enregistré ?
WANDB_LOG_MODEL, vous pouvez télécharger les poids de votre modèle pour poursuivre l’entraînement ou effectuer de l’inférence. Il vous suffit ensuite de les recharger dans la même architecture Hugging Face que celle utilisée précédemment.
Comment puis-je reprendre l’entraînement à partir d’un point de contrôle ?
WANDB_LOG_MODEL='checkpoint', vous pouvez également reprendre l’entraînement en utilisant model_dir comme valeur de l’argument model_name_or_path dans vos TrainingArguments, puis en passant resume_from_checkpoint=True à Trainer.
Comment puis-je journaliser et afficher des échantillons d’évaluation pendant l’entraînement
Trainer de Transformers est assurée par le WandbCallback de la bibliothèque Transformers. Si vous devez personnaliser votre journalisation Hugging Face, vous pouvez modifier ce callback en créant une sous-classe de WandbCallback et en ajoutant des fonctionnalités supplémentaires qui s’appuient sur d’autres méthodes de la classe Trainer.
Vous trouverez ci-dessous le schéma général pour ajouter ce nouveau callback au Trainer HF, puis plus bas un exemple de code complet pour journaliser les sorties d’évaluation dans un tableau W&B :
Afficher des échantillons d’évaluation pendant l’entraînement
WandbCallback pour exécuter les prédictions du modèle et journaliser des échantillons d’évaluation dans un tableau W&B pendant l’entraînement. Nous le faisons tous les eval_steps en utilisant la méthode on_evaluate du callback du Trainer.
Ici, nous avons écrit une fonction decode_predictions pour décoder les prédictions et les labels à partir de la sortie du modèle à l’aide du tokenizer.
Ensuite, nous créons un dataframe pandas à partir des prédictions et des labels, puis nous ajoutons une colonne epoch au dataframe.
Enfin, nous créons un wandb.Table à partir du dataframe et le journalisons dans wandb.
De plus, nous pouvons contrôler la fréquence de la journalisation en journalisant les prédictions toutes les freq époques.
Remarque : contrairement au WandbCallback standard, ce callback personnalisé doit être ajouté au trainer après l’instanciation du Trainer, et non pendant l’initialisation du Trainer.
Cela s’explique par le fait que l’instance Trainer est transmise au callback lors de l’initialisation.
Quels paramètres W&B supplémentaires sont disponibles ?
Trainer en définissant des variables d’environnement. Une liste complète des variables d’environnement W&B est disponible ici.
| Variable d’environnement | Utilisation |
|---|---|
WANDB_PROJECT | Donnez un nom à votre projet (huggingface par défaut) |
WANDB_LOG_MODEL | Enregistre le point de contrôle du modèle en tant qu’Artifact W&B (
|
WANDB_WATCH | Définit si vous souhaitez enregistrer, pour vos modèles, les gradients, les paramètres ou aucun des deux
|
WANDB_DISABLED | Définissez true pour désactiver complètement la journalisation (false par défaut) |
WANDB_QUIET. | Définissez true pour limiter la sortie standard aux seuls messages critiques (false par défaut) |
WANDB_SILENT | Définissez true pour supprimer la sortie affichée par wandb (false par défaut) |
- Ligne de commande
- Notebook
Comment puis-je personnaliser wandb.init()?
WandbCallback utilisé par Trainer appelle wandb.init() en interne lors de l’initialisation de Trainer. Vous pouvez aussi configurer vos runs manuellement en appelant wandb.init() avant l’initialisation de Trainer. Cela vous donne un contrôle total sur la configuration de votre run W&B.
Voici un exemple de ce que vous pouvez passer à init. Pour plus de détails sur wandb.init(), voir la référence \wandb.init()“.