Documentation Index
Fetch the complete documentation index at: https://translations.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
W&B Launch를 사용하여 Amazon SageMaker에 Launch 작업을 제출해, SageMaker 플랫폼에서 제공 알고리즘 또는 사용자 정의 알고리즘으로 머신 러닝 모델을 학습시킬 수 있습니다. SageMaker는 컴퓨팅 리소스를 자동으로 생성하고 해제하므로, EKS 클러스터가 없는 팀에 적합한 선택이 될 수 있습니다.
Amazon SageMaker에 연결된 W&B Launch 큐로 전송된 Launch 작업은 CreateTrainingJob API를 사용하는 SageMaker Training Job으로 실행됩니다. Launch 큐 구성을 사용해 CreateTrainingJob API에 전달되는 매개변수를 제어할 수 있습니다.
Amazon SageMaker는 Docker 이미지를 사용해 Training Job을 실행합니다. SageMaker가 pull하는 이미지는 Amazon Elastic Container Registry(ECR)에 저장되어 있어야 합니다. 즉, 학습에 사용할 이미지는 ECR에 저장되어 있어야 합니다.
이 가이드는 SageMaker Training Job을 실행하는 방법을 보여줍니다. Amazon SageMaker에서 추론용 모델을 배포하는 방법은 이 Launch 작업 예제를 참고하세요.
시작하기 전에 다음 사전 준비 사항을 모두 충족했는지 확인하세요:
Launch agent가 Docker 이미지를 빌드하도록 할지 결정하기
W&B Launch agent가 대신 Docker 이미지를 빌드하도록 할지 결정합니다. 선택할 수 있는 옵션은 두 가지입니다:
- Launch agent가 Docker 이미지를 빌드하고, 그 이미지를 Amazon ECR에 푸시한 다음, 대신 SageMaker Training 작업을 제출하도록 허용합니다. 이 옵션은 학습 코드를 빠르게 반복 개발하는 ML 엔지니어에게 더 단순한 워크플로를 제공할 수 있습니다.
- Launch agent가 학습 또는 추론 스크립트를 포함한 기존 Docker 이미지를 사용하도록 합니다. 이 옵션은 기존 CI 시스템과 잘 연동됩니다. 이 옵션을 선택하는 경우, Docker 이미지를 Amazon ECR의 컨테이너 레지스트리에 수동으로 업로드해야 합니다.
사용하려는 AWS 리전에 다음 AWS 리소스들이 구성되어 있는지 확인하세요:
- 컨테이너 이미지를 저장할 ECR 리포지토리
- SageMaker Training 작업의 입력 및 출력을 저장할 하나 이상의 S3 버킷
- SageMaker가 Training 작업을 실행하고 Amazon ECR 및 Amazon S3와 상호작용할 수 있도록 권한을 부여하는 Amazon SageMaker용 IAM 역할
이 리소스들의 ARN을 기록해 두세요. Launch 큐 구성을 정의할 때 ARN이 필요합니다.
Launch 에이전트를 위한 IAM 정책 생성
- AWS 콘솔의 IAM 화면에서 새 정책을 생성합니다.
- JSON 정책 편집기로 전환한 다음, 사용 사례에 맞게 아래 정책을 붙여넣습니다.
<> 로 둘러싸인 값은 실제 값으로 바꿉니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogStreams",
"SageMaker:AddTags",
"SageMaker:CreateTrainingJob",
"SageMaker:DescribeTrainingJob"
],
"Resource": "arn:aws:sagemaker:<region>:<account-id>:*"
},
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::<account-id>:role/<RoleArn-from-queue-config>"
},
{
"Effect": "Allow",
"Action": "kms:CreateGrant",
"Resource": "<ARN-OF-KMS-KEY>",
"Condition": {
"StringEquals": {
"kms:ViaService": "SageMaker.<region>.amazonaws.com",
"kms:GrantIsForAWSResource": "true"
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogStreams",
"SageMaker:AddTags",
"SageMaker:CreateTrainingJob",
"SageMaker:DescribeTrainingJob"
],
"Resource": "arn:aws:sagemaker:<region>:<account-id>:*"
},
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::<account-id>:role/<RoleArn-from-queue-config>"
},
{
"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": "*"
},
{
"Effect": "Allow",
"Action": "kms:CreateGrant",
"Resource": "<ARN-OF-KMS-KEY>",
"Condition": {
"StringEquals": {
"kms:ViaService": "SageMaker.<region>.amazonaws.com",
"kms:GrantIsForAWSResource": "true"
}
}
}
]
}
- Next를 클릭합니다.
- 정책 이름과 설명을 입력합니다.
- Create policy를 클릭합니다.
Launch agent가 Amazon SageMaker 학습 작업을 생성할 수 있도록 권한이 있어야 합니다. 아래 절차에 따라 IAM 역할을 생성합니다:
- AWS의 IAM 화면에서 새 역할을 생성합니다.
- Trusted Entity로 AWS Account(또는 조직의 정책에 맞는 다른 옵션)를 선택합니다.
- 권한 화면을 내려서 위에서 방금 생성한 정책 이름을 선택합니다.
- 역할의 이름과 설명을 입력합니다.
- Create role을 선택합니다.
- 역할의 ARN을 기록해 둡니다. Launch agent를 설정할 때 이 ARN을 지정합니다.
IAM 역할 생성에 대한 자세한 내용은 AWS Identity and Access Management Documentation을 참조하세요.
- Launch agent가 이미지를 빌드하도록 하려면, 필요한 추가 권한은 Advanced agent set up을 참조하세요.
- SageMaker 큐에 대한
kms:CreateGrant 권한은 연결된 ResourceConfig에 VolumeKmsKeyId가 지정되어 있고, 연결된 역할에 이 작업을 허용하는 정책이 없을 때만 필요합니다.
다음으로, SageMaker를 컴퓨트 리소스로 사용하는 큐를 W&B 앱에서 생성합니다:
- Launch App으로 이동합니다.
- Create Queue 버튼을 클릭합니다.
- 큐를 생성할 Entity를 선택합니다.
- Name 필드에 큐 이름을 입력합니다.
- Resource로 SageMaker를 선택합니다.
- Configuration 필드에 SageMaker 작업에 대한 정보를 입력합니다. 기본적으로 W&B는 YAML 및 JSON 형식의
CreateTrainingJob 요청 본문을 자동으로 채워 넣습니다:
{
"RoleArn": "<REQUIRED>",
"ResourceConfig": {
"InstanceType": "ml.m4.xlarge",
"InstanceCount": 1,
"VolumeSizeInGB": 2
},
"OutputDataConfig": {
"S3OutputPath": "<REQUIRED>"
},
"StoppingCondition": {
"MaxRuntimeInSeconds": 3600
}
}
최소한 다음 항목은 지정해야 합니다:
RoleArn : SageMaker 실행 IAM 역할의 ARN입니다(사전 준비 참조). Launch 에이전트 IAM 역할과 혼동하지 마십시오.
OutputDataConfig.S3OutputPath : SageMaker 출력이 저장될 위치를 지정하는 Amazon S3 URI입니다.
ResourceConfig: 필수 리소스 구성 사양입니다. 리소스 구성 옵션은 여기에 정리되어 있습니다.
StoppingCondition: 학습 작업의 중지 조건에 대한 필수 사양입니다. 옵션은 여기에 정리되어 있습니다.
- Create Queue 버튼을 클릭합니다.
이 섹션에서는 에이전트를 어디에 배포할 수 있는지와, 배포 위치에 따라 에이전트를 어떻게 설정해야 하는지를 설명합니다.
Amazon SageMaker 대기열에 대해 Launch agent를 배포하는 방법에는 여러 가지 옵션이 있습니다. 로컬 머신, EC2 인스턴스, 또는 EKS 클러스터에 배포할 수 있습니다. 에이전트를 배포하는 위치에 따라 Launch agent를 적절히 구성하십시오.
Launch 에이전트를 어디에서 실행할지 결정
프로덕션 워크로드가 있고 이미 EKS 클러스터를 보유한 고객의 경우, W&B에서는 이 Helm 차트를 사용하여 EKS 클러스터에 Launch 에이전트를 배포할 것을 권장합니다.
프로덕션 워크로드이지만 현재 EKS 클러스터가 없는 경우에는 EC2 인스턴스가 좋은 옵션입니다. Launch 에이전트 인스턴스는 항상 실행 상태를 유지하지만, 에이전트는 비교적 저렴한 t2.micro 크기의 EC2 인스턴스 정도면 충분합니다.
실험적이거나 개인 단일 사용 사례의 경우, 로컬 머신에서 Launch 에이전트를 실행하는 것이 빠르게 시작하는 방법이 될 수 있습니다.
사용 사례에 따라, Launch 에이전트를 올바르게 구성하기 위해 다음 탭에 제공된 안내를 따르십시오:
W&B에서는 EKS 클러스터에 에이전트를 설치할 때 W&B에서 관리하는 helm chart를 사용하는 것을 강력히 권장합니다. Amazon EC2 대시보드로 이동하여 다음 단계를 완료합니다:
- Launch instance를 클릭합니다.
- Name 필드에 이름을 입력합니다. 필요하다면 태그를 추가합니다.
- Instance type에서 EC2 컨테이너용 인스턴스 유형을 선택합니다. 1vCPU와 1GiB 메모리(예: t2.micro)보다 더 큰 사양은 필요하지 않습니다.
- Key pair (login) 필드에서 조직용 키 페어를 생성합니다. 이 키 페어는 이후 단계에서 SSH 클라이언트를 사용해 EC2 인스턴스에 연결할 때 사용합니다.
- Network settings에서 조직에 적합한 보안 그룹을 선택합니다.
- Advanced details를 펼칩니다. IAM instance profile에서는 위에서 생성한 Launch 에이전트 IAM 역할을 선택합니다.
- Summary 필드를 검토합니다. 올바르면 Launch instance를 선택합니다.
AWS의 EC2 대시보드 왼쪽 패널에서 Instances로 이동합니다. 생성한 EC2 인스턴스가 실행 중인지(Instance state 열 참고) 확인합니다. EC2 인스턴스가 실행 중임을 확인했으면, 로컬 머신의 터미널로 이동하여 다음을 수행합니다:
- Connect를 선택합니다.
- SSH client 탭을 선택하고, EC2 인스턴스에 연결하기 위해 표시된 지침을 따릅니다.
- EC2 인스턴스 내에서 다음 패키지를 설치합니다:
sudo yum install python311 -y && python3 -m ensurepip --upgrade && pip3 install wandb && pip3 install wandb[launch]
- 다음으로, EC2 인스턴스 내에 Docker를 설치하고 시작합니다:
sudo yum update -y && \
sudo yum install -y docker python3 && \
sudo systemctl start docker && \
sudo systemctl enable docker && \
sudo usermod -a -G docker ec2-user
newgrp docker
이제 Launch 에이전트 구성을 설정하는 다음 단계로 진행할 수 있습니다. 로컬 머신에서 폴링 중인 에이전트에 역할을 연결하려면 ~/.aws/config 및 ~/.aws/credentials에 위치한 AWS 구성 파일을 사용하십시오. 이전 단계에서 Launch 에이전트용으로 생성한 IAM 역할 ARN을 제공합니다.[profile SageMaker-agent]
role_arn = arn:aws:iam::<account-id>:role/<agent-role-name>
source_profile = default
[default]
aws_access_key_id=<access-key-id>
aws_secret_access_key=<secret-access-key>
aws_session_token=<session-token>
세션 토큰은 연결된 프린시펄에 따라 최대 유효 기간이 1시간 또는 3일임에 유의하십시오.
launch-config.yaml라는 이름의 YAML 구성 파일로 launch 에이전트를 구성합니다.
기본적으로 W&B는 ~/.config/wandb/launch-config.yaml 위치에서 구성 파일을 찾습니다. -c 플래그와 함께 launch 에이전트를 활성화할 때 다른 디렉터리를 선택적으로 지정할 수 있습니다.
다음 YAML 스니펫은 핵심 에이전트 구성 옵션을 지정하는 방법을 보여줍니다:
max_jobs: -1
queues:
- <queue-name>
environment:
type: aws
region: <your-region>
registry:
type: ecr
uri: <ecr-repo-arn>
builder:
type: docker
이제 wandb launch-agent를 실행해 에이전트를 시작하세요
(선택 사항) Launch 작업용 Docker 이미지를 Amazon ECR에 푸시하기
Launch 작업이 포함된 Docker 이미지를 Amazon ECR 리포지토리에 업로드하십시오. 이미지 기반 작업을 사용하는 경우, 새 Launch 작업을 제출하기 전에 해당 Docker 이미지는 ECR 레지스트리에 미리 업로드되어 있어야 합니다.