スイープ設定は、ネストされたキーと値のペアで構成されます。スイープ設定内のトップレベルのキーを使用して、スイープ検索の特性を定義します。例えば、検索するパラメータ(parameter キー)、パラメータ空間を検索するための方法論(method キー)などがあります。
以下のテーブルはトップレベルのスイープ設定キーとその簡単な説明を示しています。各キーについての詳細情報は、該当するセクションを参照してください。
| トップレベルキー | 説明 | 
|---|
| program | (必須)実行するトレーニングスクリプト | 
| entity | このスイープのエンティティ | 
| project | このスイープのプロジェクト | 
| description | スイープのテキスト説明 | 
| name | W&B UIに表示されるスイープの名前。 | 
| method | (必須)検索戦略 | 
| metric | 最適化するメトリック(特定の検索戦略と停止基準でのみ使用) | 
| parameters | (必須)検索するパラメータの範囲 | 
| early_terminate | 任意の早期停止基準 | 
| command | トレーニングスクリプトに引数を渡して呼び出すためのコマンド構造 | 
| run_cap | このスイープの最大 run 数 | 
metric
metric トップレベルスイープ設定キーを使用して、最適化するメトリックの名前、目標、そして対象のメトリックを指定します。
| キー | 説明 | 
|---|
| name | 最適化するメトリックの名前。 | 
| goal | minimizeまたはmaximizeのいずれか(デフォルトはminimize)。 | 
| target | 最適化するメトリックの目標値。このスイープは、指定した目標値に run が到達した場合や到達する場合、新しい run を作成しません。アクティブなエージェントが run を実行中の場合(runがターゲットに到達した場合)、エージェントが新しい run を作成するのを停止する前に、run が完了するのを待ちます。 | 
parameters
YAML ファイルまたは Python スクリプト内で、parameters をトップレベルキーとして指定します。parameters キーの中に、最適化したいハイパーパラメータの名前を提供します。一般的なハイパーパラメーターには、学習率、バッチサイズ、エポック数、オプティマイザーなどがあります。あなたのスイープ設定で定義された各ハイパーパラメータに対して、1つ以上の検索制約を指定します。
以下のテーブルは、サポートされているハイパーパラメータ検索制約を示しています。ハイパーパラメータとユースケースに基づいて、以下のサーチ制約のいずれかを使用して、スイープエージェントに検索する場所(分布の場合)または何を(value、valuesなど)検索または使用するかを指示します。
| 検索制約 | 説明 | 
|---|
| values | このハイパーパラメータのすべての有効な値を指定します。 gridと互換性があります。 | 
| value | このハイパーパラメータの単一の有効な値を指定します。 gridと互換性があります。 | 
| distribution | 確率 分布 を指定します。この表の後の注記ではデフォルト値に関する情報について説明しています。 | 
| probabilities | randomを使用する際に、valuesのそれぞれの要素を選択する確率を指定します。 | 
| min,max | ( intまたはfloat)最大値と最小値。intの場合、int_uniformで分布されたハイパーパラメータ用。floatの場合、uniformで分布されたハイパーパラメータ用。 | 
| mu | ( float)normalまたはlognormalで分布されたハイパーパラメータの平均パラメータ。 | 
| sigma | ( float)normalまたはlognormalで分布されたハイパーパラメータの標準偏差パラメータ。 | 
| q | ( float) 量子化されたハイパーパラメーターの量子化ステップサイズ。 | 
| parameters | ルートレベルのパラメーター内に他のパラメーターをネストします。 | 
W&B は、distribution が指定されていない場合、以下の条件に基づいて以下の分布を設定します:
- categorical:- valuesが指定された場合
- int_uniform:- maxと- minが整数として指定された場合
- uniform:- maxと- minが浮動小数点数として指定された場合
- constant:- valueにセットを提供した場合
 method
methodキーを使用して、ハイパーパラメータ検索戦略を指定します。選択できるハイパーパラメーター検索戦略は、グリッド検索、ランダム検索、およびベイズ探索です。
グリッド検索
ハイパーパラメータのすべての組み合わせを反復します。グリッド検索は、各反復で使用するハイパーパラメータ値のセットに対して無知な決定を下します。グリッド検索は計算的に高コストになる可能性があります。
グリッド検索は、連続的な検索空間内を検索している場合、永遠に実行されます。
ランダム検索
分布に基づいて、各反復でランダムかつ無知なハイパーパラメータ値のセットを選択します。ランダム検索は、コマンドラインやあなたの python スクリプト、または W&B アプリUI でプロセスを停止しない限り、永遠に実行されます。
ランダム(method: random)検索を選択した場合、metricキーで分布空間を指定します。
ベイズ探索
ランダム検索とグリッド検索とは対照的に、ベイズモデルを使用して情報に基づく決定を行います。ベイズ最適化は、確率モデルを使用して、代理関数の値をテストする反復プロセスを経て、どの値を使用するかを決定します。ベイズ探索は、少数の連続的なパラメータに対して効果的ですが、スケールがうまくいかないことがあります。ベイズ探索に関する詳細情報は、ベイズ最適化の入門書を参照してください。
ベイズ探索は、コマンドラインやあなたの python スクリプト、または W&B アプリUI でプロセスを停止しない限り、永遠に実行されます。
ランダムおよびベイズ探索の分布オプション
parameter キー内で、ハイパーパラメーターの名前をネストします。次に、distributionキーを指定し、値の分布を指定します。
以下のテーブルでは、W&B がサポートする分布を示しています。
| distributionキーの値 | 説明 | 
|---|
| constant | 定数分布。使用する定数値( value)を指定する必要があります。 | 
| categorical | カテゴリ分布。このハイパーパラメータのすべての有効な値( values)を指定する必要があります。 | 
| int_uniform | 整数上の離散一様分布。 maxとminを整数として指定する必要があります。 | 
| uniform | 連続一様分布。 maxとminを浮動小数点数として指定する必要があります。 | 
| q_uniform | 量子化一様分布。 Xが一様である場合、round(X / q) * qを返します。qはデフォルトで1。 | 
| log_uniform | 対数一様分布。 exp(min)とexp(max)の間でXを返し、自然対数がminとmaxの間で一様に分布。 | 
| log_uniform_values | 対数一様分布。 minとmaxの間でXを返し、log(X)がlog(min)とlog(max)の間で一様に分布。 | 
| q_log_uniform | 量子化対数一様分布。 Xがlog_uniformである場合、round(X / q) * qを返します。qはデフォルトで1。 | 
| q_log_uniform_values | 量子化対数一様分布。 Xがlog_uniform_valuesである場合、round(X / q) * qを返します。qはデフォルトで1。 | 
| inv_log_uniform | 逆対数一様分布。 Xを返し、log(1/X)がminとmaxの間で一様に分布。 | 
| inv_log_uniform_values | 逆対数一様分布。 Xを返し、log(1/X)がlog(1/max)とlog(1/min)の間で一様に分布。 | 
| normal | 正規分布。返される値は平均 mu(デフォルト0)と標準偏差sigma(デフォルト1)で通常に分布。 | 
| q_normal | 量子化正規分布。 Xがnormalである場合、round(X / q) * qを返します。qはデフォルトで1。 | 
| log_normal | 対数正規分布。 Xの自然対数log(X)が平均mu(デフォルト0)と標準偏差sigma(デフォルト1)で通常に分布する値Xを返します。 | 
| q_log_normal | 量子化対数正規分布。 Xがlog_normalである場合、round(X / q) * qを返します。qはデフォルトで1。 | 
early_terminate
実行のパフォーマンスが悪い場合に停止させるために早期終了(early_terminate)を使用します。早期終了が発生した場合、W&B は現在の run を停止し、新しいハイパーパラメータの値のセットで新しい run を作成します。
early_terminate を使用する場合、停止アルゴリズムを指定する必要があります。スイープ設定内で early_terminate 内に type キーをネストします。
停止アルゴリズム
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 | 最大反復数を指定。 | 
| s | bracket の合計数を指定( max_iterに必要) | 
| eta | bracket 倍数スケジュールを指定(デフォルト: 3)。 | 
| strict | より厳格にオリジナルの Hyperband 論文に従って run を厳しく削減する「strict」モードを有効にします。デフォルトでは false。 | 
Hyperband は数分ごとに終了する W&B run を確認します。終了時刻は、run やイテレーションが短い場合、指定された bracket とは異なることがあります。 command
command キー内のネストされた値を使用して、形式と内容を修正できます。ファイル名などの固定コンポーネントを直接含めることができます。
Unix システムでは、/usr/bin/env は環境に基づいて OS が正しい Python インタープリターを選択することを保証します。
| コマンドマクロ | 説明 | 
|---|
| ${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 環境変数の値に展開されます。 __ |