メインコンテンツへスキップ
sweep 設定は、入れ子になったキーと値のペアで構成されます。sweep 設定内のトップレベルキーを使用して、探索対象のパラメーター (parameters キー) や、パラメーター空間の探索手法 (method キー) など、sweep 検索の特性を定義します。 以下の表は、トップレベルの sweep 設定キーとその簡単な説明を示しています。各キーの詳細については、それぞれのセクションを参照してください。 詳細は、Define sweep configuration を参照してください。

metric

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

parameters

YAML ファイルまたは Python スクリプトで、トップレベルキーとして parameters を指定します。parameters キー内では、最適化したいハイパーパラメーターの名を指定します。一般的なハイパーパラメーターには、学習率、バッチサイズ、エポック数、オプティマイザーがあります。sweep 設定で定義する各ハイパーパラメーターには、1 つ以上の探索制約を指定します。 次の表は、サポートされるハイパーパラメーター探索の制約を示しています。ハイパーパラメーターやユースケースに応じて、以下のいずれかの探索制約を使用し、sweep エージェントに探索または使用する対象を指定します。分布を使う場合はどこを探索するか、valuevalues などを使う場合は何を使用するかを指定します。
分布を指定しない場合、W&B は以下の条件に基づいて次の分布を設定します。
  • values を指定した場合は categorical
  • maxmin を整数で指定した場合は int_uniform
  • maxmin を浮動小数点数で指定した場合は uniform
  • value を指定した場合は constant

method

method キーを使用して、ハイパーパラメーター探索の戦略を指定します。選択できる戦略は、grid、random、ベイズ探索の 3 つです。 グリッドサーチは、ハイパーパラメーター値のあらゆる組み合わせを順に試します。グリッドサーチでは、各反復で使用するハイパーパラメーター値の組み合わせを、過去の結果に基づかずに決定します。グリッドサーチは計算コストが高くなる場合があります。 連続的な探索空間を探索する場合、グリッドサーチは終了しません。 各反復で、分布に基づいて、事前情報を用いずにランダムなハイパーパラメーター値のセットを選択します。ランダムサーチは、コマンドライン、Python スクリプト内、または W&B App からプロセスを停止しない限り、実行され続けます。 ランダムサーチ (method: random) を選択する場合は、parameters キーで各ハイパーパラメーターの分布を指定します。 ランダム検索やグリッド検索とは異なり、ベイズモデルは情報に基づいて判断を行います。ベイズ最適化では、どの値を使用するかを確率モデルで決定します。このプロセスでは、目的関数を評価する前に、サロゲート関数上で値を試すことを反復的に行います。ベイズ探索は、少数の連続パラメーターには適していますが、スケーリング性能は高くありません。ベイズ探索の詳細については、Bayesian Optimization Primer paperを参照してください。 ベイズ探索は、コマンドラインから、Pythonスクリプト内で、または W&B App からプロセスを停止しない限り、実行され続けます。 parameters キーの中に、ハイパーパラメーターの名をネストします。次に、distribution キーを指定し、その値の分布を指定します。 次の表に、W&B がサポートする分布を示します。

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 のいずれかを指定します。
Hyperband は数分ごとに、どのrunsを終了するかを確認します。run や反復が短い場合、終了した run の Timestamp は指定した brackets と異なることがあります。

command

sweep エージェント がトレーニングスクリプトをどのように呼び出し、どのように引数を渡すかを制御するには、トップレベルの command キーを使用します。command キー内のネストされた値を使って、形式と内容を変更できます。ファイル名などの固定コンポーネントを直接含めることもできます。
Unix システムでは、/usr/bin/env により、環境に応じて OS が適切な Python インタープリターを選択します。
W&B は、コマンドの可変コンポーネントに対して次のマクロをサポートします。