> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-wbdocs-1882.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Launch エージェントを設定する

> Docker および Kaniko ビルダー、コンテナーの Registry 設定など、W&B Launch の高度なエージェントオプションを設定します。

<div id="advanced-agent-setup">
  # 高度なエージェント設定
</div>

このガイドでは、さまざまな環境でコンテナーイメージをビルドするための W\&B Launch エージェントの設定方法について説明します。

<Note>
  ビルドが必要なのは、git ジョブと code artifact ジョブのみです。Image jobs ではビルドは不要です。

  ジョブのタイプの詳細については、[launch job を作成する](/ja/platform/launch/create-launch-job/)を参照してください。
</Note>

<div id="builders">
  ## ビルダー
</div>

Launch エージェントは、[Docker](https://docs.docker.com/) または [Kaniko](https://github.com/GoogleContainerTools/kaniko) を使用してイメージをビルドできます。

* Kaniko: ビルドを特権コンテナーとして実行せずに、Kubernetes 上でコンテナーイメージをビルドします。
* Docker: ローカルで `docker build` コマンドを実行してコンテナーイメージをビルドします。

ビルダーのタイプは、Launch エージェントの設定内の `builder.type` キーで制御でき、`docker`、`kaniko`、またはビルドを無効化する `noop` を指定できます。デフォルトでは、エージェントの Helm チャートで `builder.type` は `noop` に設定されています。`builder` セクション内の追加キーは、ビルドプロセスの設定に使用されます。

エージェントの設定でビルダーが指定されておらず、動作する `docker` CLI が見つかった場合、エージェントはデフォルトで Docker を使用します。Docker を利用できない場合、エージェントはデフォルトで `noop` を使用します。

<Note>
  Kubernetes クラスターでイメージをビルドする場合は Kaniko を使用してください。それ以外の場合は Docker を使用してください。
</Note>

<div id="pushing-to-a-container-registry">
  ## コンテナーレジストリへのプッシュ
</div>

Launch エージェントは、ビルドしたすべてのイメージに一意のソースハッシュをタグとして付与します。エージェントは、`builder.destination` キーで指定されたレジストリにそのイメージをプッシュします。

たとえば、`builder.destination` キーが `my-registry.example.com/my-repository` に設定されている場合、エージェントはイメージにタグを付け、`my-registry.example.com/my-repository:<source-hash>` にプッシュします。イメージがレジストリにすでに存在する場合、ビルドはスキップされます。

<div id="agent-configuration">
  ### エージェント設定
</div>

Helm チャート経由でエージェントをデプロイする場合は、`values.yaml` ファイルの `agentConfig` キーでエージェント設定を指定します。

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

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

以下のタブでは、環境とレジストリに応じた Launch エージェントの設定方法を示します。

<Tabs>
  <Tab title="AWS">
    AWS 環境の設定には `region` キーが必要です。`region` には、エージェントを実行する AWS リージョンを指定します。

    ```yaml title="launch-config.yaml" theme={null}
    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`](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) を参照してください。
  </Tab>

  <Tab title="Google Cloud">
    Google Cloud 環境には `region` キーと `project` キーが必要です。`region` にはエージェントを実行するリージョンを設定します。`project` にはエージェントを実行する Google Cloud プロジェクトを設定します。エージェントは Python の `google.auth.default()` を使用してデフォルトの認証情報を読み込みます。

    ```yaml title="launch-config.yaml" theme={null}
    environment:
      type: gcp
      region: <gcp-region>
      project: <gcp-project-id>
    builder:
      type: <kaniko|docker>
      # エージェントがイメージを保存する Artifact Registry リポジトリーと
      # イメージ名の URI。リージョンとプロジェクトが
      # 環境で設定したものと一致していることを確認してください。
      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](https://google-auth.readthedocs.io/en/latest/reference/google.auth.html#google.auth.default) を参照してください。
  </Tab>

  <Tab title="Azure">
    Azure 環境では追加のキーは不要です。エージェントの起動時に、`azure.identity.DefaultAzureCredential()` を使用してデフォルトの Azure 認証情報を読み込みます。

    ```yaml title="launch-config.yaml" theme={null}
    environment:
      type: azure
    builder:
      type: <kaniko|docker>
      # エージェントがイメージを保存する 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](https://learn.microsoft.com/python/api/azure-identity/azure.identity.defaultazurecredential?view=azure-python) を参照してください。
  </Tab>
</Tabs>

<div id="agent-permissions">
  ## エージェントの権限
</div>

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

<div id="cloud-registry-permissions">
  ### クラウドレジストリの権限
</div>

以下は、Launch エージェントがクラウドレジストリを操作する際に通常必要となる権限です。

<Tabs>
  <Tab title="AWS">
    ```yaml theme={null}
    {
      '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': '*',
          },
        ],
    }
    ```
  </Tab>

  <Tab title="Google Cloud">
    ```js theme={null}
    artifactregistry.dockerimages.list;
    artifactregistry.repositories.downloadArtifacts;
    artifactregistry.repositories.list;
    artifactregistry.repositories.uploadArtifacts;
    ```
  </Tab>

  <Tab title="Azure">
    Kaniko ビルダーを使用する場合は、[`AcrPush` ロール](https://learn.microsoft.com/azure/role-based-access-control/built-in-roles/containers#acrpush)を追加してください。
  </Tab>
</Tabs>

<div id="storage-permissions-for-kaniko">
  ### Kaniko のストレージ権限
</div>

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

<Tabs>
  <Tab title="AWS">
    AWS 上の Kaniko ビルダーで推奨されるコンテキストストアは Amazon S3 です。次のポリシーを使用して、エージェントに S3 バケットへのアクセス権を付与できます。

    ```json theme={null}
    {
      "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>/*"]
        }
      ]
    }
    ```
  </Tab>

  <Tab title="Google Cloud">
    Google Cloud では、エージェントがビルドコンテキストを GCS にアップロードするために、次の IAM 権限が必要です。

    ```js theme={null}
    storage.buckets.get;
    storage.objects.create;
    storage.objects.delete;
    storage.objects.get;
    ```
  </Tab>

  <Tab title="Azure">
    エージェントがビルドコンテキストを Azure Blob Storage にアップロードするには、[Storage Blob Data Contributor](https://learn.microsoft.com/azure/role-based-access-control/built-in-roles#storage-blob-data-contributor) ロールが必要です。
  </Tab>
</Tabs>

<div id="customizing-the-kaniko-build">
  ## Kaniko ビルドのカスタマイズ
</div>

Kaniko ジョブで使用する Kubernetes Job spec は、agent の設定にある `builder.kaniko-config` キーで指定します。たとえば次のとおりです。

```yaml title="launch-config.yaml" theme={null}
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"
```

<div id="deploy-launch-agent-into-coreweave">
  ## Launch エージェントを CoreWeave にデプロイする
</div>

必要に応じて、W\&B Launch エージェントを CoreWeave Cloud のインフラストラクチャーにデプロイできます。CoreWeave は、GPU アクセラレーション ワークロード向けに特化して構築されたクラウド インフラストラクチャーです。

Launch エージェントを CoreWeave にデプロイする方法については、[CoreWeave のドキュメント](https://docs.coreweave.com/partners/weights-and-biases#integration)を参照してください。

<Note>
  CoreWeave のインフラストラクチャーに Launch エージェントをデプロイするには、[CoreWeave アカウント](https://cloud.coreweave.com/login)を作成する必要があります。
</Note>
