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.
이 튜토리얼에서는 클러스터 관리자가 Kubernetes 클러스터에 W&B Launch를 설정하여 ML 엔지니어가 W&B에서 직접 트레이닝 워크로드를 제출하고 관리할 수 있도록 하는 방법을 안내합니다. W&B Launch를 사용하면 ML 워크로드를 Kubernetes 클러스터로 전송할 수 있으며, ML 엔지니어는 W&B 내에서 바로 Kubernetes로 이미 관리 중인 리소스를 사용할 수 있습니다.
W&B는 공식 Launch 에이전트 image를 제공하며, W&B에서 유지 관리하는 Helm chart를 사용해 이를 클러스터에 배포할 수 있습니다.
W&B는 Kaniko builder를 사용하여 Launch 에이전트가 Kubernetes 클러스터에서 도커 이미지를 빌드할 수 있도록 지원합니다. Launch 에이전트용 Kaniko를 설정하는 방법이나 작업 빌드를 비활성화하고 사전 빌드된 도커 이미지만 사용하는 방법을 알아보려면 고급 에이전트 설정을 참조하세요.
W&B Launch 에이전트 Helm chart를 설치하고 적용 또는 업그레이드하려면, Kubernetes 리소스를 생성, 업데이트, 삭제할 수 있는 충분한 권한이 있는 클러스터에 대해 kubectl 액세스 권한이 있어야 합니다. 일반적으로는 cluster-admin 권한이 있는 사용자 또는 이에 상응하는 권한을 가진 커스텀 역할이 필요합니다.
Launch 큐는 에이전트가 각 작업을 실행할 때 사용하는 Kubernetes 워크로드 사양을 정의합니다. Kubernetes 대상 리소스용 Launch 큐 설정은 Kubernetes job spec 또는 Kubernetes custom resource 사양과 유사한 형태를 띱니다.
Launch 큐를 생성할 때 Kubernetes 워크로드 리소스 사양의 거의 모든 측면을 제어할 수 있습니다.
Kubernetes job spec
Custom resource 사양
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
일부 사용 사례에서는 CustomResource 정의를 사용하는 것이 좋을 수 있습니다. 예를 들어 멀티노드 분산 트레이닝을 수행하려는 경우 CustomResource 정의가 유용합니다. 예제 애플리케이션은 Volcano를 사용한 멀티노드 작업에서 Launch를 사용하는 튜토리얼을 참조하세요. 또 다른 사용 사례로는 Launch를 Kubeflow와 함께 사용하는 경우가 있습니다.다음 YAML 스니펫은 Kubeflow를 사용하는 Launch 큐 설정 예시를 보여줍니다.kubernetes:
kind: PyTorchJob
spec:
pytorchReplicaSpecs:
Master:
replicas: 1
template:
spec:
containers:
- name: pytorch
image: '${image_uri}'
imagePullPolicy: Always
restartPolicy: Never
Worker:
replicas: 2
template:
spec:
containers:
- name: pytorch
image: '${image_uri}'
imagePullPolicy: Always
restartPolicy: Never
ttlSecondsAfterFinished: 600
metadata:
name: '${run_id}-pytorch-job'
apiVersion: kubeflow.org/v1
보안상의 이유로, W&B는 다음 리소스가 지정되지 않은 경우 이를 Launch 큐에 주입합니다:
securityContext
backOffLimit
ttlSecondsAfterFinished
다음 YAML 스니펫은 이러한 값이 Launch 큐에 어떻게 표시되는지 보여줍니다:
spec:
template:
backOffLimit: 0
ttlSecondsAfterFinished: 60
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
seccompProfile:
type: "RuntimeDefault"
W&B App에서 컴퓨팅 리소스로 Kubernetes를 사용하는 큐를 생성합니다:
- Launch 페이지로 이동합니다.
- Create Queue 버튼을 클릭합니다.
- 큐를 생성할 Entity를 선택합니다.
- Name 필드에 큐 이름을 입력합니다.
- Resource로 Kubernetes를 선택합니다.
- Configuration 필드에 Kubernetes용 큐 설정에서 설정한 Kubernetes job 워크플로 사양 또는 custom resource 사양을 입력합니다.
큐가 준비되면 다음으로 큐에서 작업을 가져와 클러스터에서 실행하는 Launch 에이전트를 배포합니다. W&B에서 제공하는 Helm chart를 사용해 Kubernetes 클러스터에 Launch 에이전트를 배포하세요. values.yaml 파일에서 Launch 에이전트의 동작을 제어할 수 있습니다.
values.yaml 파일의 launchConfig 키 안에는 일반적으로 Launch 에이전트 설정 파일(~/.config/wandb/launch-config.yaml)에 정의하는 내용을 지정하세요.
예를 들어, Kaniko 도커 이미지 builder를 사용하는 EKS에서 Launch 에이전트를 실행할 수 있는 Launch 에이전트 설정이 있다고 가정해 보겠습니다. [QUEUE-NAME], [MAX-CONCURRENT-JOBS], [MY-REGISTRY-URI], [S3-BUCKET-URI]를 사용자 환경에 맞는 값으로 바꾸세요:
queues:
- [QUEUE-NAME]
max_jobs: [MAX-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 파일에서는 다음과 같이 표시될 수 있습니다. [QUEUE-NAME], [MAX-CONCURRENT-JOBS], [AWS-REGION], [MY-REGISTRY-URI], [S3-BUCKET-URI]를 사용자 환경에 맞는 값으로 바꾸세요:
agent:
labels: {}
# W&B API 키.
apiKey: ''
# 에이전트에 사용할 컨테이너 이미지.
image: wandb/launch-agent:latest
# 에이전트 이미지의 이미지 풀 정책.
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: [MAX-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: ''
레지스트리, 환경, 및 필수 에이전트 권한에 대한 자세한 내용은 고급 에이전트 설정을 참조하세요.