

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 SageMaker HyperPod Slurm utilizzando il AWS CLI
<a name="sagemaker-hyperpod-operate-slurm-cli-command"></a>

I seguenti argomenti forniscono indicazioni sulla scrittura di file di richiesta SageMaker HyperPod API in formato JSON e sulla loro esecuzione utilizzando i AWS CLI comandi.

**Topics**
+ [Creazione di un nuovo cluster](#sagemaker-hyperpod-operate-slurm-cli-command-create-cluster)
+ [Descrizione di un cluster](#sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster)
+ [Elenco dei dettagli dei nodi del cluster](#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes)
+ [Descrizione dei dettagli di un nodo del cluster](#sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster-node)
+ [Elenco dei cluster](#sagemaker-hyperpod-operate-slurm-cli-command-list-clusters)
+ [Aggiornamento della configurazione del cluster](#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster)
+ [Aggiorna il software della SageMaker HyperPod piattaforma di un cluster](#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software)
+ [Riduzione verticale di un cluster](#sagemaker-hyperpod-operate-slurm-cli-command-scale-down)
+ [Eliminazione di un cluster](#sagemaker-hyperpod-operate-slurm-cli-command-delete-cluster)

## Creazione di un nuovo cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-create-cluster"></a>

1. Prepara gli script di configurazione del ciclo di vita e caricali in un bucket S3, ad esempio `s3://sagemaker-amzn-s3-demo-bucket/lifecycle-script-directory/src/`. La fase 2 seguente presuppone che esista uno script del punto di ingresso denominato `on_create.sh` nel bucket S3 specificato.
**Importante**  
Assicurati di impostare il percorso S3 in modo che inizi con `s3://sagemaker-`. Al [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) è collegata la policy gestita [https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html), che consente l’accesso ai bucket S3 con il prefisso specifico `sagemaker-`.

1. Preparare un file di richiesta [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)API in formato JSON. Devi configurare i gruppi di istanze in modo che corrispondano al cluster Slurm progettato nel file `provisioning_parameters.json` che verrà utilizzato durante la creazione del cluster nell’ambito dell’esecuzione di un set di script del ciclo di vita. Per ulteriori informazioni, consulta [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md). Il modello seguente ha due gruppi di istanze per soddisfare i requisiti minimi per un cluster Slurm: un nodo controller (head) e un nodo di calcolo (worker). Per `ExecutionRole`, fornisci l’ARN del ruolo IAM che hai creato con la policy gestita `AmazonSageMakerClusterInstanceRolePolicy` nella sezione [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod).

   ```
   // create_cluster.json
   {
       "ClusterName": "your-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "controller-group",
               "InstanceType": "ml.m5.xlarge",
               "InstanceCount": 1,
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster",
               // Optional: Configure an additional storage per instance group.
               "InstanceStorageConfigs": [
                   {
                      // Attach an additional EBS volume to each instance within the instance group.
                      // The default mount path for the additional EBS volume is /opt/sagemaker.
                      "EbsVolumeConfig":{
                         // Specify an integer between 1 and 16384 in gigabytes (GB).
                         "VolumeSizeInGB": integer,
                      }
                   }
               ]
           }, 
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.p4d.xlarge",
               "InstanceCount": 1,
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster"
           }
       ],
       // Optional
       "Tags": [ 
           { 
              "Key": "string",
              "Value": "string"
           }
       ],
       // Optional
       "VpcConfig": { 
           "SecurityGroupIds": [ "string" ],
           "Subnets": [ "string" ]
       }
   }
   ```

   A seconda di come progetti la struttura del cluster con gli script del ciclo di vita, puoi configurare fino a 20 gruppi di istanze nel parametro `InstanceGroups`.

   Per il parametro di `Tags` richiesta, puoi aggiungere tag personalizzati per la gestione del SageMaker HyperPod cluster come AWS risorsa. Puoi aggiungere tag al tuo cluster nello stesso modo in cui li aggiungi in altri AWS servizi che supportano i tag. Per ulteriori informazioni sull'etichettatura AWS delle risorse in generale, consulta la Guida per l'utente di [Tagging AWS Resources](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html).

   Per il parametro di richiesta `VpcConfig`, specifica le informazioni del VPC da utilizzare. Per ulteriori informazioni, consulta [Configurazione SageMaker HyperPod con un Amazon VPC personalizzato](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-optional-vpc).

1. Utilizza il comando [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html) come segue.

   ```
   aws sagemaker create-cluster \
       --cli-input-json file://complete/path/to/create_cluster.json
   ```

   Questo dovrebbe restituire l’ARN del nuovo cluster.

## Descrizione di un cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster"></a>

Esegui [describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster.html) per verificare lo stato del cluster. Puoi specificare il nome o l’ARN del cluster.

```
aws sagemaker describe-cluster --cluster-name your-hyperpod-cluster
```

Quando lo stato del cluster diventa **InService**, procedi con la fase successiva. Utilizzando questa API, puoi anche recuperare i messaggi di errore dall'esecuzione di altre HyperPod operazioni API.

## Elenco dei dettagli dei nodi del cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes"></a>

Esegui [list-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-cluster-nodes.html)per controllare le informazioni chiave dei nodi del cluster.

```
aws sagemaker list-cluster-nodes --cluster-name your-hyperpod-cluster
```

Questo restituisce una risposta e `InstanceId` è ciò che ti serve per l’accesso (con `aws ssm`).

## Descrizione dei dettagli di un nodo del cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster-node"></a>

Esegui [describe-cluster-node](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster-node.html)per recuperare i dettagli di un nodo del cluster. È possibile ottenere l'ID del nodo del cluster dall' list-cluster-nodesoutput. Puoi specificare il nome o l’ARN del cluster.

```
aws sagemaker describe-cluster-node \
    --cluster-name your-hyperpod-cluster \
    --node-id i-111222333444555aa
```

## Elenco dei cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-list-clusters"></a>

Esegui [list-clusters](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-clusters.html) per elencare tutti i cluster del tuo account.

```
aws sagemaker list-clusters
```

Puoi anche aggiungere ulteriori flag per filtrare l’elenco dei cluster. Per ulteriori informazioni su cosa viene eseguito questo comando a basso livello e sui flag aggiuntivi per il filtraggio, consulta il riferimento all'[ListClusters](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusters.html)API.

## Aggiornamento della configurazione del cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-update-cluster"></a>

Esegui [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) per aggiornare la configurazione di un cluster.

**Nota**  
Puoi utilizzare l'`UpdateCluster`API per ridimensionare o rimuovere interi gruppi di istanze dal cluster SageMaker HyperPod . Per ulteriori istruzioni su come ridurre verticalmente o eliminare i gruppi di istanze, consulta [Riduzione verticale di un cluster](#sagemaker-hyperpod-operate-slurm-cli-command-scale-down).

1. Crea un file di richiesta `UpdateCluster` in formato JSON. Assicurati di specificare correttamente il nome del cluster e il nome del gruppo di istanze da aggiornare. Puoi modificare il tipo di istanza, il numero di istanze, lo script del punto di ingresso della configurazione del ciclo di vita e il percorso dello script.

   1. Per `ClusterName`, specifica il nome del cluster da aggiornare.

   1. Per `InstanceGroupName`

      1. Per aggiornare un gruppo di istanze esistente, specifica il nome del gruppo di istanze da aggiornare.

      1. Per aggiungere un nuovo gruppo di istanze, specifica un nuovo nome non presente nel cluster.

   1. Per `InstanceType`

      1. Per aggiornare un gruppo di istanze esistente, è necessario che il tipo di istanza specificato all’inizio corrisponda al gruppo.

      1. Per aggiungere un nuovo gruppo di istanze, specifica il tipo di istanza con cui configurare il gruppo.

   1. Per `InstanceCount`

      1. Per aggiornare un gruppo di istanze esistente, specifica un numero intero corrispondente al numero di istanze desiderato. Puoi fornire un valore più alto o più basso (fino a 0) per aumentare o ridurre verticalmente il gruppo di istanze.

      1. Per aggiungere un nuovo gruppo di istanze, specifica un numero intero maggiore o uguale a 1. 

   1. Per `LifeCycleConfig`, puoi modificare entrambi i valori `SourceS3Uri` e `OnCreate` per aggiornare il gruppo di istanze.

   1. Per `ExecutionRole`

      1. Per aggiornare un gruppo di istanze esistente, continua a utilizzare lo stesso ruolo IAM collegato durante la creazione del cluster.

      1. Per aggiungere un nuovo gruppo di istanze, specifica un ruolo IAM da collegare.

   1. Per `ThreadsPerCore`

      1. Per aggiornare un gruppo di istanze esistente, continua a utilizzare lo stesso valore specificato durante la creazione del cluster.

      1. Per aggiungere un nuovo gruppo di istanze, puoi scegliere qualsiasi valore tra le opzioni consentite dal tipo di istanza. Per ulteriori informazioni, cerca il tipo di istanza e consulta la colonna **Thread validi per core** nella tabella di riferimento in [CPU cores and threads per CPU core per instance type](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html) in *Amazon EC2 User Guide*.

   Puoi utilizzare il frammento di codice seguente, che corrisponde a un modello di file di richiesta JSON. Per ulteriori informazioni sulla sintassi della richiesta e sui parametri di questa API, consulta il riferimento all'[UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)API.

   ```
   // update_cluster.json
   {
       // Required
       "ClusterName": "name-of-cluster-to-update",
       // Required
       "InstanceGroups": [
           {
               "InstanceGroupName": "name-of-instance-group-to-update",
               "InstanceType": "ml.m5.xlarge",
               "InstanceCount": 1,
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster",
               // Optional: Configure an additional storage per instance group.
               "InstanceStorageConfigs": [
                   {
                      // Attach an additional EBS volume to each instance within the instance group.
                      // The default mount path for the additional EBS volume is /opt/sagemaker.
                      "EbsVolumeConfig":{
                         // Specify an integer between 1 and 16384 in gigabytes (GB).
                         "VolumeSizeInGB": integer,
                      }
                   }
               ]
           },
           // add more blocks of instance groups as needed
           { ... }
       ]
   }
   ```

1. Esegui il comando `update-cluster` per inviare la richiesta. 

   ```
   aws sagemaker update-cluster \
       --cli-input-json file://complete/path/to/update_cluster.json
   ```

## Aggiorna il software della SageMaker HyperPod piattaforma di un cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software"></a>

Esegui [update-cluster-software](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster-software.html)per aggiornare i cluster esistenti con il software e le patch di sicurezza fornite dal SageMaker HyperPod servizio. Per `--cluster-name`, specifica il nome o l’ARN del cluster da aggiornare.

**Importante**  
Ricorda di eseguire il backup del tuo lavoro prima di applicare questa API. Il processo di applicazione delle patch sostituisce il volume root con l’AMI aggiornata, il che significa che i dati precedenti archiviati nel volume root dell’istanza andranno persi. Assicurati di eseguire il backup dei dati dal volume root dell'istanza su Amazon S3 o Amazon FSx for Lustre. Per ulteriori informazioni, consulta [Utilizza lo script di backup fornito da SageMaker HyperPod](#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup).

```
aws sagemaker update-cluster-software --cluster-name your-hyperpod-cluster
```

Questo comando richiama l'API. [UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html) Dopo la chiamata all'API, SageMaker HyperPod verifica se è disponibile un DLAMI più recente per le istanze del cluster. Se è necessario un aggiornamento DLAMI, SageMaker HyperPod aggiornerà le istanze del cluster per utilizzare le più recenti [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) ed eseguirà gli script del ciclo di vita nel bucket Amazon S3 specificato durante la creazione o l'aggiornamento del cluster. Se il cluster utilizza già il DLAMI più recente, non SageMaker HyperPod apporterà alcuna modifica al cluster né eseguirà nuovamente gli script del ciclo di vita. Il team SageMaker HyperPod di assistenza lancia regolarmente nuovi strumenti per migliorare la sicurezza e migliorare l'esperienza [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) degli utenti. Ti consigliamo di continuare ad aggiornare sempre alla versione più recente di SageMaker HyperPod DLAMI. Per i futuri aggiornamenti SageMaker HyperPod DLAMI per le patch di sicurezza, segui con. [Note di SageMaker HyperPod rilascio di Amazon](sagemaker-hyperpod-release-notes.md)

**Suggerimento**  
Se la patch di sicurezza non riesce, è possibile recuperare i messaggi di errore eseguendo l’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html) come indicato in [Descrizione di un cluster](#sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster).

**Nota**  
Puoi eseguire questa API solo in modo programmatico. La funzionalità di patching non è implementata nell'interfaccia utente della SageMaker HyperPod console.

### Utilizza lo script di backup fornito da SageMaker HyperPod
<a name="sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup"></a>

SageMaker HyperPod fornisce uno script per il backup e il ripristino dei dati [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/patching-backup.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/patching-backup.sh)nel * GitHub repository Awsome Distributed Training*. Lo script fornisce le funzioni seguenti.

**Per eseguire il backup dei dati su un bucket S3 prima dell’applicazione delle patch**

```
sudo bash patching-backup.sh --create <s3-buckup-bucket-path>
```

Dopo aver eseguito il comando, lo script verifica `squeue` per rilevare se ci sono processi in coda, arresta Slurm se non c’è alcun processo in coda, esegue il backup di `mariadb` e copia gli elementi locali sul disco definito in `LOCAL_ITEMS`. Puoi aggiungere altri file e directory a `LOCAL_ITEMS`.

```
# Define files and directories to back up.
LOCAL_ITEMS=(
    "/var/spool/slurmd"
    "/var/spool/slurmctld"
    "/etc/systemd/system/slurmctld.service"
    "/home/ubuntu/backup_slurm_acct_db.sql"
    # ... Add more items as needed
)
```

Inoltre, puoi aggiungere codice personalizzato allo script fornito per eseguire il backup di qualsiasi applicazione collegata al tuo caso d’uso.

**Per ripristinare i dati da un bucket S3 dopo l’applicazione delle patch**

```
sudo bash patching-backup.sh --restore <s3-buckup-bucket-path>
```

## Riduzione verticale di un cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-scale-down"></a>

È possibile ridurre il numero di istanze o eliminare i gruppi di istanze nel SageMaker HyperPod cluster per ottimizzare l'allocazione delle risorse o ridurre i costi.

Puoi ridurre verticalmente le istanze con l’operazione API `UpdateCluster` per terminare in modo casuale le istanze dal gruppo di istanze fino a un numero specificato oppure puoi terminare istanze specifiche utilizzando l’operazione API `BatchDeleteClusterNodes`. Puoi anche rimuovere completamente interi gruppi di istanze utilizzando l’API `UpdateCluster`. Per ulteriori informazioni su come ridurre verticalmente le istanze con questi metodi, consulta [Ridimensionamento di un cluster SageMaker HyperPod](smcluster-scale-down.md).

**Nota**  
Non è possibile rimuovere le istanze configurate come nodi controller Slurm. Il tentativo di eliminare un nodo controller Slurm genera un errore di convalida con il codice di errore `NODE_ID_IN_USE`.

## Eliminazione di un cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-delete-cluster"></a>

Esegui [delete-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-cluster.html) per eliminare un cluster. Puoi specificare il nome o l’ARN del cluster.

```
aws sagemaker delete-cluster --cluster-name your-hyperpod-cluster
```