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.
このガイドでは、さまざまな環境でコンテナーイメージをビルドし、それらのイメージをクラウドのコンテナーレジストリにプッシュし、ビルドプロセスをカスタマイズするための W&B Launch エージェントの設定方法について説明します。イメージのビルドが必要な launch job を実行し、エージェントがそれらのイメージをどこでどのように生成するかを制御したい場合に使用してください。このページは、Launch エージェントをデプロイおよび管理する管理者とオペレーターを対象としています。
ビルドが必要なのは、git ジョブと code artifact ジョブのみです。Image jobs ではビルドは不要です。ジョブのタイプの詳細については、launch job を作成するを参照してください。
Launch エージェント は、コンテナーイメージを生成するための 2 つのビルダーをサポートしています。エージェントが実行される環境に適したビルダーを選択してください。
Launch エージェント は、Docker または Kaniko を使用してイメージをビルドできます。
- Kaniko: ビルドを特権コンテナーとして実行せずに、Kubernetes 上でコンテナーイメージをビルドします。
- Docker: ローカルで
docker build コマンドを実行して、コンテナーイメージをビルドします。
ビルダーのタイプは、Launch エージェント の設定内にある builder.type キーで制御します。ビルドを無効にするには、これを docker、kaniko、または noop に設定します。デフォルトでは、エージェントの Helm チャートで builder.type は noop に設定されています。エージェントは、ビルドプロセスを構成するために builder セクション内の追加のキーを使用します。
エージェントの設定でビルダーを指定しておらず、利用可能な docker CLI が見つかった場合、エージェントはデフォルトで Docker を使用します。Docker を利用できない場合、エージェントのデフォルトは noop になります。
Kubernetes クラスターでイメージをビルドする場合は Kaniko を使用してください。それ以外の場合は Docker を使用してください。
ビルドしたイメージをご利用のコンピュートターゲットで実行するには、エージェントがそれらを、ターゲットがプル可能なコンテナーレジストリにプッシュする必要があります。以下のセクションでは、エージェントがどのようにイメージにタグを付けてアップロードするかを説明します。
Launch エージェントは、ビルドしたすべてのイメージに一意のソースハッシュをタグとして付与します。エージェントは、builder.destination キーで指定されたレジストリにそのイメージをプッシュします。
たとえば、builder.destination キーを my-registry.example.com/my-repository に設定すると、エージェントはイメージにタグを付け、my-registry.example.com/my-repository:[SOURCE-HASH] にプッシュします。イメージがレジストリにすでに存在する場合、エージェントはビルドをスキップします。
エージェントは YAML ファイルから設定を読み込みます。そのファイルをどこで指定するかは、エージェントの実行方法によって異なります。
Helm chart でエージェントをデプロイする場合は、values.yaml ファイルの agentConfig キーにエージェントの設定を指定します。
wandb launch-agent を使用してエージェントを自分で起動する場合は、--config フラグで YAML ファイルへのパスを指定して、エージェントの設定を渡します。デフォルトでは、エージェントは ~/.config/wandb/launch-config.yaml から設定を読み込みます。
Launch エージェント設定 (launch-config.yaml) では、ターゲットリソースの環境名とコンテナーレジストリを、それぞれ environment キーと registry キーに指定します。
以下のタブでは、環境と Registry に応じて Launch エージェントを設定する方法を示します。
AWS 環境の設定には region キーが必要です。region には、エージェントを実行する AWS リージョンを設定します。environment:
type: aws
region: [AWS-REGION]
builder:
type: [BUILDER-TYPE]
# エージェントがイメージを保存する ECR リポジトリの URI。
# region が環境で設定したものと一致していることを
# 確認してください。
destination: [ACCOUNT-ID].ecr.[AWS-REGION].amazonaws.com/[REPOSITORY-NAME]
# Kaniko を使用する場合は、エージェントが
# ビルドコンテキストを保存する S3 バケットを指定します。
build-context-store: s3://[BUCKET-NAME]/[PATH]
エージェントは boto3 を使用してデフォルトの AWS 認証情報を読み込みます。デフォルトの AWS 認証情報の設定方法について詳しくは、boto3 documentation を参照してください。 Google Cloud 環境には region キーと project キーが必要です。region には、エージェントを実行するリージョンを設定します。project には、エージェントを実行する Google Cloud project を設定します。エージェントは Python の google.auth.default() を使用してデフォルトの認証情報を読み込みます。environment:
type: gcp
region: [GCP-REGION]
project: [GCP-PROJECT-ID]
builder:
type: [BUILDER-TYPE]
# エージェントがイメージを保存する Artifact Registry リポジトリと
# イメージ名の URI。region と project が
# 環境で設定したものと一致していることを確認してください。
uri: [REGION]-docker.pkg.dev/[PROJECT-ID]/[REPOSITORY-NAME]/[IMAGE-NAME]
# Kaniko を使用する場合は、エージェントが
# ビルドコンテキストを保存する GCS バケットを指定します。
build-context-store: gs://[BUCKET-NAME]/[PATH]
エージェントが利用できるようにデフォルトの Google Cloud 認証情報を設定する方法について詳しくは、google-auth documentation を参照してください。 Azure 環境では追加のキーは必要ありません。エージェントの起動時に、azure.identity.DefaultAzureCredential() を使用してデフォルトの Azure 認証情報を読み込みます。environment:
type: azure
builder:
type: [BUILDER-TYPE]
# エージェントがイメージを保存する Azure Container Registry リポジトリの URI。
destination: https://[REGISTRY-NAME].azurecr.io/[REPOSITORY-NAME]
# Kaniko を使用する場合は、エージェントが
# ビルドコンテキストを保存する Azure Blob Storage コンテナーを指定します。
build-context-store: https://[STORAGE-ACCOUNT-NAME].blob.core.windows.net/[CONTAINER-NAME]
デフォルトの Azure 認証情報の設定方法について詳しくは、azure-identity documentation を参照してください。
エージェントには、コンテナーレジストリにイメージをプッシュする権限と、Kaniko を使用する場合はクラウド ストレージ内のビルド コンテキストを読み書きする権限が必要です。必要なエージェント権限は、ユースケースによって異なります。
エージェントがリポジトリを作成し、イメージレイヤーをアップロードし、タグ付きイメージをプッシュできるようにするには、レジストリに対する権限が必要です。以下は、Launch エージェントがクラウドレジストリを操作するために必要な権限です。
{
'Version': '2012-10-17',
'Statement':
[
{
'Effect': 'Allow',
'Action':
[
'ecr:CreateRepository',
'ecr:UploadLayerPart',
'ecr:PutImage',
'ecr:CompleteLayerUpload',
'ecr:InitiateLayerUpload',
'ecr:DescribeRepositories',
'ecr:DescribeImages',
'ecr:BatchCheckLayerAvailability',
'ecr:BatchDeleteImage',
],
'Resource': 'arn:aws:ecr:[REGION]:[ACCOUNT-ID]:repository/[REPOSITORY]',
},
{
'Effect': 'Allow',
'Action': 'ecr:GetAuthorizationToken',
'Resource': '*',
},
],
}
artifactregistry.dockerimages.list;
artifactregistry.repositories.downloadArtifacts;
artifactregistry.repositories.list;
artifactregistry.repositories.uploadArtifacts;
Kaniko ビルダーを使用する場合は、AcrPush ロールを追加してください。
エージェントが Kaniko ビルダー を使用する場合、Launch エージェント にはクラウドストレージにプッシュする権限が必要です。Kaniko は、ビルドジョブを実行する pod の外部にあるコンテキストストアを使用します。
AWS では、Kaniko ビルダー のコンテキストストアとして Amazon S3 を使用します。次のポリシーを使用して、エージェントに S3 バケットへのアクセス権限を付与してください。{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::[BUCKET-NAME]"]
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Action": "s3:*Object",
"Resource": ["arn:aws:s3:::[BUCKET-NAME]/*"]
}
]
}
Google Cloud では、ビルドコンテキストを GCS にアップロードするために、エージェントに次の IAM 権限が必要です。storage.buckets.get;
storage.objects.create;
storage.objects.delete;
storage.objects.get;
Azure Blob Storage にビルドコンテキストをアップロードするには、エージェントに Storage Blob Data Contributor ロールが必要です。
ビルド pod のキャッシュ動作や環境変数などのデフォルトを上書きするには、Kaniko が実行する Kubernetes Job をカスタマイズします。Kaniko ジョブで使用する Kubernetes Job spec は、agent の設定にある builder.kaniko-config キーで指定します。たとえば次のとおりです。
builder:
type: kaniko
build-context-store: [MY-BUILD-CONTEXT-STORE]
destination: [MY-IMAGE-DESTINATION]
build-job-name: wandb-image-build
kaniko-config:
spec:
template:
spec:
containers:
- args:
- "--cache=false" # 引数は "key=value" の形式で指定する必要があります
env:
- name: "MY_ENV_VAR"
value: "my-env-var-value"
Launch エージェントを CoreWeave にデプロイする
ワークロードが GPU アクセラレーション対応インフラストラクチャーの恩恵を受ける場合は、Launch エージェントを CoreWeave Cloud にデプロイできます。CoreWeave は、GPU アクセラレーション ワークロード向けに構築されたクラウド インフラストラクチャーです。
Launch エージェントを CoreWeave にデプロイする方法については、CoreWeave のドキュメントを参照してください。
CoreWeave のインフラストラクチャーに Launch エージェントをデプロイするには、CoreWeave アカウントを作成する必要があります。