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

# Launch 에이전트 설정

> Docker 및 Kaniko 빌더와 컨테이너 레지스트리 설정을 포함해 W&B Launch의 고급 에이전트 옵션을 구성합니다.

<div id="advanced-agent-setup">
  # 고급 에이전트 설정
</div>

이 가이드는 다양한 환경에서 컨테이너 이미지를 빌드할 수 있도록 W\&B Launch 에이전트를 설정하는 방법을 안내합니다.

<Note>
  빌드는 git 및 코드 artifact 작업에만 필요합니다. Image jobs에는 빌드가 필요하지 않습니다.

  작업 유형에 대한 자세한 내용은 [Launch 작업 만들기](/ko/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 chart는 `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 chart를 통해 에이전트를 배포하는 경우, 에이전트 설정은 `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는 빌드 작업을 실행하는 파드 외부의 컨텍스트 저장소를 사용합니다.

<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 사양을 에이전트 설정의 `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" # 매개변수는 "키=값" 형식이어야 합니다
            env:
            - name: "MY_ENV_VAR"
              value: "my-env-var-value"
```

<div id="deploy-launch-agent-into-coreweave">
  ## CoreWeave에 Launch 에이전트 배포
</div>

선택적으로 W\&B Launch 에이전트를 CoreWeave Cloud 인프라에 배포할 수 있습니다. CoreWeave는 GPU 가속 워크로드를 위해 특별히 설계된 클라우드 인프라입니다.

CoreWeave에 Launch 에이전트를 배포하는 방법에 대한 자세한 내용은 [CoreWeave 문서](https://docs.coreweave.com/partners/weights-and-biases#integration)를 참조하세요.

<Note>
  CoreWeave 인프라에 Launch 에이전트를 배포하려면 [CoreWeave 계정](https://cloud.coreweave.com/login)을 만들어야 합니다.
</Note>
