기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SageMaker HyperPod APIs에 대한 AWS CLI 명령 사용
HyperPod용 AWS CLI 명령을 사용하여 첫 번째 SageMaker HyperPod 클러스터를 생성합니다.
Slurm을 사용하여 첫 번째 SageMaker HyperPod 클러스터 생성
다음 자습서에서는 SageMaker HyperPod 에 대한AWS CLI
명령을 통해 새 SageMaker HyperPod 클러스터를 생성하고 Slurm으로 설정하는 방법을 보여줍니다. 자습서를 따라 세 개의 Slurm 노드인 my-controller-group
, my-login-group
및 worker-group-1
이 있는 HyperPod 클러스터를 생성합니다.
-
먼저 수명 주기 스크립트를 준비하고 Amazon S3 버킷에 업로드합니다. 클러스터를 생성하는 동안 HyperPod는 각 인스턴스 그룹에서 실행됩니다. 다음 명령을 사용하여 수명 주기 스크립트를 Amazon S3에 업로드합니다.
aws s3 sync \ ~/
local-dir-to-lifecycle-scripts
/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
참고
AmazonSageMakerClusterInstanceRolePolicy
가 있는 SageMaker HyperPod의 IAM 역할는 특정 접두사로 시작하는 Amazon S3 버킷에만 액세스할 수 있으므로 S3 버킷 경로는 접두사sagemaker-
로 시작해야 합니다. Amazon S3처음부터 시작하는 경우 Awsome Distributed Training GitHub 리포지토리
에 제공된 샘플 수명 주기 스크립트를 사용합니다. 다음 하위 단계에서는 Amazon S3 버킷에 샘플 수명 주기 스크립트를 다운로드하는 방법, 수정할 내용 및 업로드하는 방법을 보여줍니다. -
수명 주기 스크립트 샘플 사본을 로컬 컴퓨터의 디렉터리에 다운로드합니다.
git clone https://github.com/aws-samples/awsome-distributed-training/
-
1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config
디렉터리로 이동하여 수명 주기 스크립트 세트를 찾을 수 있습니다. cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config
수명 주기 스크립트 샘플에 대한 자세한 내용은 수명 주기 스크립트를 사용하여 SageMaker HyperPod 클러스터 사용자 지정 섹션을 참조하세요.
-
Slurm 구성 파일을 작성하고
provisioning_params.json
으로 저장합니다. 파일에서 기본 Slurm 구성 파라미터를 지정하여 SageMaker HyperPod 클러스터 인스턴스 그룹에 Slurm 노드를 올바르게 할당합니다. 이 자습서에서는 다음 예제 구성provisioning_params.json
과 같이my-controller-group
,my-login-group
및worker-group-1
이라는 세 개의 Slurm 노드를 설정합니다.{ "version": "1.0.0", "workload_manager": "
slurm
", "controller_group": "my-controller-group
", "login_group": "my-login-group
", "worker_groups": [ { "instance_group_name": "worker-group-1
", "partition_name": "partition-1
" } ] } -
s3://sagemaker-
에 스크립트를 업로드하세요. 이렇게 하려면 Amazon EC2 콘솔에을 사용하거나 AWS CLI Amazon S3 명령을 실행합니다.<unique-s3-bucket-name>
/<lifecycle-script-directory>
/srcaws s3 sync \ ~/
local-dir-to-lifecycle-scripts
/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
-
-
CreateCluster 요청 파일을 JSON 형식으로 준비하고
create_cluster.json
으로 저장합니다. 다음 요청 템플릿은 1.c단계의provisioning_params.json
에 정의된 Slurm 노드 구성과 일치합니다.ExecutionRole
의 경우 SageMaker HyperPod 사용을 위한 사전 조건에서 관리형AmazonSageMakerClusterInstanceRolePolicy
로 생성한 IAM 역할의 ARN을 제공합니다.{
// Required: Specify the name of the cluster.
"ClusterName": "my-hyperpod-cluster
",// Required: Configure instance groups to be launched in the cluster
"InstanceGroups": [ {// Required: Specify the basic configurations to set up a controller node.
"InstanceGroupName": "my-controller-group
", "InstanceType": "ml.c5.xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "${ROLE}
",// Optional: Configure an additional storage per instance group.
"InstanceStorageConfigs": [ {// Attach an additional EBS volume to each instance within the instance group.
// The default mount path for the additional EBS volume is /opt/sagemaker.
"EbsVolumeConfig":{// Specify an integer between 1 and 16384 in gigabytes (GB).
"VolumeSizeInGB":integer
, } } ] }, { "InstanceGroupName": "my-login-group
", "InstanceType": "ml.m5.4xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "${ROLE}
" }, { "InstanceGroupName": "worker-group-1
", "InstanceType": "ml.trn1.32xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "${ROLE}
" } ] } -
다음 명령을 실행하여 클러스터를 생성합니다.
aws sagemaker create-cluster --cli-input-json
file://complete/path/to/create_cluster.json
이렇게 하면 생성된 클러스터의 ARN이 반환됩니다.
리소스 제한으로 인해 오류가 발생하는 경우 계정의 할당량이 충분한 인스턴스 유형으로 변경하거나 SageMaker HyperPod 할당량에 따라 추가 할당량을 요청해야 합니다.
-
describe-cluster
를 실행하여 클러스터의 상태를 확인합니다.aws sagemaker describe-cluster --cluster-name
my-hyperpod-cluster
클러스터 상태가
InService
으로 전환되면 다음 단계로 진행합니다. -
list-cluster-nodes
를 실행하여 클러스터 노드의 세부 정보를 확인합니다.aws sagemaker list-cluster-nodes --cluster-name
my-hyperpod-cluster
이렇게 하면 응답이 반환되고
InstanceId
는 클러스터 사용자가 이에 로그인(aws ssm
)하는 데 필요한 것입니다. 클러스터 노드에 로그인하고 ML 워크로드를 실행하는 방법에 대한 자세한 내용은 SageMaker HyperPod 클러스터의 작업 섹션을 참조하세요.
클러스터를 삭제하고 리소스를 정리합니다.
SageMaker HyperPod 클러스터 생성을 성공적으로 테스트한 후 클러스터를 삭제할 때까지 InService
상태에서 계속 실행됩니다. 온디맨드 요금을 기반으로 지속적인 서비스 요금이 발생하지 않도록 온디맨드 SageMaker AI 용량을 사용하여 생성된 클러스터를 사용하지 않을 때는 삭제하는 것이 좋습니다. 이 자습서에서는 두 인스턴스 그룹으로 구성된 클러스터를 생성했습니다. 이 중 하나는 C5 인스턴스를 사용하므로 다음 명령을 실행하여 클러스터를 삭제해야 합니다.
aws sagemaker delete-cluster --cluster-name
my-hyperpod-cluster
이 자습서에 사용되는 Amazon S3 버킷에서 수명 주기 스크립트를 정리하려면 클러스터 생성 중에 사용한 Amazon S3 버킷으로 이동하여 파일을 완전히 제거합니다.
클러스터에서 모델 훈련 워크로드 실행을 테스트한 경우 데이터를 업로드했는지 또는 Amazon FSx for Lustre 및 Amazon Elastic File System과 같은 다른 Amazon S3 버킷 또는 파일 시스템 서비스에 아티팩트를 저장했는지도 확인합니다. 요금이 발생하지 않도록 하려면 스토리지 또는 파일 시스템에서 모든 아티팩트와 데이터를 삭제합니다.