

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# SageMaker HyperPod 시작하기
<a name="smcluster-getting-started-slurm"></a>

첫 번째 SageMaker HyperPod 클러스터 생성을 시작하고 SageMaker HyperPod의 클러스터 작업 기능을 알아봅니다. SageMaker AI 콘솔 UI 또는 AWS CLI 명령을 통해 SageMaker HyperPod 클러스터를 생성할 수 있습니다. 이 자습서에서는 인기 있는 워크로드 스케줄러 소프트웨어인 Slurm을 사용하여 새 SageMaker HyperPod 클러스터를 생성하는 방법을 보여줍니다. 이 자습서를 진행한 후에는 AWS Systems Manager 명령()을 사용하여 클러스터 노드에 로그인하는 방법을 알게 됩니다`aws ssm`. 이 자습서를 완료한 후 [SageMaker HyperPod Slurm 클러스터 작업](sagemaker-hyperpod-operate-slurm.md)도 확인하여 SageMaker HyperPod 기본 작업에 대해 자세히 알아보고 프로비저닝된 클러스터에서 작업을 예약하는 방법을 알아보려면 [SageMaker HyperPod 클러스터의 작업](sagemaker-hyperpod-run-jobs-slurm.md)을 참조하세요.

**작은 정보**  
실제 예제 및 솔루션을 찾으려면 [SageMaker HyperPod 워크숍](https://catalog.workshops.aws/sagemaker-hyperpod)도 참조하세요.

**Topics**
+ [SageMaker AI 콘솔을 사용하여 SageMaker HyperPod 시작하기](smcluster-getting-started-slurm-console.md)
+ [CloudFormation 템플릿을 사용하여 SageMaker HyperPod 클러스터 생성](smcluster-getting-started-slurm-console-create-cluster-cfn.md)
+ [를 사용하여 SageMaker HyperPod 시작하기 AWS CLI](smcluster-getting-started-slurm-cli.md)

# SageMaker AI 콘솔을 사용하여 SageMaker HyperPod 시작하기
<a name="smcluster-getting-started-slurm-console"></a>

다음 자습서에서는 새 SageMaker HyperPod 클러스터를 생성하고 SageMaker AI 콘솔 UI를 통해 Slurm으로 설정하는 방법을 보여줍니다. 자습서를 따라 세 개의 Slurm 노드인 `my-controller-group`, `my-login-group` 및 `worker-group-1`이 있는 HyperPod 클러스터를 생성합니다.

**Topics**
+ [클러스터 생성](#smcluster-getting-started-slurm-console-create-cluster-page)
+ [리소스 배포](#smcluster-getting-started-slurm-console-create-cluster-deploy)
+ [클러스터를 삭제하고 리소스를 정리합니다.](#smcluster-getting-started-slurm-console-delete-cluster-and-clean)

## 클러스터 생성
<a name="smcluster-getting-started-slurm-console-create-cluster-page"></a>

**SageMaker HyperPod 클러스터** 페이지로 이동하여 **Slurm** 오케스트레이션을 선택하려면 다음 단계를 따르세요.

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 Amazon SageMaker AI 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **HyperPod 클러스터**를 선택하고 **클러스터 관리**를 선택합니다.

1. **SageMaker HyperPod 클러스터** 페이지에서 **HyperPod 클러스터 생성**을 선택합니다.

1. **HyperPod 클러스터 생성** 드롭다운에서 **Slurm에 의해 오케스트레이션됨**을 선택합니다.

1. Slurm 클러스터 생성 페이지에는 두 가지 옵션이 있습니다. 필요에 맞는 옵션을 선택하세요.

   1. **빠른 설정** - 기본 설정으로 즉시 시작하려면 **빠른 설정**을 선택합니다. 이 옵션을 사용하면 SageMaker AI는 클러스터를 생성하는 과정에서 VPC, 서브넷, 보안 그룹, Amazon S3 버킷, IAM 역할 및 FSx for Lustre와 같은 새 리소스를 생성합니다.

   1. **사용자 지정 설정** - 기존 AWS 리소스와 통합하거나 특정 네트워킹, 보안 또는 스토리지 요구 사항이 있는 경우 **사용자 지정 설정**을 선택합니다. 이 옵션을 사용하면 기존 리소스를 사용하거나 새 리소스를 생성할 수 있으며 필요에 가장 적합한 구성을 사용자 지정할 수 있습니다.

## 빠른 설정
<a name="smcluster-getting-started-slurm-console-create-cluster-default"></a>

**빠른 설정** 섹션에서 다음 단계에 따라 Slurm 오케스트레이션을 사용하여 HyperPod 클러스터를 생성합니다.

### 일반 설정
<a name="smcluster-getting-started-slurm-console-create-cluster-default-general"></a>

새 클러스터의 이름을 지정합니다. 클러스터를 생성한 후에는 이름을 변경할 수 없습니다.

### 인스턴스 그룹
<a name="smcluster-getting-started-slurm-console-create-cluster-default-instance-groups"></a>

인스턴스 그룹을 추가하려면 **그룹 추가**를 선택합니다. 각 인스턴스 그룹을 다르게 구성할 수 있으며 다양한 인스턴스 유형을 가진 여러 인스턴스 그룹으로 구성된 이종 클러스터를 생성할 수 있습니다. 클러스터를 배포하려면 컨트롤러 및 컴퓨팅 그룹 유형에 인스턴스 그룹을 하나 이상 추가해야 합니다.

**중요**  
한 번에 하나의 인스턴스 그룹을 추가할 수 있습니다. 여러 인스턴스 그룹을 생성하려면 각 인스턴스 그룹에 대해 프로세스를 반복합니다.

이 단계를 따라 인스턴스 그룹을 추가합니다.

1. **인스턴스 그룹 유형**에서 인스턴스 그룹의 유형을 선택합니다. 이 자습서에서는 `my-controller-group`에 **컨트롤러(헤드)**를, `my-login-group`에 **로그인**을, `worker-group-1`에 **컴퓨팅(워커)**을 선택합니다.

1. **이름**에 인스턴스 그룹의 이름을 지정합니다. 이 자습서에서는 `my-controller-group`, `my-login-group` 및 `worker-group-1`라는 인스턴스 그룹을 세 개 생성합니다.

1.  **인스턴스 용량**에서 온디맨드 용량 또는 훈련 계획을 선택하여 컴퓨팅 리소스를 예약합니다.

1. **인스턴스 유형**에서 인스턴스 그룹의 인스턴스를 선택합니다. 이 자습서에서는 `my-controller-group`에 대해 `ml.c5.xlarge`, `my-login-group`에 대해 `ml.m5.4xlarge`, `worker-group-1`에 `ml.trn1.32xlarge`를 선택합니다.
**중요**  
할당량이 충분하고 계정에 대해 할당되지 않은 IP 주소가 충분한 인스턴스 유형을 선택해야 합니다. 할당량을 보거나 추가로 요청하려면 [SageMaker HyperPod 할당량](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas) 섹션을 참조하세요.

1. **인스턴스 수량 **에서 클러스터 사용에 대한 인스턴스 할당량을 초과하지 않는 정수를 지정합니다. 이 자습서에서는 세 그룹 모두에 대해 **1**을 입력합니다.

1. **대상 가용 영역**에서 인스턴스를 프로비저닝할 가용 영역을 선택합니다. 가용 영역은 가속화된 컴퓨팅 용량의 위치와 일치해야 합니다.

1. **인스턴스당 추가 스토리지 볼륨(GB) - 선택 사항**에서 1\$116,384 사이의 정수를 지정하여 추가 Elastic Block Store(EBS) 볼륨의 크기를 기가바이트(GB) 단위로 설정합니다. EBS 볼륨은 인스턴스 그룹의 각 인스턴스에 연결됩니다. 추가 EBS 볼륨의 기본 탑재 경로는 `/opt/sagemaker`입니다. 클러스터가 성공적으로 생성된 후 클러스터 인스턴스(노드)에 SSH를 넣고 `df -h` 명령을 실행하여 EBS 볼륨이 올바르게 마운트되었는지 확인할 수 있습니다. 추가 EBS 볼륨을 연결하면 *Amazon Elastic Block Store 사용 설명서*의 [Amazon EBS 볼륨](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html) 섹션에 설명된 대로 안정적이고 인스턴스가 아니며 독립적으로 지속되는 스토리지가 제공됩니다.

1. **인스턴스 그룹 추가**를 선택합니다.

### 빠른 설정 기본값
<a name="smcluster-getting-started-slurm-console-create-cluster-default-settings"></a>

이 섹션에는 클러스터 생성 프로세스 중에 생성되는 모든 새 AWS 리소스를 포함하여 클러스터 생성에 대한 모든 기본 설정이 나열됩니다. 기본 설정을 검토합니다.

## 사용자 지정 설정
<a name="smcluster-getting-started-slurm-console-create-cluster-custom"></a>

**사용자 지정 설정** 섹션에서 다음 단계에 따라 Slurm 오케스트레이션을 사용하여 HyperPod 클러스터를 생성합니다.

### 일반 설정
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-general"></a>

새 클러스터의 이름을 지정합니다. 클러스터를 생성한 후에는 이름을 변경할 수 없습니다.

**인스턴스 복구**에서 **자동 - *권장*** 또는 **없음**을 선택합니다.

### 네트워킹
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-network"></a>

클러스터 생성을 위한 네트워크 설정을 구성합니다. 클러스터를 생성한 후에는 이 설정을 변경할 수 없습니다.

1. **VPC**의 경우, SageMaker AI에 VPC에 대한 액세스 권한을 부여하는 VPC가 이미 있는 경우 자체 VPC를 선택합니다. 새 VPC를 생성하려는 경우 *Amazon Virtual Private Cloud 사용 설명서*의 [VPC 생성](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)의 지침을 따르세요. 기본 SageMaker AI VPC를 사용하기 위해 **없음** 상태로 둘 수 있습니다.

1. **VPC IPv4 CIDR 블록**에 VPC의 시작 IP를 입력합니다.

1. **가용 영역**에서 HyperPod가 클러스터의 서브넷을 생성할 가용 영역(AZ)을 선택합니다. 가속화된 컴퓨팅 용량의 위치와 일치하는 AZ를 선택합니다.

1. **보안 그룹**의 경우, 보안 그룹을 생성하거나 VPC 내에서 리소스 간 통신을 허용하는 규칙이 구성된 보안 그룹을 최대 5개 선택합니다.

### 인스턴스 그룹
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-instance-groups"></a>

인스턴스 그룹을 추가하려면 **그룹 추가**를 선택합니다. 각 인스턴스 그룹을 다르게 구성할 수 있으며 다양한 인스턴스 유형을 가진 여러 인스턴스 그룹으로 구성된 이종 클러스터를 생성할 수 있습니다. 클러스터를 배포하려면 인스턴스 그룹을 하나 이상 추가해야 합니다.

**중요**  
한 번에 하나의 인스턴스 그룹을 추가할 수 있습니다. 여러 인스턴스 그룹을 생성하려면 각 인스턴스 그룹에 대해 프로세스를 반복합니다.

이 단계를 따라 인스턴스 그룹을 추가합니다.

1. **인스턴스 그룹 유형**에서 인스턴스 그룹의 유형을 선택합니다. 이 자습서에서는 `my-controller-group`에 **컨트롤러(헤드)**를, `my-login-group`에 **로그인**을, `worker-group-1`에 **컴퓨팅(워커)**을 선택합니다.

1. **이름**에 인스턴스 그룹의 이름을 지정합니다. 이 자습서에서는 `my-controller-group`, `my-login-group` 및 `worker-group-1`라는 인스턴스 그룹을 세 개 생성합니다.

1.  **인스턴스 용량**에서 온디맨드 용량 또는 훈련 계획을 선택하여 컴퓨팅 리소스를 예약합니다.

1. **인스턴스 유형**에서 인스턴스 그룹의 인스턴스를 선택합니다. 이 자습서에서는 `my-controller-group`에 대해 `ml.c5.xlarge`, `my-login-group`에 대해 `ml.m5.4xlarge`, `worker-group-1`에 `ml.trn1.32xlarge`를 선택합니다.
**중요**  
할당량이 충분하고 계정에 대해 할당되지 않은 IP 주소가 충분한 인스턴스 유형을 선택해야 합니다. 할당량을 보거나 추가로 요청하려면 [SageMaker HyperPod 할당량](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas) 섹션을 참조하세요.

1. **인스턴스 수량 **에서 클러스터 사용에 대한 인스턴스 할당량을 초과하지 않는 정수를 지정합니다. 이 자습서에서는 세 그룹 모두에 대해 **1**을 입력합니다.

1. **대상 가용 영역**에서 인스턴스를 프로비저닝할 가용 영역을 선택합니다. 가용 영역은 가속화된 컴퓨팅 용량의 위치와 일치해야 합니다.

1. **인스턴스당 추가 스토리지 볼륨(GB) - 선택 사항**에서 1\$116,384 사이의 정수를 지정하여 추가 Elastic Block Store(EBS) 볼륨의 크기를 기가바이트(GB) 단위로 설정합니다. EBS 볼륨은 인스턴스 그룹의 각 인스턴스에 연결됩니다. 추가 EBS 볼륨의 기본 탑재 경로는 `/opt/sagemaker`입니다. 클러스터가 성공적으로 생성된 후 클러스터 인스턴스(노드)에 SSH를 넣고 `df -h` 명령을 실행하여 EBS 볼륨이 올바르게 마운트되었는지 확인할 수 있습니다. 추가 EBS 볼륨을 연결하면 *Amazon Elastic Block Store 사용 설명서*의 [Amazon EBS 볼륨](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html) 섹션에 설명된 대로 안정적이고 인스턴스가 아니며 독립적으로 지속되는 스토리지가 제공됩니다.

1. **인스턴스 그룹 추가**를 선택합니다.

### 수명 주기 스크립트
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-lifecycle"></a>

Amazon S3 버킷에 저장될 기본 수명 주기 스크립트 또는 사용자 지정 수명 주기 스크립트를 사용하도록 선택할 수 있습니다. [Awesome Distributed Training GitHub 리포지토리](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/7.sagemaker-hyperpod-eks/LifecycleScripts)에서 기본 수명 주기 스크립트를 볼 수 있습니다. 수명 주기 스크립트에 대한 자세한 내용은 [수명 주기 스크립트를 사용하여 SageMaker HyperPod 클러스터 사용자 지정](sagemaker-hyperpod-lifecycle-best-practices-slurm.md) 섹션을 참조하세요.

1. **수명 주기 스크립트**에서 기본 또는 사용자 지정 수명 주기 스크립트를 사용하도록 선택합니다.

1. **수명 주기 스크립트용 S3 버킷**의 경우 새 버킷을 생성하거나 기존 버킷을 사용하여 수명 주기 스크립트를 저장하도록 선택합니다.

### 권한
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-permissions"></a>

HyperPod가 사용자를 대신하여 필요한 AWS 리소스를 실행하고 액세스할 수 있도록 허용하는 IAM 역할을 선택하거나 생성합니다.

### 스토리지
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-storage"></a>

HyperPod 클러스터에 프로비저닝되도록 FSx for Lustre 파일 시스템을 구성합니다.

1. **파일 시스템**에서 기존 FSx for Lustre 파일 시스템을 선택하여 새 FSx for Lustre 파일 시스템을 생성하거나, FSx for Lustre 파일 시스템을 프로비저닝하지 않습니다.

1. **스토리지 단위당 처리량**에서 프로비저닝된 스토리지의 TiB당 사용할 수 있는 처리량을 선택합니다.

1. **스토리지 용량**에 용량 값을 TB 단위로 입력합니다.

1. **데이터 압축 유형**에서 **LZ4**를 선택하여 데이터 압축을 활성화합니다.

1. **Lustre 버전**의 경우 새 파일 시스템에 권장되는 값을 확인합니다.

### 태그 - 선택 사항
<a name="smcluster-getting-started-slurm-console-create-cluster-tags"></a>

**태그 - *선택 사항*의** 경우 키 및 값 페어를 새 클러스터에 추가하고 클러스터를 AWS 리소스로 관리합니다. 자세한 내용은 [AWS 리소스 태그 지정](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html) 섹션을 참조하세요.

## 리소스 배포
<a name="smcluster-getting-started-slurm-console-create-cluster-deploy"></a>

**빠른 설정** 또는 **사용자 지정 설정**을 사용하여 클러스터 구성을 완료한 후 다음 옵션을 선택하여 리소스 프로비저닝 및 클러스터 생성을 시작합니다.
+  **제출** - SageMaker AI가 기본 구성 리소스를 프로비저닝하고 클러스터를 생성하기 시작합니다.
+ **CloudFormation 템플릿 파라미터 다운로드** - 구성 파라미터 JSON 파일을 다운로드하고 AWS CLI 명령을 실행하여 CloudFormation 스택을 배포하여 구성 리소스를 프로비저닝하고 클러스터를 생성합니다. 필요한 경우 다운로드한 파라미터 JSON 파일을 편집할 수 있습니다. 이 옵션을 선택하는 경우 [CloudFormation 템플릿을 사용하여 SageMaker HyperPod 클러스터 생성](smcluster-getting-started-slurm-console-create-cluster-cfn.md)의 추가 지침을 참조하세요.

## 클러스터를 삭제하고 리소스를 정리합니다.
<a name="smcluster-getting-started-slurm-console-delete-cluster-and-clean"></a>

SageMaker HyperPod 클러스터 생성을 성공적으로 테스트한 후 클러스터를 삭제할 때까지 `InService` 상태에서 계속 실행됩니다. 온디맨드 요금을 기준으로 지속적인 서비스 요금이 발생하지 않도록 온디맨드 SageMaker AI 인스턴스를 사용하여 생성된 클러스터를 사용하지 않을 때는 삭제하는 것이 좋습니다. 이 자습서에서는 두 인스턴스 그룹으로 구성된 클러스터를 생성했습니다. 이 중 하나는 C5 인스턴스를 사용하므로 [SageMaker HyperPod 클러스터 삭제](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-delete-cluster)의 지침에 따라 클러스터를 삭제해야 합니다.

그러나 예약된 컴퓨팅 용량이 있는 클러스터를 생성한 경우 클러스터의 상태는 서비스 청구에 영향을 주지 않습니다.

이 자습서에 사용된 S3 버킷에서 수명 주기 스크립트를 정리하려면 클러스터 생성 중에 사용한 S3 버킷으로 이동하여 파일을 완전히 제거합니다.

클러스터에서 워크로드 실행을 테스트한 경우 데이터를 업로드했거나 Amazon FSx for Lustre 및 Amazon Elastic File System과 같은 다른 S3 버킷 또는 파일 시스템 서비스에 아티팩트를 저장했는지 확인합니다. 발생하는 요금을 방지하려면 스토리지 또는 파일 시스템에서 모든 아티팩트와 데이터를 삭제합니다.

# CloudFormation 템플릿을 사용하여 SageMaker HyperPod 클러스터 생성
<a name="smcluster-getting-started-slurm-console-create-cluster-cfn"></a>

HyperPod용 CloudFormation 템플릿을 사용하여 SageMaker HyperPod 클러스터를 생성할 수 있습니다. 계속하려면 AWS CLI 를 설치해야 합니다.

**Topics**
+ [콘솔에서 리소스를 구성하고 CloudFormation을 사용하여 배포](#smcluster-getting-started-slurm-console-create-cluster-deploy-console)
+ [리소스를 구성하고 CloudFormation을 사용하여 배포](#smcluster-getting-started-slurm-console-create-cluster-deploy-cfn)

## 콘솔에서 리소스를 구성하고 CloudFormation을 사용하여 배포
<a name="smcluster-getting-started-slurm-console-create-cluster-deploy-console"></a>

를 사용하여 리소스를 구성 AWS Management Console 하고 CloudFormation 템플릿을 사용하여 배포할 수 있습니다.

단계는 다음과 같습니다.

1. ***제출**을 선택하는 대신* [SageMaker AI 콘솔을 사용하여 SageMaker HyperPod 시작하기](smcluster-getting-started-slurm-console.md)의 자습서 끝에 있는 **CloudFormation 템플릿 파라미터 다운로드**를 선택합니다. 자습서에는 클러스터를 성공적으로 생성하는 데 필요한 중요한 구성 정보가 포함되어 있습니다.
**중요**  
**제출**을 선택하면 클러스터를 삭제할 때까지 동일한 이름의 클러스터를 배포할 수 없습니다.

   **CloudFormation 템플릿 파라미터 다운로드**를 선택하면 ** AWS CLI를 사용하여 구성 파일을 사용하여 클러스터 생성** 창이 페이지 오른쪽에 나타납니다.

1. ** AWS CLI를 사용하여 구성 파일을 사용하여 클러스터 생성** 창에서 **구성 파라미터 파일 다운로드**를 선택합니다. 파일이 머신에 다운로드됩니다. 필요에 따라 구성 JSON 파일을 편집하거나 변경이 필요하지 않은 경우 그대로 둘 수 있습니다.

1. 터미널에서 파라미터 파일 `file://params.json`의 위치로 이동합니다.

1. [create-stack](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/create-stack.html) AWS CLI 명령을 실행하여 구성된 리소스를 프로비저닝하고 HyperPod 클러스터를 생성할 CloudFormation 스택을 배포합니다.

   ```
   aws cloudformation create-stack 
       --stack-name my-stack
       --template-url https://aws-sagemaker-hyperpod-cluster-setup.amazonaws.com/templates-slurm/main-stack-slurm-based-template.yaml
       --parameters file://params.json
       --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
   ```

1. 리소스 프로비저닝 상태를 보려면 [CloudFormation 콘솔](https://console.aws.amazon.com/cloudformation)로 이동합니다.

   클러스터 생성이 완료되면 SageMaker HyperPod 콘솔의 메인 창에 있는 **클러스터**에서 새 클러스터를 확인합니다. **상태** 열에서 표시되는 상태를 확인할 수도 있습니다.

1. 클러스터 상태가 `InService`로 전환되면 클러스터 노드에 로그인을 시작할 수 있습니다. 클러스터 노드에 액세스하고 ML 워크로드 실행을 시작하려면 [SageMaker HyperPod 클러스터의 작업](sagemaker-hyperpod-run-jobs-slurm.md) 섹션을 참조하세요.

## 리소스를 구성하고 CloudFormation을 사용하여 배포
<a name="smcluster-getting-started-slurm-console-create-cluster-deploy-cfn"></a>

SageMaker HyperPod용 CloudFormation 템플릿을 사용하여 리소스를 구성하고 배포할 수 있습니다.

단계는 다음과 같습니다.

1. [sagemaker-hyperpod-cluster-setup](https://github.com/aws/sagemaker-hyperpod-cluster-setup) GitHub 리포지토리에서 SageMaker HyperPod용 CloudFormation 템플릿을 다운로드합니다.

1. [create-stack](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/create-stack.html) AWS CLI 명령을 실행하여 구성된 리소스를 프로비저닝하고 HyperPod 클러스터를 생성할 CloudFormation 스택을 배포합니다.

   ```
   aws cloudformation create-stack 
       --stack-name my-stack
       --template-url URL_of_the_file_that_contains_the_template_body
       --parameters file://params.json
       --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
   ```

1. 리소스 프로비저닝 상태를 보려면 CloudFormation 콘솔로 이동합니다.

   클러스터 생성이 완료되면 SageMaker HyperPod 콘솔의 메인 창에 있는 **클러스터**에서 새 클러스터를 확인합니다. **상태** 열에서 표시되는 상태를 확인할 수도 있습니다.

1. 클러스터 상태가 `InService`로 전환되면 클러스터 노드에 로그인을 시작할 수 있습니다. 클러스터 노드에 액세스하고 ML 워크로드 실행을 시작하려면 [SageMaker HyperPod 클러스터의 작업](sagemaker-hyperpod-run-jobs-slurm.md) 섹션을 참조하세요.

# 를 사용하여 SageMaker HyperPod 시작하기 AWS CLI
<a name="smcluster-getting-started-slurm-cli"></a>

HyperPod용 AWS CLI 명령을 사용하여 첫 번째 SageMaker HyperPod 클러스터를 생성합니다.

## Slurm을 사용하여 첫 번째 SageMaker HyperPod 클러스터 생성
<a name="smcluster-getting-started-slurm-cli-create-cluster"></a>

다음 자습서에서는 [SageMaker HyperPod 에 대한AWS CLI 명령](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-cli)을 통해 새 SageMaker HyperPod 클러스터를 생성하고 Slurm으로 설정하는 방법을 보여줍니다. 자습서에서는 , `my-login-group`및 라는 세 개의 Slurm 노드가 있는 HyperPod 클러스터`my-controller-group`를 생성합니다`worker-group-1`.

API 기반 구성 접근 방식을 사용하면를 사용하여 CreateCluster API 요청에서 Slurm 노드 유형 및 파티션 할당을 직접 정의할 수 있습니다`SlurmConfig`. 따라서 별도의 `provisioning_parameters.json` 파일이 필요하지 않으며 기본 제공 검증, 드리프트 감지 및 per-instance-group FSx 구성을 제공합니다.

1. 먼저 수명 주기 스크립트를 준비하고 Amazon S3 버킷에 업로드합니다. 클러스터를 생성하는 동안 HyperPod는 각 인스턴스 그룹에서 실행됩니다. 다음 명령을 사용하여 수명 주기 스크립트를 Amazon S3에 업로드합니다.

   ```
   aws s3 sync \
       ~/local-dir-to-lifecycle-scripts/* \
       s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
   ```
**참고**  
를 사용하는 S3[SageMaker HyperPod의 IAM 역할은](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) 특정 접두사로 시작하는 Amazon S3 버킷에 대한 액세스`AmazonSageMakerClusterInstanceRolePolicy`만 허용`sagemaker-`하므로 S3 버킷 경로는 접두사 로 시작해야 합니다. Amazon S3 

   처음부터 시작하는 경우 [Awsome Distributed Training GitHub 리포지토리](https://github.com/aws-samples/awsome-distributed-training/) 에 제공된 샘플 수명 주기 스크립트를 사용합니다. 다음 하위 단계에서는 샘플 수명 주기 스크립트를 다운로드하여 Amazon S3 버킷에 업로드하는 방법을 보여줍니다.

   1. 수명 주기 스크립트 샘플 사본을 로컬 컴퓨터의 디렉터리에 다운로드합니다.

      ```
      git clone https://github.com/aws-samples/awsome-distributed-training/
      ```

   1. [https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config) 디렉터리로 이동하여 수명 주기 스크립트 세트를 찾을 수 있습니다.

      ```
      cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config
      ```

      수명 주기 스크립트 샘플에 대한 자세한 내용은 [수명 주기 스크립트를 사용하여 SageMaker HyperPod 클러스터 사용자 지정](sagemaker-hyperpod-lifecycle-best-practices-slurm.md) 섹션을 참조하세요.

   1. `s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src`에 스크립트를 업로드하세요. 이렇게 하려면 Amazon EC2 콘솔에을 사용하거나 AWS CLI Amazon S3 명령을 실행합니다.

      ```
      aws s3 sync \
          ~/local-dir-to-lifecycle-scripts/* \
          s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
      ```
**참고**  
API 기반 구성을 사용하면 `provisioning_parameters.json` 파일을 생성하거나 업로드할 필요가 없습니다. Slurm 구성은 다음 단계의 CreateCluster API 요청에 직접 정의됩니다.

1. [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html) 요청 파일을 JSON 형식으로 준비하고 `create_cluster.json`으로 저장합니다.

   API 기반 구성을 사용하면 `SlurmConfig` 필드를 사용하여 각 인스턴스 그룹에 대한 Slurm 노드 유형 및 파티션 할당을 지정합니다. 또한를 사용하여 클러스터 수준 Slurm 설정을 구성합니다`Orchestrator.Slurm`.

   `ExecutionRole`의 경우 [SageMaker HyperPod 사용을 위한 사전 조건](sagemaker-hyperpod-prerequisites.md)에서 관리형 `AmazonSageMakerClusterInstanceRolePolicy`로 생성한 IAM 역할의 ARN을 제공합니다.

   ```
   {
       "ClusterName": "my-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole",
               "InstanceStorageConfigs": [
                   {
                       "EbsVolumeConfig": {
                           "VolumeSizeInGB": 500
                       }
                   }
               ]
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Login"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Compute",
                   "PartitionNames": ["partition-1"]
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole"
           }
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       }
   }
   ```

   **SlurmConfig 필드:**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

   **Orchestrator.Slurm 필드:**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

   **SlurmConfigStrategy 옵션:**
   + `Managed` (권장): HyperPod는 무단 변경(드리프트 `slurm.conf` 감지)을 완전히 관리하고 감지합니다. 드리프트가 감지되면 업데이트가 실패합니다.
   + `Overwrite`: HyperPod는 업데이트 `slurm.conf` 시 덮어쓰고 수동 변경 사항은 무시합니다.
   + `Merge`: HyperPod는 수동 변경 사항을 보존하고 API 구성과 병합합니다.

   **FSx for Lustre 추가(선택 사항):**

   FSx for Lustre 파일 시스템을 컴퓨팅 노드에 탑재하려면 인스턴스 그룹의 `FsxLustreConfig` `InstanceStorageConfigs`에를 추가합니다. 이를 위해서는 사용자 지정 VPC 구성이 필요합니다.

   ```
   {
       "InstanceGroupName": "worker-group-1",
       "InstanceType": "ml.trn1.32xlarge",
       "InstanceCount": 1,
       "SlurmConfig": {
           "NodeType": "Compute",
           "PartitionNames": ["partition-1"]
       },
       "InstanceStorageConfigs": [
           {
               "FsxLustreConfig": {
                   "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com",
                   "MountPath": "/fsx",
                   "MountName": "abcdefgh"
               }
           }
       ],
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole"
   }
   ```

   **FSx for OpenZFS 추가(선택 사항):**

   FSx for OpenZFS 파일 시스템을 탑재할 수도 있습니다.

   ```
   "InstanceStorageConfigs": [
       {
           "FsxOpenZfsConfig": {
               "DnsName": "fs-0xyz789abc123456.fsx.us-west-2.amazonaws.com",
               "MountPath": "/shared"
           }
       }
   ]
   ```
**참고**  
각 인스턴스 그룹은 최대 하나의 FSx for Lustre 및 하나의 FSx for OpenZFS 구성을 가질 수 있습니다. 인스턴스 그룹마다 다른 파일 시스템을 탑재할 수 있습니다.

   **VPC 구성 추가(FSx에 필요):**

   FSx를 사용하는 경우 사용자 지정 VPC 구성을 지정해야 합니다.

   ```
   {
       "ClusterName": "my-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole"
           },
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       },
       "VpcConfig": {
           "SecurityGroupIds": ["sg-0abc123def456789a"],
           "Subnets": ["subnet-0abc123def456789a"]
       }
   }
   ```

1. 다음 명령을 실행하여 클러스터를 생성합니다.

   ```
   aws sagemaker create-cluster --cli-input-json file://complete/path/to/create_cluster.json
   ```

   이렇게 하면 생성된 클러스터의 ARN이 반환됩니다.

   ```
   {
       "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/my-hyperpod-cluster"
   }
   ```

   리소스 제한으로 인해 오류가 발생하는 경우 계정의 할당량이 충분한 인스턴스 유형으로 변경하거나 [SageMaker HyperPod 할당량](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas)에 따라 추가 할당량을 요청해야 합니다.

   **일반적인 검증 오류:**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

1. `describe-cluster`를 실행하여 클러스터의 상태를 확인합니다.

   ```
   aws sagemaker describe-cluster --cluster-name my-hyperpod-cluster
   ```

   응답 예제:

   ```
   {
       "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/my-hyperpod-cluster",
       "ClusterName": "my-hyperpod-cluster",
       "ClusterStatus": "Creating",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Login"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Compute",
                   "PartitionNames": ["partition-1"]
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           }
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       },
       "CreationTime": "2024-01-15T10:30:00Z"
   }
   ```

   클러스터 상태가 **InService**로 전환되면 다음 단계로 진행합니다. 클러스터 생성에는 일반적으로 10\$115분이 소요됩니다.

1. `list-cluster-nodes`를 실행하여 클러스터 노드의 세부 정보를 확인합니다.

   ```
   aws sagemaker list-cluster-nodes --cluster-name my-hyperpod-cluster
   ```

   응답 예제:

   ```
   {
       "ClusterNodeSummaries": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceId": "i-0abc123def456789a",
               "InstanceType": "ml.c5.xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:35:00Z"
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceId": "i-0abc123def456789b",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:35:00Z"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceId": "i-0abc123def456789c",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:36:00Z"
           }
       ]
   }
   ```

   `InstanceId`는 클러스터 사용자가 로그인(`aws ssm`)하는 데 필요한 것입니다. 클러스터 노드에 로그인하고 ML 워크로드를 실행하는 방법에 대한 자세한 내용은 [SageMaker HyperPod 클러스터의 작업](sagemaker-hyperpod-run-jobs-slurm.md) 섹션을 참조하세요.

1.  AWS Systems Manager 세션 관리자를 사용하여 클러스터에 연결합니다.

   ```
   aws ssm start-session \
       --target sagemaker-cluster:my-hyperpod-cluster_my-login-group-i-0abc123def456789b \
       --region us-west-2
   ```

   연결되면 Slurm이 올바르게 구성되었는지 확인합니다.

   ```
   # Check Slurm nodes
   sinfo
   
   # Check Slurm partitions
   sinfo -p partition-1
   
   # Submit a test job
   srun -p partition-1 --nodes=1 hostname
   ```

## 클러스터를 삭제하고 리소스를 정리합니다.
<a name="smcluster-getting-started-slurm-cli-delete-cluster-and-clean"></a>

SageMaker HyperPod 클러스터 생성을 성공적으로 테스트한 후 클러스터를 삭제할 때까지 `InService` 상태에서 계속 실행됩니다. 온디맨드 요금을 기준으로 지속적인 서비스 요금이 발생하지 않도록 온디맨드 SageMaker AI 용량을 사용하여 생성된 클러스터를 사용하지 않을 때는 삭제하는 것이 좋습니다. 이 자습서에서는 세 개의 인스턴스 그룹으로 구성된 클러스터를 생성했습니다. 다음 명령을 실행하여 클러스터를 삭제해야 합니다.

```
aws sagemaker delete-cluster --cluster-name my-hyperpod-cluster
```

이 자습서에 사용되는 Amazon S3 버킷에서 수명 주기 스크립트를 정리하려면 클러스터 생성 중에 사용한 Amazon S3 버킷으로 이동하여 파일을 완전히 제거합니다.

```
aws s3 rm s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src --recursive
```

클러스터에서 모델 훈련 워크로드 실행을 테스트한 경우 데이터를 업로드했는지 또는 Amazon FSx for Lustre 및 Amazon Elastic File System과 같은 다른 Amazon S3 버킷 또는 파일 시스템 서비스에 아티팩트를 저장했는지도 확인합니다. 요금이 발생하지 않도록 하려면 스토리지 또는 파일 시스템에서 모든 아티팩트와 데이터를 삭제합니다.

## 관련 주제
<a name="smcluster-getting-started-slurm-cli-related-topics"></a>
+ [SageMaker HyperPod Slurm 구성](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-slurm-configuration)
+ [수명 주기 스크립트를 사용하여 SageMaker HyperPod 클러스터 사용자 지정](sagemaker-hyperpod-lifecycle-best-practices-slurm.md)
+ [InstanceStorageConfigs 통한 FSx 구성](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-slurm-fsx-config)
+ [SageMaker HyperPod Slurm 클러스터 작업](sagemaker-hyperpod-operate-slurm.md)