Riduzione verticale di un cluster SageMaker HyperPod - Amazon SageMaker AI

Riduzione verticale di un cluster SageMaker HyperPod

Puoi ridurre verticalmente il numero di istanze in esecuzione sul tuo cluster Amazon SageMaker HyperPod. Potresti voler ridurre verticalmente un cluster per vari motivi, ad esempio per limitare l’utilizzo delle risorse o ottimizzare i costi.

La pagina seguente descrive i due approcci principali per la riduzione verticale:

  • Riduzione verticale a livello di gruppo di istanze: questo approccio utilizza l’API UpdateCluster, che consente di:

    • Ridurre verticalmente il numero di istanze per gruppi di istanze specifici in modo indipendente. SageMaker AI gestisce la terminazione dei nodi in modo da raggiungere i nuovi numeri di istanze di destinazione che hai impostato per ogni gruppo. Consultare Riduzione verticale di un gruppo di istanze.

    • Elimina completamente i gruppi di istanze dal cluster. Consultare Eliminazione di gruppi di istanze.

  • Riduzione verticale a livello di istanza: questo approccio utilizza l’API BatchDeleteClusterNodes, che consente di specificare i singoli nodi da terminare. Consultare Riduzione verticale a livello di istanza.

Nota

Quando si esegue la riduzione verticale a livello di istanza con BatchDeleteCusterNodes, puoi terminare solo un massimo di 99 istanze alla volta. UpdateCluster supporta la terminazione di qualsiasi numero di istanze.

Considerazioni importanti

  • Quando si riduce verticalmente un cluster, è necessario assicurarsi che le risorse rimanenti siano sufficienti per gestire il carico di lavoro e che qualsiasi operazione necessaria di migrazione o ribilanciamento dei dati sia gestita correttamente per evitare interruzioni.

  • Assicurati di eseguire il backup dei dati su Amazon S3 o su un file system FSx per Lustre prima di invocare l’API su un gruppo di nodi worker. Questo aiuta a prevenire qualsiasi potenziale perdita di dati dal volume root dell’istanza. Per ulteriori informazioni sui backup, consulta Utilizzo dello script di backup fornito da SageMaker HyperPod.

  • Per invocare questa API su un cluster esistente, devi prima applicare una patch al cluster eseguendo l’API UpdateClusterSoftware. Per ulteriori informazioni sull’applicazione delle patch in un cluster, consulta Aggiornamento del software della piattaforma SageMaker HyperPod di un cluster.

  • La misurazione/fatturazione per le istanze on demand verrà interrotta automaticamente dopo la riduzione verticale. Per arrestare la misurazione delle istanze riservate con riduzione verticale, contatta il team del tuo account AWS per ricevere assistenza.

  • Puoi utilizzare la capacità rilasciata dalle istanze riservate ridotte verticalmente per aumentare verticalmente un altro cluster SageMaker HyperPod.

Riduzione verticale a livello di gruppo di istanze

L’operazione UpdateCluster consente di apportare modifiche alla configurazione del cluster SageMaker HyperPod, ad esempio la riduzione verticale del numero di istanze di un gruppo di istanze o la rimozione di interi gruppi di istanze. Questa opzione può essere utile per adattare le risorse allocate al cluster in base alle variazioni del carico di lavoro, ottimizzare i costi o modificare il tipo di istanza di un gruppo di istanze.

Riduzione verticale di un gruppo di istanze

Utilizza questo approccio quando hai un gruppo di istanze inattivo, che può quindi essere ridotto verticalmente in modo sicuro terminando una qualsiasi delle sue istanze. Quando invii una richiesta UpdateCluster di riduzione verticale, HyperPod sceglie in modo casuale le istanze da terminare e le riduce verticalmente fino al numero di nodi specificato per il gruppo di istanze.

Nota

Quando riduci verticalmente a 0 il numero di istanze in un gruppo di istanze, tutte le istanze all’interno del gruppo verranno terminate. Tuttavia, il gruppo di istanze stesso continuerà a esistere come parte del cluster SageMaker HyperPod. Puoi aumentare di nuovo verticalmente il gruppo di istanze in un secondo momento, utilizzando la stessa configurazione del gruppo di istanze.

In alternativa, puoi scegliere di rimuovere un gruppo di istanze in modo permanente. Per ulteriori informazioni, consulta Eliminazione di gruppi di istanze.

Per ridurre verticalmente con UpdateCluster
  1. Segui la procedura descritta in Aggiornamento della configurazione di un cluster SageMaker HyperPod. Quando raggiungi la fase 1.d in cui specifichi il campo InstanceCount, inserisci un numero inferiore al numero corrente di istanze per ridurre verticalmente il cluster.

  2. Esegui il comando update-cluster della AWS CLI per inviare la richiesta.

Di seguito è riportato un esempio di un oggetto JSON UpdateCluster: Supponiamo che il gruppo di istanze abbia attualmente due istanze in esecuzione. Se imposti il campo InstanceCount su 1, come mostrato nell’esempio, HyperPod seleziona casualmente una delle istanze e la termina.

{ "ClusterName": "name-of-cluster-to-update", "InstanceGroups": [ { "InstanceGroupName": "training-instances", "InstanceType": "instance-type", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket/training-script.py", "OnCreate": "s3://amzn-s3-demo-bucket/setup-script.sh" }, "ExecutionRole": "arn:aws:iam::123456789012:role/SageMakerRole", "ThreadsPerCore": number-of-threads, "OnStartDeepHealthChecks": [ "InstanceStress", "InstanceConnectivity" ] } ], "NodeRecovery": "Automatic" }

Eliminazione di gruppi di istanze

Puoi utilizzare l’operazione UpdateCluster per rimuovere interi gruppi di istanze dal cluster SageMaker HyperPod quando non sono più necessari. Questa operazione va oltre la semplice riduzione verticale, poiché consente di eliminare completamente gruppi di istanze specifici dalla configurazione del cluster.

Nota

Quando rimuovi un gruppo di istanze:

  • Tutte le istanze all’interno del gruppo di destinazione vengono terminate.

  • L’intera configurazione del gruppo viene eliminata dal cluster.

  • Tutti i carichi di lavoro in esecuzione sul gruppo di istanze vengono arrestati.

Per eliminare gruppi di istanze con UpdateCluster
  1. Quando segui la procedura descritta in Aggiornamento della configurazione di un cluster SageMaker HyperPod:

    1. Imposta il parametro InstanceGroupsToDelete facoltativo nel JSON UpdateCluster e passa l’elenco separato da virgole dei nomi dei gruppi di istanze da eliminare.

    2. Quando indichi l’elenco InstanceGroups, assicurati che le specifiche dei gruppi di istanze che stai rimuovendo non siano più elencate in InstanceGroups.

  2. Esegui il comando update-cluster della AWS CLI per inviare la richiesta.

Importante
  • Il cluster SageMaker HyperPod deve contenere sempre almeno un gruppo di istanze.

  • Assicurati che venga eseguito il backup di tutti i dati critici prima della rimozione.

  • Il processo di rimozione non può essere annullato.

Di seguito è riportato un esempio di un oggetto JSON UpdateCluster: Consideriamo il caso di un cluster con tre gruppi di istanze: training, prototype-training e inference-serving. Vuoi eliminare il gruppo prototype-training.

{ "ClusterName": "name-of-cluster-to-update", "InstanceGroups": [ { "InstanceGroupName": "training", "InstanceType": "instance-type", "InstanceCount": , "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket/training-script.py", "OnCreate": "s3://amzn-s3-demo-bucket/setup-script.sh" }, "ExecutionRole": "arn:aws:iam::123456789012:role/SageMakerRole", "ThreadsPerCore": number-of-threads, "OnStartDeepHealthChecks": [ "InstanceStress", "InstanceConnectivity" ] }, { "InstanceGroupName": "inference-serving", "InstanceType": "instance-type", "InstanceCount": 2, [...] }, ], "InstanceGroupsToDelete": [ "prototype-training" ], "NodeRecovery": "Automatic" }

Riduzione verticale a livello di istanza

L’operazione BatchDeleteClusterNodes consente di ridurre verticalmente un cluster SageMaker HyperPod specificando i singoli nodi da terminare. BatchDeleteClusterNodes fornisce un controllo più granulare per la rimozione mirata dei nodi e l’ottimizzazione del cluster. Ad esempio, è possibile utilizzare BatchDeleteClusterNodes per eliminare nodi mirati per la manutenzione, gli aggiornamenti in sequenza o il ribilanciamento geografico delle risorse.

Richiesta e risposta API

Quando invii una richiesta BatchDeleteClusterNodes, SageMaker HyperPod elimina i nodi in base ai relativi ID di istanza. L’API accetta una richiesta con il nome del cluster e un elenco di ID del nodo da eliminare.

La risposta include due sezioni:

  • Failed: un elenco di errori di tipo BatchDeleteClusterNodesError , uno per ogni ID di istanza.

  • Successful: l’elenco degli ID delle istanze terminate correttamente.

Convalida e gestione degli errori

L’API esegue varie convalide, ad esempio:

  • Verifica del formato dell’ID del nodo (prefisso i- e struttura dell’ID dell’istanza Amazon EC2).

  • Verifica della lunghezza dell’elenco dei nodi, con un limite massimo di 99 ID dei nodi in una singola richiesta BatchDeleteClusterNodes.

  • Verifica della presenza di un cluster SageMaker HyperPod valido con il nome del cluster di input e conferma che non siano in corso operazioni a livello di cluster (aggiornamento, aggiornamento del sistema, applicazione delle patch o eliminazione).

  • Gestione dei casi in cui le istanze non vengono trovate, hanno uno stato non valido o sono in uso.

Codici di risposta API

  • L’API restituisce un codice di stato 200 per le richieste riuscite (ad esempio, la convalida di tutti i nodi di input è riuscita) o parzialmente riuscite (ad esempio, la convalida di alcuni nodi di input non è riuscita).

  • Se tutte queste convalide non riescono (ad esempio, la convalida di tutti i nodi di input non riesce), l’API restituirà una risposta Richiesta non valida 400 con i messaggi e i codici di errore appropriati.

Esempio

Di seguito è riportato un esempio di riduzione verticale di un cluster a livello di istanza con la AWS CLI:

aws sagemaker batch-delete-cluster-nodes --cluster-name "cluster-name" --node-ids '["i-111112222233333", "i-111112222233333"]'