Run.config comme entrées du job, mais le SDK Launch fournit une fonction permettant de contrôler certaines clés de la configuration de run ou de définir des fichiers JSON ou YAML comme entrées.
Les fonctions du SDK Launch nécessitent
wandb-core. Pour plus d’informations, voir le README de wandb-core.Reconfigurer l’objet Run
Par défaut, vous pouvez reconfigurer l’objet Run renvoyé par wandb.init() dans un job. Utilisez le SDK Launch pour choisir les parties de l’objet Run.config qui peuvent être reconfigurées au lancement du job. Vous pouvez ainsi masquer les paramètres internes et n’exposer que ceux qui sont utiles aux utilisateurs finaux.
launch.manage_wandb_config() configure le job pour qu’il accepte des valeurs d’entrée pour l’objet Run.config. Les options facultatives include et exclude acceptent des préfixes de chemin au sein de l’objet de configuration imbriqué. C’est utile si, par exemple, un job utilise une bibliothèque dont vous ne souhaitez pas exposer les options aux utilisateurs finaux.
Si vous fournissez des préfixes include, seuls les chemins de la configuration qui correspondent à un préfixe include acceptent des valeurs d’entrée. Si vous fournissez des préfixes exclude, les chemins qui correspondent à la liste exclude sont exclus des valeurs d’entrée. Si un chemin correspond à la fois à un préfixe include et à un préfixe exclude, le préfixe exclude est prioritaire.
Dans l’exemple précédent, le chemin ["trainer.private"] exclut la clé private de l’objet trainer, et le chemin ["trainer"] exclut toutes les clés situées en dehors de l’objet trainer.
Pour exclure des clés dont le nom contient un
., échappez ce . avec \.Par exemple, r"trainer\.private" exclut la clé trainer.private, et non la clé private de l’objet trainer.Dans l’exemple précédent, le préfixe r désigne une chaîne brute.trainer peuvent être redéfinis.
Accéder aux entrées de configuration de run
Les jobs lancés avec des entrées de configuration de run peuvent accéder aux valeurs d’entrée viaRun.config. Le Run renvoyé par wandb.init() dans le code du job contient automatiquement les valeurs d’entrée. Pour charger les valeurs d’entrée de la configuration de run n’importe où dans le code du job, utilisez launch.load_wandb_config() :
Reconfigurer un fichier
Le SDK Launch peut également gérer les valeurs d’entrée stockées dans des fichiers de configuration au sein du code du job. Il s’agit d’un schéma courant dans de nombreux cas d’usage d’apprentissage profond et de grands modèles de langage, comme cet exemple torchtune ou cette configuration Axolotl.Sweeps on Launch ne permet pas d’utiliser les entrées du fichier de configuration comme paramètres de sweep. Les paramètres de sweep doivent être contrôlés via l’objet
Run.config.launch.manage_config_file() pour ajouter un fichier de configuration comme entrée du job Launch. Vous pourrez ainsi modifier les valeurs de ce fichier de configuration au lancement du job.
Par défaut, aucune entrée de la configuration de run n’est capturée si vous utilisez launch.manage_config_file(). Appeler launch.manage_wandb_config() redéfinit ce comportement.
Prenons l’exemple suivant :
config.yaml situé dans le même répertoire :
launch.manage_config_file() ajoute le fichier config.yaml comme entrée du job, ce qui permet de le reconfigurer lors d’un lancement depuis la CLI ou l’interface W&B.
Utilisez les arguments nommés include et exclude pour filtrer les clés d’entrée acceptées dans le fichier de configuration, comme avec launch.manage_wandb_config().
Accéder aux entrées du fichier de configuration
Lorsque vous appelezlaunch.manage_config_file() dans un run créé par Launch, launch patche le contenu du fichier de configuration avec les valeurs d’entrée. Le fichier de configuration ainsi patché est disponible dans l’environnement du job.
Personnaliser l’interface du volet latéral de lancement d’un job
En plus de filtrer les entrées que vous exposez, vous pouvez définir un schéma pour les entrées d’un job afin de créer une interface de lancement personnalisée. Le volet latéral de lancement affiche alors des champs structurés, des indications de validation et des listes déroulantes au lieu d’une saisie de texte libre. Pour définir le schéma d’un job, incluez-le dans l’appel àlaunch.manage_wandb_config() ou launch.manage_config_file(). Le schéma peut être soit un dict Python au format schéma JSON, soit une classe de modèle Pydantic.
- Schéma JSON
- Modèle Pydantic
L’exemple suivant présente un schéma doté des propriétés suivantes :De manière générale, les attributs de schéma JSON suivants sont pris en charge :
seed, un entier.trainer, un dictionnaire dont certaines clés sont spécifiées :trainer.learning_rate, un nombre à virgule flottante strictement supérieur à zéro.trainer.batch_size, un entier qui doit valoir 16, 64 ou 256.trainer.dataset, une chaîne qui doit valoircifar10oucifar100.
