本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用自訂 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。
下列範例示範如何建立具有自訂 AMI 的叢集,包含和不包含用於加密叢集磁碟區的AWS KMS客戶受管金鑰。
- 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
-
下列範例示範如何使用自訂 AMI 建立叢集,同時指定自己的AWS KMS客戶受管金鑰來加密叢集的 Amazon EBS 磁碟區。您可以為根磁碟區和執行個體儲存磁碟區指定不同的客戶受管金鑰。如果您在 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。請注意,除非您在請求中指定特定執行個體群組的名稱,否則新映像會套用至叢集中的所有執行個體群組。
下列範例展示如何使用自訂 AMI 更新叢集的平台軟體:
aws sagemaker update-cluster-software \
--cluster-name <exampleClusterName> \
--instance-groups <instanceGroupToUpdate> \
--image-id <customAmiId>
擴增執行個體群組
下列範例示範如何使用自訂 AMI 擴展叢集的執行個體群組,無論有無使用AWS KMS客戶受管金鑰進行加密。
- 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
-
下列範例示範如何使用自訂 AMI 更新和擴展叢集,同時指定自己的AWS KMS客戶受管金鑰來加密叢集的 Amazon EBS 磁碟區。您可以為根磁碟區和執行個體儲存磁碟區指定不同的客戶受管金鑰。如果您在 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>"
}'