> ## 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.

> 1 台以上のマシンで sweep エージェントを開始または停止します。

# sweep エージェントを開始する

このページでは、W\&B がハイパーパラメーター探索を実行できるように、1 台以上のマシンで sweep エージェントを開始する方法を説明します。sweep エージェントは、[sweep を初期化](/ja/models/sweeps/initialize-sweeps)するときに定義した sweep 設定を使用して、さまざまなハイパーパラメーターの組み合わせを探索します。W\&B は、sweep エージェントが実行するハイパーパラメーターの組み合わせごとに、新しい run を作成します。

実行中の sweep エージェントを一時停止、再開、停止、またはキャンセルする方法については、[sweep の管理](/ja/models/sweeps/pause-resume-and-cancel-sweeps)を参照してください。

続行する前に、次の作業を行ってください。

* トレーニング スクリプトを設定し、W\&B でハイパーパラメーターの組み合わせを作成してトラッキングできるようにします。例については、[コードに W\&B を追加する](/ja/models/sweeps/add-w-and-b-to-your-code#python-script-or-notebook)を参照してください。
* sweep 用の[設定ファイル](/ja/models/sweeps/define-sweep-configuration)を定義します。

以下の例では、W\&B CLI または Python から sweep エージェントを開始する方法を示します。sweep を初期化したときに W\&B から返される sweep ID が必要です。短い sweep ID は単独で使用することもできます (例: `dtzl1o7u`) 。また、entity と project をパスとして含めることもできます。

```bash theme={null}
entity/project/sweep_ID
```

以下を指定します。

* `entity`: ご自身の W\&B ユーザー名またはチーム名。
* `project`: W\&B が run の出力を保存する project の名前です。project を指定しない場合、W\&B は run を "Uncategorized" という project に保存します。
* `sweep_ID`: W\&B が生成する疑似ランダムな一意の ID です。

<Tabs>
  <Tab title="CLI">
    sweep を開始するには、`wandb agent` コマンドを使用します。sweep を初期化したときに W\&B から返される sweep ID を指定してください。

    次のコマンドの `[SWEEP-ID]` を、ご自身の sweep ID に置き換えてください。

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

    エージェントを中断したとき (たとえば `Ctrl+C`) に安全にシャットダウンするには、`wandb agent --forward-signals [SWEEP-ID]` を使用してください。これにより、現在の run がシグナルを受け取り、正常に終了できます。詳しくは、[Signal handling and sweep runs](/ja/models/sweeps/signal-handling-sweep-runs) を参照してください。
  </Tab>

  <Tab title="Python script or notebook">
    sweep を開始するには、[`wandb.agent()`](/ja/models/ref/python/functions/agent) を使用します。sweep を初期化したときに W\&B から返される sweep ID と、トレーニングスクリプトのエントリポイントとなる関数名を指定してください。

    次のコードでは、`[SWEEP-ID]` をご自身の sweep ID に、`[FUNCTION-NAME]` をトレーニング関数名に置き換えてください。

    ```python theme={null}
    wandb.agent(sweep_id="[SWEEP-ID]", function="[FUNCTION-NAME]")
    ```

    W\&B でエージェントからトレーニング run へのシグナル転送がサポートされるのは、CLI (`wandb agent --forward-signals`) を使用する場合のみです。Python の `wandb.agent()` では、トレーニング関数が child process ではなくスレッド内で実行されるため、シグナル転送はサポートされていません。

    この方法を使用する場合のトレーニングスクリプトの設定例については、「Add W\&B to your code」の [Python script or notebook tab](/ja/models/sweeps/add-w-and-b-to-your-code#python-script-or-notebook) を参照してください。

    <Warning>
      **マルチプロセッシング**

      Python 標準ライブラリの `multiprocessing` または PyTorch の `pytorch.multiprocessing` パッケージを使用する場合は、`wandb.agent()` と `wandb.sweep()` の Call を `if __name__ == '__main__':` でラップする必要があります。例:

      ```python theme={null}
      if __name__ == '__main__':
          wandb.agent(sweep_id="[SWEEP-ID]", function="[FUNCTION]", count="[COUNT]")
      ```

      この慣例でコードをラップすると、Python はスクリプトを直接実行した場合にのみそのコードを実行し、ワーカープロセスがモジュールとして import したときには実行しません。

      マルチプロセッシングの詳細については、[Python 標準ライブラリ `multiprocessing`](https://docs.python.org/3/library/multiprocessing.html#the-spawn-and-forkserver-start-methods) または [PyTorch `multiprocessing`](https://docs.pytorch.org/docs/stable/notes/multiprocessing.html#asynchronous-multiprocess-training-e-g-hogwild) を参照してください。`if __name__ == '__main__':` の慣例の詳細については、[Python で main 関数を定義する](https://realpython.com/if-name-main-python/) を参照してください。
    </Warning>
  </Tab>
</Tabs>

<div id="limit-the-number-of-runs-a-sweep-agent-tries">
  ## sweep エージェントが試行する Runs の数を制限する
</div>

デフォルトでは、ランダム探索とベイズ探索は無期限に実行されるため、エージェントが試行する Runs の数に上限を設定してください。sweep エージェントが試行する Runs の数を指定することで、処理量を制限できます。以下のコード スニペットでは、CLI と Jupyter ノートブックまたは Python script 内で [Runs](/ja/models/ref/python/experiments/run) の最大数を設定する方法を示します。

<Warning>
  ランダム探索とベイズ探索は無期限に実行されます。run 数を設定しない場合は、コマンドライン、Python script 内、または [Sweeps UI](/ja/models/sweeps/visualize-sweep-results) からプロセスを停止する必要があります。
</Warning>

<Tabs>
  <Tab title="CLI">
    まず、[`wandb sweep`](/ja/models/ref/cli/wandb-sweep) コマンドで sweep を初期化します。詳細は、[sweeps の初期化](/ja/models/sweeps/initialize-sweeps)を参照してください。

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

    次に、count フラグに整数値を渡して、試行する Runs の最大数を設定します。

    ```bash theme={null}
    NUM=10
    SWEEPID="dtzl1o7u"
    wandb agent --count $NUM $SWEEPID
    ```
  </Tab>

  <Tab title="Python script or notebook">
    まず、sweep を初期化します。詳細は、[sweeps の初期化](/ja/models/sweeps/initialize-sweeps)を参照してください。

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

    次に、sweep ジョブを開始します。sweep の初期化時に生成された sweep ID を指定します。count パラメーターに整数値を渡して、試行する Runs の最大数を設定します。

    ```python theme={null}
    sweep_id, count = "dtzl1o7u", 10
    wandb.agent(sweep_id, count=count)
    ```

    <Warning>
      同じ script または ノートブック内で、sweep エージェントの終了後に新しい run を開始する場合は、その前に `wandb.teardown()` を呼び出してください。
    </Warning>
  </Tab>
</Tabs>
