parameters キー) やパラメーター空間の探索手法 (method キー) など、sweep の探索方法を定義します。
次の表は、sweep 設定のトップレベルキーとその概要を示しています。各キーの詳細については、それぞれのセクションを参照してください。
詳細は、sweep 設定を定義するを参照してください。
metric
sweep 設定のトップレベルキー metric を使用して、最適化するメトリクスの名前、目標、およびターゲットメトリクスを指定します。
parameters
YAML ファイルまたは Python スクリプトで、parameters をトップレベルのキーとして指定します。parameters キーの中には、最適化するハイパーパラメーターの名前を指定します。代表的なハイパーパラメーターには、学習率、バッチサイズ、エポック数、オプティマイザーなどがあります。sweep 設定で定義するハイパーパラメーターごとに、1 つ以上の探索制約を指定してください。
次の表に、サポートされるハイパーパラメーター探索制約を示します。ハイパーパラメーターとユースケースに応じて以下のいずれかの探索制約を使用し、探索または使用する範囲 (分布の場合) や値 (value や values など) を sweep エージェントに指示します。
分布を指定しない場合、W&B は次の条件に基づいて分布を設定します。
valuesを指定した場合はcategoricalmaxとminを整数で指定した場合はint_uniformmaxとminを浮動小数点数で指定した場合はuniformvalueを指定した場合はconstant
method
method キーでハイパーパラメーター探索の戦略を指定します。戦略は、グリッドサーチ、ランダムサーチ、ベイズ探索の 3 種類から選択できます。
グリッドサーチ
グリッドサーチは、ハイパーパラメーター値のすべての組み合わせを順に試行します。各反復処理で使用するハイパーパラメーター値のセットは、過去の結果を考慮せずに決定されます。グリッドサーチは計算コストが高くなる場合があります。 連続的な探索空間を探索する場合、グリッドサーチは終了せずに実行され続けます。ランダムサーチ
ランダムサーチでは、各反復処理で分布に基づき、過去の結果を考慮せずにハイパーパラメーター値の組み合わせをランダムに選択します。ランダムサーチは、コマンドライン、Python スクリプト内、または W&B アプリ からプロセスを停止しない限り、無期限に実行されます。 ランダムサーチ (method: random) を選択する場合は、parameters キーで各ハイパーパラメーターの分布を指定してください。
ベイズ探索
ランダムサーチやグリッドサーチとは異なり、ベイズモデルはそれまでの結果を踏まえて判断を行います。ベイズ最適化では、確率モデルを使用して次に試す値を決定します。このプロセスでは、目的関数を評価する前に、代理関数 (サロゲート関数) 上で値を反復的にテストします。ベイズ探索は連続パラメーターの数が少ない場合に効果的ですが、スケーラビリティは高くありません。ベイズ探索の詳細については、論文「Bayesian Optimization Primer」を参照してください。 ベイズ探索は、コマンドライン、Python スクリプト内、または W&B アプリ からプロセスを停止しない限り、実行され続けます。ランダムサーチとベイズ探索の分布オプション
parameters キーの中にハイパーパラメーター名をネストします。次に、distribution キーを指定し、値の分布を設定します。
次の表は、W&B がサポートする分布の一覧です。
early_terminate
パフォーマンスの低い run を停止するには、早期終了 (early_terminate) を使用します。早期終了が発生すると、W&B は現在の run を停止してから、新しいハイパーパラメーター値のセットで新しい run を作成します。
early_terminate を使用する場合は、停止アルゴリズムを指定する必要があります。sweep 設定で、early_terminate の下に type キーをネストしてください。停止アルゴリズム
W&B は Hyperband 停止アルゴリズムをサポートしています。
bracket スケジュールを作成するには、
min_iter または max_iter のいずれかを指定してください。Hyperband は、終了すべき run を数分ごとに確認します。そのため、run や反復処理が短い場合、run が終了するタイムスタンプが指定した brackets とずれることがあります。
command
command トップレベルキーを使用すると、sweep エージェントがトレーニングスクリプトを呼び出す方法と、スクリプトに引数を渡す方法を制御できます。形式と内容は、command キー内にネストした値で変更します。ファイル名などの固定部分は直接記述できます。
Unix システムでは、
/usr/bin/env を使用することで、OS が環境に応じて適切な Python インタープリターを選択します。