Administración de clústeres con personalización AMIs - Amazon SageMaker AI

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Administración de clústeres con personalización AMIs

Una vez creada la AMI personalizada, puede usarla para crear o actualizar un SageMaker HyperPod clúster de Amazon. 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 SageMaker HyperPod los clústeres. El siguiente ejemplo de política incluye el conjunto mínimo de permisos para que los administradores de clústeres ejecuten el SageMaker HyperPod núcleo APIs y administren SageMaker HyperPod los clústeres con una AMI personalizada.

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 AMI para AMIs etiquetas con determinadas etiquetas.

La siguiente política es una política restringida para garantizar que solo true se permitan las AMIs etiquetas con «AllowSharingcomo».

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

Si tiene previsto usar una AMI personalizada cifrada, asegúrese de que la clave de KMS cumpla con los permisos descritos en Cifrado gestionado por el cliente para AWS KMS key 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.

Los siguientes ejemplos muestran cómo crear un clúster con una AMI personalizada, con y sin una clave administrada por el AWS KMS 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

El siguiente ejemplo muestra cómo crear un clúster con una AMI personalizada y, al mismo tiempo, especificar su propia clave administrada por el AWS KMS cliente para cifrar los volúmenes de Amazon EBS del clúster. Es posible especificar diferentes claves administradas por el cliente para el volumen raíz y el volumen de almacenamiento de la instancia. Si no utilizas claves administradas por el cliente en el InstanceStorageConfigs campo, se utiliza AWS una clave KMS propia para cifrar los volúmenes. Si utilizas claves diferentes para el volumen raíz y los volúmenes de almacenamiento de la instancia secundaria, establece las políticas de claves de KMS necesarias en ambas claves.

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

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 para un clúster mediante una AMI personalizada, con o sin una clave administrada por el AWS KMS 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

El siguiente ejemplo muestra cómo actualizar y ampliar el clúster con una AMI personalizada y, al mismo tiempo, especificar su propia clave administrada por el AWS KMS cliente para cifrar los volúmenes de Amazon EBS del clúster. Es posible especificar diferentes claves administradas por el cliente para el volumen raíz y el volumen de almacenamiento de la instancia. Si no utilizas claves administradas por el cliente en el InstanceStorageConfigs campo, se utiliza AWS una clave KMS propia para cifrar los volúmenes. Si utilizas claves diferentes para el volumen raíz y los volúmenes de almacenamiento de la instancia secundaria, establece las políticas de claves de KMS necesarias en ambas claves.

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

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