메인 콘텐츠로 건너뛰기
W&B Launch를 사용하면 ML 워크로드를 Kubernetes 클러스터로 푸시할 수 있어, ML 엔지니어가 이미 Kubernetes로 관리 중인 리소스를 W&B 내의 간단한 인터페이스에서 바로 사용할 수 있습니다. W&B는 공식 Launch 에이전트 이미지를 제공하며, 이 이미지는 W&B에서 유지 관리하는 Helm 차트를 사용해 클러스터에 배포할 수 있습니다. W&B는 Kaniko builder를 사용해 Launch 에이전트가 Kubernetes 클러스터에서 도커 이미지를 빌드할 수 있도록 합니다. Launch 에이전트용 Kaniko를 설정하는 방법이나 작업 빌드를 비활성화하고 사전 빌드된 도커 이미지만 사용하는 방법에 대해 자세히 알아보려면 고급 에이전트 설정을 참조하세요.
Helm을 설치하고 W&B의 Launch 에이전트 Helm 차트를 적용하거나 업그레이드하려면, Kubernetes 리소스를 생성, 업데이트, 삭제할 수 있는 충분한 권한이 있는 클러스터에 대한 kubectl 액세스가 필요합니다. 일반적으로 cluster-admin 또는 이에 상응하는 권한이 있는 커스텀 역할을 가진 사용자가 필요합니다.

Kubernetes용 큐 설정

Kubernetes 대상 리소스용 Launch 큐 설정은 Kubernetes Job 사양 또는 Kubernetes Custom Resource 사양과 유사한 형태를 띱니다. Launch 큐를 생성할 때 Kubernetes 워크로드 리소스 사양의 거의 모든 측면을 제어할 수 있습니다.
spec:
  template:
    spec:
      containers:
        - env:
            - name: MY_ENV_VAR
              value: some-value
          resources:
            requests:
              cpu: 1000m
              memory: 1Gi
metadata:
  labels:
    queue: k8s-test
namespace: wandb
보안상의 이유로, W&B는 다음 리소스가 지정되지 않은 경우 이를 Launch 큐에 주입합니다:
  • securityContext
  • backOffLimit
  • ttlSecondsAfterFinished
다음 YAML 스니펫은 이러한 값이 Launch 큐에 어떻게 표시되는지 보여줍니다:
example-spec.yaml
spec:
  template:
    `backOffLimit`: 0
    ttlSecondsAfterFinished: 60
    securityContext:
      allowPrivilegeEscalation: False,
      capabilities:
        drop:
          - ALL,
      seccompProfile:
        type: "RuntimeDefault"

큐 만들기

W&B App에서 컴퓨팅 리소스로 Kubernetes를 사용하는 큐를 생성합니다:
  1. Launch 페이지로 이동합니다.
  2. Create Queue 버튼을 클릭합니다.
  3. 큐를 생성할 Entity를 선택합니다.
  4. Name 필드에 큐 이름을 입력합니다.
  5. ResourceKubernetes를 선택합니다.
  6. Configuration 필드에 이전 섹션에서 설정한 Kubernetes Job 사양 또는 Custom Resource 사양을 입력합니다.

Helm으로 Launch 에이전트 구성하기

W&B에서 제공하는 Helm 차트를 사용해 Kubernetes 클러스터에 Launch 에이전트를 배포합니다. values.yaml file에서 Launch 에이전트의 동작을 제어합니다. 일반적으로 Launch 에이전트 설정 파일(~/.config/wandb/launch-config.yaml)에 정의하는 내용을 values.yaml 파일의 launchConfig 키에 지정합니다. 예를 들어, Kaniko 도커 이미지 builder를 사용하는 EKS에서 Launch 에이전트를 실행할 수 있게 하는 Launch 에이전트 설정이 있다고 가정해 보겠습니다.
launch-config.yaml
queues:
	- <queue name>
max_jobs: <n concurrent jobs>
environment:
	type: aws
	region: us-east-1
registry:
	type: ecr
	uri: <my-registry-uri>
builder:
	type: kaniko
	build-context-store: <s3-bucket-uri>
values.yaml 파일에서는 다음과 같을 수 있습니다:
values.yaml
agent:
  labels: {}
  # W&B API 키.
  apiKey: ''
  # 에이전트에 사용할 컨테이너 이미지.
  image: wandb/launch-agent:latest
  # 에이전트 이미지의 이미지 pull 정책.
  imagePullPolicy: Always
  # 에이전트 사양의 리소스 블록.
  resources:
    limits:
      cpu: 1000m
      memory: 1Gi

# Launch 에이전트를 배포할 네임스페이스
namespace: wandb

# W&B api url (여기에 입력하세요)
baseUrl: https://api.wandb.ai

# Launch 에이전트가 배포할 수 있는 추가 대상 네임스페이스
additionalTargetNamespaces:
  - default
  - wandb

# Launch 에이전트 설정 파일의 내용을 그대로 입력하세요.
launchConfig: |
  queues:
    - <queue name>
  max_jobs: <n concurrent jobs>
  environment:
    type: aws
    region: <aws-region>
  registry:
    type: ecr
    uri: <my-registry-uri>
  builder:
    type: kaniko
    build-context-store: <s3-bucket-uri>

# git 자격 증명 파일의 내용. k8s 시크릿에 저장되어
# 에이전트 컨테이너에 마운트됩니다. 비공개 저장소를 클론하려면
# 이 값을 설정하세요.
gitCreds: |

# wandb 서비스 계정의 어노테이션. gcp에서 워크로드 ID를 설정할 때 유용합니다.
serviceAccount:
  annotations:
    iam.gke.io/gcp-service-account:
    azure.workload.identity/client-id:

# azure에서 kaniko를 사용하는 경우 azure 저장소의 액세스 키를 설정하세요.
azureStorageAccessKey: ''
레지스트리, 환경, 필수 agent 권한에 대한 자세한 내용은 고급 agent 설정을 참조하세요.