기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
사용자 지정 AMI를 사용한 클러스터 관리
사용자 지정 AMI를 구축한 후 이를 사용하여 Amazon SageMaker HyperPod 클러스터를 생성하거나 업데이트할 수 있습니다. 새 AMI를 사용하는 인스턴스 그룹을 스케일 업하거나 추가할 수도 있습니다.
클러스터 작업에 필요한 권한
SageMaker HyperPod 클러스터를 작동하고 구성하는 클러스터 관리자 사용자에게 다음 권한을 추가합니다. 다음 정책 예시에는 클러스터 관리자가 SageMaker HyperPod 코어 API를 실행하고 사용자 지정 AMI를 사용하여 SageMaker HyperPod 클러스터를 관리할 수 있는 최소 권한 집합이 포함되어 있습니다.
AMI 및 AMI EBS 스냅샷 공유 권한은 다음 정책의 일부로 ModifyImageAttribute 및 ModifySnapshotAttribute API 권한을 통해 포함됩니다. 공유 권한 범위를 축소하려면 다음 단계를 수행할 수 있습니다.
다음 정책은 AllowSharing이 true로 태그가 지정된 AMI만 허용하기 위해 범위가 축소된 정책입니다.
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::111122223333:role/your-execution-role-name"
},
{
"Effect": "Allow",
"Action": [
"sagemaker:CreateCluster",
"sagemaker:DeleteCluster",
"sagemaker:DescribeCluster",
"sagemaker:DescribeClusterNode",
"sagemaker:ListClusterNodes",
"sagemaker:ListClusters",
"sagemaker:UpdateCluster",
"sagemaker:UpdateClusterSoftware",
"sagemaker:BatchDeleteClusterNodes",
"eks:DescribeCluster",
"eks:CreateAccessEntry",
"eks:DescribeAccessEntry",
"eks:DeleteAccessEntry",
"eks:AssociateAccessPolicy",
"iam:CreateServiceLinkedRole",
"ec2:DescribeImages",
"ec2:DescribeSnapshots"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:ModifyImageAttribute",
"ec2:ModifySnapshotAttribute"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/AllowSharing": "true"
}
}
}
]
}
클러스터 생성
CreateCluster 작업의 ImageId 필드에서 사용자 지정 AMI를 지정할 수 있습니다.
다음 예제에서는 클러스터 볼륨을 암호화하기 위한 AWS KMS 고객 관리형 키를 사용하거나 사용하지 않고 사용자 지정 AMI를 사용하여 클러스터를 생성하는 방법을 보여줍니다.
다음 예제에서는 Amazon Elastic Kubernetes Service 오케스트레이션을 사용합니다. Slurm 오케스트레이션과 함께 사용자 지정 AMI를 사용하려면를 --orchestrator 'Eks={ClusterArn=<eks_cluster_arn>}'로 바꿉니다--orchestrator 'Slurm={}'. 두 오케스트레이터 모두 ImageId 및를 포함하여 다른 필드에 동일한 값을 사용합니다--node-provisioning-mode Continuous.
- Standard example
-
다음 예시에서는 사용자 지정 AMI를 사용하여 클러스터를 생성하는 방법을 보여줍니다.
aws sagemaker create-cluster \
--cluster-name <exampleClusterName> \
--orchestrator 'Eks={ClusterArn='<eks_cluster_arn>'}' \
--node-provisioning-mode Continuous \
--instance-groups '{
"InstanceGroupName": "<exampleGroupName>",
"InstanceType": "ml.c5.2xlarge",
"InstanceCount": 2,
"LifeCycleConfig": {
"SourceS3Uri": "<s3://amzn-s3-demo-bucket>",
"OnCreate": "on_create_noop.sh"
},
"ImageId": "<your_custom_ami>",
"ExecutionRole": "<arn:aws:iam::444455556666:role/Admin>",
"ThreadsPerCore": 1,
"InstanceStorageConfigs": [
{
"EbsVolumeConfig": {
"VolumeSizeInGB": 200
}
}
]
}' --vpc-config '{
"SecurityGroupIds": ["<security_group>"],
"Subnets": ["<subnet>"]
}'
- Customer managed key example
-
다음 예제에서는 클러스터의 Amazon EBS 볼륨을 암호화하기 위해 자체 AWS KMS 고객 관리형 키를 지정하면서 사용자 지정 AMI를 사용하여 클러스터를 생성하는 방법을 보여줍니다. 루트 볼륨과 인스턴스 스토리지 볼륨에 대해 서로 다른 고객 관리형 키를 지정할 수 있습니다. InstanceStorageConfigs 필드에서 고객 관리형 키를 사용하지 않는 경우 AWS 소유 KMS 키를 사용하여 볼륨을 암호화합니다. 루트 볼륨과 보조 인스턴스 스토리지 볼륨에 다른 키를 사용하는 경우 두 키 모두에 필요한 KMS 키 정책을 설정합니다.
aws sagemaker create-cluster \
--cluster-name <exampleClusterName> \
--orchestrator 'Eks={ClusterArn='<eks_cluster_arn>'}' \
--node-provisioning-mode Continuous \
--instance-groups '{
"InstanceGroupName": "<exampleGroupName>",
"InstanceType": "ml.c5.2xlarge",
"InstanceCount": 2,
"LifeCycleConfig": {
"SourceS3Uri": "<s3://amzn-s3-demo-bucket>",
"OnCreate": "on_create_noop.sh"
},
"ImageId": "<your_custom_ami>",
"ExecutionRole": "<arn:aws:iam:us-east-1:444455556666:role/Admin>",
"ThreadsPerCore": 1,
"InstanceStorageConfigs": [
# Root volume configuration
{
"EbsVolumeConfig": {
"RootVolume": True,
"VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id"
}
},
# Instance storage volume configuration
{
"EbsVolumeConfig": {
"VolumeSizeInGB": 100,
"VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id"
}
}
]
}' --vpc-config '{
"SecurityGroupIds": ["<security_group>"],
"Subnets": ["<subnet>"]
}'
클러스터 소프트웨어 업데이트
클러스터의 기존 인스턴스 그룹을 사용자 지정 AMI로 업데이트하려는 경우 UpdateClusterSoftware 작업을 사용하고 ImageId 필드에서 사용자 지정 AMI를 지정할 수 있습니다. 요청에 특정 인스턴스 그룹의 이름을 지정하지 않으면 클러스터의 모든 인스턴스 그룹에 새 이미지가 적용됩니다.
Slurm 오케스트레이터를 사용하는 클러스터의 경우 UpdateClusterSoftware는 기본 SageMaker HyperPod AMI에서 퍼블릭 SageMaker HyperPod Slurm AMI를 포함한 사용자 지정 AMIs로의 패치 적용을 지원하지 않습니다. Slurm에서 사용자 지정 AMI를 사용하려면 클러스터 생성 ImageId 시에서 AMI를 지정하거나를 사용하여 사용자 지정 AMI에 새 인스턴스 그룹을 추가합니다UpdateCluster. 기존 Slurm 인스턴스 그룹에서 두 사용자 지정 AMIs 간의 패치 적용이 지원됩니다.
다음 예시에서는 클러스터의 플랫폼 소프트웨어를 사용자 지정 AMI로 업데이트하는 방법을 보여줍니다.
aws sagemaker update-cluster-software \
--cluster-name <exampleClusterName> \
--instance-groups <instanceGroupToUpdate> \
--image-id <customAmiId>
인스턴스 그룹 스케일 업
다음 예제에서는 암호화에 AWS KMS 고객 관리형 키를 사용하거나 사용하지 않고 사용자 지정 AMI를 사용하여 클러스터의 인스턴스 그룹을 확장하는 방법을 보여줍니다.
- Standard example
-
다음 예시에서는 사용자 지정 AMI를 사용하여 인스턴스 그룹을 스케일 업하는 방법을 보여줍니다.
aws sagemaker update-cluster \
--cluster-name <exampleClusterName> --instance-groups '[{
"InstanceGroupName": "<exampleGroupName>",
"InstanceType": "ml.c5.2xlarge",
"InstanceCount": 2,
"LifeCycleConfig": {
"SourceS3Uri": "<s3://amzn-s3-demo-bucket>",
"OnCreate": "on_create_noop.sh"
},
"ExecutionRole": "<arn:aws:iam::444455556666:role/Admin>",
"ThreadsPerCore": 1,
"ImageId": "<your_custom_ami>"
}]'
- Customer managed key example
-
다음 예제에서는 클러스터의 Amazon EBS 볼륨을 암호화하기 위한 자체 AWS KMS 고객 관리형 키를 지정하면서 사용자 지정 AMI로 클러스터를 업데이트하고 확장하는 방법을 보여줍니다. 루트 볼륨과 인스턴스 스토리지 볼륨에 대해 서로 다른 고객 관리형 키를 지정할 수 있습니다. InstanceStorageConfigs 필드에서 고객 관리형 키를 사용하지 않는 경우 AWS 소유 KMS 키를 사용하여 볼륨을 암호화합니다. 루트 볼륨과 보조 인스턴스 스토리지 볼륨에 다른 키를 사용하는 경우 두 키 모두에 필요한 KMS 키 정책을 설정합니다.
aws sagemaker update-cluster \
--cluster-name <exampleClusterName> --instance-groups '[{
"InstanceGroupName": "<exampleGroupName>",
"InstanceType": "ml.c5.2xlarge",
"InstanceCount": 2,
"LifeCycleConfig": {
"SourceS3Uri": "<s3://amzn-s3-demo-bucket>",
"OnCreate": "on_create_noop.sh"
},
"ExecutionRole": "<arn:aws:iam::444455556666:role/Admin>",
"ThreadsPerCore": 1,
"ImageId": "<your_custom_ami>",
"InstanceStorageConfigs": [
# Root volume configuration
{
"EbsVolumeConfig": {
"RootVolume": True,
"VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id"
}
},
# Instance storage volume configuration
{
"EbsVolumeConfig": {
"VolumeSizeInGB": 100,
"VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id"
}
}
]
}]'
인스턴스 그룹 추가
다음 예시에서는 사용자 지정 AMI를 사용하여 클러스터에 인스턴스 그룹을 추가하는 방법을 보여줍니다.
aws sagemaker update-cluster \
--cluster-name "<exampleClusterName>" \
--instance-groups '{
"InstanceGroupName": "<exampleGroupName>",
"InstanceType": "ml.c5.2xlarge",
"InstanceCount": 2,
"LifeCycleConfig": {
"SourceS3Uri": "<s3://amzn-s3-demo-bucket>",
"OnCreate": "on_create_noop.sh"
},
"ExecutionRole": "<arn:aws:iam::444455556666:role/Admin>",
"ThreadsPerCore": 1,
"ImageId": "<your_custom_ami>"
}' '{
"InstanceGroupName": "<exampleGroupName2>",
"InstanceType": "ml.c5.2xlarge",
"InstanceCount": 1,
"LifeCycleConfig": {
"SourceS3Uri": "<s3://amzn-s3-demo-bucket>",
"OnCreate": "on_create_noop.sh"
},
"ExecutionRole": "<arn:aws:iam::444455556666:role/Admin>",
"ThreadsPerCore": 1,
"ImageId": "<your_custom_ami>"
}'