> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

> Search and stop algorithms locally instead of using the W&B cloud-hosted service.

# Manage algorithms locally

このページでは、W\&B のクラウドホスト型コントローラーを使用せずに、sweep の探索アルゴリズムと停止アルゴリズムをローカルで実行する方法を説明します。ローカルコントローラーを使用すると、コードを調査してインストルメントし、問題をデバッグしたり、後でクラウドホスト型コントローラーに組み込める新しいアルゴリズムを開発したりできます。

デフォルトでは、W\&B はハイパーパラメーターコントローラーをクラウドサービスとしてホストします。W\&B エージェントはコントローラーと通信し、トレーニングに使用する次のパラメーターの組み合わせを決定します。コントローラーは早期停止アルゴリズムも実行し、停止する run を決定します。

ローカルコントローラー機能を使用すると、探索アルゴリズムと停止アルゴリズムをローカルで実行できます。

<Warning>
  この機能は、Sweeps ツール向けの新しいアルゴリズムの開発とデバッグを迅速に行えるようサポートします。ハイパーパラメーター最適化のワークロードには適していません。
</Warning>

<h2 id="prerequisites">
  前提条件
</h2>

ローカルのコントローラーコマンドを使用できるように、W\&B SDK (`wandb`) をインストールします：

```bash theme={"system"}
pip install wandb sweeps
```

以下の例では、設定ファイルと、Python スクリプトまたは Jupyter ノートブックで定義したトレーニングループがすでに用意されていることを前提としています。詳細については、[sweep 設定を定義する](/ja/products/wandb/sweeps/define-sweep-configuration)を参照してください。

<h2 id="run-a-local-controller-from-the-command-line">
  コマンドラインからローカルコントローラーを実行する
</h2>

sweep の初期化手順は、W\&B がクラウドサービスとしてホストするハイパーパラメーターコントローラーを使用する場合と同じです。ただし、ローカルコントローラーを使用するには `--controller` フラグを渡します。

1. `--controller` フラグを指定して sweep を初期化します。

   ```bash theme={"system"}
   wandb sweep --controller config.yaml
   ```

2. `wandb sweep` が生成した sweep ID を控えてから、コントローラーを起動します。`[SWEEP-ID]` は sweep ID に置き換えてください。短い sweep ID のみを渡すことも、entity と project を含むパス (`[ENTITY]/[PROJECT]/[SWEEP-ID]`) として渡すこともできます。

   ```bash theme={"system"}
   wandb controller [SWEEP-ID]
   ```

3. 1 つ以上の sweep エージェントを起動して sweep を実行します。`[SWEEP-ID]` は sweep ID に置き換えてください。

   ```bash theme={"system"}
   wandb agent [SWEEP-ID]
   ```

   詳細については、[sweep エージェントを起動する](/ja/products/wandb/sweeps/start-sweep-agents)を参照してください。

また、設定ファイルにコントローラーを追加しておけば、sweep を初期化するたびに `--controller` を渡す必要はありません。

```yaml theme={"system"}
controller:
  type: local
```

その後、フラグを付けずに sweep を初期化し、ステップ 2 と 3 に進みます。

```bash theme={"system"}
wandb sweep config.yaml
```

<h2 id="run-a-local-controller-with-wb-python-sdk">
  W\&B Python SDK でローカルコントローラーを実行する
</h2>

以下のコードスニペットは、W\&B Python SDK でローカルコントローラーを指定して使用する方法を示しています。例ごとに制御できる範囲が広がるため、検索とスケジューリングをどの程度カスタマイズする必要があるかに応じて、適切な方法を選択できます。

Python SDK でコントローラーを使用するには、sweep ID を [`wandb.controller()`](/ja/products/wandb/ref/python/functions/controller) メソッドに渡し、返されたオブジェクトの `run` メソッドを呼び出して sweep ジョブを開始します：

```python theme={"system"}
sweep = wandb.controller(sweep_id)
sweep.run()
```

コントローラーループをより細かく制御するには、自分でステップごとに実行してください。

```python theme={"system"}
import wandb

sweep = wandb.controller(sweep_id)
while not sweep.done():
    sweep.print_status()
    sweep.step()
    time.sleep(5)
```

提供されるパラメーターをさらに細かく制御するには、`search` と `schedule` を直接呼び出します。

```python theme={"system"}
import wandb

sweep = wandb.controller(sweep_id)
while not sweep.done():
    params = sweep.search()
    sweep.schedule(params)
    sweep.print_status()
```

YAML 設定ファイルではなく、コードのみで sweep を定義するには、Python で探索、プログラム、コントローラー、パラメーターを設定します。

```python theme={"system"}
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()
```
