スイープを初期化し、コマンドラインからスイープエージェントを開始したい場合は、YAMLファイルでスイープ設定を定義します。スイープを初期化し、完全にPythonスクリプトまたはJupyterノートブック内でスイープを開始する場合は、Python辞書でスイープを定義します。
基本構造
両方のスイープ設定フォーマットオプション (YAML および Python 辞書) は、キーと値のペアおよびネストされた構造を利用します。 スイープ設定内でトップレベルキーを使用して、sweep 検索の特性を定義します。たとえば、スイープの名前(name
キー)、検索するパラメータ(parameters
キー)、パラメータ空間を検索する方法(method
キー)、その他があります。
例えば、以下のコードスニペットは、YAML ファイルと Python 辞書の両方で定義された同じスイープ設定を示しています。スイープ設定内には、program
、name
、method
、metric
、および parameters
という5つのトップレベルキーが指定されています。
- CLI
- Python スクリプトまたは Jupyter ノートブック
スイープをコマンドライン (CLI) からインタラクティブに管理したい場合、YAML ファイルでスイープ設定を定義します。
config.yaml
parameters
キーの中に、以下のキーがネストされています:learning_rate
、batch_size
、epoch
、および optimizer
。指定したネストされたキーごとに、1つ以上の値、分布、確率などを提供できます。詳細については、Sweep configuration options の parameters セクションを参照してください。
二重ネストパラメータ
Sweep configurations はネストされたパラメータをサポートします。ネストされたパラメータを区切るには、トップレベルのパラメータ名の下に追加のparameters
キーを使用します。スイープ設定は多層ネストをサポートします。
ベイズまたはランダムなハイパーパラメータ検索を使用する場合、確率分布を指定します。各ハイパーパラメータについて:
- スイープ設定でトップレベル
parameters
キーを作成します。 parameters
キーの中に次のものをネストします:- 最適化したいハイパーパラメータの名前を指定します。
distribution
キーのために使用したい分布を指定します。ハイパーパラメータ名の下にdistribution
キーと値のペアをネストします。- 探索する1つ以上の値を指定します。その値(または値のリスト)は分布キーと整合している必要があります。
- (オプション) トップレベルのパラメータ名の下に追加のパラメータキーを使用して、ネストされたパラメータを区切ります。
スイープ設定で定義されたネストされたパラメータは、W&B run 設定で指定されたキーを上書きします。例として、次の設定で W&B run が初期化されたときに渡された
train.py
Python スクリプト(行1-2で確認可能)で W&B run を初期化するとします。次に、sweep_configuration
(行4-13)の辞書でスイープ設定を定義します。その後、スイープ設定辞書を wandb.sweep
に渡してスイープ設定を初期化します(行16を確認)。train.py
nested_param.manual_key
はアクセスできません。run.config
は、スイープ設定辞書で定義されたキーと値のペアのみを持っています。Sweep configuration テンプレート
次のテンプレートには、パラメータを構成し、検索制約を指定する方法を示しています。hyperparameter_name
をあなたのハイパーパラメータの名前と、<>
内の任意の値で置き換えます。
config.yaml
Sweep configuration の例
- CLI
- Python スクリプトまたは Jupyter ノートブック
config.yaml
ベイズハイパーバンドの例
early_terminate
の最小または最大のイテレーション回数を指定する方法を示します:
- 最大のイテレーション回数
- 最小のイテレーション回数
この例のブラケットは
[3, 3*eta, 3*eta*eta, 3*eta*eta*eta]
で、結果として [3, 9, 27, 81]
になります。コマンドの例
- Unix
- Windows
- Python インタープリタの設定
- 追加のパラメータを追加
- 引数を省略
- Hydra
{$interpreter}
マクロを削除し、値を明示的に提供して Python インタプリタをハードコードします。例えば、以下のコードスニペットはその方法を示しています: