

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Bereitstellung von Ressourcen mithilfe von Stacks CloudFormation
<a name="sagemaker-hyperpod-multihead-slurm-cfn"></a>

Um mehrere Controller-Knoten in einem HyperPod Slurm-Cluster einzurichten, stellen Sie AWS Ressourcen über zwei CloudFormation Stacks bereit: und. [Bereitstellen von grundlegenden Ressourcen](#sagemaker-hyperpod-multihead-slurm-cfn-basic) [Bereitstellen zusätzlicher Ressourcen zur Unterstützung mehrerer Controller-Knoten](#sagemaker-hyperpod-multihead-slurm-cfn-multihead)

## Bereitstellen von grundlegenden Ressourcen
<a name="sagemaker-hyperpod-multihead-slurm-cfn-basic"></a>

Gehen Sie wie folgt vor, um grundlegende Ressourcen für Ihren Amazon SageMaker HyperPod Slurm-Cluster bereitzustellen.

1. Laden Sie die Vorlagendatei [sagemaker-hyperpod.yaml](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/sagemaker-hyperpod.yaml) auf Ihren Computer herunter. Diese YAML-Datei ist eine CloudFormation Vorlage, die die folgenden Ressourcen definiert, die Sie für Ihren Slurm-Cluster erstellen müssen.
   + Eine Ausführungs-IAM-Rolle für die Rechenknoten-Instance-Gruppe
   + Ein Amazon-S3-Bucket zum Speichern der Lebenszyklusskripte
   + Öffentliche und private Subnetze (private Subnetze haben Internetzugang über NAT-Gateways)
   + Internet-Gateways Gateway/NAT 
   + Zwei Amazon-EC2-Sicherheitsgruppen
   + Ein FSx Amazon-Volume zum Speichern von Konfigurationsdateien

1. Führen Sie den folgenden CLI-Befehl aus, um einen CloudFormation Stack mit dem Namen zu erstellen`sagemaker-hyperpod`. Definieren Sie die Availability Zone (AZ) IDs für Ihren Cluster in `PrimarySubnetAZ` und`BackupSubnetAZ`. {{use1-az4}}Ist beispielsweise eine AZ-ID für eine Availability Zone in der `us-east-1` Region. Weitere Informationen finden Sie unter [Availability Zone IDs](https://docs.aws.amazon.com//ram/latest/userguide/working-with-az-ids.html) und[Einrichtung von Clustern über mehrere 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}}
   ```

   Weitere Informationen finden Sie in der AWS Command Line Interface Referenz unter [Bereitstellen](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/deploy/). Die Erstellung des Stacks kann einige Minuten in Anspruch nehmen. Wenn der Vorgang abgeschlossen ist, wird in Ihrer Befehlszeilenschnittstelle Folgendes angezeigt.

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

1. (Optional) Überprüfen Sie den Stack in der [CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation/home).
   + Wählen Sie im linken Navigationsbereich **Stack** aus.
   + Suchen Sie auf der **Stack**-Seite nach **sagemaker-hyperpod** und wählen Sie es aus.
   + Wählen Sie die Registerkarten wie **Ressourcen** und **Ergebnisse** aus, um die Ressourcen und Ergebnisse zu überprüfen.

1. Erstellen Sie Umgebungsvariablen aus den Stack-Ausgaben (`sagemaker-hyperpod`). Sie verwenden die Werte dieser Variablen, um [Bereitstellen zusätzlicher Ressourcen zur Unterstützung mehrerer Controller-Knoten](#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)
   ```

   Wenn Sie aufgefordert werden, Ihre E-Mail-Adresse und Ihren Datenbankbenutzernamen einzugeben, geben Sie Werte wie die folgenden ein.

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

   Verwenden Sie den `print {{$variable}}`-Befehl, um Variablenwerte zu überprüfen.

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

## Bereitstellen zusätzlicher Ressourcen zur Unterstützung mehrerer Controller-Knoten
<a name="sagemaker-hyperpod-multihead-slurm-cfn-multihead"></a>

Gehen Sie wie folgt vor, um zusätzliche Ressourcen für Ihren Amazon SageMaker HyperPod Slurm-Cluster mit mehreren Controller-Knoten bereitzustellen.

1. Laden Sie die [sagemaker-hyperpod-slurm-multiVorlagendatei -headnode.yaml](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/sagemaker-hyperpod-slurm-multi-headnode.yaml) auf Ihren Computer herunter. Diese zweite YAML-Datei ist eine CloudFormation Vorlage, die die zusätzlichen Ressourcen definiert, die für die Unterstützung mehrerer Controller-Knoten in Ihrem Slurm-Cluster erstellt werden müssen.
   + Eine Ausführungs-IAM-Rolle für die Instance-Gruppe des Controller-Knotens
   + Eine Instance von Amazon RDS für MariaDB
   + Ein Amazon-SNS-Thema und -Abonnement
   + AWS Secrets Manager Anmeldeinformationen für Amazon RDS for MariaDB

1. Führen Sie den folgenden CLI-Befehl aus, um einen CloudFormation Stack mit dem Namen zu erstellen`sagemaker-hyperpod-mh`. Dieser zweite Stack verwendet die CloudFormation Vorlage, um zusätzliche AWS Ressourcen zur Unterstützung der Architektur mit mehreren Controller-Knoten zu erstellen.

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

   Weitere Informationen finden Sie in der AWS Command Line Interface Referenz unter [Deploy](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/deploy/). Die Erstellung des Stacks kann einige Minuten in Anspruch nehmen. Wenn der Vorgang abgeschlossen ist, wird in Ihrer Befehlszeilenschnittstelle Folgendes angezeigt.

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

1. (Optional) Überprüfen Sie den Stack in der [Konsole von AWS Cloud Formation](https://console.aws.amazon.com/cloudformation/home).
   + Wählen Sie im linken Navigationsbereich **Stack** aus.
   + Suchen und wählen Sie auf der **Stack-Seite **sagemaker-hyperpod-mh****.
   + Wählen Sie die Registerkarten wie **Ressourcen** und **Ergebnisse** aus, um die Ressourcen und Ergebnisse zu überprüfen.

1. Erstellen Sie Umgebungsvariablen aus den Stack-Ausgaben (`sagemaker-hyperpod-mh`). Sie verwenden die Werte dieser Variablen, um die Konfigurationsdatei (`provisioning_parameters.json`) in [Vorbereiten und Hochladen von Lebenszyklusskripten](sagemaker-hyperpod-multihead-slurm-scripts.md) zu aktualisieren.

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