parameters キー) や、パラメーター空間の探索手法 (method キー) など、sweep 検索の特性を定義します。
以下の表は、トップレベルの sweep 設定キーとその簡単な説明を示しています。各キーの詳細については、それぞれのセクションを参照してください。
詳細は、Define sweep configuration を参照してください。
metric
metric のトップレベルキーを使用して、最適化するメトリクスの名、目標、およびターゲット値を指定します。
parameters
YAML ファイルまたは Python スクリプトで、トップレベルキーとして parameters を指定します。parameters キー内では、最適化したいハイパーパラメーターの名を指定します。一般的なハイパーパラメーターには、学習率、バッチサイズ、エポック数、オプティマイザーがあります。sweep 設定で定義する各ハイパーパラメーターには、1 つ以上の探索制約を指定します。
次の表は、サポートされるハイパーパラメーター探索の制約を示しています。ハイパーパラメーターやユースケースに応じて、以下のいずれかの探索制約を使用し、sweep エージェントに探索または使用する対象を指定します。分布を使う場合はどこを探索するか、value や values などを使う場合は何を使用するかを指定します。
分布を指定しない場合、W&B は以下の条件に基づいて次の分布を設定します。
valuesを指定した場合はcategoricalmaxとminを整数で指定した場合はint_uniformmaxとminを浮動小数点数で指定した場合はuniformvalueを指定した場合は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 停止アルゴリズムをサポートしています。
bracket スケジュールを作成するには、
min_iter または max_iter のいずれかを指定します。Hyperband は数分ごとに、どのrunsを終了するかを確認します。run や反復が短い場合、終了した run の Timestamp は指定した brackets と異なることがあります。
command
sweep エージェント がトレーニングスクリプトをどのように呼び出し、どのように引数を渡すかを制御するには、トップレベルの command キーを使用します。command キー内のネストされた値を使って、形式と内容を変更できます。ファイル名などの固定コンポーネントを直接含めることもできます。
Unix システムでは、
/usr/bin/env により、環境に応じて OS が適切な Python インタープリターを選択します。