メインコンテンツへスキップ
sweep 設定は、入れ子になったキーと値のペアで構成されます。sweep 設定内のトップレベルキーを使用して、探索対象のパラメーター (parameter キー) や、パラメーター空間の探索手法 (method キー) など、sweep 検索の特性を定義します。 以下の表は、トップレベルの sweep 設定キーとその簡単な説明を示しています。各キーの詳細については、それぞれのセクションを参照してください。
Top-level keysDescription
program(必須) 実行するトレーニングスクリプト
entityこの sweep の entity
projectこの sweep のプロジェクト
descriptionsweep の説明テキスト
nameW&B UI に表示される sweep の名。
method(必須) 検索戦略
metric最適化するメトリクス (一部の検索戦略および停止条件でのみ使用)
parameters(必須) 探索するパラメーターの範囲
early_terminate早期終了の条件
commandトレーニングスクリプトの呼び出しと引数の受け渡しに使用する command 構造
run_capこの sweep の runs の最大数
sweep 設定の構造化方法について詳しくは、Sweep configuration を参照してください。

metric

metric の最上位の sweep 設定キーを使用して、最適化するメトリクスの名、目標、およびターゲット値を指定します。
KeyDescription
name最適化するメトリクスの名。
goalminimize または maximize のいずれかです (デフォルトは minimize) 。
target最適化するメトリクスの目標値です。run が指定したターゲット値に達すると、sweep は新しい run を作成しなくなります。run を実行中のアクティブな エージェント は、その run が完了するまで待機し、その後は新しい run の作成を停止します。

parameters

YAML ファイルまたは Python スクリプトで、トップレベルキーとして parameters を指定します。parameters キー内では、最適化したいハイパーパラメーターの名を指定します。一般的なハイパーパラメーターには、学習率、バッチサイズ、エポック数、オプティマイザーなどがあります。sweep 設定で定義する各ハイパーパラメーターには、1 つ以上の探索制約を指定します。 次の表は、サポートされるハイパーパラメーター探索の制約を示しています。ハイパーパラメーターやユースケースに応じて、以下のいずれかの探索制約を使用し、sweep エージェントに探索または使用する対象を指定します。分布を使う場合はどこを探索するか、valuevalues などを使う場合は何を使用するかを指定します。
Search constraintDescription
valuesこのハイパーパラメーターで有効なすべての値を指定します。grid と互換性があります。
valueこのハイパーパラメーターで有効な単一の値を指定します。grid と互換性があります。
distribution確率分布を指定します。デフォルト値については、この表の後の注記を参照してください。
probabilitiesrandom を使用する場合に、values の各要素が選択される確率を指定します。
min, max(intor float) 最大値と最小値です。int の場合は int_uniform 分布のハイパーパラメーター、float の場合は uniform 分布のハイパーパラメーターに使用します。
mu(float) normal 分布または lognormal 分布のハイパーパラメーターの平均パラメーターです。
sigma(float) normal 分布または lognormal 分布のハイパーパラメーターの標準偏差パラメーターです。
q(float) 量子化ハイパーパラメーターの量子化 step サイズです。
parametersルートレベルのパラメーター内に、他のパラメーターをネストします。
分布が指定されていない場合、W&B は以下の条件に応じて次の分布を設定します。
  • values を指定した場合は categorical
  • maxmin を整数で指定した場合は int_uniform
  • maxmin を浮動小数点数で指定した場合は uniform
  • value に値を設定した場合は constant

method

method キーを使用して、ハイパーパラメーター探索の戦略を指定します。選択できる戦略は、grid、random、ベイズ探索の 3 つです。 ハイパーパラメーター値のあらゆる組み合わせを順に試します。グリッドサーチでは、各反復で使用するハイパーパラメーター値の組み合わせを、過去の結果に基づかずに決定します。グリッドサーチは計算コストが高くなる場合があります。 連続的な探索空間を探索する場合、グリッドサーチは終了しません。 各反復で、分布に基づいて、事前情報を用いずにランダムなハイパーパラメーター値のセットを選択します。ランダムサーチは、コマンドライン、Python スクリプト内、または W&B App からプロセスを停止しない限り、実行され続けます。 ランダムサーチ (method: random) を選択する場合は、メトリクスキーで分布空間を指定します。 ランダム検索やグリッド検索とは異なり、ベイズモデルは情報に基づいて判断を行います。ベイズ最適化では、目的関数を評価する前に、サロゲート関数上で値を試す反復プロセスを通じて、どの値を使用するかを確率モデルで決定します。ベイズ探索は、少数の連続パラメーターには適していますが、スケーリング性能は高くありません。ベイズ探索の詳細については、Bayesian Optimization Primer paperを参照してください。 ベイズ探索は、コマンドラインから、Pythonスクリプト内で、または W&B App でプロセスを停止しない限り、実行され続けます。 parameter キーの中に、ハイパーパラメーターの名をネストします。次に、distribution キーを指定し、その値の分布を指定します。 次の表に、W&B がサポートする分布を示します。
Value for distribution keyDescription
constant定数分布。使用する定数値 (value) を指定する必要があります。
categoricalカテゴリカル分布。このハイパーパラメーターで有効な値をすべて (values) 指定する必要があります。
int_uniform整数上の離散一様分布。maxmin は整数で指定する必要があります。
uniform連続一様分布。maxmin は浮動小数点数で指定する必要があります。
q_uniform量子化一様分布。X が一様分布に従うとき、round(X / q) * q を返します。q のデフォルトは 1 です。
log_uniform対数一様分布。自然対数が minmax の間で一様分布するような、exp(min) から exp(max) の間の値 X を返します。
log_uniform_values対数一様分布。log(X)log(min)log(max) の間で一様分布するような、min から max の間の値 X を返します。
q_log_uniform量子化対数一様分布。Xlog_uniform に従うとき、round(X / q) * q を返します。q のデフォルトは 1 です。
q_log_uniform_values量子化対数一様分布。Xlog_uniform_values に従うとき、round(X / q) * q を返します。q のデフォルトは 1 です。
inv_log_uniform逆対数一様分布。log(1/X)minmax の間で一様分布する X を返します。
inv_log_uniform_values逆対数一様分布。log(1/X)log(1/max)log(1/min) の間で一様分布する X を返します。
normal正規分布。戻り値は、平均 mu (デフォルト 0) 、標準偏差 sigma (デフォルト 1) の正規分布に従います。
q_normal量子化正規分布。Xnormal に従うとき、round(X / q) * q を返します。q のデフォルトは 1 です。
log_normal対数正規分布。自然対数 log(X) が平均 mu (デフォルト 0) 、標準偏差 sigma (デフォルト 1) の正規分布に従う値 X を返します。
q_log_normal量子化対数正規分布。Xlog_normal に従うとき、round(X / q) * q を返します。q のデフォルトは 1 です。

early_terminate

パフォーマンスの低い run を停止するには、早期終了 (early_terminate) を使用します。早期終了が発生すると、W&B は新しいハイパーパラメーター値のセットで新しい run を作成する前に、現在の run を停止します。
early_terminate を使用する場合は、停止アルゴリズムを指定する必要があります。sweep の設定では、type キーを early_terminate の中にネストしてください。

停止アルゴリズム

W&B は現在、Hyperband 停止アルゴリズムをサポートしています。
Hyperband ハイパーパラメーター最適化では、プログラムを停止すべきか、それとも brackets と呼ばれる 1 つ以上の事前設定された反復回数まで継続すべきかを評価します。 W&B run が bracket に到達すると、sweep はその run のメトリクスを、それまでに報告されたすべてのメトリクス値と比較します。目標が最小化の場合は run のメトリクス値が高すぎると run を終了し、目標が最大化の場合は run のメトリクス値が低すぎると run を終了します。 brackets は、ログされた反復回数に基づいて決まります。bracket の数は、最適化対象のメトリクスをログする回数に対応します。反復は steps、epochs、またはその中間に対応する場合があります。step カウンターの数値は bracket の計算には使用されません。
bracket スケジュールを作成するには、min_iter または max_iter のいずれかを指定します。
KeyDescription
min_iter最初の bracket の反復回数を指定します
max_iter反復の最大回数を指定します。
sbracket の総数を指定します (max_iter では必須)
etabracket の乗数スケジュールを指定します (デフォルト: 3) 。
strictrun を積極的に刈り込む ‘strict’ モードを有効にし、元の Hyperband paper により忠実に従います。デフォルトは false です。
Hyperband は数分ごとに、どのrunsを終了するかを確認します。run や反復が短い場合、終了した run の Timestamp は指定した brackets と異なることがあります。

command

command キー内のネストされた値を使って、形式と内容を変更できます。ファイル名などの固定コンポーネントを直接含めることもできます。
Unix システムでは、/usr/bin/env により、環境に応じて OS が適切な 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 の値に展開されます。 __