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

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 キーで制御します。ビルドを無効にするには、これを 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] にプッシュします。イメージがレジストリにすでに存在する場合、エージェントはビルドをスキップします。

エージェント設定

エージェントは 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 リージョンを設定します。
launch-config.yaml
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 を参照してください。

エージェントの権限

エージェントには、コンテナーレジストリにイメージをプッシュする権限と、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': '*',
      },
    ],
}

Kaniko のストレージ権限

エージェントが 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]/*"]
    }
  ]
}

Kaniko ビルドをカスタマイズする

ビルド pod のキャッシュ動作や環境変数などのデフォルトを上書きするには、Kaniko が実行する Kubernetes Job をカスタマイズします。Kaniko ジョブで使用する Kubernetes Job spec は、agent の設定にある 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 にデプロイする

ワークロードが GPU アクセラレーション対応インフラストラクチャーの恩恵を受ける場合は、Launch エージェントを CoreWeave Cloud にデプロイできます。CoreWeave は、GPU アクセラレーション ワークロード向けに構築されたクラウド インフラストラクチャーです。 Launch エージェントを CoreWeave にデプロイする方法については、CoreWeave のドキュメントを参照してください。
CoreWeave のインフラストラクチャーに Launch エージェントをデプロイするには、CoreWeave アカウントを作成する必要があります。