Skip to main content
Un sweep associe une stratégie d’exploration des valeurs d’hyperparamètres au code qui les évalue. Cette stratégie peut être aussi simple que d’essayer chaque option, ou aussi complexe que l’optimisation bayésienne combinée à Hyperband (BOHB). Ce guide explique comment définir une configuration de sweep qui précise les hyperparamètres à explorer, la stratégie de recherche à utiliser et la manière d’évaluer chaque run. Reportez-vous-y lorsque vous configurez un nouveau sweep ou que vous adaptez une configuration existante à une autre méthode de recherche ou à un autre espace de paramètres. Définissez une configuration de sweep dans un dictionnaire Python ou dans un fichier YAML. Le choix dépend de la manière dont vous souhaitez gérer votre sweep.
Définissez votre configuration de sweep dans un fichier YAML si vous souhaitez initialiser un sweep et démarrer un agent de sweep depuis la ligne de commande. Définissez votre sweep dans un dictionnaire Python si vous initialisez et démarrez un sweep entièrement depuis un script Python ou un notebook.
Les sections suivantes décrivent comment formater votre configuration de sweep. Consultez Options de configuration de sweep pour obtenir la liste complète des clés de premier niveau de la configuration de sweep.

Structure de base

Les configurations de sweep se définissent en YAML ou à l’aide d’un dictionnaire Python, avec des paires clé-valeur et des structures imbriquées. Utilisez des clés de premier niveau dans votre configuration de sweep pour définir les caractéristiques de la recherche effectuée par votre sweep, comme le nom du sweep (name), les paramètres à explorer (parameters) et la méthode de recherche (method). Par exemple, les extraits de code suivants présentent la même configuration de sweep, définie dans un fichier YAML puis dans un dictionnaire Python. Cette configuration de sweep spécifie cinq clés de premier niveau : program, name, method, metric et parameters.
Pour gérer des sweeps de manière interactive depuis la ligne de commande, définissez une configuration de sweep dans un fichier YAML.
config.yaml
La clé de premier niveau parameters contient les clés imbriquées suivantes : learning_rate, batch_size, epochs et optimizer. Pour chaque clé imbriquée que vous spécifiez, vous pouvez fournir une ou plusieurs valeurs, une distribution, une probabilité, etc. Pour plus d’informations, voir la section parameters de la page Options de configuration de sweep.

Paramètres doublement imbriqués

Utilisez des paramètres imbriqués pour regrouper des hyperparamètres apparenté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 présente une configuration de sweep comportant les paramètres imbriqués nested_category_1, nested_category_2 et nested_category_3, qui contiennent chacun les paramètres supplémentaires momentum et weight_decay. Les exemples de code ci-dessous présentent cette configuration sous forme de fichier YAML et de dictionnaire Python :
Les paramètres imbriqués définis dans la configuration de sweep écrasent les clés spécifiées dans la configuration d’un run W&B.Par exemple, supposons que vous disposiez d’un script train.py qui initialise un run avec une valeur par défaut imbriquée :
Votre configuration de sweep définit des paramètres imbriqués sous une clé "parameters" de premier niveau :
Pendant un run de sweep, run.config["nested_param"] contient la sous-arborescence définie par la configuration de sweep (learning_rate et double_nested_param), mais pas manual_key, défini dans wandb.init(config=...).

Modèle de configuration de sweep

Utilisez ce modèle comme point de départ pour une nouvelle configuration de sweep. Il présente les schémas les plus courants pour la définition des paramètres et l’arrêt anticipé. Remplacez hyperparameter_name par le nom de votre hyperparamètre, ainsi que toutes les valeurs entre crochets.
config.yaml
Pour exprimer une valeur numérique en notation scientifique, ajoutez l’opérateur 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 sweep

Les configurations de sweep suivantes illustrent des scénarios courants. Inspirez-vous-en pour adapter un sweep à votre propre script d’entraînement.
config.yaml

Exemple Bayes avec Hyperband

L’exemple suivant combine la recherche bayésienne et l’arrêt anticipé Hyperband afin d’interrompre tôt les runs peu performants et de réserver les ressources aux configurations plus prometteuses.
Les onglets suivants montrent comment spécifier un nombre minimum ou maximum d’itérations pour early_terminate :
Dans cet exemple, les paliers (brackets) sont [3, 3*eta, 3*eta*eta, 3*eta*eta*eta], soit [3, 9, 27, 81].

Exemple de macros et d’arguments de commande personnalisés

Cet exemple montre comment construire la commande que l’agent de sweep exécute pour chaque essai lorsque vous avez besoin d’un contrôle plus fin que celui offert par l’invocation par défaut. Pour des arguments de ligne de commande plus complexes, vous pouvez utiliser des macros afin de 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 spécifier dans votre configuration de sweep. Par exemple, la configuration de sweep suivante (sweep.yaml) définit une commande qui exécute un script Python (run.py) ; les macros ${env}, ${interpreter} et ${program} y sont remplacées par les valeurs appropriées lors de l’exécution du sweep. 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 sweep.
sweep.yaml
Le script Python associé run.py peut ensuite analyser ces arguments de ligne de commande à l’aide du module argparse :
run.py
Consultez la section Macros de commande de la page Options de configuration de sweep pour obtenir la liste des macros prédéfinies que vous pouvez utiliser dans votre configuration de sweep.

Arguments booléens

Si votre sweep transmet des flags booléens via les arguments de commande, votre script d’entraînement nécessite une gestion supplémentaire, car argparse n’interprète pas par défaut les chaînes booléennes. Par défaut, le module argparse ne prend pas en charge les arguments booléens. Pour définir un argument booléen, utilisez le paramètre action ou une fonction personnalisée qui convertit la représentation textuelle 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 :
Vous pouvez également définir une fonction personnalisée pour convertir la représentation sous forme de chaîne de caractères d’une valeur booléenne en type booléen. Par exemple, l’extrait de code suivant définit la fonction str2bool, qui convertit une chaîne en valeur booléenne :
Dernière modification le 30 septembre 2026