メインコンテンツまでスキップ

Advanced agent setup

このガイドでは、W&B Launch エージェントをセットアップして、異なる環境でコンテナイメージをビルドする方法について説明します。

備考

ビルドは git と code artifact ジョブにのみ必要です。イメージジョブにはビルドは必要ありません。

ジョブタイプの詳細については Create a launch job を参照してください。

Builders

Launch エージェントは Docker または Kaniko を使用してイメージをビルドできます。

  • Kaniko: 特権コンテナとしてビルドを実行することなく、Kubernetes でコンテナイメージをビルドします。
  • Docker: ローカルで docker build コマンドを実行してコンテナイメージをビルドします。

ビルダーのタイプは launch エージェント設定の builder.type キーで dockerkaniko、またはビルドを無効にする noop のいずれかに設定できます。デフォルトでは、エージェントの Helm チャートは builder.typenoop に設定します。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> にタグ付けしてプッシュします。イメージがレジストリに既に存在する場合、ビルドはスキップされます。

エージェント設定

エージェントを Helm チャート経由でデプロイする場合、エージェント設定は values.yaml ファイルの agentConfig キーで提供する必要があります。

wandb launch-agent を使って自分でエージェントを起動する場合、--config フラグを使ってエージェント設定の YAML ファイルのパスを提供できます。デフォルトでは、設定は ~/.config/wandb/launch-config.yaml から読み込まれます。

launch エージェント設定 (launch-config.yaml) 内で、ターゲットリソース環境の名前とコンテナレジストリを environment キーおよび registry キーにそれぞれ指定します。

以下のタブはあなたの環境とレジストリに基づいた launch エージェントの設定方法を示します。

AWS環境の設定では region キーが必要です。region はエージェントが実行される AWS のリージョンである必要があります。

launch-config.yaml
environment:
type: aws
region: <aws-region>
builder:
type: <kaniko|docker>
# エージェントがイメージを保存する ECR レポジトリのURI。
# リージョンがあなたの環境で設定したものと一致することを確認してください。
destination: <account-id>.ecr.<aws-region>.amazonaws.com/<repository-name>
# Kanikoを使用する場合、エージェントがビルドコンテキストを保存する
# S3バケットを指定してください。
build-context-store: s3://<bucket-name>/<path>

エージェントは boto3 を使用してデフォルトの AWS 認証情報をロードします。デフォルトの AWS 認証情報の設定方法については、boto3 documentation を参照してください。

エージェントの権限

エージェントに必要な権限はユースケースによって異なります。

クラウドレジストリの権限

以下に、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': '*',
},
],
}

Kanikoのストレージ権限

launch エージェントは、Kaniko ビルダーを使用している場合にクラウドストレージにプッシュする権限が必要です。Kaniko はビルドジョブを実行するポッドの外部にコンテキストストアを使用します。

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>/*"]
}
]
}

Kaniko ビルドのカスタマイズ

エージェント設定の builder.kaniko-config キーに Kaniko ジョブが使用する Kubernetes Job スペックを指定します。例えば:

launch-config.yaml
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" # Args must be in the format "key=value"
env:
- name: "MY_ENV_VAR"
value: "my-env-var-value"

Launch エージェントを CoreWeave にデプロイする

任意で W&B Launch エージェントを CoreWeave クラウドインフラにデプロイします。CoreWeave は GPU 加速ワークロードのために設計されたクラウドインフラです。

Launch エージェントを CoreWeave にデプロイする方法については CoreWeave documentation を参照してください。

注記

Launch エージェントを CoreWeave インフラにデプロイするためには CoreWeave account を作成する必要があります。

Was this page helpful?👍👎