このページでは、W&B のクラウドホスト型コントローラーを使用する代わりに、sweep の検索アルゴリズムと停止アルゴリズムをローカルで実行する方法を説明します。ローカルコントローラーを使用すると、コードを調査してインストルメントし、問題をデバッグしたり、後でクラウドホスト型コントローラーに組み込める新しいアルゴリズムを開発したりできます。
デフォルトでは、W&B はハイパーパラメーターコントローラーをクラウドサービスとしてホストしています。W&B エージェントはコントローラーと通信し、トレーニングに使用する次のパラメーターセットを決定します。コントローラーは、どの Runs を停止するかを判断する早期停止アルゴリズムも実行します。
ローカルコントローラー機能を使用すると、検索アルゴリズムと停止アルゴリズムをローカルで実行できます。
この機能は、Sweeps ツール向けの新しいアルゴリズムをすばやく開発およびデバッグするためのものです。ハイパーパラメーター最適化のワークロードには適していません。
ローカルコントローラーのコマンドを利用できるように、W&B SDK (wandb) をインストールしてください。
以下の例では、PythonスクリプトまたはJupyter Notebook内で、設定ファイルとトレーニングループがすでに定義されていることを前提としています。詳細は、sweepの設定を定義するを参照してください。
コマンドラインからローカルコントローラーを実行する
W&B がクラウドサービスとして提供するハイパーパラメーターコントローラーを使用する場合と同じ方法で sweep を初期化しますが、ローカルコントローラーを使用するには --controller フラグを指定します。
-
--controller フラグを付けて sweep を初期化します。
-
wandb sweep で生成された sweep ID を確認し、コントローラーを起動します。[SWEEP-ID] は sweep ID に置き換えてください。短い sweep ID だけを指定することも、entity と project を含むパス ([ENTITY]/[PROJECT]/[SWEEP-ID]) を指定することもできます。
-
1 つ以上の sweep エージェントを起動して、sweep を実行します。
[SWEEP-ID] は sweep ID に置き換えてください。
詳細は、sweep エージェントを起動する を参照してください。
または、設定ファイルにコントローラーを追加しておくと、sweep を初期化するたびに --controller を指定する必要がなくなります。
次に、フラグを付けずに sweep を初期化し、手順 2 と 3 に進みます。
W&B Python SDK でローカル コントローラーを実行する
次のコードスニペットでは、W&B Python SDK でローカル コントローラーを指定して使用する方法を示します。各例では段階的に制御の自由度が高くなるため、探索やスケジューリングをどの程度カスタマイズする必要があるかに応じて、適切な方法を選択できます。
Python SDK でコントローラーを使用するには、wandb.controller() メソッドに sweep ID を渡し、返されたオブジェクトの run メソッドを呼び出して sweep ジョブを開始します。
コントローラーループをより細かく制御するには、自分でステップごとに実行します。
割り当てるパラメーターをさらに細かく制御するには、search と schedule を直接呼び出します:
YAML の設定ファイルではなく、sweep のすべてをコードで指定するには、Python で search、program、コントローラー、パラメーターを設定します。