config d’un run pour enregistrer votre configuration d’entraînement :
- hyperparamètre
- paramètres d’entrée, comme le nom du jeu de données ou le type de modèle
- toute autre variable indépendante pour vos expériences.
wandb.Run.config facilite l’analyse de vos expériences et la reproduction de votre travail par la suite. Vous pouvez regrouper vos données selon les valeurs de configuration dans l’application W&B, comparer les configurations de différents runs W&B et évaluer l’effet de chaque configuration d’entraînement sur les résultats. La propriété config est un objet de type dictionnaire qui peut être construit à partir de plusieurs objets de type dictionnaire.
Pour enregistrer les métriques de sortie ou des variables dépendantes comme la perte et l’accuracy, utilisez
wandb.Run.log() plutôt que wandb.Run.config.Configurer la configuration d’une expérience
Les configurations sont généralement définies au début d’un script d’entraînement. Toutefois, les flux de travail de machine learning peuvent varier, donc vous n’êtes pas obligé de définir une configuration au début de votre script d’entraînement. Utilisez des tirets (-) ou des caractères de soulignement (_) au lieu de points (.) dans les noms de variables de votre configuration.
Utilisez la syntaxe d’accès au dictionnaire ["key"]["value"] plutôt que la syntaxe d’accès par attribut config.key.value si votre script accède à des clés de wandb.Run.config sous la racine.
Les sections suivantes présentent différents scénarios courants pour définir la configuration de vos expériences.
Définir la configuration à l’initialisation
Passez un dictionnaire au début de votre script lorsque vous appelez l’APIwandb.init() pour créer un processus en arrière-plan chargé de synchroniser et de journaliser les données dans un run W&B.
L’extrait de code suivant montre comment définir un dictionnaire Python avec des valeurs de configuration et comment passer ce dictionnaire en argument lorsque vous initialisez un run W&B.
config, W&B aplatit les noms en utilisant des points.
Accédez aux valeurs du dictionnaire comme à celles de tout autre dictionnaire en Python :
Tout au long du Guide du développeur et des exemples, nous copions les valeurs de configuration dans des variables distinctes. Cette étape est facultative. Cela est fait pour plus de lisibilité.
Définir la configuration avec argparse
Vous pouvez définir votre configuration avec un objet argparse. argparse, abréviation de « analyseur d’arguments », est un module de la bibliothèque standard de Python 3.2 et versions ultérieures qui facilite l’écriture de scripts tirant parti de toute la flexibilité et de la puissance des arguments en ligne de commande. Cela est utile pour suivre les résultats de scripts lancés en ligne de commande. Le script Python suivant montre comment créer un objet parser afin de définir et de renseigner la configuration de votre expérience. Les fonctionstrain_one_epoch et evaluate_one_epoch sont fournies pour simuler une boucle d’entraînement à des fins de démonstration :
Définissez la configuration au fil de votre script
Vous pouvez ajouter d’autres paramètres à votre objet de configuration au fil 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 mettre à jour la valeur d’une clé existante. Si vous ne définissez pas ce paramètre, W&B renverra une erreur si vous essayez de mettre à jour la valeur d’une clé existante.
Définissez 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 entité, le nom du projet et l’ID du run. Vous trouverez ces informations dans l’objet Run ou dans la W&B App :Mettre en avant 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 utilisez un tableau de bord Grafana pour surveiller des runs d’entraînement, ajoutez l’URL du tableau de bord à votre configuration et épinglez la clé grafana_url :
Afficher les valeurs de configuration
Accédez à vos valeurs de configuration dans W&B App, pendant l’exécution d’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
Affichez la configuration d’un run dans W&B App :
- Accédez à votre projet dans W&B App.
- Sélectionnez le run que vous souhaitez afficher.
- Sélectionnez l’onglet Overview.
- Faites défiler la page jusqu’à la section Config.
- Facultatif : cliquez sur View raw data pour afficher la configuration au format JSON.
Configurations basées sur des fichiers
Si vous placez un fichier nomméconfig-defaults.yaml dans le même répertoire que votre script de run, le run détecte automatiquement les paires clé-valeur définies dans le fichier et les transmet à wandb.Run.config.
L’extrait de code suivant montre un exemple de fichier YAML config-defaults.yaml :
config-defaults.yaml en définissant 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 config
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é optimizer 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 pour chaque époque d’entraînement. Il utilise ensuite l’API publique pour trouver les runs dont le taux d’apprentissage est de 1e-4 et affiche le nom et le taux d’apprentissage de chaque run.
En pratique, vous utilisez généralement des scripts distincts pour créer les runs, puis pour les interroger ultérieurement à l’aide de filtres.
Exemple d’utilisation de configurations basées sur des fichiers
Supposons que vous disposiez d’un fichier YAML contenant des métadonnées sur le run, ainsi que d’un dictionnaire d’hyperparamètres dans votre script Python. Vous pouvez enregistrer les deux dans l’objetconfig imbriqué :
Flags de TensorFlow v1
Vous pouvez transmettre directement les flags TensorFlow à l’objetwandb.Run.config.