

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Penyediaan sumber daya menggunakan tumpukan CloudFormation
<a name="sagemaker-hyperpod-multihead-slurm-cfn"></a>

Untuk menyiapkan beberapa node pengontrol dalam klaster HyperPod Slurm, sediakan AWS sumber daya melalui dua CloudFormation tumpukan: dan. [Penyediaan sumber daya dasar](#sagemaker-hyperpod-multihead-slurm-cfn-basic) [Menyediakan sumber daya tambahan untuk mendukung beberapa node pengontrol](#sagemaker-hyperpod-multihead-slurm-cfn-multihead)

## Penyediaan sumber daya dasar
<a name="sagemaker-hyperpod-multihead-slurm-cfn-basic"></a>

Ikuti langkah-langkah berikut untuk menyediakan sumber daya dasar untuk klaster Amazon SageMaker HyperPod Slurm Anda.

1. Unduh file template [sagemaker-hyperpod.yaml](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/sagemaker-hyperpod.yaml) ke mesin Anda. File YAMM ini adalah CloudFormation template yang mendefinisikan sumber daya berikut untuk dibuat untuk cluster Slurm Anda.
   + Peran eksekusi IAM untuk grup instance node komputasi
   + Bucket Amazon S3 untuk menyimpan skrip siklus hidup
   + Subnet publik dan pribadi (subnet pribadi memiliki akses internet melalui gateway NAT)
   +  Gateway/NAT Gateway internet
   + Dua grup keamanan Amazon EC2
   +  FSx Volume Amazon untuk menyimpan file konfigurasi

1. Jalankan perintah CLI berikut untuk membuat CloudFormation tumpukan bernama. `sagemaker-hyperpod` Tentukan Availability Zone (AZ) IDs untuk cluster Anda di `PrimarySubnetAZ` dan`BackupSubnetAZ`. Misalnya, *use1-az4* adalah ID AZ untuk Availability Zone di `us-east-1` Wilayah. Untuk informasi selengkapnya, lihat [Availability Zone IDs](https://docs.aws.amazon.com//ram/latest/userguide/working-with-az-ids.html) dan[Menyiapkan SageMaker HyperPod cluster di beberapa 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
   ```

   Untuk informasi selengkapnya, lihat [menerapkan](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/deploy/) dari AWS Command Line Interface Referensi. Pembuatan tumpukan dapat memakan waktu beberapa menit untuk diselesaikan. Setelah selesai, Anda akan melihat yang berikut ini di antarmuka baris perintah Anda.

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

1. (Opsional) Verifikasi tumpukan di [CloudFormation konsol](https://console.aws.amazon.com/cloudformation/home).
   + Dari navigasi kiri, pilih **Stack**.
   + Pada halaman **Stack**, temukan dan pilih **sagemaker-hyperpod**.
   + Pilih tab seperti **Sumber Daya** dan **Output** untuk meninjau sumber daya dan output.

1. Buat variabel lingkungan dari output stack (`sagemaker-hyperpod`). Anda akan menggunakan nilai-nilai dari variabel-variabel ini untuk[Menyediakan sumber daya tambahan untuk mendukung beberapa node pengontrol](#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)
   ```

   Saat Anda melihat petunjuk yang meminta alamat email dan nama pengguna database, masukkan nilai seperti berikut ini.

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

   Untuk memverifikasi nilai variabel, gunakan `print $variable` perintah.

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

## Menyediakan sumber daya tambahan untuk mendukung beberapa node pengontrol
<a name="sagemaker-hyperpod-multihead-slurm-cfn-multihead"></a>

Ikuti langkah-langkah berikut untuk menyediakan sumber daya tambahan untuk klaster Amazon SageMaker HyperPod Slurm Anda dengan beberapa node pengontrol.

1. Unduh file template [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) ke mesin Anda. File YAMM kedua ini adalah CloudFormation template yang mendefinisikan sumber daya tambahan yang akan dibuat untuk dukungan beberapa node pengontrol di cluster Slurm Anda.
   + Peran eksekusi IAM untuk grup instance node controller
   + Instans Amazon RDS for MariaDB
   + Topik dan langganan Amazon SNS
   + AWS Secrets Manager kredensil untuk Amazon RDS untuk MariaDB

1. Jalankan perintah CLI berikut untuk membuat CloudFormation tumpukan bernama. `sagemaker-hyperpod-mh` Tumpukan kedua ini menggunakan CloudFormation template untuk membuat AWS sumber daya tambahan untuk mendukung arsitektur node pengontrol ganda.

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

   Untuk informasi selengkapnya, lihat [menerapkan](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/deploy/) dari AWS Command Line Interface Referensi. Pembuatan tumpukan dapat memakan waktu beberapa menit untuk diselesaikan. Setelah selesai, Anda akan melihat yang berikut ini di antarmuka baris perintah Anda.

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

1. (Opsional) Verifikasi tumpukan di [konsol AWS Cloud Formation](https://console.aws.amazon.com/cloudformation/home).
   + Dari navigasi kiri, pilih **Stack**.
   + Pada halaman **Stack**, temukan dan pilih **sagemaker-hyperpod-mh**.
   + Pilih tab seperti **Sumber Daya** dan **Output** untuk meninjau sumber daya dan output.

1. Buat variabel lingkungan dari output stack (`sagemaker-hyperpod-mh`). Anda akan menggunakan nilai variabel-variabel ini untuk memperbarui file konfigurasi (`provisioning_parameters.json`) di[Mempersiapkan dan mengunggah skrip siklus hidup](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)
   ```