View a markdown version of this page

Gestione dei cluster con AMI personalizzate - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione dei cluster con AMI personalizzate

Dopo aver creato l'AMI personalizzata, puoi usarla 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 seguenti autorizzazioni all'utente amministratore del cluster che gestisce e configura i SageMaker HyperPod cluster. Il seguente esempio di policy include il set minimo di autorizzazioni per gli amministratori dei cluster per eseguire le API SageMaker HyperPod principali e gestire i cluster con AMI personalizzata. SageMaker HyperPod

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 AllowSharing come true.

  • 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.

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

Se prevedi di utilizzare un’AMI personalizzata crittografata, assicurati che la tua chiave KMS soddisfi le autorizzazioni descritte in Gestito dal cliente AWS KMS key crittografia 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 gestita dal AWS KMS cliente per la crittografia dei volumi del cluster.

Usa l'orchestrazione di Slurm

Gli esempi seguenti utilizzano l'orchestrazione di Amazon Elastic Kubernetes Service. Per utilizzare un'AMI personalizzata con orchestrazione Slurm, sostituisci con. --orchestrator 'Eks={ClusterArn=<eks_cluster_arn>}' --orchestrator 'Slurm={}' Entrambi gli orchestratori utilizzano gli stessi valori per gli altri campi, tra cui e. ImageId --node-provisioning-mode Continuous

Standard example

L’esempio seguente mostra come creare un cluster con un’AMI personalizzata.

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'esempio seguente mostra come creare un cluster con un'AMI personalizzata specificando la propria chiave gestita dal AWS KMS cliente per crittografare i volumi Amazon EBS del cluster. È possibile specificare diverse chiavi gestite dal cliente per il volume principale e il volume di archiviazione dell'istanza. Se non si utilizzano chiavi gestite dal cliente sul InstanceStorageConfigs campo, viene utilizzata una chiave KMS AWS di proprietà per crittografare i volumi. Se utilizzi chiavi diverse per il volume principale e i volumi di archiviazione dell'istanza secondaria, imposta le policy relative alle chiavi KMS richieste su entrambe le chiavi.

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

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.

Limitazione Slurm: applicazione di patch dall'AMI predefinita

Per i cluster che utilizzano l'orchestrator Slurm, UpdateClusterSoftware non supporta l'applicazione di patch dall' SageMaker HyperPod AMI predefinita a un'AMI personalizzata, incluse le AMI Slurm pubbliche. SageMaker HyperPod Per utilizzare un'AMI personalizzata con Slurm, specifica l'AMI ImageId al momento della creazione del cluster o aggiungi un nuovo gruppo di istanze utilizzando l'AMI personalizzata. UpdateCluster È supportata l'applicazione di patch tra due AMI personalizzate su un gruppo di istanze Slurm esistente.

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 scalare un gruppo di istanze per un cluster utilizzando un'AMI personalizzata, con e senza l'utilizzo di una chiave gestita AWS KMS dal cliente per la crittografia.

Standard example

L’esempio seguente spiega come aumentare verticalmente un gruppo di istanze con 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>" }]'
Customer managed key example

L'esempio seguente mostra come aggiornare e scalare il cluster con un'AMI personalizzata specificando la propria chiave gestita AWS KMS dal cliente per crittografare i volumi Amazon EBS del cluster. È possibile specificare diverse chiavi gestite dal cliente per il volume principale e il volume di archiviazione dell'istanza. Se non si utilizzano chiavi gestite dal cliente sul InstanceStorageConfigs campo, viene utilizzata una chiave KMS AWS di proprietà per crittografare i volumi. Se utilizzi chiavi diverse per il volume principale e i volumi di archiviazione dell'istanza secondaria, imposta le policy relative alle chiavi KMS richieste su entrambe le chiavi.

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

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