config d’un run pour enregistrer votre configuration d’entraînement :
- hyperparamètres
- paramètres d’entrée, comme le nom du dataset ou le type de modèle
- toute autre variable indépendante de vos expériences.
wandb.Run.config facilite l’analyse de vos expériences et la reproductibilité de vos travaux. Dans la W&B App, vous pouvez regrouper les données par valeurs de configuration, comparer les configurations de différents runs W&B et évaluer l’influence de chaque configuration d’entraînement sur la sortie. La propriété config est un objet de type dictionnaire qui peut être composé de plusieurs objets de type dictionnaire.
Pour journaliser des métriques de sortie ou des variables dépendantes comme la perte et la précision, utilisez
wandb.Run.log() plutôt que wandb.Run.config.Définir la configuration d’une expérience
Les configurations sont généralement définies au début d’un script d’entraînement. Les flux de travail de machine learning pouvant toutefois varier, vous n’êtes pas tenu de définir une configuration au début de votre script d’entraînement. Utilisez des tirets (-) ou des caractères de soulignement (_) plutôt que des points (.) dans les noms de vos variables de configuration.
Si votre script accède à des clés de wandb.Run.config situées sous la racine, utilisez la syntaxe d’accès par dictionnaire ["key"]["value"] plutôt que la syntaxe d’accès par attribut config.key.value.
Les sections suivantes présentent plusieurs scénarios courants de définition de la configuration de vos expériences.
Définir la configuration à l’initialisation
Transmettez un dictionnaire au début de votre script lorsque vous appelez l’APIwandb.init(), qui génère un processus en arrière-plan chargé de synchroniser et de journaliser les données sous forme de run W&B.
L’extrait de code suivant montre comment définir un dictionnaire Python contenant des valeurs de configuration, puis comment transmettre ce dictionnaire en argument lors de l’initialisation d’un run W&B.
config, W&B aplatit les noms en les séparant par des points.
Accédez aux valeurs du dictionnaire comme vous le feriez pour n’importe quel autre dictionnaire en Python :
Dans l’ensemble du guide du développeur et des exemples, nous copions les valeurs de configuration dans des variables distinctes. Cette étape est facultative et sert uniquement à améliorer la lisibilité.
Définir la configuration avec argparse
Vous pouvez définir votre configuration avec un objet argparse. argparse, abréviation de « argument parser », est un module de la bibliothèque standard de Python 3.2 et versions ultérieures qui facilite l’écriture de scripts exploitant toute la souplesse et la puissance des arguments de ligne de commande. Cette approche est utile pour assurer le suivi des résultats de scripts lancés depuis la ligne de commande. Le script Python suivant montre comment utiliser un objet parser pour définir et renseigner la configuration de votre expérience. Les fonctionstrain_one_epoch et evaluate_one_epoch sont fournies pour simuler une boucle d’entraînement dans le cadre de cette démonstration :
Définir la configuration au fil de votre script
Vous pouvez ajouter des paramètres à votre objet de configuration à n’importe quel endroit de votre script. L’extrait de code suivant montre comment ajouter de nouvelles paires clé-valeur à un objet de configuration existant :allow_val_change=True si vous souhaitez modifier la valeur d’une clé existante. Si ce paramètre n’est pas défini, W&B génère une erreur lorsque vous essayez de modifier la valeur d’une clé existante.
Définir la configuration une fois votre run terminé
Utilisez l’API publique de W&B pour mettre à jour la configuration d’un run terminé. Vous devez fournir à l’API votre entity, le nom de votre projet et l’ID du run. Ces informations sont disponibles dans l’objet Run ou dans la W&B App :Mettre en évidence les valeurs de configuration
Épinglez des clés de configuration dans la section References en haut de la page d’aperçu d’un run. Utilisezwandb.Run.pin_config_keys pour épingler une ou plusieurs clés de configuration avec le SDK Python.
Par exemple, si vous surveillez vos runs d’entraînement dans un tableau de bord Grafana, ajoutez l’URL du tableau de bord à votre configuration et épinglez la clé grafana_url :
Afficher les valeurs de configuration
Vous pouvez accéder à vos valeurs de configuration dans la W&B App, pendant un run ou à partir de runs existants. Vous pouvez également y accéder depuis votre système de fichiers local.- W&B App
- Pendant un run
- Run existant
- Système de fichiers local
Pour afficher la configuration d’un run dans la W&B App :
- Accédez à votre projet dans la W&B App.
- Sélectionnez le run que vous souhaitez afficher.
- Sélectionnez l’onglet Overview.
- Faites défiler jusqu’à la section Config.
- Facultatif : cliquez sur View raw data pour afficher la configuration au format JSON.
Configurations à partir de fichiers
Si vous placez un fichier nomméconfig-defaults.yaml dans le même répertoire que votre script de run, le run récupère automatiquement les paires clé-valeur définies dans ce fichier et les transmet à wandb.Run.config.
L’extrait de code suivant présente un exemple de fichier YAML config-defaults.yaml :
config-defaults.yaml en indiquant de nouvelles valeurs dans l’argument config de wandb.init(). Par exemple :
config-defaults.yaml, utilisez l’argument --configs command-line et indiquez le chemin du fichier :
Dictionnaires imbriqués dans la configuration
Pour stocker des valeurs imbriquées dans une configuration de run, passez un dictionnaire imbriqué àwandb.init(). L’exemple suivant définit les dictionnaires imbriqués optimizer et training dans config :
value. Attribuez le dictionnaire imbriqué à value :
learning_rate dans le dictionnaire imbriqué de l’optimiseur de la configuration de run :
config.optimizer.learning_rate dans un filtre de l’API publique et ${config:optimizer.learning_rate} dans une expression de graphique en courbes.
L’exemple suivant crée un run avec une configuration imbriquée et journalise la perte à chaque époque d’entraînement. Il utilise ensuite l’API publique pour trouver les runs dont le taux d’apprentissage est de 1e-4, puis affiche le nom et le taux d’apprentissage de chacun d’eux.
En pratique, on utilise généralement des scripts distincts pour créer les runs, puis pour les interroger ultérieurement à l’aide de filtres.
Exemple de cas d’usage des configurations basées sur des fichiers
Supposons que vous disposiez d’un fichier YAML contenant des métadonnées pour le run, ainsi que d’un dictionnaire d’hyperparamètres dans votre script Python. Vous pouvez enregistrer les deux dans l’objetconfig imbriqué :
Flags TensorFlow v1
Vous pouvez transmettre directement des flags TensorFlow à l’objetwandb.Run.config.