

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

# Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm"></a>

SageMaker HyperPod offre cluster di calcolo sempre attivi e funzionanti, altamente personalizzabili in quanto è possibile scrivere script del ciclo di vita per indicare come configurare le risorse del cluster. SageMaker HyperPod I seguenti argomenti sono le migliori pratiche per la preparazione di script del ciclo di vita per configurare cluster con strumenti di gestione del carico di lavoro open source. SageMaker HyperPod 

I seguenti argomenti illustrano in modo approfondito le best practice per la preparazione degli script del ciclo di vita su cui configurare le configurazioni Slurm. SageMaker HyperPod

## Panoramica di High-level
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-highlevel-overview"></a>

La procedura seguente è il flusso principale per effettuare il provisioning di un HyperPod cluster e configurarlo con Slurm. Le fasi sono in ordine, in base a un approccio dal ***basso verso l’alto***.

1. Pianifica come desideri creare i nodi Slurm su un cluster. HyperPod Ad esempio, se desideri configurare due nodi Slurm, dovrai configurare due gruppi di istanze in un cluster. HyperPod 

1. Prepara la configurazione di Slurm. Scegli uno dei seguenti approcci:
   + **Opzione A: API-driven configurazione (consigliata)**: definisci i tipi di nodi e le partizioni Slurm direttamente nel payload dell'`CreateCluster`API utilizzando `SlurmConfig` all'interno di ciascun gruppo di istanze. Con questo approccio:
     + Non è necessario alcun `provisioning_parameters.json` file
     + La topologia Slurm è definita nel payload dell'API insieme alle definizioni dei gruppi di istanze
     + I file system FSx sono configurati per gruppo di istanze tramite `InstanceStorageConfigs`
     + La strategia di configurazione è controllata tramite `Orchestrator.Slurm.SlurmConfigStrategy`

     Esempio `SlurmConfig` in un gruppo di istanze:

     ```
     {
         "InstanceGroupName": "gpu-compute",
         "InstanceType": "ml.p4d.24xlarge",
         "InstanceCount": 8,
         "SlurmConfig": {
             "NodeType": "Compute",
             "PartitionNames": ["gpu-training"]
         }
     }
     ```
   + **Opzione B: configurazione precedente**: prepara un `provisioning_parameters.json` file, che sia un[Modulo di configurazione per provisioning\_parameters.json](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-provisioning-forms-slurm). `provisioning_parameters.json`deve contenere le informazioni di configurazione del nodo Slurm da fornire sul cluster. HyperPod Questo file dovrebbe riflettere la progettazione dei nodi Slurm della Fase 1.

1. Prepara una serie di script del ciclo di vita su cui configurare Slurm per installare i pacchetti software e configura un ambiente nel cluster in base HyperPod al tuo caso d'uso. È necessario strutturare gli script del ciclo di vita in modo che vengano eseguiti collettivamente in ordine in uno script Python centrale (`lifecycle_script.py`), oltre a scrivere uno script shell del punto di ingresso (`on_create.sh`) per eseguire lo script Python. Lo script di shell entrypoint è ciò che devi fornire a una richiesta di creazione del HyperPod cluster più avanti nel passaggio 5. 

   Inoltre, tieni presente che dovresti scrivere gli script in modo da aspettarti `resource_config.json` che vengano generati HyperPod durante la creazione del cluster. `resource_config.json`contiene informazioni sulle risorse del HyperPod cluster come indirizzi IP, tipi di istanza e ARN ed è ciò che devi usare per configurare Slurm.

1. Raccogli tutti i file delle fasi precedenti in una cartella. La struttura delle cartelle dipende dall'approccio di configurazione selezionato nel passaggio 2.

   Se hai selezionato l'opzione A (API-driven configurazione):

   La cartella richiede solo script del ciclo di vita per attività di configurazione personalizzate. La configurazione di Slurm e il montaggio di FSx vengono gestiti automaticamente in base al payload dell'API. HyperPod

   ```
   └── lifecycle_files // your local folder
   
       ├── on_create.sh
       ├── lifecycle_script.py
       └── ... // more setup scripts to be fed into lifecycle_script.py
   ```
**Nota**  
Il `provisioning_parameters.json` file non è richiesto quando si utilizza la configurazione. API-driven 

   Se hai selezionato l'opzione B (configurazione precedente):

   La cartella deve includere `provisioning_parameters.json` il set completo di script del ciclo di vita.

   ```
   └── lifecycle_files // your local folder
   
       ├── provisioning_parameters.json
       ├── on_create.sh
       ├── lifecycle_script.py
       └── ... // more setup scrips to be fed into lifecycle_script.py
   ```

1. Carica tutti i file in un bucket S3. Copia e annota il percorso del bucket S3. Ricorda di creare un percorso del bucket S3 che inizi con `sagemaker-`, perché dovrai scegliere un percorso del [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) collegato a [`AmazonSageMakerClusterInstanceRolePolicy`](security-iam-awsmanpol-AmazonSageMakerClusterInstanceRolePolicy.md), che consente solo i percorsi dei bucket S3 che iniziano con il prefisso `sagemaker-`. Di seguito è riportato un comando di esempio per caricare tutti i file in un bucket S3.

   ```
   aws s3 cp --recursive {{./lifecycle_files}} {{s3://sagemaker-hyperpod-lifecycle/src}}
   ```

1. Prepara una richiesta di creazione di HyperPod cluster. 
   + Opzione 1: se utilizzi il AWS CLI, scrivi una richiesta di creazione di cluster in formato JSON (`create_cluster.json`) seguendo le istruzioni in[Creazione di un nuovo cluster](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-create-cluster).
   + Opzione 2: se utilizzi l'interfaccia utente della console SageMaker AI, compila il modulo di ** richiesta ** per la creazione di un cluster nell'interfaccia utente della HyperPod console seguendo le istruzioni riportate in[Creare un SageMaker HyperPod cluster](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-create-cluster).

   In questa fase, assicurati di creare gruppi di istanze nella stessa struttura pianificata nelle Fasi 1 e 2. Inoltre, assicurati di specificare il bucket S3 della Fase 5 nei moduli di richiesta.

1. Invia la richiesta di creazione del cluster. HyperPod esegue il provisioning di un cluster in base alla richiesta, quindi crea un `resource_config.json` file nelle istanze del HyperPod cluster e configura Slurm sul cluster che esegue gli script del ciclo di vita.

I seguenti argomenti illustrano e approfondiscono i dettagli su come organizzare i file di configurazione e gli script del ciclo di vita in modo che funzionino correttamente durante la creazione del cluster. HyperPod

**Topics**
+ [Panoramica di High-level](#sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-highlevel-overview)
+ [Script del ciclo di vita di base forniti da HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.md)
+ [Quali configurazioni particolari vengono gestite nei file di configurazione di Slurm HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-what-hyperpod-overrides-in-slurm-conf.md)
+ [Rotazioni del registro Slurm](sagemaker-hyperpod-slurm-log-rotation.md)
+ [Montaggio di Amazon FSx for Lustre e Amazon FSx per OpenZFS su un cluster HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-setup-with-fsx.md)
+ [Convalida dei file di configurazione JSON prima di creare un cluster Slurm su HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-validate-json-files.md)
+ [Convalida del runtime HyperPod prima di eseguire i carichi di lavoro di produzione su un cluster Slurm](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-validate-runtime.md)
+ [Sviluppo interattivo di script del ciclo di vita su un nodo del cluster HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-develop-lifecycle-scripts.md)