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

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

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

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

ローカルコントローラの機能を使用すると、 ユーザー は検索および停止アルゴリズムをローカルで開始できます。ローカルコントローラを使用することで、 ユーザー はコードを検査およびインストルメントして問題をデバッグしたり、クラウドサービスに組み込むことができる新機能を開発したりすることが可能になります。

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

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

```
pip install wandb sweeps 
```

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

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

W\&B がクラウドサービスとしてホストするハイパーパラメーターコントローラを使用する場合と同様に、 sweep を初期化します。W\&B の sweep ジョブにローカルコントローラを使用することを示すために、コントローラフラグ（ `--controller` ）を指定します。

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

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

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

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

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

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

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

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

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

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

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

以下の コードスニペット は、W\&B Python SDK を使用してローカルコントローラを指定し、使用する方法を示しています。

Python SDK でコントローラを使用する最も簡単な方法は、 sweep ID を [`wandb.controller`](/models/ref/python/functions/controller) メソッド に渡すことです。次に、返された オブジェクト の `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)
```

あるいは、提供される パラメータ をさらに制御したい場合：

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