メインコンテンツへスキップ
W&B Sweep は、ハイパーパラメーターの値を探索する戦略と、それらを評価するコードを組み合わせたものです。戦略は、すべての候補を試すシンプルなものから、Bayesian Optimization や Hyperband (BOHB) のような複雑なものまでさまざまです。 sweep 設定は、Python の辞書 または YAML ファイルで定義します。どちらの形式で sweep 設定を定義するかは、sweep をどのように管理したいかによって異なります。
コマンドラインから sweep を初期化し、sweep agent を起動する場合は、YAML ファイルで sweep 設定を定義してください。Python スクリプトまたはノートブック 内ですべて完結させて sweep を初期化し、開始する場合は、Python の辞書 で sweep を定義してください。
次のガイドでは、sweep 設定の書式を説明します。最上位レベルの sweep 設定キーの一覧については、Sweep configuration options を参照してください.

基本構造

sweep 設定の形式オプションである YAML と Python の辞書は、どちらもキーと値のペア、およびネストされた構造を使用します。 sweep 設定のトップレベルキーを使用して、sweep 検索の特性を定義します。たとえば、sweep の名 (name キー) 、検索対象のパラメーター (parameters キー) 、パラメーター空間の探索手法 (method キー) などです。 たとえば、次のコードスニペットは、YAML ファイル内と Python の辞書内で定義した同じ sweep 設定を示しています。sweep 設定では、programnamemethodmetricparameters の 5 つのトップレベルキーを指定しています。
コマンドライン (CLI) から Sweeps をインタラクティブに管理する場合は、YAML ファイルで sweep 設定を定義します
config.yaml
トップレベルの parameters キーの中には、learning_ratebatch_sizeepochoptimizer の各キーがネストされています。指定した各ネストキーには、1 つ以上の値、分布、確率などを指定できます。詳細は、Sweep configuration optionsparameters セクションを参照してください。

二重にネストしたパラメーター

sweep 設定では、ネストされたパラメーターをサポートしています。ネストされたパラメーターを定義するには、トップレベルのパラメーター名の下に parameters キーを追加します。 次の例は、nested_category_1nested_category_2nested_category_3 という 3 つのネストされたパラメーターを含む sweep 設定を示しています。各ネストされたパラメーターには、さらに momentumweight_decay という 2 つのパラメーターが含まれています。
nested_category_1nested_category_2nested_category_3 はプレースホルダーです。実際のユースケースに合わせた名前に置き換えてください。
次のコードスニペットは、YAML ファイルと Python 辞書の両方でネストされたパラメーターを定義する方法を示しています。
sweep 設定で定義したネストされたパラメーターは、W&B の run 設定で指定したキーを上書きします。例として、ネストされたデフォルト値を使って run を初期化する train.py スクリプトがあるとします。
sweep 設定では、最上位の "parameters" キーの下にネストされたパラメーターを定義します。
sweep run 中は、run.config["nested_param"] に sweep の設定で定義された サブツリー (learning_ratedouble_nested_param) が反映され、wandb.init(config=...) で定義した manual_key は 含まれません。

sweep 設定テンプレート

以下のテンプレートは、パラメーターを設定し、検索条件を指定する方法を示しています。hyperparameter_name はハイパーパラメーター名に、<> で囲まれた値は適切な値に置き換えてください。
config.yaml
科学的記数法で数値を表すには、YAML の !!float 演算子を追加して、その値を浮動小数点数にキャストします。たとえば、min: !!float 1e-5 です。コマンドの例を参照してください。

sweep 設定例

config.yaml

Bayes hyperbandの例

以下のタブでは、early_terminate の反復回数の最小値または最大値を指定する方法を示します。
この例でのブラケットは [3, 3*eta, 3*eta*eta, 3*eta*eta*eta] で、[3, 9, 27, 81] になります。

マクロとカスタムコマンド引数の例

より複雑なコマンドライン引数では、マクロを使用して環境変数、Python インタープリター、追加の引数を渡せます。W&B は事前定義済みのマクロと、sweep 設定で指定できるカスタムコマンドライン引数をサポートしています。 たとえば、次の sweep 設定 (sweep.yaml) では、Python スクリプト (run.py) を実行するコマンドを定義しており、sweep の実行時に ${env}${interpreter}${program} の各マクロが適切な値に置き換えられます。 --batch_size=${batch_size}--test=True--optimizer=${optimizer} の各引数ではカスタムマクロを使用して、sweep 設定で定義された batch_sizetestoptimizer の各パラメーターの値を渡します。
sweep.yaml
対応する Python スクリプト (run.py) では、argparse モジュールを使って、これらのコマンドライン引数を解析できます。
run.py
[sweep 設定で使用できる、あらかじめ定義されたマクロの一覧については、Sweep configuration optionsコマンドマクロ セクションを参照してください。](./sweep-config-keys#command-macros)

ブール引数

argparse モジュールは、デフォルトではブール引数をサポートしていません。ブール引数を定義するには、action パラメーターを使用するか、ブール値の文字列表現をブール型に変換するカスタム関数を使用します。 たとえば、次のコードスニペットを使用してブール引数を定義できます。ArgumentParser の引数として store_true または store_false を渡します。
ブール値の文字列表現をブール型に変換するカスタム関数を定義することもできます。たとえば、次のコードスニペットでは、文字列をブール値に変換するstr2bool関数を定義しています。