メインコンテンツまでスキップ

Sweep configuration options

sweep の設定は、ネストされたキーと値のペアで構成されます。sweep 設定のトップレベルキーを使用して、sweep 検索のパラメータ (parameter キー)、パラメータ空間を検索する方法論 (method キー) などの特性を定義します。

以下の表は、トップレベルの sweep 設定キーとその簡単な説明を示しています。それぞれのキーに関する詳細は該当セクションを参照してください。

トップレベルキー説明
program(必須) 実行するトレーニングスクリプト。
entityこの sweep のエンティティを指定。
projectこの sweep のプロジェクトを指定。
descriptionsweep のテキスト記述。
nameW&B UI に表示される sweep の名前。
method(必須) サーチストラテジー を指定。
metric最適化するメトリックを指定(一部のサーチストラテジーや停止基準でのみ使用)。
parameters(必須) 探索する パラメータ 範囲を指定。
early_terminate早期停止基準 を指定。
commandトレーニングスクリプトを呼び出し、引数を渡すための コマンド構造 を指定。
run_capsweep 内の最大 run 数を指定。

sweep 設定の構造についての詳細は、Sweep configuration を参照してください。

metric

トップレベルの sweep 設定キー metric を使用して、最適化するメトリックの名前、目標、およびターゲットを指定します。

キー説明
name最適化するメトリックの名前。
goalminimize または maximize のいずれか(デフォルトは minimize)。
target最適化するメトリックの目標値。この目標値に到達した時点で新しい run を作成しません。現在実行中の run が目標値に到達した場合、エージェントは run が完了するまで待機し、その後さらに新しい run を作成しなくなります。

parameters

YAML ファイルや Python スクリプトで、parameters をトップレベルキーとして指定します。parameters キーの中に、最適化したいハイパーパラメータの名前を記述します。一般的なハイパーパラメータには、学習率、バッチサイズ、エポック、オプティマイザーなどがあります。それぞれのハイパーパラメータについて一つ以上の探索制約を指定します。

以下の表は、サポートされているハイパーパラメータの検索制約を示しています。ハイパーパラメータとユースケースに基づいて、下記のいずれかの検索制約を使用して sweep agent に探索場所(分布の場合)または探索内容(valuevalues など)を指定します。

検索制約説明
valuesこのハイパーパラメータの全有効値を指定。grid との互換性あり。
valueこのハイパーパラメータの単一の有効値を指定。grid との互換性あり。
distribution確率分布 を指定。デフォルト値については次のノートを参照。
probabilitiesrandom を使用する際の各要素の選択確率を指定。
min, max(int または float) 最大値および最小値。max および min を整数として指定する場合は int_uniform で、浮動小数点数として指定する場合は uniform で分布します。
mu(float) normal または lognormal で分布するハイパーパラメータの平均値。
sigma(float) normal または lognormal で分布するハイパーパラメータの標準偏差。
q(float) 量子化されたハイパーパラメータの量子化ステップサイズ。
parametersルートレベルのパラメータ内に他のパラメータをネスト。
備考

分布 が指定されていない場合、W&B は次の条件に基づいて分布を設定します:

  • values を指定した場合は categorical
  • maxmin を整数で指定した場合は int_uniform
  • maxmin を浮動小数点数で指定した場合は uniform
  • value を設定した場合は constant

method

トップレベルキー method でハイパーパラメータ検索戦略を指定します。ハイパーパラメータ検索戦略は3つあります: グリッド検索、ランダム検索、およびベイズ探索。

グリッド検索

すべてのハイパーパラメータの値の組み合わせを反復処理します。グリッド検索は、各反復で使用するハイパーパラメータの値のセットについて無作為な決定を行います。グリッド検索は計算コストが高くなる可能性があります。

連続探索空間を探索する場合、グリッド検索は無限に実行されます。

ランダム検索

各反復で、分布に基づいた無作為のハイパーパラメータ値のセットを選択します。ランダム検索は、コマンドライン、Python スクリプト、または the W&B App UI からプロセスを停止しない限り、無限に実行されます。

ランダム検索を選択した場合は、metric キーで分布空間を指定します (method: random)。

ベイズ探索

ランダム および グリッド 検索と対照的に、ベイズモデルは情報を元に決定を行います。ベイズ最適化は、代理関数で値をテストした後、目的関数を評価する反復プロセスを通じて使用する値を決定するために確率モデルを使用します。ベイズ探索は少数の連続パラメータにはうまく機能しますが、スケールが困難です。ベイズ探索に関する詳細は Bayesian Optimization Primer paper を参照してください。

ベイズ探索は、コマンドライン、Python スクリプト、または the W&B App UI からプロセスを停止しない限り、無限に実行されます。

ランダムおよびベイズ探索のための分布オプション

parameter キー内にハイパーパラメータの名前をネストします。次に distribution キーを指定し、値の分布を指定します。

以下の表は、W&B がサポートする分布を示しています。

distribution キーの値説明
constant定数分布。使用する定数値 (value) を指定する必要があります。
categoricalカテゴリ分布。このハイパーパラメータの有効なすべての値 (values) を指定する必要があります。
int_uniform整数の離散一様分布。maxmin を整数として指定する必要があります。
uniform連続一様分布。maxmin を浮動小数点数として指定する必要があります。
q_uniform量子化一様分布。round(X / q) * q を返します。ここで X は一様分布です。q のデフォルトは 1
log_uniform対数一様分布。自然対数が min から max の間で一様に分布しているように、exp(min)exp(max) の間の値 X を返します。
log_uniform_values対数一様分布。log(min)log(max) の間で log(X) が一様に分布しているように minmax の間の値 X を返します。
q_log_uniform量子化対数一様分布。round(X / q) * q を返します。ここで Xlog_uniformq のデフォルトは 1
q_log_uniform_values量子化対数一様分布。round(X / q) * q を返します。ここで Xlog_uniform_valuesq のデフォルトは 1
inv_log_uniform逆対数一様分布。log(1/X)min から max の間で一様に分布している値 X を返します。
inv_log_uniform_values逆対数一様分布。log(1/min)log(1/max) の間で log(1/X) が一様に分布している値 X を返します。
normal正規分布。平均 mu(デフォルト 0)および標準偏差 sigma(デフォルト 1)の正規分布の値を返します。
q_normal量子化正規分布。round(X / q) * q を返します。ここで Xnormalq のデフォルトは 1
log_normal対数正規分布。平均 mu(デフォルト 0)および標準偏差 sigma(デフォルト 1)で log(X) が正規分布している値 X を返します。
q_log_normal量子化対数正規分布。round(X / q) * q を返します。ここで Xlog_normalq のデフォルトは 1

early_terminate

早期終了 (early_terminate) を使用して、パフォーマンスが悪い run を停止します。早期終了が発生した場合、W&B は現在の run を停止し、新しいハイパーパラメータ値のセットで新しい run を作成します。

注記

early_terminate を使用する場合は、停止アルゴリズムを指定する必要があります。early_terminate 内に type キーをネストして指定します。

停止アルゴリズム

備考

W&B は現在、Hyperband 停止アルゴリズムをサポートしています。

Hyperband ハイパーパラメータ最適化では、プログラムを停止するか続行するかを、brackets と呼ばれる一つ以上の設定された繰り返し数で判断します。

W&B run が bracket に達すると、sweep はその run のメトリックを以前に報告されたすべてのメトリック値と比較します。目標が最小化である場合、run のメトリック値が高すぎると run を終了します。目標が最大化である場合、run のメトリック値が低すぎると run を終了します。

bracket はログされた繰り返し回数に基づいています。bracket の数は最適化するメトリックをログした回数に対応しています。繰り返しはステップ、エポック、その他の中間に対応する場合があります。ステップカウンターの数値は bracket 計算に使用されません。

備考

スケジュールを作成するには min_iter または max_iter を指定します。

キー説明
min_iter最初の bracket のイテレーションを指定
max_iter最大イテレーション数を指定
s総 bracket 数を指定 (max_iter に必須)
etabracket の乗数スケジュールを指定 (デフォルト: 3)
strict'strict' モードを有効にして run を積極的に削減します。デフォルトで無効です。
備考

Hyperband は数分ごとに W&B runs を終了するかどうかを確認します。run またはイテレーションが短い場合、指定された brackets と終了のタイムスタンプが異なる可能性があります。

command

トップレベルキー command を使用して、コマンドの形式および内容をネストされた値で修正します。固定コンポーネント(ファイル名など)を直接含めることができます。

備考

Unix システムでは、/usr/bin/env を使用して環境に基づいた正しい Python インタープリターを選択します。

W&B は、コマンドの変数コンポーネントに次のマクロをサポートしています:

コマンドマクロ説明
${env}Unix システムでは /usr/bin/env、Windows では省略されます。
${interpreter}python に展開。
${program}sweep 設定の program キーで指定されたトレーニングスクリプトファイル名。
${args}ハイパーパラメータとその値 (--param1=value1 --param2=value2 の形式)。
${args_no_boolean_flags}ハイパーパラメータとその値 (--param1=value1 の形式) ただし、ブール値パラメータは True の場合 --boolean_flag_param の形式で、False の場合は省略されます。
${args_no_hyphens}ハイパーパラメータとその値 (param1=value1 param2=value2 の形式)。
${args_json}ハイパーパラメータとその値を JSON としてエンコード。
${args_json_file}ハイパーパラメータとその値をエンコードした JSON を含むファイルへのパス。
${envvar}環境変数を渡す方法。 ${envvar:MYENVVAR} は MYENVVAR 環境変数の値に展開されます。
Was this page helpful?👍👎