

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Aprovisionamiento de recursos mediante pilas CloudFormation
<a name="sagemaker-hyperpod-multihead-slurm-cfn"></a>

Para configurar varios nodos controladores en un clúster de HyperPod Slurm, aprovisione AWS los recursos a través de dos CloudFormation pilas: y. [Aprovisionamiento de recursos básicos](#sagemaker-hyperpod-multihead-slurm-cfn-basic) [Aprovisionamiento de recursos adicionales para admitir varios nodos de controlador](#sagemaker-hyperpod-multihead-slurm-cfn-multihead)

## Aprovisionamiento de recursos básicos
<a name="sagemaker-hyperpod-multihead-slurm-cfn-basic"></a>

Siga estos pasos para aprovisionar recursos básicos para su clúster de Amazon SageMaker HyperPod Slurm.

1. Descargue el archivo de plantilla [sagemaker-hyperpod.yaml](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/sagemaker-hyperpod.yaml) en su equipo. Este archivo YAML es una CloudFormation plantilla que define los siguientes recursos para crearlos para su clúster de Slurm.
   + Un rol de IAM de ejecución para el grupo de instancias del nodo de computación
   + Un bucket de Amazon S3 para almacenar los scripts de ciclo de vida
   + Subredes públicas y privadas (las subredes privadas tienen acceso a Internet a través de puertas de enlace NAT)
   +  Gateway/NAT Puertas de enlace de Internet
   + Dos grupos de seguridad de Amazon EC2
   + Un FSx volumen de Amazon para almacenar los archivos de configuración

1. Ejecute el siguiente comando CLI para crear una CloudFormation pila denominada`sagemaker-hyperpod`. Defina la zona de disponibilidad (AZ) IDs del clúster en `PrimarySubnetAZ` y`BackupSubnetAZ`. Por ejemplo, *use1-az4* es un ID de zona de disponibilidad de la `us-east-1` región. Para obtener más información, consulte [Zona de disponibilidad IDs](https://docs.aws.amazon.com//ram/latest/userguide/working-with-az-ids.html) y[Configuración de clústeres en varios 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
   ```

   Para obtener más información, consulte [implementar](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/deploy/) desde la AWS Command Line Interface referencia. La creación de la pila puede tardar unos minutos en completarse. Cuando haya acabado, verá lo siguiente en la interfaz de la línea de comandos.

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

1. (Opcional) Verifique la pila en la [consola de CloudFormation](https://console.aws.amazon.com/cloudformation/home).
   + En el panel de navegación izquierdo, seleccione **Pila**.
   + En la página **Pila**, busque y seleccione **sagemaker-hyperpod**.
   + Seleccione las pestañas como, por ejemplo, **Recursos** y **Resultados** para revisar los recursos y los resultados.

1. Cree variables de entorno a partir de los resultados de la pila (`sagemaker-hyperpod`). Utilizará los valores de estas variables para [Aprovisionamiento de recursos adicionales para admitir varios nodos de controlador](#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)
   ```

   Cuando aparezca un mensaje en el que se le pida su dirección de correo electrónico y su nombre de usuario de la base de datos, introduzca valores como los siguientes.

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

   Para comprobar los valores de las variables, utilice el comando `print $variable`.

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

## Aprovisionamiento de recursos adicionales para admitir varios nodos de controlador
<a name="sagemaker-hyperpod-multihead-slurm-cfn-multihead"></a>

Siga estos pasos para aprovisionar recursos adicionales para su clúster de Amazon SageMaker HyperPod Slurm con varios nodos controladores.

1. Descargue el archivo de [sagemaker-hyperpod-slurm-multiplantilla -headnode.yaml](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/sagemaker-hyperpod-slurm-multi-headnode.yaml) en su máquina. Este segundo archivo YAML es una CloudFormation plantilla que define los recursos adicionales que se deben crear para el soporte de varios nodos controladores en su clúster de Slurm.
   + Un rol de IAM de ejecución para el grupo de instancias del nodo de controlador
   + Una instancia de Amazon RDS para MariaDB
   + Un tema y una suscripción de Amazon SNS
   + AWS Secrets Manager credenciales de Amazon RDS para MariaDB

1. Ejecute el siguiente comando CLI para crear una CloudFormation pila denominada`sagemaker-hyperpod-mh`. Esta segunda pila utiliza la CloudFormation plantilla para crear AWS recursos adicionales que admitan la arquitectura de varios nodos controladores.

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

   Para obtener más información, consulte [implementar](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/deploy/) desde la AWS Command Line Interface referencia. La creación de la pila puede tardar unos minutos en completarse. Cuando haya acabado, verá lo siguiente en la interfaz de la línea de comandos.

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

1. (Opcional) Verifique la pila en la [consola de AWS Cloud Formation](https://console.aws.amazon.com/cloudformation/home).
   + En el panel de navegación izquierdo, seleccione **Pila**.
   + En la página **Stack**, busque y elija **sagemaker-hyperpod-mh**.
   + Seleccione las pestañas como, por ejemplo, **Recursos** y **Resultados** para revisar los recursos y los resultados.

1. Cree variables de entorno a partir de los resultados de la pila (`sagemaker-hyperpod-mh`). Utilizará los valores de estas variables para actualizar el archivo de configuración (`provisioning_parameters.json`) en [Preparación y carga de los scripts de ciclo de vida](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)
   ```