Skip to main content

高度なエージェント設定

このガイドでは、W&B ローンチエージェントを設定して、さまざまな環境でコンテナイメージを作成する方法について情報を提供します。
ビルドは git およびコードアーティファクトジョブにのみ必要です。イメージジョブにはビルドは必要ありません。ジョブタイプの詳細については、「ローンチジョブの作成」を参照してください。

ビルダー

ローンチエージェントは、Docker または Kaniko を使用してイメージをビルドできます。
  • Kaniko: Kubernetes で特権コンテナとしてビルドを実行せずにコンテナイメージをビルドします。
  • Docker: ローカルで docker build コマンドを実行してコンテナイメージをビルドします。
ビルダータイプは、ローンチエージェントの設定で builder.type キーを使用して、dockerkaniko、またはビルドをオフにするための noop に制御できます。デフォルトでは、エージェントの Helm チャートは builder.typenoop に設定します。builder セクションの追加キーは、ビルドプロセスを設定するために使用されます。 エージェントの設定でビルダーが指定されていない場合、有効な docker CLI が見つかると、エージェントは自動的に Docker を使用します。Docker が利用できない場合、エージェントは noop をデフォルトとします。
Kubernetes クラスターでイメージをビルドするには Kaniko を使用してください。それ以外の場合は Docker を使用してください。

コンテナレジストリへのプッシュ

ローンチエージェントは、ビルドするすべてのイメージに一意のソースハッシュでタグを付けます。エージェントは、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-config.yaml) 内で、ターゲットリソース環境とコンテナレジストリの名前をそれぞれ environmentregistry キーに提供します。 環境とレジストリに基づいてローンチエージェントを設定する方法を、以下のタブで示します。
AWS 環境設定には地域キーが必要です。リージョンはエージェントが実行される 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 ドキュメント を参照してください。

エージェント権限

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

クラウドレジストリ権限

ローンチエージェントがクラウドレジストリと対話するために通常必要な権限は以下の通りです。
{
  '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 のためのストレージ権限

ローンチエージェントは、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 ビルドのカスタマイズ

Kaniko ジョブが使用する Kubernetes ジョブ仕様をエージェント設定の builder.kaniko-config キーに指定します。例えば:
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" # 引数は "key=value" の形式でなければなりません
            env:
            - name: "MY_ENV_VAR"
              value: "my-env-var-value"

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

オプションとして、W&B Launch エージェントを CoreWeave クラウドインフラストラクチャにデプロイできます。CoreWeave は GPU 加速ワークロード専用に構築されたクラウドインフラストラクチャです。 CoreWeave に Launch エージェントをデプロイする方法については、CoreWeave ドキュメント を参照してください。
Launch エージェントを CoreWeave インフラストラクチャにデプロイするには、CoreWeave アカウント を作成する必要があります。