

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

# Fornitura di risorse tramite stack CloudFormation
<a name="sagemaker-hyperpod-multihead-slurm-cfn"></a>

Per configurare più nodi di controllo in un cluster HyperPod Slurm, fornisci AWS le risorse tramite due CloudFormation stack: e. [Allocazione di risorse di base](#sagemaker-hyperpod-multihead-slurm-cfn-basic) [Allocazione di risorse aggiuntive per supportare più nodi controller](#sagemaker-hyperpod-multihead-slurm-cfn-multihead)

## Allocazione di risorse di base
<a name="sagemaker-hyperpod-multihead-slurm-cfn-basic"></a>

Segui questi passaggi per fornire risorse di base per il tuo cluster Amazon SageMaker HyperPod Slurm.

1. Scarica il file del modello [sagemaker-hyperpod.yaml](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/sagemaker-hyperpod.yaml) sul tuo computer. Questo file YAML è un CloudFormation modello che definisce le seguenti risorse da creare per il tuo cluster Slurm.
   + Un ruolo IAM di esecuzione per il gruppo di istanze del nodo di calcolo
   + Un bucket Amazon S3 per archiviare gli script del ciclo di vita
   + Sottoreti pubbliche e private (le sottoreti private hanno accesso a Internet tramite gateway NAT)
   +  Gateway/NAT Gateway Internet
   + Due gruppi di sicurezza Amazon EC2
   + Un FSx volume Amazon per archiviare i file di configurazione

1. Esegui il seguente comando CLI per creare uno CloudFormation stack denominato. `sagemaker-hyperpod` Definisci la zona di disponibilità (AZ) IDs per il tuo cluster in `PrimarySubnetAZ` and. `BackupSubnetAZ` Ad esempio, {{use1-az4}} è un ID AZ per una zona di disponibilità nella `us-east-1` regione. Per ulteriori informazioni, vedere [Zona di disponibilità IDs](https://docs.aws.amazon.com//ram/latest/userguide/working-with-az-ids.html) e[Configurazione di cluster su più cluster SageMaker HyperPod AZs](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-multiple-availability-zones).

   ```
   aws cloudformation deploy \
   --template-file {{/path_to_template/sagemaker-hyperpod.yaml}} \
   --stack-name {{sagemaker-hyperpod}} \
   --parameter-overrides PrimarySubnetAZ={{use1-az4}} BackupSubnetAZ={{use1-az1}} \
   --capabilities {{CAPABILITY_IAM}}
   ```

   Per ulteriori informazioni, consulta [deploy](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/deploy/) from the AWS Command Line Interface Reference. La creazione dello stack può richiedere alcuni minuti. Al termine, vedrai quanto segue nell’interfaccia a riga di comando.

   ```
   Waiting for changeset to be created..
   Waiting for stack create/update to complete
   Successfully created/updated stack - sagemaker-hyperpod
   ```

1. (Facoltativo) Verifica lo stack nella [console CloudFormation](https://console.aws.amazon.com/cloudformation/home).
   + Seleziona **Stack** dalla barra di navigazione a sinistra.
   + Nella pagina **Stack**, trova e scegli **sagemaker-hyperpod**.
   + Scegli le schede **Risorse** e **Output** per esaminare le risorse e gli output.

1. Crea variabili di ambiente dagli output dello stack (`sagemaker-hyperpod`). Utilizzerai i valori di queste variabili per [Allocazione di risorse aggiuntive per supportare più nodi controller](#sagemaker-hyperpod-multihead-slurm-cfn-multihead).

   ```
   source .env
   PRIMARY_SUBNET=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`PrimaryPrivateSubnet`].OutputValue' --output text)
   BACKUP_SUBNET=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`BackupPrivateSubnet`].OutputValue' --output text)
   EMAIL=$(bash -c 'read -p "INPUT YOUR SNSSubEmailAddress HERE: " && echo $REPLY')
   DB_USER_NAME=$(bash -c 'read -p "INPUT YOUR DB_USER_NAME HERE: " && echo $REPLY')
   SECURITY_GROUP=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`SecurityGroup`].OutputValue' --output text)
   ROOT_BUCKET_NAME=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`AmazonS3BucketName`].OutputValue' --output text)
   SLURM_FSX_DNS_NAME=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`FSxLustreFilesystemDNSname`].OutputValue' --output text)
   SLURM_FSX_MOUNT_NAME=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`FSxLustreFilesystemMountname`].OutputValue' --output text)
   COMPUTE_NODE_ROLE=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`AmazonSagemakerClusterExecutionRoleArn`].OutputValue' --output text)
   ```

   Quando vedi prompt che richiedono il tuo indirizzo e-mail e il nome utente del database, inserisci valori come i seguenti.

   ```
   INPUT YOUR SNSSubEmailAddress HERE: {{Email_address_to_receive_SNS_notifications}}
   INPUT YOUR DB_USER_NAME HERE: {{Database_user_name_you_define}}
   ```

   Per verificare i valori delle variabili, utilizza il comando `print {{$variable}}`.

   ```
   print $REGION
   us-east-1
   ```

## Allocazione di risorse aggiuntive per supportare più nodi controller
<a name="sagemaker-hyperpod-multihead-slurm-cfn-multihead"></a>

Segui questi passaggi per fornire risorse aggiuntive per il tuo cluster Amazon SageMaker HyperPod Slurm con più nodi controller.

1. Scarica il file modello [sagemaker-hyperpod-slurm-multi-headnode.yaml](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/sagemaker-hyperpod-slurm-multi-headnode.yaml) sul tuo computer. Questo secondo file YAML è un CloudFormation modello che definisce le risorse aggiuntive da creare per il supporto di più nodi di controller nel cluster Slurm.
   + Un ruolo IAM di esecuzione per il gruppo di istanze del nodo controller
   + Un’istanza Amazon RDS per MariaDB
   + Un argomento e l’abbonamento Amazon SNS
   + Gestione dei segreti AWS credenziali per Amazon RDS for MariaDB

1. Esegui il seguente comando CLI per creare uno CloudFormation stack denominato. `sagemaker-hyperpod-mh` Questo secondo stack utilizza il CloudFormation modello per creare AWS risorse aggiuntive per supportare l'architettura a più nodi di controller.

   ```
   aws cloudformation deploy \
   --template-file {{/path_to_template/slurm-multi-headnode.yaml}} \
   --stack-name {{sagemaker-hyperpod-mh}} \
   --parameter-overrides \
   SlurmDBSecurityGroupId=$SECURITY_GROUP \
   SlurmDBSubnetGroupId1=$PRIMARY_SUBNET \
   SlurmDBSubnetGroupId2=$BACKUP_SUBNET \
   SNSSubEmailAddress=$EMAIL \
   SlurmDBUsername=$DB_USER_NAME \
   --capabilities {{CAPABILITY_NAMED_IAM}}
   ```

   Per ulteriori informazioni, consulta [deploy](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/deploy/) from the AWS Command Line Interface Reference. La creazione dello stack può richiedere alcuni minuti. Al termine, vedrai quanto segue nell’interfaccia a riga di comando.

   ```
   Waiting for changeset to be created..
   Waiting for stack create/update to complete
   Successfully created/updated stack - sagemaker-hyperpod-mh
   ```

1. (Facoltativo) Verifica lo stack nella [console AWS Cloud Formation](https://console.aws.amazon.com/cloudformation/home).
   + Seleziona **Stack** dalla barra di navigazione a sinistra.
   + Nella pagina **Stack**, trova e scegli. **sagemaker-hyperpod-mh**
   + Scegli le schede **Risorse** e **Output** per esaminare le risorse e gli output.

1. Crea variabili di ambiente dagli output dello stack (`sagemaker-hyperpod-mh`). Utilizzerai i valori di queste variabili per aggiornare il file di configurazione (`provisioning_parameters.json`) in [Preparazione e caricamento degli script del ciclo di vita](sagemaker-hyperpod-multihead-slurm-scripts.md).

   ```
   source .env
   SLURM_DB_ENDPOINT_ADDRESS=$(aws --region us-east-1 cloudformation describe-stacks --stack-name $MULTI_HEAD_SLURM_STACK --query 'Stacks[0].Outputs[?OutputKey==`SlurmDBEndpointAddress`].OutputValue' --output text)
   SLURM_DB_SECRET_ARN=$(aws --region us-east-1 cloudformation describe-stacks --stack-name $MULTI_HEAD_SLURM_STACK --query 'Stacks[0].Outputs[?OutputKey==`SlurmDBSecretArn`].OutputValue' --output text)
   SLURM_EXECUTION_ROLE_ARN=$(aws --region us-east-1 cloudformation describe-stacks --stack-name $MULTI_HEAD_SLURM_STACK --query 'Stacks[0].Outputs[?OutputKey==`SlurmExecutionRoleArn`].OutputValue' --output text)
   SLURM_SNS_FAILOVER_TOPIC_ARN=$(aws --region us-east-1 cloudformation describe-stacks --stack-name $MULTI_HEAD_SLURM_STACK --query 'Stacks[0].Outputs[?OutputKey==`SlurmFailOverSNSTopicArn`].OutputValue' --output text)
   ```