メインコンテンツへスキップ
sweep configuration はネストされたキーと値のペアで構成されます。 sweep configuration 内のトップレベルキーを使用して、探索するパラメータ(parameter キー)、パラメータ空間を探索する方法(method キー)など、sweep 探索の特性を定義します。 以下の表は、トップレベルの sweep configuration キーとその簡単な説明をリストしたものです。各キーの詳細については、それぞれのセクションを参照してください。
トップレベルキー説明
program(必須) 実行するトレーニングスクリプト
entityこの sweep の Entity
projectこの sweep の Project
descriptionsweep のテキスト説明
nameW&B UI に表示される sweep の名前
method(必須) 探索戦略
metric最適化するメトリクス(特定の探索戦略と停止基準でのみ使用)
parameters(必須) 探索するパラメータの範囲
early_terminate早期終了の基準
commandトレーニングスクリプトを呼び出し、引数を渡すためのコマンド構造
run_capこの sweep の最大 Run 数
sweep configuration の構築方法の詳細については、 Sweep configuration の構造を参照してください。

metric

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

parameters

YAML ファイルまたは Python スクリプトで、parameters をトップレベルキーとして指定します。parameters キーの中に、最適化したいハイパーパラメーターの名前を指定します。一般的なハイパーパラメーターには、学習率、バッチサイズ、エポック、オプティマイザーなどがあります。sweep configuration で定義する各ハイパーパラメーターに対して、1 つ以上の探索制約を指定します。 以下の表は、サポートされているハイパーパラメーター探索制約を示しています。ハイパーパラメーターとユースケースに基づいて、以下の探索制約のいずれかを使用して、sweep agent にどこを(分布の場合)または何を(valuevalues など)探索または使用するかを指示します。
探索制約説明
valuesこのハイパーパラメーターのすべての有効な値を指定します。grid と互換性があります。
valueこのハイパーパラメーターの単一の有効な値を指定します。grid と互換性があります。
distribution確率 分布 を指定します。デフォルト値については、この表に続く注記を参照してください。
probabilitiesrandom を使用する際に、values の各要素を選択する確率を指定します。
min, max(int または float) 最大値と最小値。int の場合は int_uniform 分布、float の場合は 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 つの戦略から選択できます。 ハイパーパラメーターの値のすべての組み合わせを反復します。グリッド検索は、各反復で使用するハイパーパラメーターのセットについて、過去の試行に基づかない決定(uninformed decisions)を行います。グリッド検索は計算コストが高くなる可能性があります。 連続的な探索空間内を探索する場合、グリッド検索は永久に実行されます。 分布に基づいて、各反復でハイパーパラメーター値のランダムなセットを選択します。ランダム検索は、コマンドライン、Python スクリプト内、または W&B App からプロセスを停止しない限り、永久に実行されます。 ランダム検索(method: random)を選択した場合は、metric キーで分布空間を指定してください。 ランダム検索グリッド検索 とは対照的に、ベイズモデルは過去の試行に基づいた決定(informed decisions)を行います。ベイズ最適化は確率モデルを使用して、目的関数を評価する前にサロゲート関数上で値をテストする反復プロセスを通じて、どの値を使用するかを決定します。ベイズ探索は少数の連続パラメータに対してうまく機能しますが、スケール性は劣ります。ベイズ探索の詳細については、Bayesian Optimization Primer の論文 を参照してください。 ベイズ探索は、コマンドライン、Python スクリプト内、または W&B App からプロセスを停止しない限り、永久に実行されます。

ランダム検索とベイズ探索の分布オプション

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対数一様分布。自然対数が minmax の間で一様分布となるような、exp(min)exp(max) の間の値 X を返します。
log_uniform_values対数一様分布。log(X)log(min)log(max) の間で一様分布となるような、minmax の間の値 X を返します。
q_log_uniform量子化対数一様分布。round(X / q) * q を返します(Xlog_uniform)。q のデフォルトは 1 です。
q_log_uniform_values量子化対数一様分布。round(X / q) * q を返します(Xlog_uniform_values)。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量子化正規分布。round(X / q) * q を返します(Xnormal)。q のデフォルトは 1 です。
log_normal対数正規分布。自然対数 log(X) が平均 mu(デフォルト 0)、標準偏差 sigma(デフォルト 1)の正規分布に従うような値 X を返します。
q_log_normal量子化対数正規分布。round(X / q) * q を返します(Xlog_normal)。q のデフォルトは 1 です。

early_terminate

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

停止アルゴリズム

W&B は現在、Hyperband 停止アルゴリズムをサポートしています。
Hyperband ハイパーパラメーター最適化は、プログラムを停止すべきか、あるいは bracket と呼ばれる 1 つ以上のあらかじめ設定された反復回数で続行すべきかを評価します。 W&B の Run が bracket に到達すると、sweep はその 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 は数分に一度、終了すべき Runs をチェックします。Run や反復が短い場合、Run の終了タイムスタンプが指定した bracket と異なる場合があります。

command

command キー内のネストされた値を使用して、形式と内容を変更できます。ファイル名などの固定コンポーネントを直接含めることができます。
Unix システムでは、/usr/bin/env を使用することで、OS が環境に基づいて正しい Python インタープリタを選択するようにします。
W&B は、コマンドの可変コンポーネント用に以下のマクロをサポートしています。
コマンドマクロ説明
${env}Unix システムでは /usr/bin/env、Windows では省略されます。
${interpreter}python に展開されます。
${program}sweep configuration の program キーで指定されたトレーニングスクリプトのファイル名。
${args}--param1=value1 --param2=value2 という形式のハイパーパラメーターとその値。
${args_no_boolean_flags}--param1=value1 という形式のハイパーパラメーターとその値。ただし、boolean パラメータは True の場合は --boolean_flag_param 形式になり、False の場合は省略されます。
${args_no_hyphens}param1=value1 param2=value2 という形式のハイパーパラメーターとその値。
${args_json}JSON としてエンコードされたハイパーパラメーターとその値。
${args_json_file}JSON としてエンコードされたハイパーパラメーターとその値を含むファイルへのパス。
${envvar}環境変数を渡す方法。 ${envvar:MYENVVAR} は環境変数 MYENVVAR の値に展開されます。