> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 튜토리얼: SageMaker에서 W&B Launch 설정하기

> ECR, S3, IAM 설정 방법과 함께 Amazon SageMaker에 트레이닝 작업을 제출하도록 W&B Launch를 설정합니다.

이 튜토리얼은 ML 엔지니어와 플랫폼 관리자를 위해 Amazon SageMaker에 트레이닝 작업을 제출하도록 W\&B Launch를 설정하는 방법을 설명합니다. 튜토리얼을 마치면 W\&B에서 SageMaker 트레이닝 작업을 실행하는 데 필요한 AWS 리소스, IAM 역할, 큐 설정, Launch 에이전트가 모두 준비됩니다.

W\&B Launch로 Amazon SageMaker에 Launch 작업을 제출하면 SageMaker 플랫폼에서 기본 제공 알고리즘이나 맞춤형 알고리즘으로 머신러닝 모델을 트레이닝할 수 있습니다. SageMaker가 컴퓨팅 리소스의 프로비저닝과 해제를 처리하므로 EKS 클러스터가 없는 팀에게 적합한 선택이 될 수 있습니다.

Amazon SageMaker에 연결된 W\&B Launch 큐는 [CreateTrainingJob API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)를 통해 Launch 작업을 SageMaker 트레이닝 작업으로 실행합니다. `CreateTrainingJob` API로 전송되는 인수는 Launch 큐 설정에서 제어할 수 있습니다.

Amazon SageMaker는 [도커 이미지를 사용하여 트레이닝 작업을 실행합니다](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-dockerfile.html). SageMaker가 가져오는 이미지는 Amazon Elastic Container Registry(ECR)에 저장되어 있어야 합니다. 따라서 트레이닝에 사용할 이미지를 ECR에 저장해야 합니다.

<Note>
  이 가이드에서는 SageMaker 트레이닝 작업을 실행하는 방법을 설명합니다. Amazon SageMaker에서 추론용 모델을 배포하는 방법은 [이 예제 Launch 작업](https://github.com/wandb/launch-jobs/tree/main/jobs/deploy_to_sagemaker_endpoints)을 참조하세요.
</Note>

<h2 id="prerequisites">
  사전 요구 사항
</h2>

시작하기 전에 다음 사전 요구 사항을 충족해야 합니다.

* [Launch 에이전트가 도커 이미지를 대신 구축하도록 할지 결정하세요](#decide-if-you-want-the-launch-agent-to-build-a-docker-image).
* [AWS 리소스를 설정하고 S3, ECR, SageMaker IAM 역할 정보를 수집하세요](#set-up-aws-resources).
* [Launch 에이전트용 IAM 역할을 생성하세요](#create-an-iam-role-for-the-launch-agent).

다음 섹션에서는 각 사전 요구 사항을 충족하는 방법을 설명합니다.

<h3 id="decide-if-you-want-the-launch-agent-to-build-a-docker-image">
  Launch 에이전트가 도커 이미지를 구축하도록 할지 결정하기
</h3>

W\&B Launch 에이전트가 도커 이미지를 대신 구축하도록 할지 결정하세요. 다음 두 가지 옵션 중 하나를 선택할 수 있습니다.

* Launch 에이전트가 도커 이미지를 구축하고, 이미지를 Amazon ECR에 푸시한 뒤, [SageMaker 트레이닝](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) 작업까지 대신 제출하도록 허용합니다. 이 옵션을 사용하면 트레이닝 코드를 빠르게 반복 개선하는 ML 엔지니어가 작업을 더 간편하게 진행할 수 있습니다.
* 트레이닝 또는 추론 스크립트가 포함된 기존 도커 이미지를 사용합니다. 이 옵션은 기존 CI 시스템과 함께 사용하기에 적합합니다. 이 옵션을 선택하면 Amazon ECR의 컨테이너 레지스트리에 도커 이미지를 직접 업로드해야 합니다.

<h3 id="set-up-aws-resources">
  AWS 리소스 설정
</h3>

사용할 AWS 리전에 다음 AWS 리소스가 설정되어 있어야 합니다.

1. 컨테이너 이미지를 저장할 [ECR 저장소](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html)
2. SageMaker 트레이닝 작업의 입력과 출력을 저장할 [S3 버킷](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) 1개 이상
3. SageMaker가 트레이닝 작업을 실행하고 Amazon ECR 및 Amazon S3와 상호 작용할 수 있도록 허용하는 Amazon SageMaker용 IAM 역할

이 리소스들의 ARN을 기록해 두세요. [Launch 큐 설정](#configure-launch-queue-for-sagemaker)을 정의할 때 필요합니다.

<h3 id="create-an-iam-policy-for-the-launch-agent">
  Launch 에이전트용 IAM 정책 생성
</h3>

Launch 에이전트가 SageMaker 트레이닝 작업을 제출하고, 필요한 경우 ECR에 이미지를 푸시하려면 해당 권한을 부여하는 IAM 정책이 필요합니다. 다음 단계에 따라 정책을 생성하세요.

1. AWS의 IAM 화면에서 새 정책을 생성하세요.
2. JSON 정책 편집기로 전환한 다음, 사용 사례에 맞는 아래 정책을 붙여넣으세요. `[BRACKETS]`로 표시된 자리 표시자는 실제 값으로 바꾸세요.

<Tabs>
  <Tab title="에이전트가 사전 구축된 도커 이미지를 제출하는 경우">
    ```json theme={"system"}
      {
        "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/[ROLE-ARN-FROM-QUEUE-CONFIG]"
          },
        {
            "Effect": "Allow",
            "Action": "kms:CreateGrant",
            "Resource": "[ARN-OF-KMS-KEY]",
            "Condition": {
              "StringEquals": {
                "kms:ViaService": "SageMaker.[REGION].amazonaws.com",
                "kms:GrantIsForAWSResource": "true"
              }
            }
          }
        ]
      }
    ```
  </Tab>

  <Tab title="에이전트가 도커 이미지를 구축하고 제출하는 경우">
    ```json theme={"system"}
      {
        "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/[ROLE-ARN-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"
              }
            }
          }
        ]
      }
    ```
  </Tab>
</Tabs>

3. **Next**를 클릭하세요.
4. 정책 이름과 설명을 입력하세요.
5. **Create policy**를 클릭하세요.

이제 IAM 정책이 준비되었습니다. 다음 섹션에서 이 정책을 Launch 에이전트 역할에 연결합니다.

<h3 id="create-an-iam-role-for-the-launch-agent">
  Launch 에이전트용 IAM 역할 생성
</h3>

Launch 에이전트가 Amazon SageMaker 트레이닝 작업을 생성하려면 관련 권한이 필요합니다. 이전 섹션에서 생성한 정책을 전용 역할에 연결하면 에이전트가 런타임에 해당 역할을 수임하여 권한을 얻을 수 있습니다. 다음 절차에 따라 IAM 역할을 생성하세요.

1. AWS의 IAM 화면에서 새 역할을 생성합니다.
2. **Trusted Entity**에서 **AWS Account**(또는 조직의 정책에 맞는 다른 옵션)를 선택합니다.
3. 권한 화면을 스크롤하여 이전 섹션에서 생성한 정책 이름을 선택합니다.
4. 역할의 이름과 설명을 입력합니다.
5. **Create role**을 선택합니다.
6. 역할의 ARN을 기록해 둡니다. 이 ARN은 Launch 에이전트를 설정할 때 지정합니다.

IAM 역할 생성 방법은 [AWS Identity and Access Management 문서](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)를 참조하세요.

<Note>
  * Launch 에이전트가 이미지를 구축하도록 하려면 [고급 에이전트 설정](/ko/products/wandb/platform/launch/setup-agent-advanced)에서 필요한 추가 권한을 확인하세요.
  * SageMaker 큐의 `kms:CreateGrant` 권한은 연결된 `ResourceConfig`에 `VolumeKmsKeyId`가 지정되어 있고 연결된 역할에 이 액션을 허용하는 정책이 없는 경우에만 필요합니다.
</Note>

<h2 id="configure-the-launch-queue-for-sagemaker">
  SageMaker용 Launch 큐 설정하기
</h2>

AWS 사전 요구 사항이 준비되었다면 작업을 SageMaker로 라우팅하는 W\&B Launch 큐를 생성할 수 있습니다. W\&B App에서 SageMaker를 컴퓨팅 리소스로 사용하는 큐를 생성하세요.

1. [Launch App](https://forge.coreweave.com/wandb/launch)으로 이동하세요.
2. **Create Queue**를 클릭하세요.
3. 큐를 생성할 **Entity**를 선택하세요.
4. **Name** 필드에 큐 이름을 입력하세요.
5. **Resource**로 **SageMaker**를 선택하세요.
6. **Configuration** 필드에 SageMaker 작업 정보를 입력하세요. 기본적으로 W\&B는 YAML 및 JSON 형식의 `CreateTrainingJob` 요청 본문을 자동으로 채워 줍니다.
   ```json theme={"system"}
   {
     "RoleArn": "[REQUIRED]", 
     "ResourceConfig": {
         "InstanceType": "ml.m4.xlarge",
         "InstanceCount": 1,
         "VolumeSizeInGB": 2
     },
     "OutputDataConfig": {
         "S3OutputPath": "[REQUIRED]"
     },
     "StoppingCondition": {
         "MaxRuntimeInSeconds": 3600
     }
   }
   ```

최소한 다음 항목은 반드시 지정해야 합니다.

* `RoleArn`: SageMaker 실행 IAM 역할의 ARN입니다([사전 요구 사항](#prerequisites) 참조). Launch **에이전트** IAM 역할과 혼동하지 마세요.
* `OutputDataConfig.S3OutputPath`: SageMaker가 출력을 저장할 위치를 지정하는 Amazon S3 URI입니다.
* `ResourceConfig`: 리소스 설정으로, 필수 항목입니다. 리소스 설정 옵션은 [AWS `ResourceConfig` 문서](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceConfig.html)를 참조하세요.
* `StoppingCondition`: 트레이닝 작업의 중지 조건으로, 필수 항목입니다. 옵션은 [AWS `StoppingCondition` 문서](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StoppingCondition.html)를 참조하세요.

7. **Create Queue**를 클릭하세요.

이제 큐가 생성되었습니다. 이 큐를 폴링하도록 Launch 에이전트를 설정하면 큐에서 작업을 받을 수 있습니다.

<h2 id="set-up-the-launch-agent">
  Launch 에이전트 설정
</h2>

다음 섹션에서는 에이전트를 배포할 수 있는 위치와 배포 위치에 따라 에이전트를 설정하는 방법을 설명합니다.

[Amazon SageMaker 큐용 Launch 에이전트는 여러 위치에 배포할 수 있습니다](#decide-where-to-run-the-launch-agent). 로컬 머신, EC2 인스턴스 또는 EKS 클러스터 중에서 선택하세요. 에이전트를 배포한 위치에 맞게 [Launch 에이전트를 설정하세요](#configure-a-launch-agent).

<h3 id="decide-where-to-run-the-launch-agent">
  Launch 에이전트를 실행할 위치 결정하기
</h3>

프로덕션 워크로드를 운영하거나 이미 EKS 클러스터가 있는 고객이라면, 이 Helm chart를 사용해 Launch 에이전트를 EKS 클러스터에 배포할 것을 권장합니다.

EKS 클러스터가 없는 상태에서 프로덕션 워크로드를 운영한다면 EC2 인스턴스가 좋은 선택입니다. Launch 에이전트 인스턴스는 항상 실행 상태로 유지되지만, 에이전트에는 `t2.micro` 크기의 EC2 인스턴스면 충분하므로 비용 부담이 적습니다.

실험 목적이거나 개인적으로 사용하는 경우에는 로컬 머신에서 Launch 에이전트를 실행하여 빠르게 시작할 수 있습니다.

사용 사례에 맞는 탭의 안내에 따라 Launch 에이전트를 설정하세요.

<Tabs>
  <Tab title="EKS">
    EKS 클러스터에 에이전트를 설치할 때는 [W\&B 관리형 Helm chart](https://github.com/wandb/helm-charts/tree/main/charts/launch-agent)를 사용할 것을 권장합니다.
  </Tab>

  <Tab title="EC2">
    Amazon EC2 대시보드로 이동하여 다음 단계를 완료하세요.

    1. **Launch instance**를 클릭합니다.
    2. **Name** 필드에 이름을 입력합니다. 필요하면 태그를 추가합니다.
    3. **Instance type**에서 EC2 컨테이너의 인스턴스 유형을 선택합니다. vCPU 1개와 메모리 1GiB면 충분합니다(예: `t2.micro`).
    4. **Key pair (login)** 필드에서 조직의 키 페어를 생성합니다. 이 키 페어는 이후 단계에서 SSH 클라이언트로 [EC2 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html)할 때 사용합니다.
    5. **Network settings**에서 조직의 보안 그룹을 선택합니다.
    6. **Advanced details**를 펼칩니다. **IAM instance profile**에서 이전 섹션에서 생성한 Launch 에이전트 IAM 역할을 선택합니다.
    7. **Summary** 필드를 검토합니다. 내용이 올바르면 **Launch instance**를 선택합니다.

    AWS EC2 대시보드의 왼쪽 패널에서 **Instances**로 이동합니다. 생성한 EC2 인스턴스가 실행 중인지 확인합니다(**Instance state** 열 참조). EC2 인스턴스가 실행 중이면 로컬 머신의 터미널로 이동하여 다음 단계를 완료하세요.

    1. **Connect**를 선택합니다.
    2. **SSH client** 탭을 선택하고 안내에 따라 EC2 인스턴스에 연결합니다.
    3. EC2 인스턴스에서 다음 패키지를 설치합니다.
       ```bash theme={"system"}
       sudo yum install python311 -y && python3 -m ensurepip --upgrade && pip3 install wandb && pip3 install wandb[launch]
       ```
    4. 다음으로 EC2 인스턴스에서 Docker를 설치하고 시작합니다.
       ```bash theme={"system"}
       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 에이전트 설정을 구성할 수 있습니다.
  </Tab>

  <Tab title="로컬 머신">
    `~/.aws/config` 및 `~/.aws/credentials`에 있는 AWS 설정 파일을 사용하여 로컬 머신에서 폴링하는 에이전트에 역할을 연결하세요. 이전 단계에서 Launch 에이전트용으로 생성한 IAM 역할 ARN을 입력하세요.

    ```yaml title="~/.aws/config" theme={"system"}
    [profile SageMaker-agent]
    role_arn = arn:aws:iam::[ACCOUNT-ID]:role/[AGENT-ROLE-NAME]
    source_profile = default                                                                   
    ```

    ```yaml title="~/.aws/credentials" theme={"system"}
    [default]
    aws_access_key_id=[ACCESS-KEY-ID]
    aws_secret_access_key=[SECRET-ACCESS-KEY]
    aws_session_token=[SESSION-TOKEN]
    ```

    세션 토큰의 [최대 유효 기간](https://docs.aws.amazon.com/cli/latest/reference/sts/get-session-token.html#description)은 연결된 principal에 따라 1시간 또는 3일입니다.
  </Tab>
</Tabs>

<h3 id="configure-a-launch-agent">
  Launch 에이전트 설정하기
</h3>

에이전트를 실행할 위치를 정했다면, 에이전트가 SageMaker 큐를 폴링하고 AWS에 인증할 수 있도록 설정하세요. Launch 에이전트는 `launch-config.yaml`이라는 YAML 설정 파일로 설정합니다.

W\&B는 기본적으로 `~/.config/wandb/launch-config.yaml`에서 설정 파일을 찾습니다. 필요한 경우 Launch 에이전트를 활성화할 때 `-c` 플래그로 다른 디렉터리를 지정할 수 있습니다.

다음 YAML 스니펫은 핵심 에이전트 설정 옵션을 지정하는 방법을 보여줍니다.

```yaml title="launch-config.yaml" theme={"system"}
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 에이전트가 실행 중이며, SageMaker 큐를 폴링하여 작업을 확인합니다.

<h2 id="optional-push-your-launch-job-docker-image-to-amazon-ecr">
  선택: Launch 작업 도커 이미지를 Amazon ECR에 푸시하기
</h2>

<Note>
  이 섹션은 Launch 에이전트가 트레이닝 또는 추론 로직이 포함된 기존 도커 이미지를 사용하는 경우에만 해당합니다. [Launch 에이전트는 두 가지 동작 옵션을 지원합니다.](#decide-if-you-want-the-launch-agent-to-build-a-docker-image)
</Note>

Launch 작업이 포함된 도커 이미지를 Amazon ECR 저장소에 업로드하세요. 이미지 기반 작업을 사용한다면 새 Launch 작업을 제출하기 전에 도커 이미지를 ECR 레지스트리에 올려 두어야 합니다.


## Related topics

- [튜토리얼: Kubernetes에서 W&B Launch 설정하기](/ko/products/wandb/platform/launch/setup-launch-kubernetes.md)
