メインコンテンツへスキップ
以下のガイドでは、ローカルマシン上の Docker を Launch エージェント環境とキューのターゲットリソースの両方として使用するように、W&B Launch を設定する方法を説明します。 同じローカルマシン上で、Docker をジョブの実行と Launch エージェント環境の両方に使用する構成は、特にコンピュート環境がクラスタ管理システム (Kubernetes など) のないマシンにインストールされている場合に便利です。 Docker キューを使用して、高性能なワークステーションでワークロードを実行することもできます。
この設定は、ローカルマシンで実験を行うユーザーや、SSH で接続したリモートマシンから Launch ジョブを送信するユーザーによく使われます。
W&B Launch で Docker を使用すると、W&B はまずイメージをビルドし、その後そのイメージからコンテナーをビルドして実行します。イメージは、Docker の docker run <image-uri> コマンドでビルドされます。キュー設定は、docker run コマンドに渡される追加の引数として解釈されます。

Docker キューを設定する

Launch のキュー設定 (Docker ターゲットリソース用) では、docker run CLI コマンドで定義されているものと同じオプションを受け付けます。 エージェントはキュー設定で定義されたオプションを受け取ります。次にエージェントは、受け取ったオプションを Launch ジョブの設定によるオーバーライドとマージし、ターゲットリソース (この場合はローカルマシン) で実行される最終的な docker run コマンドを生成します。 ここでは、2 つの構文変換が行われます。
  1. 繰り返し指定するオプションは、キュー設定ではリストとして定義します。
  2. フラグオプションは、キュー設定では値が true のブール値として定義します。
たとえば、次のキュー設定です。
{
  "env": ["MY_ENV_VAR=value", "MY_EXISTING_ENV_VAR"],
  "volume": "/mnt/datasets:/mnt/datasets",
  "rm": true,
  "gpus": "all"
}
次の docker run コマンドが生成されます。
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 ドキュメントを参照してください。
  • Docker コンテナー内で GPU を使用するには、NVIDIA Container Toolkit をインストールしてください。
  • code または artifact をソースとするジョブからイメージをビルドする場合は、エージェント が使用するベースイメージを override して、NVIDIA Container Toolkit を含めることができます。 たとえば、Launch キュー内でベースイメージを tensorflow/tensorflow:latest-gpu に override できます。
    {
      "builder": {
        "accelerator": {
          "base_image": "tensorflow/tensorflow:latest-gpu"
        }
      }
    }
    

キューを作成する

W&B CLI を使用して、計算リソースに Docker を使用するキューを作成します。
  1. Launch pageにアクセスします。
  2. Create Queue ボタンをクリックします。
  3. キューを作成する Entity を選択します。
  4. Name フィールドにキューの名前を入力します。
  5. Resource として Docker を選択します。
  6. Configuration フィールドに Docker キューの設定を入力します。
  7. キューを作成するには、Create Queue ボタンをクリックします。

ローカルマシン上で Launch エージェントを設定する

launch-config.yaml という名前の YAML 設定ファイルを使用して、Launch エージェントを設定します。デフォルトでは、W&B は ~/.config/wandb/launch-config.yaml にある設定ファイルを参照します。必要に応じて、Launch エージェントの起動時に別のディレクトリを指定することもできます。
YAML 設定ファイルの代わりに、W&B CLI を使用して Launch エージェントの主要な設定項目 (ジョブの最大数、W&B entity、Launch キュー) を指定することもできます。詳細については、wandb launch-agent コマンドを参照してください。

エージェント の基本設定オプション

以下のタブでは、W&B CLI と YAML 設定ファイルで エージェント の基本設定オプションを指定する方法を示します。
wandb launch-agent -q <queue-name> --max-jobs <n>

Docker image ビルダー

お使いのマシン上の Launch エージェントは、Docker image をビルドするように設定できます。デフォルトでは、これらのイメージはマシン上のローカルイメージリポジトリに保存されます。Launch エージェントで Docker image をビルドできるようにするには、Launch エージェントの設定で builder キーを docker に設定します。
launch-config.yaml
builder:
	type: docker
エージェントでDockerイメージをビルドせず、代わりにレジストリのビルド済みイメージを使用する場合は、Launch エージェントの設定で builder キーを noop に設定します
launch-config.yaml
builder:
  type: noop

コンテナーレジストリ

Launch では、Dockerhub、Google Container Registry、Azure Container Registry、Amazon ECR などの外部コンテナーレジストリを使用します。 ジョブをビルドした環境とは異なる環境で実行する場合は、コンテナーレジストリからプルできるようにエージェントを設定してください。 Launch エージェントをクラウドレジストリに接続する方法の詳細については、高度な Launch エージェントのセットアップ ページを参照してください。