このページでは、W&B のクラウドホスト型コントローラーを使用せずに、sweep の探索アルゴリズムと停止アルゴリズムをローカルで実行する方法を説明します。ローカルコントローラーを使用すると、コードを調査してインストルメントし、問題をデバッグしたり、後でクラウドホスト型コントローラーに組み込める新しいアルゴリズムを開発したりできます。
デフォルトでは、W&B はハイパーパラメーターコントローラーをクラウドサービスとしてホストします。W&B エージェントはコントローラーと通信し、トレーニングに使用する次のパラメーターの組み合わせを決定します。コントローラーは早期停止アルゴリズムも実行し、停止する run を決定します。
ローカルコントローラー機能を使用すると、探索アルゴリズムと停止アルゴリズムをローカルで実行できます。
この機能は、Sweeps ツール向けの新しいアルゴリズムの開発とデバッグを迅速に行えるようサポートします。ハイパーパラメーター最適化のワークロードには適していません。
前提条件
ローカルのコントローラーコマンドを使用できるように、W&B SDK (wandb) をインストールします:
以下の例では、設定ファイルと、Python スクリプトまたは Jupyter ノートブックで定義したトレーニングループがすでに用意されていることを前提としています。詳細については、sweep 設定を定義するを参照してください。
コマンドラインからローカルコントローラーを実行する
sweep の初期化手順は、W&B がクラウドサービスとしてホストするハイパーパラメーターコントローラーを使用する場合と同じです。ただし、ローカルコントローラーを使用するには --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 でコントローラーを使用するには、sweep ID を wandb.controller() メソッドに渡し、返されたオブジェクトの run メソッドを呼び出して sweep ジョブを開始します:
コントローラーループをより細かく制御するには、自分でステップごとに実行してください。
提供されるパラメーターをさらに細かく制御するには、search と schedule を直接呼び出します。
YAML 設定ファイルではなく、コードのみで sweep を定義するには、Python で探索、プログラム、コントローラー、パラメーターを設定します。