メインコンテンツへスキップ
スイープ設定は、ネストされたキーと値のペアで構成されます。スイープ設定内のトップレベルのキーを使用して、スイープ検索の特性を定義します。例えば、検索するパラメータ(parameter キー)、パラメータ空間を検索するための方法論(method キー)などがあります。 以下のテーブルはトップレベルのスイープ設定キーとその簡単な説明を示しています。各キーについての詳細情報は、該当するセクションを参照してください。
トップレベルキー説明
program(必須)実行するトレーニングスクリプト
entityこのスイープのエンティティ
projectこのスイープのプロジェクト
descriptionスイープのテキスト説明
nameW&B UIに表示されるスイープの名前。
method(必須)検索戦略
metric最適化するメトリック(特定の検索戦略と停止基準でのみ使用)
parameters(必須)検索するパラメータの範囲
early_terminate任意の早期停止基準
commandトレーニングスクリプトに引数を渡して呼び出すためのコマンド構造
run_capこのスイープの最大 run 数
スイープ設定の構造については、スイープ設定の構造を参照してください。

metric

metric トップレベルスイープ設定キーを使用して、最適化するメトリックの名前、目標、そして対象のメトリックを指定します。
キー説明
name最適化するメトリックの名前。
goalminimize または maximize のいずれか(デフォルトは minimize)。
target最適化するメトリックの目標値。このスイープは、指定した目標値に run が到達した場合や到達する場合、新しい run を作成しません。アクティブなエージェントが run を実行中の場合(runがターゲットに到達した場合)、エージェントが新しい run を作成するのを停止する前に、run が完了するのを待ちます。

parameters

YAML ファイルまたは Python スクリプト内で、parameters をトップレベルキーとして指定します。parameters キーの中に、最適化したいハイパーパラメータの名前を提供します。一般的なハイパーパラメーターには、学習率、バッチサイズ、エポック数、オプティマイザーなどがあります。あなたのスイープ設定で定義された各ハイパーパラメータに対して、1つ以上の検索制約を指定します。 以下のテーブルは、サポートされているハイパーパラメータ検索制約を示しています。ハイパーパラメータとユースケースに基づいて、以下のサーチ制約のいずれかを使用して、スイープエージェントに検索する場所(分布の場合)または何を(valuevaluesなど)検索または使用するかを指示します。
検索制約説明
valuesこのハイパーパラメータのすべての有効な値を指定します。gridと互換性があります。
valueこのハイパーパラメータの単一の有効な値を指定します。gridと互換性があります。
distribution確率 分布 を指定します。この表の後の注記ではデフォルト値に関する情報について説明しています。
probabilitiesrandomを使用する際に、valuesのそれぞれの要素を選択する確率を指定します。
min, maxintまたはfloat)最大値と最小値。intの場合、int_uniform で分布されたハイパーパラメータ用。floatの場合、uniformで分布されたハイパーパラメータ用。
mu( float ) normal または lognormal で分布されたハイパーパラメータの平均パラメータ。
sigma( float ) normal または lognormal で分布されたハイパーパラメータの標準偏差パラメータ。
q( float ) 量子化されたハイパーパラメーターの量子化ステップサイズ。
parametersルートレベルのパラメーター内に他のパラメーターをネストします。
W&B は、distribution が指定されていない場合、以下の条件に基づいて以下の分布を設定します:
  • categoricalvaluesが指定された場合
  • int_uniformmaxminが整数として指定された場合
  • uniformmaxminが浮動小数点数として指定された場合
  • constantvalueにセットを提供した場合

method

methodキーを使用して、ハイパーパラメータ検索戦略を指定します。選択できるハイパーパラメーター検索戦略は、グリッド検索、ランダム検索、およびベイズ探索です。

グリッド検索

ハイパーパラメータのすべての組み合わせを反復します。グリッド検索は、各反復で使用するハイパーパラメータ値のセットに対して無知な決定を下します。グリッド検索は計算的に高コストになる可能性があります。 グリッド検索は、連続的な検索空間内を検索している場合、永遠に実行されます。

ランダム検索

分布に基づいて、各反復でランダムかつ無知なハイパーパラメータ値のセットを選択します。ランダム検索は、コマンドラインやあなたの python スクリプト、または W&B アプリUI でプロセスを停止しない限り、永遠に実行されます。 ランダム(method: random)検索を選択した場合、metricキーで分布空間を指定します。

ベイズ探索

ランダム検索グリッド検索とは対照的に、ベイズモデルを使用して情報に基づく決定を行います。ベイズ最適化は、確率モデルを使用して、代理関数の値をテストする反復プロセスを経て、どの値を使用するかを決定します。ベイズ探索は、少数の連続的なパラメータに対して効果的ですが、スケールがうまくいかないことがあります。ベイズ探索に関する詳細情報は、ベイズ最適化の入門書を参照してください。 ベイズ探索は、コマンドラインやあなたの python スクリプト、または W&B アプリUI でプロセスを停止しない限り、永遠に実行されます。

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

parameter キー内で、ハイパーパラメーターの名前をネストします。次に、distributionキーを指定し、値の分布を指定します。 以下のテーブルでは、W&B がサポートする分布を示しています。
distributionキーの値説明
constant定数分布。使用する定数値(value)を指定する必要があります。
categoricalカテゴリ分布。このハイパーパラメータのすべての有効な値(values)を指定する必要があります。
int_uniform整数上の離散一様分布。maxmin を整数として指定する必要があります。
uniform連続一様分布。maxmin を浮動小数点数として指定する必要があります。
q_uniform量子化一様分布。X が一様である場合、round(X / q) * q を返します。q はデフォルトで 1
log_uniform対数一様分布。exp(min)exp(max) の間で X を返し、自然対数が minmax の間で一様に分布。
log_uniform_values対数一様分布。minmax の間で X を返し、log(X)log(min)log(max) の間で一様に分布。
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逆対数一様分布。X を返し、log(1/X)minmax の間で一様に分布。
inv_log_uniform_values逆対数一様分布。X を返し、log(1/X)log(1/max)log(1/min) の間で一様に分布。
normal正規分布。返される値は平均 mu(デフォルト 0)と標準偏差 sigma(デフォルト 1)で通常に分布。
q_normal量子化正規分布。Xnormal である場合、round(X / q) * q を返します。q はデフォルトで 1
log_normal対数正規分布。X の自然対数 log(X) が平均 mu(デフォルト 0)と標準偏差 sigma(デフォルト 1)で通常に分布する値 X を返します。
q_log_normal量子化対数正規分布。Xlog_normal である場合、round(X / q) * q を返します。q はデフォルトで 1

early_terminate

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

停止アルゴリズム

W&B は現在 Hyperband 停止アルゴリズムをサポートしています。
Hyperband ハイパーパラメータ最適化は、プログラムが停止すべきか、先に進むべきかを、bracketsと呼ばれるあらかじめ設定されたイテレーション数で評価します。 W&B run が bracket に到達したとき、sweep はその run のメトリックを過去に報告されたすべてのメトリック値と比較します。run のメトリック値が高すぎる場合(目標が最小化の場合)、または run のメトリックが低すぎる場合(目標が最大化の場合)、sweep は run を終了します。 ベースの反復数に基づいて bracket が設定されます。bracket の数は、最適化するメトリックをログした回数に対応します。反復はステップ、エポック、またはその中間に対応することができます。ステップカウンタの数値は bracket 計算に使用されません。
bracket スケジュールを作成するには、min_iter または max_iter のいずれかを指定してください。
キー説明
min_iter最初の bracket の反復を指定
max_iter最大反復数を指定。
sbracket の合計数を指定( max_iter に必要)
etabracket 倍数スケジュールを指定(デフォルト: 3)。
strictより厳格にオリジナルの Hyperband 論文に従って run を厳しく削減する「strict」モードを有効にします。デフォルトでは false。
Hyperband は数分ごとに終了する W&B run を確認します。終了時刻は、run やイテレーションが短い場合、指定された bracket とは異なることがあります。

command

command キー内のネストされた値を使用して、形式と内容を修正できます。ファイル名などの固定コンポーネントを直接含めることができます。
Unix システムでは、/usr/bin/env は環境に基づいて OS が正しい Python インタープリターを選択することを保証します。
W&B は、コマンドの可変コンポーネントのために次のマクロをサポートしています:
コマンドマクロ説明
${env}Unix システムでは /usr/bin/env、Windows では省略されます。
${interpreter}python に展開されます。
${program}スイープ設定 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 環境変数の値に展開されます。 __
I