Gestione dei cluster con AMI personalizzate
Dopo aver creato l’AMI personalizzata, puoi utilizzarla per creare o aggiornare un cluster Amazon SageMaker HyperPod. Puoi anche aumentare verticalmente o aggiungere gruppi di istanze che utilizzano la nuova AMI.
Autorizzazioni necessarie per le operazioni del cluster
Aggiungi le autorizzazioni seguenti all’utente amministratore del cluster che gestisce e configura i cluster SageMaker HyperPod. L’esempio di policy seguente include il set minimo di autorizzazioni necessario agli amministratori del cluster per eseguire le API principali di SageMaker HyperPod e gestire i cluster SageMaker HyperPod con l’AMI personalizzata.
Tieni presente che le autorizzazioni di condivisione degli snapshot con AMI e AMI EBS sono incluse tramite le autorizzazioni API ModifyImageAttribute e ModifySnapshotAttribute nell’ambito della policy seguente. Per definire l’ambito delle autorizzazioni di condivisione, procedi nel seguente modo:
-
Aggiungi tag per controllare le autorizzazioni di condivisione delle AMI nelle AMI e negli snapshot AMI. Ad esempio, puoi taggare l’AMI impostando
AllowSharingcometrue. -
Aggiungi la chiave di contesto nella policy per consentire esclusivamente la condivisione di AMI contrassegnate con determinati tag.
La seguente è una policy limitata, che garantisce che siano consentite solo le AMI taggate con AllowSharing su 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
Se prevedi di utilizzare un’AMI personalizzata crittografata, assicurati che la tua chiave KMS soddisfi le autorizzazioni descritte in Crittografia con AWS KMS key gestita dal cliente per SageMaker HyperPod. Inoltre, assicurati che la chiave KMS dell’AMI personalizzata venga utilizzata anche per crittografare il volume root Amazon EBS del cluster.
Creazione di un cluster
Puoi specificare l’AMI personalizzata nel campo ImageId relativo all’operazione CreateCluster.
Gli esempi seguenti mostrano come creare un cluster con un’AMI personalizzata, con e senza una chiave AWS KMS gestita dal cliente per la crittografia dei volumi del cluster.
Aggiornamento del software del cluster
Per aggiornare un gruppo di istanze esistente sul cluster con la tua AMI personalizzata, puoi utilizzare l’operazione UpdateClusterSoftware e specificare l’AMI personalizzata nel campo ImageId. Tieni presente che, a meno che non indichi il nome di un gruppo di istanze specifico nella richiesta, la nuova immagine viene applicata a tutti i gruppi di istanze del cluster.
L’esempio seguente mostra come aggiornare il software della piattaforma di un cluster con un’AMI personalizzata:
aws sagemaker update-cluster-software \ --cluster-name<exampleClusterName>\ --instance-groups<instanceGroupToUpdate>\ --image-id<customAmiId>
Aumento verticale di un gruppo di istanze
Gli esempi seguenti mostrano come aumentare verticalmente un gruppo di istanze per un cluster utilizzando un’AMI personalizzata, con e senza l’utilizzo di una chiave AWS KMS gestita dal cliente per la crittografia.
Aggiunta di un gruppo di istanze
L’esempio seguente mostra come aggiungere un gruppo di istanze a un cluster utilizzando un’AMI personalizzata:
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>" }'