メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://wb-21fd5541-docs-2661.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

このチュートリアルでは、ローカルマシン上の Docker を Launch エージェント環境およびキューのターゲットリソースの両方として使用するように、W&B Launch を設定する方法を説明します。完了すると、Docker ベースの Launch キューと、ML ジョブを実行できるローカルの Launch エージェントを利用できるようになります。 同じローカルマシン上で、Docker をジョブ実行と Launch エージェントの環境の両方に使用する構成は、コンピュート環境がクラスター管理システム (Kubernetes など) を備えていないマシンにある場合に便利です。また、Docker キューを使用してワークステーション上でワークロードを実行することもできます。
この構成は、ローカルマシンで Experiments を実行するユーザーや、リモートマシンに SSH 接続して Launch ジョブを送信するユーザーによく使われます。
Launch で Docker を使用する場合、W&B はまずイメージをビルドし、次にそのイメージからコンテナーを作成して実行します。W&B は Docker の docker run [IMAGE-URI] コマンドを使用します。W&B はキュー設定を、docker run コマンドに渡される追加引数として解釈します。

Docker キューを設定する

Docker ターゲットリソースのキュー設定では、Launch がキューオプションを docker run コマンドにどのように変換するかを定義します。 Launch のキュー設定 (Docker ターゲットリソース用) では、docker run CLI コマンドで定義されているものと同じオプションを受け付けます。 エージェントはキュー設定で定義されたオプションを受け取ります。次にエージェントは、受け取ったオプションを Launch ジョブの設定によるオーバーライドとマージし、ターゲットリソース (この場合はローカルマシン) 上で実行する最終的な docker run コマンドを生成します。 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"
        }
      }
    }
    

キューを作成する

計算リソースとして Docker を使用するキューを作成するには、次の手順に従います。
  1. Launch pageにアクセスします。
  2. Create Queue ボタンをクリックします。
  3. キューを作成する Entity を選択します。
  4. Name フィールドにキューの名前を入力します。
  5. Resource として Docker を選択します。
  6. Configuration フィールドに Docker キューの設定を入力します。
  7. Create Queue ボタンをクリックします。
これで、ジョブを受け取る準備ができた Docker ベースの Launch キューが作成されました。次に、ローカルマシンで Launch エージェント を設定して、このキューからジョブを取得します。

ローカルマシン上で 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 では、Docker Hub、Google Container Registry、Azure Container Registry、Amazon ECR などの外部コンテナーレジストリを使用します。ジョブをビルドした環境とは異なる環境で実行する場合は、ローカルでビルドされていないイメージをエージェントが取得できるよう、コンテナーレジストリからプルするようにエージェントを設定してください。 Launch エージェントをクラウドレジストリに接続する方法の詳細については、高度な Launch エージェントのセットアップ ページを参照してください。