Administración de clústeres con AMI personalizadas - Amazon SageMaker AI

Administración de clústeres con AMI personalizadas

Una vez creada la AMI personalizada, puede utilizarla para crear o actualizar un clúster de Amazon SageMaker HyperPod. También puede escalar verticalmente o añadir grupos de instancias que usen la nueva AMI.

Permisos necesarios para las operaciones de clúster

Añada los siguientes permisos al usuario administrador del clúster que opera y configura los clústeres de SageMaker HyperPod. En el siguiente ejemplo de política, se incluye el conjunto mínimo de permisos para que los administradores de clústeres ejecuten las API principales de SageMaker HyperPod y administren los clústeres de SageMaker HyperPod con AMI personalizadas.

Tenga en cuenta que los permisos para compartir instantáneas de AMI y AMI EBS se incluyen mediante los permisos de las API ModifyImageAttribute y ModifySnapshotAttribute como parte de la siguiente política. Para limitar los permisos de uso compartido, puede seguir los siguientes pasos:

  • Agregue etiquetas para controlar los permisos de uso compartido de la AMI para la AMI y la instantánea de la AMI. Por ejemplo, puede etiquetar la AMI con AllowSharing como true.

  • Agregue la clave de contexto a la política para permitir que solo se compartan las AMI etiquetadas con determinadas etiquetas.

La siguiente política es una política restringida para garantizar que solo se permitan las AMI etiquetadas con AllowSharing como true.

{ "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" } } } ] }
importante

Si tiene previsto usar una AMI personalizada cifrada, asegúrese de que la clave de KMS cumpla con los permisos descritos en Cifrado de AWS KMS key administrado por el cliente para SageMaker HyperPod. Además, asegúrese de que la clave de KMS de la AMI personalizada también se utilice para cifrar el volumen raíz de Amazon EBS del clúster.

Creación de un clúster

Puede especificar su AMI personalizada en el campo ImageId de la operación CreateCluster.

En los siguientes ejemplos se muestra cómo crear un clúster con una AMI personalizada, con y sin una clave de AWS KMS administrada por el cliente para cifrar los volúmenes del clúster.

Standard example

En el siguiente ejemplo se muestra cómo crear un clúster con una AMI personalizada.

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

En el siguiente ejemplo se muestra cómo crear un clúster con una AMI personalizada especificando su propia clave de AWS KMS administrada por el cliente para cifrar los volúmenes de Amazon EBS del clúster. Si la AMI personalizada está cifrada con una clave administrada por el cliente, asegúrese de especificar la misma clave para el cifrado del volumen raíz.

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": [ { "EbsVolumeConfig": { "RootVolume": True, "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id" } }, { "EbsVolumeConfig": { "VolumeSizeInGB": 100, "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id" } } ] }' --vpc-config '{ "SecurityGroupIds": ["<security_group>"], "Subnets": ["<subnet>"] }'

Actualización del software de clúster

Si quiere actualizar un grupo de instancias existente en su clúster con la AMI personalizada, puede usar la operación UpdateClusterSoftware y especificar su AMI personalizada en el campo ImageId. Tenga en cuenta que, a menos que especifiques el nombre de un grupo de instancias específico en su solicitud, la nueva imagen se aplicará a todos los grupos de instancias del clúster.

En el siguiente ejemplo se muestra cómo actualizar el software de plataforma de un clúster con una AMI personalizada:

aws sagemaker update-cluster-software \ --cluster-name <exampleClusterName> \ --instance-groups <instanceGroupToUpdate> \ --image-id <customAmiId>

Escalado vertical de un grupo de instancias

En los siguientes ejemplos, se muestra cómo escalar un grupo de instancias verticalmente para un clúster con una AMI personalizada, con o sin una clave de AWS KMS administrada por el cliente para el cifrado.

Standard example

En el siguiente ejemplo se muestra cómo escalar verticalmente un grupo de instancias con una AMI personalizada.

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

En el siguiente ejemplo se muestra cómo actualizar y escalar verticalmente un clúster con una AMI personalizada especificando su propia clave de AWS KMS administrada por el cliente para cifrar los volúmenes de Amazon EBS del clúster. Si la AMI personalizada está cifrada con una clave administrada por el cliente, asegúrese de especificar la misma clave para el cifrado del volumen raíz.

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": [ { "EbsVolumeConfig": { "RootVolume": True, "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id" } }, { "EbsVolumeConfig": { "VolumeSizeInGB": 100, "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id" } } ] }]'

Adición de un grupo de instancias

En el siguiente ejemplo se muestra cómo añadir un grupo de instancias a un clúster con una AMI personalizada:

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>" }'