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

> W&B のクラウドホスト型サービスを使用する代わりに、検索アルゴリズムと停止アルゴリズムをローカルで実行します。

# アルゴリズムをローカルで管理する

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

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

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

<Warning>
  この機能は、Sweeps ツール向けの新しいアルゴリズムをすばやく開発およびデバッグするためのものです。ハイパーパラメーター最適化のワークロードには適していません。
</Warning>

<div id="prerequisites">
  ## 前提条件
</div>

ローカルコントローラーのコマンドを利用できるように、W\&B SDK (`wandb`) をインストールしてください。

```bash theme={null}
pip install wandb sweeps
```

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

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

W\&B がクラウドサービスとして提供するハイパーパラメーターコントローラーを使用する場合と同じ方法で sweep を初期化しますが、ローカルコントローラーを使用するには `--controller` フラグを指定します。

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

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

2. `wandb sweep` で生成された sweep ID を確認し、コントローラーを起動します。`[SWEEP-ID]` は sweep ID に置き換えてください。短い sweep ID だけを指定することも、entity と project を含むパス (`[ENTITY]/[PROJECT]/[SWEEP-ID]`) を指定することもできます。

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

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

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

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

または、設定ファイルにコントローラーを追加しておくと、sweep を初期化するたびに `--controller` を指定する必要がなくなります。

```yaml theme={null}
controller:
  type: local
```

次に、フラグを付けずに sweep を初期化し、手順 2 と 3 に進みます。

```bash theme={null}
wandb sweep config.yaml
```

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

次のコードスニペットでは、W\&B Python SDK でローカル コントローラーを指定して使用する方法を示します。各例では段階的に制御の自由度が高くなるため、探索やスケジューリングをどの程度カスタマイズする必要があるかに応じて、適切な方法を選択できます。

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

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

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

```python theme={null}
import wandb

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

割り当てるパラメーターをさらに細かく制御するには、`search` と `schedule` を直接呼び出します：

```python theme={null}
import wandb

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

YAML の設定ファイルではなく、sweep のすべてをコードで指定するには、Python で search、program、コントローラー、パラメーターを設定します。

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