使用自定义进行集群管理 AMIs - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用自定义进行集群管理 AMIs

构建自定义 AMI 后,您可以使用它来创建或更新 Amazon SageMaker HyperPod 集群。您也可以向上扩展或添加使用新 AMI 的实例组。

集群操作所需的权限

向操作和配置 SageMaker HyperPod 集群的集群管理员用户添加以下权限。以下策略示例包括集群管理员运行 SageMaker HyperPod核心 APIs 并使用自定义 AMI 管理 SageMaker HyperPod 集群的最低权限集。

请注意,AMI 和 AMI EBS 快照共享权限包含在以下策略中,ModifySnapshotAttributeAPI 权限包含在内。ModifyImageAttribute要缩小共享权限的范围,您可以采取以下步骤:

  • 添加标签以控制 AMI 和 AMI 快照的 AMI 共享权限。例如,您可以使用 a AllowSharing s 标记 AMI true

  • 在策略中添加上下文密钥,仅允许使用特定标签进行 AMIs标记的 AMI 共享。

以下策略是限定范围的策略,以确保只允许 AMIs标trueAllowSharing 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>" }'