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

# チュートリアル: Docker を使用して W&B Launch を設定する

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

以下のガイドでは、ローカルマシン上の Docker を Launch エージェント環境とキューのターゲットリソースの両方として使用するように、W\&B Launch を設定する方法を説明します。

同じローカルマシン上で、Docker をジョブの実行と Launch エージェント環境の両方に使用する構成は、特にコンピュート環境がクラスタ管理システム (Kubernetes など) のないマシンにインストールされている場合に便利です。

Docker キューを使用して、高性能なワークステーションでワークロードを実行することもできます。

<Note>
  この設定は、ローカルマシンで実験を行うユーザーや、SSH で接続したリモートマシンから Launch ジョブを送信するユーザーによく使われます。
</Note>

W\&B Launch で Docker を使用すると、W\&B はまずイメージをビルドし、その後そのイメージからコンテナーをビルドして実行します。イメージは、Docker の `docker run <image-uri>` コマンドでビルドされます。キュー設定は、`docker run` コマンドに渡される追加の引数として解釈されます。

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

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

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

ここでは、2 つの構文変換が行われます。

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

たとえば、次のキュー設定です。

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

次の `docker run` コマンドが生成されます。

```bash theme={null}
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) をインストールしてください。
  * code または artifact をソースとするジョブからイメージをビルドする場合は、[エージェント](#configure-a-launch-agent-on-a-local-machine) が使用するベースイメージを override して、NVIDIA Container Toolkit を含めることができます。
    たとえば、Launch キュー内でベースイメージを `tensorflow/tensorflow:latest-gpu` に override できます。

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

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

W\&B CLI を使用して、計算リソースに Docker を使用するキューを作成します。

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

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

`launch-config.yaml` という名前の YAML 設定ファイルを使用して、Launch エージェントを設定します。デフォルトでは、W\&B は `~/.config/wandb/launch-config.yaml` にある設定ファイルを参照します。必要に応じて、Launch エージェントの起動時に別のディレクトリを指定することもできます。

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

<div id="core-agent-config-options">
  ## エージェント の基本設定オプション
</div>

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

<Tabs>
  <Tab title="W&B CLI">
    ```bash theme={null}
    wandb launch-agent -q <queue-name> --max-jobs <n>
    ```
  </Tab>

  <Tab title="設定ファイル">
    ```yaml title="launch-config.yaml" theme={null}
    max_jobs: <n concurrent jobs>
    queues:
    	- <queue-name>
    ```
  </Tab>
</Tabs>

<div id="docker-image-builders">
  ## Docker image ビルダー
</div>

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

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

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

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

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

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

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