기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
사용 AWS CLI
다음 주제에서는 JSON 형식으로 요청 파일을 작성하고 SageMaker HyperPod API AWS CLI 명령을 사용하여 파일을 실행하는 방법에 대한 지침을 제공합니다.
주제
새 클러스터 생성
-
수명 주기 구성 스크립트를 준비하고 와 같은 S3 버킷에 업로드합니다
s3://sagemaker-<amzn-s3-demo-bucket>/<lifecycle-script-directory>/src/
. 다음 2단계에서는 지정된 S3 버킷on_create.sh
에 라는 진입점 스크립트가 있다고 가정합니다.중요
S3 경로를 로 시작하도록 설정해야 합니다
s3://sagemaker-
. IAM역할: SageMaker HyperPod 에는 관리형 가AmazonSageMakerClusterInstanceRolePolicy
연결되어 있으므로 특정 접두사가 인 S3 버킷에 액세스할 수 있습니다sagemaker-
. -
JSON 형식의 CreateCluster API 요청 파일을 준비합니다. 수명 주기 스크립트 세트 실행의 일부로 클러스터 생성 중에 사용할
provisioning_params.json
파일에서 설계한 Slurm 클러스터와 일치하도록 인스턴스 그룹을 구성해야 합니다. 자세한 내용은 수명 주기 스크립트를 사용하여 클러스터 사용자 지정 SageMaker HyperPod 을 참조하십시오. 다음 템플릿에는 Slurm 클러스터의 최소 요구 사항을 충족하는 두 개의 인스턴스 그룹이 있습니다. 컨트롤러(헤드) 노드 1개와 컴퓨팅(워커) 노드 1개. 의 경우 섹션에서 관리형 로 생성한 IAM 역할ARN의AmazonSageMakerClusterInstanceRolePolicy
를ExecutionRole
제공합니다IAM역할: SageMaker HyperPod.// create_cluster.json
{ "ClusterName": "your-hyperpod-cluster
", "InstanceGroups": [ { "InstanceGroupName": "controller-group
", "InstanceType": "ml.m5.xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<amzn-s3-demo-bucket>/<lifecycle-script-directory>/src/
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "arn:aws:iam::111122223333
:role/iam-role-for-cluster
",// 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": "worker-group-1
", "InstanceType": "ml.p4d.xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<amzn-s3-demo-bucket>/<lifecycle-script-directory>/src/
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "arn:aws:iam::111122223333
:role/iam-role-for-cluster
" } ], // Optional "Tags": [ { "Key": "string
", "Value": "string
" } ], // Optional "VpcConfig": { "SecurityGroupIds": [ "string
" ], "Subnets": [ "string
" ] } }수명 주기 스크립트를 통해 클러스터 구조를 설계하는 방법에 따라
InstanceGroups
파라미터에서 최대 20개의 인스턴스 그룹을 구성할 수 있습니다.Tags
요청 파라미터의 경우 SageMaker HyperPod 클러스터를 AWS 리소스로 관리하기 위한 사용자 지정 태그를 추가할 수 있습니다. 태깅을 지원하는 다른 AWS 서비스에서 태그를 추가하는 것과 동일한 방식으로 클러스터에 태그를 추가할 수 있습니다. 리소스 태그 지정 AWS 에 대한 자세한 내용은 AWS 리소스 태그 지정 사용 설명서 단원을 참조하세요.VpcConfig
요청 파라미터에 VPC 사용할 의 정보를 지정합니다. 자세한 내용은 Amazon으로 SageMaker HyperPod 설정 VPC 단원을 참조하십시오. -
다음과 같이 create-cluster 명령을 실행합니다.
aws sagemaker create-cluster \ --cli-input-json
file://complete/path/to/create_cluster.json
이렇게 하면 새 클러스터ARN의 가 반환됩니다.
클러스터 설명
describe-cluster를 실행하여 클러스터의 상태를 확인합니다. 클러스터의 이름 또는 를 지정할 수 ARN 있습니다.
aws sagemaker describe-cluster --cluster-name
your-hyperpod-cluster
클러스터 상태가 로 전환되면 다음 단계로 InService
진행합니다. 이 를 사용하면 다른 HyperPod API 작업을 실행하여 장애 메시지를 검색할 수도 API있습니다.
클러스터 노드의 세부 정보 나열
를 실행list-cluster-nodes하여 클러스터 노드의 키 정보를 확인합니다.
aws sagemaker list-cluster-nodes --cluster-name
your-hyperpod-cluster
이렇게 하면 응답이 반환되고 InstanceId
는 응답에 로깅( 사용aws ssm
)하는 데 사용해야 하는 것입니다.
클러스터 노드의 세부 정보 설명
를 실행describe-cluster-node하여 클러스터 노드의 세부 정보를 검색합니다. 출력에서 list-cluster-nodes 클러스터 노드 ID를 가져올 수 있습니다. 클러스터의 이름 또는 를 지정할 수 ARN 있습니다.
aws sagemaker describe-cluster-node \ --cluster-name
your-hyperpod-cluster
\ --node-idi-111222333444555aa
클러스터 나열
list-clusters를 실행하여 계정의 모든 클러스터를 나열합니다.
aws sagemaker list-clusters
추가 플래그를 추가하여 클러스터 목록을 필터링할 수도 있습니다. 이 명령이 낮은 수준에서 실행되는 것과 필터링을 위한 추가 플래그에 대한 자세한 내용은 ListClusters API 참조를 참조하세요.
클러스터 구성 업데이트
update-cluster를 실행하여 클러스터 구성을 업데이트합니다.
-
JSON 형식의
UpdateCluster
요청 파일을 생성합니다. 업데이트할 올바른 클러스터 이름과 인스턴스 그룹 이름을 지정해야 합니다. 인스턴스 유형, 인스턴스 수, 수명 주기 구성 진입점 스크립트 및 스크립트 경로를 변경할 수 있습니다.-
에서 업데이트하려는 클러스터의 이름을
ClusterName
지정합니다. -
InstanceGroupName
의 경우-
기존 인스턴스 그룹을 업데이트하려면 업데이트하려는 인스턴스 그룹의 이름을 지정합니다.
-
새 인스턴스 그룹을 추가하려면 클러스터에 없는 새 이름을 지정합니다.
-
-
InstanceType
의 경우-
기존 인스턴스 그룹을 업데이트하려면 처음에 지정한 인스턴스 유형을 그룹에 일치시켜야 합니다.
-
새 인스턴스 그룹을 추가하려면 그룹을 구성할 인스턴스 유형을 지정합니다.
-
-
InstanceCount
의 경우-
기존 인스턴스 그룹을 업데이트하려면 현재 인스턴스 수보다 큰 정수를 지정합니다. 현재는 인스턴스 수만 늘릴 수 있습니다.
-
새 인스턴스 그룹을 추가하려면 1 이상의 정수를 지정합니다.
-
-
의 경우 인스턴스 그룹을 업데이트하려는 대로
SourceS3Uri
및OnCreat
값을 모두 변경할LifeCycleConfig
수 있습니다. -
ExecutionRole
의 경우-
기존 인스턴스 그룹을 업데이트하려면 클러스터 생성 중에 연결한 것과 동일한 IAM 역할을 계속 사용합니다.
-
새 인스턴스 그룹을 추가하려면 연결할 IAM 역할을 지정합니다.
-
-
TreadsPerCore
의 경우-
기존 인스턴스 그룹을 업데이트하려면 클러스터 생성 중에 지정한 것과 동일한 값을 계속 사용합니다.
-
새 인스턴스 그룹을 추가하려면 인스턴스 유형별로 허용되는 옵션 중에서 원하는 값을 선택할 수 있습니다. 자세한 내용은 인스턴스 유형을 검색하고 Amazon EC2 사용 설명서의 참조 테이블에서 코어의 코어당 유효한 트레드CPU와 인스턴스 유형별 CPU 코어당 스레드를 참조하세요.
-
다음 코드 조각은 사용할 수 있는 JSON 요청 파일 템플릿입니다. 이 의 요청 구문 및 파라미터에 대한 자세한 내용은 UpdateCluster API 참조를 API참조하세요.
// update_cluster.json { // Required "ClusterName": "
name-of-cluster-to-update
", // Required "InstanceGroups": [ { "InstanceGroupName": "name-of-instance-group-to-update
", "InstanceType": "ml.m5.xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<amzn-s3-demo-bucket>/<lifecycle-script-directory>/src/
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "arn:aws:iam::111122223333
:role/iam-role-for-cluster
",// 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
, } } ] }, // add more blocks of instance groups as needed { ... } ] } -
-
다음
update-cluster
명령을 실행하여 요청을 제출합니다.aws sagemaker update-cluster \ --cli-input-json
file://complete/path/to/update_cluster.json
클러스터의 SageMaker HyperPod 플랫폼 소프트웨어 업데이트
를 실행update-cluster-software하여 SageMaker HyperPod 서비스에서 제공하는 소프트웨어 및 보안 패치로 기존 클러스터를 업데이트합니다. 에서 업데이트할 클러스터ARN의 이름 또는 를 --cluster-name
지정합니다.
중요
이 를 실행하기 전에 작업을 백업해야 합니다API. 패치 프로세스는 루트 볼륨을 업데이트된 로 대체합니다. 즉AMI, 인스턴스 루트 볼륨에 저장된 이전 데이터가 손실됩니다. 인스턴스 루트 볼륨의 데이터를 Amazon S3 또는 Amazon FSx for Lustre로 백업해야 합니다. 자세한 내용은 에서 제공하는 백업 스크립트 사용 SageMaker HyperPod 단원을 참조하십시오.
aws sagemaker update-cluster-software --cluster-name
your-hyperpod-cluster
이 명령은 UpdateClusterSoftware 를 호출합니다API. API 호출 후 는 클러스터 인스턴스를 SageMaker HyperPod 업데이트하여 최신 를 사용하고 클러스터 생성 또는 업데이트 중에 지정한 S3 버킷에서 수명 주기 스크립트를 SageMaker HyperPod DLAMI 실행합니다. SageMaker HyperPod 서비스 팀은 보안을 강화하고 사용자 경험을 개선하기 위해 정기적으로 새 SageMaker HyperPod DLAMI를 출시합니다. 항상 최신 로 업데이트하는 것이 좋습니다 SageMaker HyperPod DLAMI. 보안 패치에 대한 향후 SageMaker HyperPod DLAMI 업데이트는 를 참조하세요Amazon SageMaker HyperPod 릴리스 정보.
작은 정보
보안 패치가 실패하면 의 지침에 DescribeCluster
API 따라 를 실행하여 실패 메시지를 검색할 수 있습니다클러스터 설명.
참고
API 프로그래밍 방식으로만 실행할 수 있습니다. 패치 기능은 SageMaker HyperPod 콘솔 UI에서 구현되지 않습니다.
에서 제공하는 백업 스크립트 사용 SageMaker HyperPod
SageMaker HyperPod 는 Awsome Distributed Training GitHub 리포지토리 1.architectures/5.sagemaker-hyperpod/patching-backup.sh
패치 적용 전에 S3 버킷에 데이터를 백업하려면
sudo bash patching-backup.sh --create
<s3-buckup-bucket-path>
명령을 실행한 후 스크립트는 대기열에 작업이 squeue
있는지 확인하고, 대기열에 작업이 없으면 Slurm을 중지하고, 를 백업하고mariadb
, 아래에 정의된 디스크에 로컬 항목을 복사합니다LOCAL_ITEMS
. 에 파일 및 디렉터리를 더 추가할 수 있습니다LOCAL_ITEMS
.
# Define files and directories to back up. LOCAL_ITEMS=( "/var/spool/slurmd" "/var/spool/slurmctld" "/etc/systemd/system/slurmctld.service" "/home/ubuntu/backup_slurm_acct_db.sql" # ... Add more items as needed )
또한 제공된 스크립트에 사용자 지정 코드를 추가하여 사용 사례에 대한 애플리케이션을 백업할 수 있습니다.
패치 적용 후 S3 버킷에서 데이터를 복원하려면
sudo bash patching-backup.sh --restore
<s3-buckup-bucket-path>
클러스터 삭제
Delete-cluster를 실행하여 클러스터를 삭제합니다. 클러스터의 이름 또는 ARN 를 지정할 수 있습니다.
aws sagemaker delete-cluster --cluster-name
your-hyperpod-cluster