Skip to main content
sweep は、ハイパーパラメーターの値を探索する戦略と、それらの値を評価するコードを組み合わせたものです。戦略には、すべての選択肢を試すような単純なものから、Bayesian Optimization and Hyperband (BOHB) のような複雑なものまであります。 このガイドでは、探索するハイパーパラメーター、使用する探索戦略、各 run の評価方法を指定する sweep 設定の定義方法を説明します。新しい sweep をセットアップするときや、既存の設定を別の探索手法やパラメーター空間に合わせて変更するときに参照してください。 sweep 設定は、Python の辞書または YAML ファイルで定義します。どちらを使うかは、sweep をどのように管理するかによって決まります。
コマンドラインから sweep を初期化して sweep エージェントを起動する場合は、YAML ファイルで sweep 設定を定義します。sweep の初期化から開始までをすべて Python スクリプトまたはノートブック内で行う場合は、Python の辞書で sweep を定義します。
以下のセクションでは、sweep 設定の記述形式について説明します。sweep 設定のトップレベルキーの一覧については、Sweep configuration options を参照してください。

基本構造

sweep 設定は、YAML または Python の辞書を使用して、キーと値のペアとネストされた構造で定義します。 sweep 設定のトップレベルキーでは、sweep の name、探索対象の parameters、探索 method など、sweep 探索の特性を定義します。 たとえば、次のコードスニペットは、同じ sweep 設定を YAML ファイルと Python の辞書でそれぞれ定義した例です。この sweep 設定では、program、name、method、metric、parameters の 5 つのトップレベルキーを指定しています。
コマンドラインから sweep をインタラクティブに管理するには、YAML ファイルで sweep 設定を定義します。
config.yaml
トップレベルの parameters キーには、learning_rate、batch_size、epochs、optimizer の各キーがネストされています。ネストされた各キーには、1 つ以上の値、分布、確率などを指定できます。詳細については、Sweep configuration options の parameters セクションを参照してください。

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

関連するハイパーパラメーターをグループ化したい場合や、トレーニングコードがネストされた設定構造を前提としている場合は、ネストされたパラメーターを使用します。ネストされたパラメーターを定義するには、トップレベルのパラメーター名の下に parameters キーをさらに追加します。 次の例は、ネストされたパラメーター nested_category_1、nested_category_2、nested_category_3 を含む sweep 設定です。それぞれに追加のパラメーター momentum と weight_decay が含まれています。以下のコード例では、同じ設定を YAML ファイルと Python の辞書の両方の形式で示します。
sweep 設定で定義したネストされたパラメーターは、W&B run の設定で指定されたキーを上書きします。たとえば、ネストされたデフォルト値を指定して run を初期化する train.py スクリプトがあるとします。
sweep 設定では、トップレベルの "parameters" キーの下にネストされたパラメーターを定義します。
sweep の run では、run.config["nested_param"] に sweep 設定で定義されたサブツリー (learning_rate と double_nested_param) が反映されます。wandb.init(config=...) で定義された manual_key は含まれません。

sweep 設定のテンプレート

新しい sweep 設定を作成する際は、このテンプレートを出発点として使用してください。このテンプレートには、よく使われるパラメーターと早期終了のパターンが含まれています。hyperparameter_name を実際のハイパーパラメーター名に置き換え、角かっこで囲まれた値もそれぞれ適切な値に置き換えてください。
config.yaml
数値を科学的記数法で表すには、YAML の !!float オペレーターを付加します。このオペレーターは値を浮動小数点数にキャストします。例: min: !!float 1e-5。詳細については、マクロとカスタムコマンドの引数の例を参照してください。

sweep 設定のサンプル

以下の sweep 設定は、よくあるシナリオの例です。独自のトレーニングスクリプトに合わせて sweep を調整する際の参考にしてください。
config.yaml

Bayes hyperband の例

次の例では、ベイズ探索と Hyperband による早期終了を組み合わせています。パフォーマンスの低い run を早い段階で停止し、より有望な設定にリソースを振り向けます。
次のタブでは、early_terminate に反復回数の最小値または最大値を指定する方法を示します。
この例のブラケットは [3, 3*eta, 3*eta*eta, 3*eta*eta*eta]、つまり [3, 9, 27, 81] です。

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

この例では、デフォルトの invocation よりも細かい制御が必要な場合に、sweep エージェントが各試行で実行するコマンドを構築する方法を示します。 より複雑なコマンドライン引数を指定する場合は、マクロを使用して環境変数、Python インタープリター、追加の引数を渡せます。W&B は定義済みのマクロに加え、sweep 設定で指定できるカスタムコマンドライン引数をサポートしています。 たとえば、次の sweep 設定 (sweep.yaml) では、Python スクリプト (run.py) を実行するコマンドを定義しています。sweep の実行時には、${env}、${interpreter}、${program} の各マクロが適切な値に置き換えられます。 --batch_size=${batch_size}、--test=True、--optimizer=${optimizer} の各引数は、カスタムマクロを使用して、sweep 設定で定義された batch_size、test、optimizer パラメーターの値を渡します。
sweep.yaml
これにより、対応する Python スクリプト run.py で、argparse モジュールを使用してこれらのコマンドライン引数を解析できます。
run.py
sweep 設定で使用できる定義済みマクロの一覧については、Sweep configuration options の コマンドマクロ セクションを参照してください。

真偽値の引数

sweep でコマンド引数を介して真偽値のフラグを渡す場合、argparse はデフォルトでは真偽値の文字列を解釈しないため、トレーニングスクリプト側で追加の処理が必要です。 argparse モジュールは、デフォルトでは真偽値の引数をサポートしていません。真偽値の引数を定義するには、action パラメーターを使用するか、カスタム関数を使用して真偽値の文字列表現を真偽値のタイプに変換します。 たとえば、次のコードスニペットを使用して真偽値の引数を定義できます。ArgumentParser に引数として store_true または store_false を渡します。
真偽値の文字列表現を真偽値のタイプに変換するカスタム関数を定義することもできます。たとえば、次のコードスニペットでは、文字列を真偽値に変換する str2bool 関数を定義しています。
最終更新日 2026年9月30日