メインコンテンツへスキップ
ハイパーパラメーターの controller は、デフォルトでは Weights & Biases によってクラウドサービスとしてホストされています。 W&B の エージェント は controller と通信し、トレーニングに使用する次の パラメータ セットを決定します。また、controller は、どの Runs を停止できるかを判断するための早期終了アルゴリズムの実行も担当します。 ローカルコントローラの機能を使用すると、 ユーザー は検索および停止アルゴリズムをローカルで開始できます。ローカルコントローラを使用することで、 ユーザー はコードを検査およびインストルメントして問題をデバッグしたり、クラウドサービスに組み込むことができる新機能を開発したりすることが可能になります。
この機能は、 Sweeps ツールの新しいアルゴリズムのより迅速な開発とデバッグをサポートするために提供されています。実際のハイパーパラメーター最適化のワークロードを想定したものではありません。
始める前に、W&B SDK( wandb )をインストールする必要があります。コマンドラインに次の コードスニペット を入力してください。
pip install wandb sweeps 
以下の例では、設定ファイルとトレーニングループが Python スクリプト または Jupyter Notebook ですでに定義されていることを前提としています。設定ファイルの定義方法の詳細については、 Define sweep configuration を参照してください。

コマンドラインからローカルコントローラを実行する

W&B がクラウドサービスとしてホストするハイパーパラメーターコントローラを使用する場合と同様に、 sweep を初期化します。W&B の sweep ジョブにローカルコントローラを使用することを示すために、コントローラフラグ( --controller )を指定します。
wandb sweep --controller config.yaml
あるいは、 sweep の初期化とローカルコントローラの指定を 2 つのステップに分けることもできます。 ステップを分けるには、まず sweep の YAML 設定ファイルに次の キー と 値 を追加します。
controller:
  type: local
次に、 sweep を初期化します。
wandb sweep config.yaml
wandb sweep は sweep ID を生成します。 sweep を初期化した後、 wandb controller でコントローラを起動します。
wandb controller {user}/{entity}/{sweep_id}
ローカルコントローラの使用を指定したら、 sweep を実行するために 1 つ以上の Sweep エージェント を開始します。通常と同じ方法で W&B Sweep を開始します。詳細については、 Start sweep agents を参照してください。
wandb sweep sweep_ID

W&B Python SDK でローカルコントローラを実行する

以下の コードスニペット は、W&B Python SDK を使用してローカルコントローラを指定し、使用する方法を示しています。 Python SDK でコントローラを使用する最も簡単な方法は、 sweep ID を wandb.controller メソッド に渡すことです。次に、返された オブジェクト の run メソッド を使用して sweep ジョブを開始します。
sweep = wandb.controller(sweep_id)
sweep.run()
コントローラループをより詳細に制御したい場合:
import wandb

sweep = wandb.controller(sweep_id)
while not sweep.done():
    sweep.print_status()
    sweep.step()
    time.sleep(5)
あるいは、提供される パラメータ をさらに制御したい場合:
import wandb

sweep = wandb.controller(sweep_id)
while not sweep.done():
    params = sweep.search()
    sweep.schedule(params)
    sweep.print_status()
sweep のすべてを コード で指定したい場合は、次のように記述できます。
import wandb

sweep = wandb.controller()
sweep.configure_search("grid")
sweep.configure_program("train-dummy.py")
sweep.configure_controller(type="local")
sweep.configure_parameter("param1", value=3)
sweep.create()
sweep.run()