

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

# Guida introduttiva all'utilizzo di SageMaker HyperPod AWS CLI
<a name="smcluster-getting-started-slurm-cli"></a>

Crea il tuo primo SageMaker HyperPod cluster utilizzando i AWS CLI comandi per HyperPod.

## Crea il tuo primo SageMaker HyperPod cluster con Slurm
<a name="smcluster-getting-started-slurm-cli-create-cluster"></a>

[Il seguente tutorial mostra come creare un nuovo SageMaker HyperPod cluster e configurarlo con Slurm tramite i comandi per.AWS CLI SageMaker HyperPod](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-cli) Seguendo il tutorial, creerai un HyperPod cluster con tre nodi Slurm:,, e. `my-controller-group` `my-login-group` `worker-group-1`

Con l'approccio di configurazione basato sull'API, definisci i tipi di nodi Slurm e le assegnazioni delle partizioni direttamente nella richiesta API utilizzando. CreateCluster `SlurmConfig` Ciò elimina la necessità di un `provisioning_parameters.json` file separato e fornisce funzionalità integrate di convalida, rilevamento delle deviazioni e configurazione. per-instance-group FSx 

1. Prima di tutto, prepara e carica gli script del ciclo di vita su un bucket Amazon S3. Durante la creazione del cluster, li HyperPod esegue in ogni gruppo di istanze. Carica gli script del ciclo di vita su Amazon S3 utilizzando il comando seguente.

   ```
   aws s3 sync \
       ~/{{local-dir-to-lifecycle-scripts}}/* \
       s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}
   ```
**Nota**  
Il percorso del bucket S3 deve iniziare con un prefisso`sagemaker-`, poiché il [ruolo IAM for SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) with consente l'accesso `AmazonSageMakerClusterInstanceRolePolicy` solo ai bucket Amazon S3 che iniziano con il prefisso specifico.

   [Se parti da zero, usa gli script del ciclo di vita di esempio forniti nell'archivio Awsome Distributed Training. GitHub ](https://github.com/aws-samples/awsome-distributed-training/) I seguenti passaggi secondari mostrano come scaricare e caricare gli script del ciclo di vita di esempio in un bucket Amazon S3.

   1. Scarica una copia degli script del ciclo di vita di esempio in una directory sul computer locale.

      ```
      git clone https://github.com/aws-samples/awsome-distributed-training/
      ```

   1. Accedi alla directory [https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config), dove puoi trovare un set di script del ciclo di vita.

      ```
      cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config
      ```

      Per ulteriori informazioni sugli esempi di script del ciclo di vita, consulta [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md).

   1. Carica gli script su `s3://sagemaker-{{<unique-s3-bucket-name>}}/{{<lifecycle-script-directory>}}/src`. Puoi eseguire questa operazione con la console di Amazon S3 o con il comando della AWS CLI Amazon S3 seguente.

      ```
      aws s3 sync \
          ~/{{local-dir-to-lifecycle-scripts}}/* \
          s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}
      ```
**Nota**  
Con la configurazione basata su API, non è necessario creare o caricare un file. `provisioning_parameters.json` La configurazione Slurm viene definita direttamente nella richiesta CreateCluster API nel passaggio successivo.

1. Prepara un file di [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)richiesta in formato JSON e salvalo con nome. `create_cluster.json`

   Con la configurazione basata su API, è possibile specificare il tipo di nodo Slurm e l'assegnazione della partizione per ciascun gruppo di istanze utilizzando il campo. `SlurmConfig` È inoltre possibile configurare le impostazioni Slurm a livello di cluster utilizzando. `Orchestrator.Slurm`

   Per `ExecutionRole`, fornisci l’ARN del ruolo IAM che hai creato con la policy gestita `AmazonSageMakerClusterInstanceRolePolicy` in [Prerequisiti per l'utilizzo SageMaker HyperPod](sagemaker-hyperpod-prerequisites.md).

   ```
   {
       "ClusterName": "my-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::{{<account-id>}}:role/HyperPodExecutionRole",
               "InstanceStorageConfigs": [
                   {
                       "EbsVolumeConfig": {
                           "VolumeSizeInGB": 500
                       }
                   }
               ]
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Login"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::{{<account-id>}}:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Compute",
                   "PartitionNames": ["partition-1"]
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::{{<account-id>}}:role/HyperPodExecutionRole"
           }
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       }
   }
   ```

   **SlurmConfig campi**:    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

   **Campi Orchestrator.Slurm:**    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

   **SlurmConfigStrategy opzioni:**
   + `Managed`(consigliato): gestisce `slurm.conf` e rileva HyperPod completamente le modifiche non autorizzate (rilevamento della deriva). Gli aggiornamenti falliscono se viene rilevata una deriva.
   + `Overwrite`: HyperPod `slurm.conf` sovrascrive gli aggiornamenti, ignorando eventuali modifiche manuali.
   + `Merge`: HyperPod conserva le modifiche manuali e le unisce alla configurazione dell'API.

   **Aggiunta FSx per Lustre (opzionale):**

   Per montare un filesystem FSx for Lustre sui tuoi nodi di calcolo, aggiungilo `FsxLustreConfig` al gruppo for the instance. `InstanceStorageConfigs` Ciò richiede una configurazione VPC personalizzata.

   ```
   {
       "InstanceGroupName": "worker-group-1",
       "InstanceType": "ml.trn1.32xlarge",
       "InstanceCount": 1,
       "SlurmConfig": {
           "NodeType": "Compute",
           "PartitionNames": ["partition-1"]
       },
       "InstanceStorageConfigs": [
           {
               "FsxLustreConfig": {
                   "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com",
                   "MountPath": "/fsx",
                   "MountName": "abcdefgh"
               }
           }
       ],
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "arn:aws:iam::{{<account-id>}}:role/HyperPodExecutionRole"
   }
   ```

   **Aggiunta FSx per OpenZFS (opzionale):**

   Puoi anche montarlo FSx per i filesystem OpenZFS:

   ```
   "InstanceStorageConfigs": [
       {
           "FsxOpenZfsConfig": {
               "DnsName": "fs-0xyz789abc123456.fsx.us-west-2.amazonaws.com",
               "MountPath": "/shared"
           }
       }
   ]
   ```
**Nota**  
Ogni gruppo di istanze può avere al massimo uno FSx per la configurazione di Lustre e uno per OpenZFS. FSx Gruppi di istanze diversi possono montare diversi filesystem.

   **Aggiungere la configurazione VPC (richiesta per FSx):**

   Se si utilizza FSx, è necessario specificare una configurazione VPC personalizzata:

   ```
   {
       "ClusterName": "my-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}}",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::{{<account-id>}}:role/HyperPodExecutionRole"
           },
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       },
       "VpcConfig": {
           "SecurityGroupIds": ["sg-0abc123def456789a"],
           "Subnets": ["subnet-0abc123def456789a"]
       }
   }
   ```

1. Utilizza il comando seguente per creare il cluster.

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

   Questo dovrebbe restituire l’ARN del cluster creato.

   ```
   {
       "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/my-hyperpod-cluster"
   }
   ```

   Se ricevi un errore dovuto ai limiti delle risorse, assicurati di sostituire il tipo di istanza con uno che disponga di quote sufficienti nel tuo account oppure richiedi quote aggiuntive seguendo la procedura in [SageMaker HyperPod quote](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas).

   **Errori di convalida comuni:**    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

1. Esegui `describe-cluster` per verificare lo stato del cluster.

   ```
   aws sagemaker describe-cluster --cluster-name {{my-hyperpod-cluster}}
   ```

   Risposta di esempio:

   ```
   {
       "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/my-hyperpod-cluster",
       "ClusterName": "my-hyperpod-cluster",
       "ClusterStatus": "Creating",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Login"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Compute",
                   "PartitionNames": ["partition-1"]
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           }
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       },
       "CreationTime": "2024-01-15T10:30:00Z"
   }
   ```

   Quando lo stato del cluster diventa **InService**, procedi con la fase successiva. La creazione del cluster richiede in genere 10-15 minuti.

1. Esegui `list-cluster-nodes` per controllare i dettagli dei nodi del cluster.

   ```
   aws sagemaker list-cluster-nodes --cluster-name {{my-hyperpod-cluster}}
   ```

   Risposta di esempio:

   ```
   {
       "ClusterNodeSummaries": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceId": "i-0abc123def456789a",
               "InstanceType": "ml.c5.xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:35:00Z"
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceId": "i-0abc123def456789b",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:35:00Z"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceId": "i-0abc123def456789c",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:36:00Z"
           }
       ]
   }
   ```

   `InstanceId`Questo è ciò di cui gli utenti del cluster hanno bisogno per accedere (`aws ssm`) al loro interno. Per ulteriori informazioni sull’accesso ai nodi del cluster e sull’esecuzione di carichi di lavoro di ML, consulta [Lavori su cluster SageMaker HyperPod](sagemaker-hyperpod-run-jobs-slurm.md).

1. Connect al cluster utilizzando AWS Systems Manager Session Manager.

   ```
   aws ssm start-session \
       --target sagemaker-cluster:{{my-hyperpod-cluster}}_{{my-login-group}}-{{i-0abc123def456789b}} \
       --region {{us-west-2}}
   ```

   Una volta connesso, verifica che Slurm sia configurato correttamente:

   ```
   # Check Slurm nodes
   sinfo
   
   # Check Slurm partitions
   sinfo -p partition-1
   
   # Submit a test job
   srun -p partition-1 --nodes=1 hostname
   ```

## Eliminazione del cluster e pulizia delle risorse
<a name="smcluster-getting-started-slurm-cli-delete-cluster-and-clean"></a>

Dopo aver testato con successo la creazione di un SageMaker HyperPod cluster, questo continua a funzionare nello `InService` stato fino a quando non lo elimini. Ti consigliamo di eliminare tutti i cluster creati utilizzando la capacità di SageMaker intelligenza artificiale su richiesta quando non sono in uso per evitare di incorrere in costi di servizio continui in base ai prezzi su richiesta. In questo tutorial, hai creato un cluster composto da tre gruppi di istanze. Assicurati di eliminare il cluster eseguendo il comando seguente.

```
aws sagemaker delete-cluster --cluster-name {{my-hyperpod-cluster}}
```

Per pulire gli script del ciclo di vita dal bucket Amazon S3 utilizzato per questo tutorial, vai al bucket Amazon S3 che hai utilizzato durante la creazione del cluster e rimuovi completamente i file.

```
aws s3 rm s3://sagemaker-{{<unique-s3-bucket-name>/<lifecycle-script-directory>/src}} --recursive
```

Se hai testato l'esecuzione di carichi di lavoro di training su modelli sul cluster, controlla anche se hai caricato dati o se il tuo processo ha salvato artefatti in diversi bucket Amazon S3 o servizi di file system come Amazon FSx for Lustre e Amazon Elastic File System. Per evitare addebiti, elimina tutti gli artefatti e i dati dall’archiviazione o dal file system.

## Argomenti correlati
<a name="smcluster-getting-started-slurm-cli-related-topics"></a>
+ [SageMaker HyperPod Configurazione Slurm](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-slurm-configuration)
+ [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md)
+ [FSx configurazione tramite InstanceStorageConfigs](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-slurm-fsx-config)
+ [SageMaker HyperPod Operazioni del cluster Slurm](sagemaker-hyperpod-operate-slurm.md)