> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-sdk-testing-latest.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

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

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

ローカルコントローラー機能を使用すると、探索アルゴリズムと停止アルゴリズムをローカルで実行できます。ローカルコントローラーを使うことで、問題のデバッグや、クラウドサービスに組み込める新機能の開発に向けて、コードを調査・計測できます。

<Warning>
  この機能は、Sweeps 向けの新しいアルゴリズムをより迅速に開発およびデバッグできるようにするためのサポートとして提供されています。実運用のハイパーパラメーター最適化ワークロードを想定したものではありません。
</Warning>

開始する前に、W\&B SDK(`wandb`) をインストールする必要があります。次のコードスニペットをコマンドラインに入力してください。

```
pip install wandb sweeps 
```

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

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

通常どおり、W\&B のクラウドサービスで提供されるハイパーパラメーターコントローラーを使用する場合と同様に、sweep を初期化します。W\&B sweep ジョブでローカルコントローラーを使用することを示すには、controller フラグ (`controller`) を指定します：

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

あるいは、sweep の初期化とローカルコントローラーを使用する指定を、2 つの step に分けることもできます。

step を分けるには、まず sweep の YAML 設定ファイルに次のキーと値のペアを追加します。

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

次に、sweepを初期化します。

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

`wandb sweep` は sweep ID を生成します。sweep を初期化したら、[`wandb controller`](/ja/models/ref/python/functions/controller) でコントローラーを起動します。

```bash theme={null}
wandb controller {user}/{entity}/{sweep_id}
```

ローカルコントローラーを使用するように指定したら、sweep を実行するために 1 つ以上の Sweep エージェントを起動します。通常どおり W\&B Sweep を開始してください。詳細については、[Start sweep agents](/ja/models/sweeps/start-sweep-agents/) を参照してください。

```bash theme={null}
wandb sweep sweep_ID
```

<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) method に sweep ID を渡すことです。次に、返されたオブジェクトの `run` method を使用して 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)
```

あるいは、提供するパラメーターをさらに細かく制御することもできます。

```python theme={null}
import wandb

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

sweep を完全にコードだけで指定したい場合は、次のようにできます。

```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()
```
