이 가이드는 다양한 환경에서 컨테이너 이미지를 빌드할 수 있도록 W&B Launch 에이전트를 설정하는 방법을 안내합니다.
빌드는 git 및 코드 artifact 작업에만 필요합니다. Image jobs에는 빌드가 필요하지 않습니다.작업 유형에 대한 자세한 내용은 Launch 작업 만들기를 참조하세요.
Launch 에이전트는 Docker 또는 Kaniko를 사용해 이미지를 빌드할 수 있습니다.
- Kaniko: 권한이 필요한 컨테이너로 빌드를 실행하지 않고 Kubernetes에서 컨테이너 이미지를 빌드합니다.
- Docker: 로컬에서
docker build 명령어를 실행해 컨테이너 이미지를 빌드합니다.
빌더 유형은 Launch 에이전트 설정의 builder.type 키를 통해 docker, kaniko, 또는 빌드를 비활성화하는 noop로 제어할 수 있습니다. 기본적으로 에이전트 Helm chart는 builder.type을 noop로 설정합니다. 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 chart를 통해 에이전트를 배포하는 경우, 에이전트 설정은 values.yaml 파일의 agentConfig 키에 지정해야 합니다.
직접 wandb launch-agent로 에이전트를 실행하는 경우에는 --config 플래그로 YAML 파일 경로를 에이전트 설정으로 지정할 수 있습니다. 기본적으로 설정은 ~/.config/wandb/launch-config.yaml에서 로드됩니다.
Launch 에이전트 설정(launch-config.yaml)에서 environment 및 registry 키에 각각 대상 리소스 환경 이름과 컨테이너 레지스트리를 지정하세요.
다음 탭에서는 환경과 레지스트리에 따라 Launch 에이전트를 설정하는 방법을 보여줍니다.
AWS 환경 설정에는 region 키가 필요합니다. region은 에이전트가 실행되는 AWS 리전이어야 합니다.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을 참조하세요. Google Cloud 환경에는 region 및 project 키가 필요합니다. region은 에이전트가 실행되는 리전으로 설정하세요. project는 에이전트가 실행되는 Google Cloud 프로젝트로 설정하세요. 에이전트는 Python의 google.auth.default()를 사용해 기본 자격 증명을 로드합니다.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을 참조하세요. Azure 환경에는 추가 키가 필요하지 않습니다. 에이전트가 시작되면 azure.identity.DefaultAzureCredential()를 사용해 기본 Azure 자격 증명을 로드합니다.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을 참조하세요.
에이전트에 필요한 권한은 사용 사례에 따라 다릅니다.
아래는 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': '*',
},
],
}
artifactregistry.dockerimages.list;
artifactregistry.repositories.downloadArtifacts;
artifactregistry.repositories.list;
artifactregistry.repositories.uploadArtifacts;
Kaniko 빌더를 사용하는 경우 AcrPush 역할을 추가하세요.
에이전트가 Kaniko 빌더를 사용하는 경우, Launch 에이전트에는 클라우드 저장소에 업로드할 권한이 필요합니다. 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>/*"]
}
]
}
Google Cloud에서는 에이전트가 빌드 컨텍스트를 GCS에 업로드하려면 다음 IAM 권한이 필요합니다.storage.buckets.get;
storage.objects.create;
storage.objects.delete;
storage.objects.get;
에이전트가 빌드 컨텍스트를 Azure Blob Storage에 업로드하려면 Storage Blob Data Contributor 역할이 필요합니다.
Kaniko 작업에서 사용할 Kubernetes Job 사양을 에이전트 설정의 builder.kaniko-config 키에 지정합니다. 예:
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"
CoreWeave에 Launch 에이전트 배포
선택적으로 W&B Launch 에이전트를 CoreWeave Cloud 인프라에 배포할 수 있습니다. CoreWeave는 GPU 가속 워크로드를 위해 특별히 설계된 클라우드 인프라입니다.
CoreWeave에 Launch 에이전트를 배포하는 방법에 대한 자세한 내용은 CoreWeave 문서를 참조하세요.