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

# チュートリアル: Docker を使用した W&B Launch のセットアップ

> ローカルマシンをエージェント環境とコンピュートターゲットの両方として使用し、Docker で ML ジョブを実行するように W&B Launch をセットアップします。

このチュートリアルでは、launch エージェントの環境とキューのターゲットリソースの両方にローカルマシン上の Docker を使用するように W\&B Launch を設定する方法を説明します。最後まで進めると、Docker ベースの launch キューと、ML ジョブを実行できるローカルの launch エージェントが揃った状態になります。

同じローカルマシン上で Docker をジョブの実行にも launch エージェントの環境にも使用する構成は、Kubernetes などのクラスター管理システムがないマシンにコンピュートが設置されている場合に便利です。また、Docker キューを使用してワークステーション上でワークロードを実行することもできます。

<Note>
  この構成は、ローカルマシンで実験を実行するユーザーや、リモートマシンに SSH 接続して launch ジョブを投入するユーザーによく使われます。
</Note>

Launch で Docker を使用する場合、W\&B はまずイメージをビルドし、次にそのイメージからコンテナをビルドして実行します。イメージのビルドには Docker の `docker run [IMAGE-URI]` コマンドを使用します。W\&B はキュー設定を、`docker run` コマンドに渡す追加の引数として解釈します。

<h2 id="configure-a-docker-queue">
  Docker キューを設定する
</h2>

Docker ターゲットリソースのキュー設定は、Launch がキューのオプションを `docker run` コマンドに変換する方法を定義します。

Launch キュー設定 (Docker ターゲットリソース用) は、[`docker run`](/ja/products/wandb/ref/cli/wandb-docker-run) CLI コマンドで定義されているものと同じオプションを受け入れます。

エージェントは、キュー設定で定義されたオプションを受け取ります。次に、受け取ったオプションを Launch job の設定にあるオーバーライドとマージし、ターゲットリソース (この場合はローカルマシン) で実行する最終的な `docker run` コマンドを生成します。

次の 2 つの構文変換が行われます。

* キュー設定で、繰り返し指定するオプションをリストとして定義します。
* キュー設定で、フラグオプションを値が `true` のブール値として定義します。

たとえば、次のキュー設定の場合：

```json theme={"system"}
{
  "env": ["MY_ENV_VAR=value", "MY_EXISTING_ENV_VAR"],
  "volume": "/mnt/datasets:/mnt/datasets",
  "rm": true,
  "gpus": "all"
}
```

次の `docker run` コマンドになります。

```bash theme={"system"}
docker run \
  --env MY_ENV_VAR=value \
  --env MY_EXISTING_ENV_VAR \
  --volume "/mnt/datasets:/mnt/datasets" \
  --rm [IMAGE-URI] \
  --gpus all
```

ボリュームは文字列のリスト、または単一の文字列として指定します。複数のボリュームを指定する場合は、リストを使用します。

Docker は、値が割り当てられていない環境変数を Launch エージェント環境から渡します。Launch エージェントに環境変数 `MY_EXISTING_ENV_VAR` がある場合、その変数はコンテナー内で使用できます。これは、他の設定キーをキュー設定で公開せずに使用したい場合に便利です。

`docker run` コマンドの `--gpus` フラグを使用すると、Docker コンテナーで使用できる GPU を指定できます。`--gpus` フラグの詳細については、[Docker のドキュメント](https://docs.docker.com/config/containers/resource_constraints/#gpu)を参照してください。

<Note>
  * Docker コンテナー内で GPU を使用するには、[NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker) をインストールしてください。
  * コードまたはアーティファクトをソースとするジョブからイメージをビルドする場合、[エージェント](#configure-a-launch-agent-on-a-local-machine)が使用するベースイメージを上書きして、NVIDIA Container Toolkit を含めることができます。
    たとえば、launch キュー内でベースイメージを `tensorflow/tensorflow:latest-gpu` に上書きできます。

    ```json theme={"system"}
    {
      "builder": {
        "accelerator": {
          "base_image": "tensorflow/tensorflow:latest-gpu"
        }
      }
    }
    ```
</Note>

<h2 id="create-a-queue">
  キューを作成する
</h2>

Docker をコンピュートリソースとして使用するキューを作成するには、次の手順に従ってください。

1. [Launch ページ](https://forge.coreweave.com/wandb/launch) にアクセスします。
2. **Create Queue** ボタンをクリックします。
3. キューを作成する **Entity** を選択します。
4. **Name** フィールドにキューの名前を入力します。
5. **Resource** で **Docker** を選択します。
6. **Configuration** フィールドで Docker キューの設定を定義します。
7. **Create Queue** ボタンをクリックします。

これで、ジョブを受け取る準備が整った Docker ベースの launch キューが作成されました。次に、このキューからジョブをプルできるように、ローカルマシンで Launch エージェントを設定します。

<h2 id="configure-a-launch-agent-on-a-local-machine">
  ローカルマシンで Launch エージェントを設定する
</h2>

`launch-config.yaml` という名の YAML 設定ファイルで Launch エージェントを設定します。デフォルトでは、W\&B は `~/.config/wandb/launch-config.yaml` にある設定ファイルを確認します。Launch エージェントを有効化するときに、必要に応じて別のディレクトリを指定できます。

<Note>
  W\&B CLI を使用して、Launch エージェントの主要な設定項目 (ジョブの最大数、W\&B entity、launch キュー) を指定できます (YAML 設定ファイルの代わりに使用します) 。詳細については、[`wandb launch-agent`](/ja/products/wandb/ref/cli/wandb-launch-agent) コマンドを参照してください。
</Note>

<h3 id="core-agent-config-options">
  エージェント設定の主要オプション
</h3>

以下のタブでは、W\&B CLI と YAML 設定ファイルを使用して、エージェント設定の主要オプションを指定する方法を示します。

<Tabs>
  <Tab title="W&B CLI">
    ```bash theme={"system"}
    wandb launch-agent -q [QUEUE-NAME] --max-jobs [N]
    ```
  </Tab>

  <Tab title="設定ファイル">
    ```yaml title="launch-config.yaml" theme={"system"}
    max_jobs: [N-CONCURRENT-JOBS]
    queues:
    	- [QUEUE-NAME]
    ```
  </Tab>
</Tabs>

<h3 id="docker-image-builders">
  Docker イメージビルダー
</h3>

マシン上の Launch エージェントを設定して、Docker イメージをビルドできます。デフォルトでは、これらのイメージはマシンのローカルイメージリポジトリに保存されます。Launch エージェントで Docker イメージをビルドできるようにするには、Launch エージェント設定の `builder` キーを `docker` に設定します：

```yaml title="launch-config.yaml" theme={"system"}
builder:
	type: docker
```

エージェントで Docker イメージをビルドせず、代わりにレジストリのビルド済みイメージを使用する場合は、Launch エージェント設定の `builder` キーを `noop` に設定します：

```yaml title="launch-config.yaml" theme={"system"}
builder:
  type: noop
```

<h3 id="container-registries">
  コンテナーレジストリ
</h3>

Launch は、Docker Hub、Google Container Registry、Azure Container Registry、Amazon ECR などの外部コンテナーレジストリを使用します。ジョブをビルドした環境とは異なる環境で実行する場合は、コンテナーレジストリからプルするようにエージェントを設定してください。これにより、エージェントはローカルでビルドされていないイメージを取得できます。

Launch エージェントをレジストリに接続する方法について詳しくは、[エージェントの高度なセットアップ](/ja/products/wandb/platform/launch/setup-agent-advanced#agent-configuration)ページを参照してください。
