Gestion de clusters avec personnalisation AMIs - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gestion de clusters avec personnalisation AMIs

Une fois l'AMI personnalisée créée, vous pouvez l'utiliser pour créer ou mettre à jour un SageMaker HyperPod cluster Amazon. Vous pouvez également augmenter verticalement ou ajouter des groupes d’instances qui utilisent la nouvelle AMI.

Autorisations requises pour les opérations du cluster

Ajoutez les autorisations suivantes à l'utilisateur administrateur du cluster qui gère et configure les SageMaker HyperPod clusters. L'exemple de politique suivant inclut l'ensemble minimal d'autorisations permettant aux administrateurs de clusters d'exécuter le SageMaker HyperPod noyau APIs et de gérer les SageMaker HyperPod clusters avec une AMI personnalisée.

Notez que les autorisations de partage d’instantanés d’AMI et EBS d’AMI sont incluses par le biais des autorisations d’API ModifyImageAttribute et ModifySnapshotAttribute dans le cadre de la politique suivante. Pour réduire la portée des autorisations de partage, procédez comme suit :

  • Ajoutez des balises pour contrôler les autorisations de partage d’AMI sur l’AMI et l’instantané d’AMI. Par exemple, vous pouvez baliser l’AMI avec AllowSharing défini sur true.

  • Ajoutez la clé de contexte dans la politique pour autoriser le partage d'AMI uniquement pour les AMIs balises associées à certaines balises.

La politique suivante est une politique limitée visant à garantir que seuls les AMIs AllowSharing tags true sont autorisés.

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

Si vous prévoyez d’utiliser une AMI personnalisée chiffrée, veillez à ce que votre clé KMS réponde aux autorisations décrites dans AWS KMS keyChiffrement géré par le client pour SageMaker HyperPod. En outre, assurez-vous que la clé KMS de votre AMI personnalisée est également utilisée pour chiffrer le volume racine Amazon EBS de votre cluster.

Créer un cluster

Vous pouvez spécifier votre AMI personnalisée dans le champ ImageId pour l’opération CreateCluster.

Les exemples suivants montrent comment créer un cluster avec une AMI personnalisée, avec ou sans clé gérée par AWS KMS le client pour chiffrer les volumes du cluster.

Standard example

L’exemple suivant montre comment créer un cluster avec une AMI personnalisée.

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

L'exemple suivant montre comment créer un cluster avec une AMI personnalisée tout en spécifiant votre propre clé gérée par le AWS KMS client pour chiffrer les volumes Amazon EBS du cluster. Il est possible de spécifier différentes clés gérées par le client pour le volume racine et le volume de stockage de l'instance. Si vous n'utilisez pas de clés gérées par le client InstanceStorageConfigs sur le terrain, une clé KMS AWS détenue est utilisée pour chiffrer les volumes. Si vous utilisez des clés différentes pour le volume racine et les volumes de stockage de l'instance secondaire, définissez les politiques de clés KMS requises sur vos deux clés.

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

Mise à jour du logiciel du cluster

Si vous souhaitez mettre à jour un groupe d’instances existant sur votre cluster avec votre AMI personnalisée, vous pouvez utiliser l’opération UpdateClusterSoftware et spécifier votre AMI personnalisée dans le champ ImageId. Notez que la nouvelle image est appliquée à tous les groupes d’instances de votre cluster, à moins que vous spécifiiez le nom d’un groupe d’instances spécifique dans votre demande.

L’exemple suivant montre comment mettre à jour le logiciel de plateforme d’un cluster avec une AMI personnalisée :

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

Augmentation verticale d’un groupe d’instances

Les exemples suivants montrent comment augmenter la taille d'un groupe d'instances pour un cluster à l'aide d'une AMI personnalisée, avec ou sans clé gérée par le AWS KMS client pour le chiffrement.

Standard example

L’exemple suivant montre comment augmenter verticalement un groupe d’instances à l’aide d’une AMI personnalisée.

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

L'exemple suivant montre comment mettre à jour et étendre votre cluster avec une AMI personnalisée tout en spécifiant votre propre clé gérée par le AWS KMS client pour chiffrer les volumes Amazon EBS du cluster. Il est possible de spécifier différentes clés gérées par le client pour le volume racine et le volume de stockage de l'instance. Si vous n'utilisez pas de clés gérées par le client InstanceStorageConfigs sur le terrain, une clé KMS AWS détenue est utilisée pour chiffrer les volumes. Si vous utilisez des clés différentes pour le volume racine et les volumes de stockage de l'instance secondaire, définissez les politiques de clés KMS requises sur vos deux clés.

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

Ajout d’un groupe d’instances

L’exemple suivant montre comment ajouter un groupe d’instances à un cluster à l’aide d’une AMI personnalisée :

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