本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用自定义进行集群管理 AMIs
构建自定义 AMI 后,您可以使用它来创建或更新 Amazon SageMaker HyperPod 集群。您也可以向上扩展或添加使用新 AMI 的实例组。
集群操作所需的权限
向操作和配置 SageMaker HyperPod 集群的集群管理员用户添加以下权限。以下策略示例包括集群管理员运行 SageMaker HyperPod核心 APIs 并使用自定义 AMI 管理 SageMaker HyperPod 集群的最低权限集。
请注意,AMI 和 AMI EBS 快照共享权限包含在以下策略中,ModifySnapshotAttribute
API 权限包含在内。ModifyImageAttribute
要缩小共享权限的范围,您可以采取以下步骤:
-
添加标签以控制 AMI 和 AMI 快照的 AMI 共享权限。例如,您可以使用 a
AllowSharing
s 标记 AMItrue
。 -
在策略中添加上下文密钥,仅允许使用特定标签进行 AMIs标记的 AMI 共享。
以下策略是限定范围的策略,以确保只允许 AMIs标true
有 AllowSharing
as。
{ "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:DescribeCluterNode", "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" } } } ] }
创建集群
您可以在ImageId
字段中为CreateCluster
操作指定自定义 AMI。
以下示例说明如何使用自定义 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>
"] }'
更新集群软件
如果您想使用自定义 AMI 更新集群上的现有实例组,则可以使用该UpdateClusterSoftware
操作并在ImageId
字段中指定您的自定义 AMI。请注意,除非您在请求中指定特定实例组的名称,否则新映像将应用于集群中的所有实例组。
以下示例说明如何使用自定义 AMI 更新集群的平台软件:
aws sagemaker update-cluster-software \ --cluster-name
<exampleClusterName>
\ --instance-groups<instanceGroupToUpdate>
\ --image-id<customAmiId>
向上扩展实例组
以下示例说明如何使用自定义 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>
" }]'
添加实例组
以下示例说明如何使用自定义 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>
" }'