Définissez la configuration de votre balayage dans un fichier YAML si vous souhaitez initialiser un balayage et démarrer un agent de balayage depuis la ligne de commande. Définissez votre balayage dans un dictionnaire Python si vous initialisez un balayage et démarrez un agent de balayage entièrement dans un script ou notebook Python.
Structure de base
Les configurations de balayage sont définies soit à l’aide de YAML, soit d’un dictionnaire Python, avec des paires clé-valeur et des structures imbriquées. Utilisez les clés de premier niveau de votre configuration de balayage pour définir les propriétés de votre recherche, comme lename du balayage, les parameters à explorer et la method de recherche.
Par exemple, les extraits de code ci-dessous montrent la même configuration de balayage définie dans un fichier YAML et dans un dictionnaire Python. La configuration de balayage spécifie cinq clés de premier niveau : program, name, method, metric et parameters.
- CLI
- Script Python ou notebook
Pour gérer des balayages de manière interactive depuis la ligne de commande, définissez une configuration de balayage dans un fichier YAML.
config.yaml
parameters de premier niveau contient les clés imbriquées suivantes : learning_rate, batch_size, epochs et optimizer. Pour chacune des clés imbriquées que vous définissez, vous pouvez fournir une ou plusieurs valeurs, une distribution, une probabilité, etc. Pour plus d’informations, voir la section parameters de Sweep configuration options.
Paramètres imbriqués sur deux niveaux
Utilisez des paramètres imbriqués lorsque vous souhaitez regrouper des hyperparamètres associés ou lorsque votre code d’entraînement attend une structure de configuration imbriquée. Pour définir un paramètre imbriqué, ajoutez une cléparameters supplémentaire sous le nom du paramètre de premier niveau.
L’exemple suivant montre une configuration de balayage avec les paramètres imbriqués nested_category_1, nested_category_2 et nested_category_3, chacun contenant les paramètres supplémentaires momentum et weight_decay. Les exemples de code suivants montrent la configuration dans un fichier YAML et dans un dictionnaire Python :
- CLI
- Script Python ou notebook
Modèle de configuration d’un balayage
Utilisez ce modèle comme point de départ pour une nouvelle configuration de balayage. Il illustre les modèles de paramètre et d’arrêt anticipé les plus courants. Remplacezhyperparameter_name par le nom de votre hyperparamètre, ainsi que par toutes les valeurs entre crochets.
config.yaml
!!float, qui convertit la valeur en nombre à virgule flottante. Par exemple, min: !!float 1e-5. Pour plus d’informations, voir Exemple d’arguments de macro et de commande personnalisée.
Exemples de configuration de balayage
Les configurations de balayage suivantes illustrent des scénarios courants. Utilisez-les comme références lorsque vous adaptez un balayage à votre propre script d’entraînement.- CLI
- Script Python ou notebook
config.yaml
Exemple avec Bayes Hyperband
L’exemple suivant combine la recherche bayésienne avec l’arrêt anticipé Hyperband afin d’interrompre rapidement les runs les moins performants et de préserver les ressources pour des configurations plus prometteuses.early_terminate :
- Nombre minimal d'itérations
- Nombre maximal d'itérations
Les paliers de cet exemple sont :
[3, 3*eta, 3*eta*eta, 3*eta*eta*eta], ce qui correspond à [3, 9, 27, 81].Exemple de macros et d’arguments de ligne de commande personnalisés
Cet exemple montre comment construire la commande que l’agent de balayage exécute pour chaque essai lorsque vous avez besoin d’un contrôle plus précis que celui fourni par l’invocation par défaut. Pour des arguments de ligne de commande plus complexes, vous pouvez utiliser des macros pour transmettre des variables d’environnement, l’interpréteur Python et des arguments supplémentaires. W&B prend en charge des macros prédéfinies ainsi que des arguments de ligne de commande personnalisés que vous pouvez définir dans votre configuration de balayage. Par exemple, la configuration de balayage suivante (sweep.yaml) définit une commande qui exécute un script Python (run.py), les macros ${env}, ${interpreter} et ${program} étant remplacées par les valeurs appropriées lors de l’exécution du balayage.
Les arguments --batch_size=${batch_size}, --test=True et --optimizer=${optimizer} utilisent des macros personnalisées pour transmettre les valeurs des paramètres batch_size, test et optimizer définis dans la configuration de balayage.
sweep.yaml
run.py peut ensuite analyser ces arguments de la ligne de commande à l’aide du module argparse :
run.py
Arguments booléens
Si votre balayage transmet des indicateurs booléens via des arguments de commande, votre script d’entraînement nécessite une gestion supplémentaire, carargparse n’interprète pas les chaînes booléennes par défaut.
Le module argparse ne prend pas en charge les arguments booléens par défaut. Pour définir un argument booléen, vous pouvez utiliser le paramètre action ou une fonction personnalisée pour convertir la représentation sous forme de chaîne de la valeur booléenne en type booléen.
Par exemple, vous pouvez utiliser l’extrait de code suivant pour définir un argument booléen. Passez store_true ou store_false comme argument à ArgumentParser :
str2bool, qui convertit une chaîne en valeur booléenne :