

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Approvisionnement de ressources à l'aide de piles CloudFormation
<a name="sagemaker-hyperpod-multihead-slurm-cfn"></a>

Pour configurer plusieurs nœuds de contrôleur dans un cluster HyperPod Slurm, provisionnez les AWS ressources via deux CloudFormation piles : et. [Provisionnement des ressources de base](#sagemaker-hyperpod-multihead-slurm-cfn-basic) [Provisionnement de ressources supplémentaires pour prendre en charge plusieurs nœuds de contrôleur](#sagemaker-hyperpod-multihead-slurm-cfn-multihead)

## Provisionnement des ressources de base
<a name="sagemaker-hyperpod-multihead-slurm-cfn-basic"></a>

Suivez ces étapes pour provisionner des ressources de base pour votre cluster Amazon SageMaker HyperPod Slurm.

1. Téléchargez le fichier de modèle [sagemaker-hyperpod.yaml](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/sagemaker-hyperpod.yaml) sur votre ordinateur. Ce fichier YAML est un CloudFormation modèle qui définit les ressources suivantes à créer pour votre cluster Slurm.
   + Un rôle IAM d’exécution pour le groupe d’instances de nœuds de calcul
   + Un compartiment Amazon S3 pour stocker les scripts du cycle de vie
   + Des sous-réseaux publics et privés (les sous-réseaux privés ont accès à Internet via des passerelles NAT)
   +  Gateway/NAT Passerelles Internet
   + Deux groupes de sécurité Amazon EC2
   + Un FSx volume Amazon pour stocker les fichiers de configuration

1. Exécutez la commande CLI suivante pour créer une CloudFormation pile nommée`sagemaker-hyperpod`. Définissez la zone de disponibilité (AZ) IDs de votre cluster dans `PrimarySubnetAZ` et`BackupSubnetAZ`. Par exemple, *use1-az4* il s'agit d'un ID AZ pour une zone de disponibilité de la `us-east-1` région. Pour plus d'informations, consultez les [sections Zone de disponibilité IDs](https://docs.aws.amazon.com//ram/latest/userguide/working-with-az-ids.html) et[Configuration de SageMaker HyperPod clusters sur plusieurs 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
   ```

   Pour plus d'informations, consultez la section [Déployer](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/deploy/) à partir de la AWS Command Line Interface référence. La création de la pile peut prendre quelques minutes. Une fois l’opération terminée, vous verrez ce qui suit dans votre interface de ligne de commande.

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

1. (Facultatif) Vérifiez la pile dans la [console CloudFormation](https://console.aws.amazon.com/cloudformation/home).
   + Dans le volet de navigation de gauche, choisissez **Pile**.
   + Sur la page **Pile**, recherchez et choisissez **sagemaker-hyperpod**.
   + Choisissez les onglets tels que **Ressources** et **Sorties** pour passer en revue les ressources et les sorties.

1. Créez des variables d’environnement à partir des sorties de la pile (`sagemaker-hyperpod`). Vous utiliserez les valeurs de ces variables pour effectuer le [Provisionnement de ressources supplémentaires pour prendre en charge plusieurs nœuds de contrôleur](#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)
   ```

   Lorsque vous voyez des invites vous demandant votre adresse e-mail et votre nom d’utilisateur de la base de données, entrez des valeurs telles que les suivantes.

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

   Pour vérifier les valeurs des variables, utilisez la commande `print $variable`.

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

## Provisionnement de ressources supplémentaires pour prendre en charge plusieurs nœuds de contrôleur
<a name="sagemaker-hyperpod-multihead-slurm-cfn-multihead"></a>

Suivez ces étapes pour fournir des ressources supplémentaires à votre cluster Amazon SageMaker HyperPod Slurm avec plusieurs nœuds de contrôleur.

1. Téléchargez le fichier modèle [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) sur votre machine. Ce deuxième fichier YAML est un CloudFormation modèle qui définit les ressources supplémentaires à créer pour le support de plusieurs nœuds de contrôleur dans votre cluster Slurm.
   + Un rôle IAM d’exécution pour le groupe d’instances de nœuds de contrôleur
   + Une instance Amazon RDS for MariaDB
   + Une rubrique et un abonnement Amazon SNS
   + AWS Secrets Manager informations d'identification pour Amazon RDS for MariaDB

1. Exécutez la commande CLI suivante pour créer une CloudFormation pile nommée`sagemaker-hyperpod-mh`. Cette deuxième pile utilise le CloudFormation modèle pour créer des AWS ressources supplémentaires afin de prendre en charge l'architecture à plusieurs nœuds de contrôleur.

   ```
   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
   ```

   Pour plus d'informations, consultez la section [Déployer](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/deploy/) à partir de la AWS Command Line Interface référence. La création de la pile peut prendre quelques minutes. Une fois l’opération terminée, vous verrez ce qui suit dans votre interface de ligne de commande.

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

1. (Facultatif) Vérifiez la pile dans la [console AWS Cloud Formation](https://console.aws.amazon.com/cloudformation/home).
   + Dans le volet de navigation de gauche, choisissez **Pile**.
   + Sur la page **Stack**, recherchez et choisissez **sagemaker-hyperpod-mh**.
   + Choisissez les onglets tels que **Ressources** et **Sorties** pour passer en revue les ressources et les sorties.

1. Créez des variables d’environnement à partir des sorties de la pile (`sagemaker-hyperpod-mh`). Vous utiliserez les valeurs de ces variables pour mettre à jour le fichier de configuration (`provisioning_parameters.json`) dans [Préparation et chargement des scripts de cycle de vie](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)
   ```