

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.

# SageMaker HyperPod Unterstützung für Multi-Head-Knoten
<a name="sagemaker-hyperpod-multihead-slurm"></a>

Sie können mehrere Controller-Knoten (Head) in einem einzigen SageMaker HyperPod Slurm-Cluster erstellen, wobei einer als primärer Controller-Knoten und die anderen als Backup-Controller-Knoten dienen. Der primäre Controller-Knoten ist für die Steuerung der Rechenknoten (Worker-Knoten) und die Verarbeitung der Slurm-Operationen zuständig. Die Backup-Controller-Knoten überwachen den primären Controller-Knoten konstant. Wenn der primäre Controller-Knoten ausfällt oder nicht mehr reagiert, übernimmt einer der Backup-Controller-Knoten automatisch die Position des neuen primären Controller-Knotens.

Die Konfiguration mehrerer Controller-Knoten in SageMaker HyperPod Slurm-Clustern bietet mehrere wichtige Vorteile. Sie eliminiert das Risiko eines Ausfalls eines einzelnen Controller-Knotens durch die Bereitstellung von Controller-Hauptknoten, ermöglicht ein automatisches Failover auf Backup-Controller-Knoten mit schnellerer Wiederherstellung und ermöglicht Ihnen die unabhängige Verwaltung Ihrer eigenen Buchhaltungsdatenbanken und Slurm-Konfiguration.

## Die wichtigsten Konzepte
<a name="sagemaker-hyperpod-multihead-slurm-concepts"></a>

Im Folgenden finden Sie Einzelheiten zu den Konzepten im Zusammenhang mit der Unterstützung SageMaker HyperPod mehrerer Controller- (Kopf-) Knoten für Slurm-Cluster.

**Controller-Knoten**

Ein Controller-Knoten ist eine Amazon-EC2-Instance innerhalb eines Clusters, auf der wichtige Slurm-Services zur Verwaltung und Koordination der Cluster-Operationen ausgeführt werden. Insbesondere hostet er den [Slurm-Controller-Daemon (slurmctld)](https://slurm.schedmd.com/slurmctld.html) und den [Slurm-Datenbank-Daemon (slurmdbd)](https://slurm.schedmd.com/slurmdbd.html). Ein Controller-Knoten wird auch als Hauptknoten bezeichnet.

**Primärer Controller-Knoten**

Ein primärer Controller-Knoten ist der aktive und aktuell steuernde Controller-Knoten in einem Slurm-Cluster. Es wird von Slurm als primärer Controller-Knoten identifiziert, der für die Verwaltung des Clusters verantwortlich ist. Der primäre Controller-Knoten empfängt und führt Befehle von Benutzern aus, um Ressourcen auf den Rechenknoten für die Ausführung von Aufträgen zu steuern und zuzuweisen.

**Backup-Controller-Knoten**

Ein Backup-Controller-Knoten ist ein inaktiver und Standby-Controller-Knoten in einem Slurm-Cluster. Er wird von Slurm als Backup-Controller-Knoten identifiziert, der den Cluster derzeit nicht verwaltet. Auf dem Backup-Controller-Knoten wird der [Slurm-Controller-Daemon (slurmctld](https://slurm.schedmd.com/slurmctld.html)) im Standby-Modus ausgeführt. Alle Controller-Befehle, die auf den Backup-Controller-Knoten ausgeführt werden, werden zur Ausführung an den primären Controller-Knoten weitergegeben. Sein Hauptzweck besteht darin, den primären Controller-Knoten kontinuierlich zu überwachen und dessen Aufgaben zu übernehmen, wenn der primäre Controller-Knoten ausfällt oder nicht mehr reagiert.

**Rechenknoten**

Ein Rechenknoten ist eine Amazon-EC2-Instance innerhalb eines Clusters, der den [Slurm-Worker-Daemon (slurmd)](https://slurm.schedmd.com/slurmd.html) hostet. Die Hauptfunktion des Datenverarbeitungsknotens besteht darin, Aufträge auszuführen, die vom [Slurm-Controller-Daemon (slurmctld)](https://slurm.schedmd.com/slurmctld.html) zugewiesen werden, der auf dem primären Controller-Knoten ausgeführt wird. Wenn ein Auftrag geplant wird, erhält der Rechenknoten Anweisungen vom [Slurm-Controller-Daemon (slurmctld)](https://slurm.schedmd.com/slurmctld.html), um die für diesen Auftrag erforderlichen Aufgaben und Berechnungen innerhalb des Knotens selbst auszuführen. Ein Rechenknoten wird auch als Worker-Node bezeichnet.

## Funktionsweise
<a name="sagemaker-hyperpod-multihead-slurm-how"></a>

Das folgende Diagramm zeigt, wie verschiedene AWS Dienste zusammenarbeiten, um die Architektur mit mehreren Controller-Nodes (Head) für SageMaker HyperPod Slurm-Cluster zu unterstützen.

![\[SageMaker HyperPod Architekturdiagramm für Knoten mit mehreren Köpfen\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/hyperpod/hyperpod-multihead-architecture.png)


Zu den AWS Diensten, die zusammenarbeiten, um die Architektur mit SageMaker HyperPod mehreren Controller-Knoten (Hauptknoten) zu unterstützen, gehören die folgenden.


**AWS Dienste, die zusammenarbeiten, um die Architektur mit SageMaker HyperPod mehreren Controller-Knoten zu unterstützen**  

| Service | Description | 
| --- | --- | 
| ICH BIN ()AWS Identity and Access Management | Definiert zwei IAM-Rollen zur Steuerung der Zugriffsberechtigungen: eine Rolle für die Instance-Gruppe des Rechenknotens und eine weitere für die Instance-Gruppe des Controller-Knotens. | 
| Amazon RDS für MariaDB | Speichert Buchhaltungsdaten für Slurm, das Auftragsaufzeichnungen und Messdaten enthält. | 
| AWS Secrets Manager | Speichert und verwaltet Anmeldeinformationen, auf die Amazon FSx for Lustre zugreifen kann. | 
| Amazon FSx für Lustre  | Speichert Slurm-Konfigurationen und den Laufzeitstatus. | 
| Amazon VPC | Stellt eine isolierte Netzwerkumgebung bereit, in der der HyperPod Cluster und seine Ressourcen bereitgestellt werden. | 
| Amazon SNS  | Sendet Benachrichtigungen an Administratoren, wenn Statusänderungen (Slurm-Controller ist ON oder OFF) in Bezug auf den primären Controller-Knoten (Hauptknoten) auftreten. | 

Der HyperPod Cluster selbst besteht aus Controller-Knoten (primär und Backup) und Rechenknoten. Auf den Controller-Knoten laufen die Slurm-Controller- (SlurmCtld) und Datenbankkomponenten (SlurmDBd), die die Arbeitslast auf den Rechenknoten verwalten und überwachen.

Die Controller-Knoten greifen auf Slurm-Konfigurationen und den Laufzeitstatus zu, die im Amazon FSx for Lustre-Dateisystem gespeichert sind. Die Slurm-Buchhaltungsdaten werden in der Amazon RDS for MariaDB MariaDB-Datenbank gespeichert. AWS Secrets Manager bietet sicheren Zugriff auf die Datenbankanmeldedaten für die Controller-Knoten.

Wenn sich der Status der Slurm-Controller-Knoten ändert (Slurm-Controller ist `ON` oder `OFF`), sendet Amazon SNS Benachrichtigungen an den Administrator, damit dieser weitere Maßnahmen ergreifen kann.

Diese Architektur mit mehreren Controller-Knoten beseitigt den Single Point of Failure eines einzelnen Controller-Knotens (Hauptknotens), ermöglicht eine schnelle und automatische Failover-Wiederherstellung und gibt Ihnen die Kontrolle über die Slurm-Buchhaltungsdatenbank und -Konfigurationen.

# Einrichtung mehrerer Controller-Knoten für einen SageMaker HyperPod Slurm-Cluster
<a name="sagemaker-hyperpod-multihead-slurm-setup"></a>

In diesem Thema wird erklärt, wie Sie mehrere Controller-Knoten (Head) in einem SageMaker HyperPod Slurm-Cluster mithilfe von Lifecycle-Skripten konfigurieren. Bevor Sie beginnen, überprüfen Sie die in [Voraussetzungen für die Verwendung SageMaker HyperPod](sagemaker-hyperpod-prerequisites.md) aufgeführten Voraussetzungen und machen Sie sich mit den Lebenszyklusskripten in [Anpassen von SageMaker HyperPod Clustern mithilfe von Lifecycle-Skripten](sagemaker-hyperpod-lifecycle-best-practices-slurm.md) vertraut. Die Anweisungen in diesem Thema verwenden AWS CLI Befehle in der Amazon Linux-Umgebung. Beachten Sie, dass die in diesen Befehlen verwendeten Umgebungsvariablen in der aktuellen Sitzung verfügbar sind, sofern sie nicht explizit beibehalten werden.

**Topics**
+ [

# Bereitstellung von Ressourcen mithilfe von Stacks CloudFormation
](sagemaker-hyperpod-multihead-slurm-cfn.md)
+ [

# Erstellen und Anfügen einer IAM-Richtlinie
](sagemaker-hyperpod-multihead-slurm-iam.md)
+ [

# Vorbereiten und Hochladen von Lebenszyklusskripten
](sagemaker-hyperpod-multihead-slurm-scripts.md)
+ [

# Einen SageMaker HyperPod Cluster erstellen
](sagemaker-hyperpod-multihead-slurm-create.md)
+ [

# Berücksichtigung wichtiger Hinweise
](sagemaker-hyperpod-multihead-slurm-notes.md)
+ [

# Überprüfen der Referenz zu Umgebungsvariablen
](sagemaker-hyperpod-multihead-slurm-variables-reference.md)

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

# Erstellen und Anfügen einer IAM-Richtlinie
<a name="sagemaker-hyperpod-multihead-slurm-iam"></a>

In diesem Abschnitt wird erklärt, wie Sie eine IAM-Richtlinie erstellen und sie an die Ausführungsrolle anfügen, die sie in [Bereitstellen zusätzlicher Ressourcen zur Unterstützung mehrerer Controller-Knoten](sagemaker-hyperpod-multihead-slurm-cfn.md#sagemaker-hyperpod-multihead-slurm-cfn-multihead) erstellt haben.

1. Laden Sie das [Beispiel für eine IAM-Richtlinie](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/1.AmazonSageMakerClustersExecutionRolePolicy.json) aus dem GitHub Repository auf Ihren Computer herunter.

1. Erstellen Sie eine IAM-Richtlinie mit dem heruntergeladenen Beispiel, indem Sie den CLI-Befehl [create-policy](https://docs.aws.amazon.com//cli/latest/reference/iam/create-policy.html) verwenden.

   ```
   aws --region us-east-1 iam create-policy \
       --policy-name AmazonSagemakerExecutionPolicy \
       --policy-document file://1.AmazonSageMakerClustersExecutionRolePolicy.json
   ```

   Beispielausgabe des Befehls.

   ```
   {
       "Policy": {
           "PolicyName": "AmazonSagemakerExecutionPolicy",
           "PolicyId": "ANPAXISIWY5UYZM7WJR4W",
           "Arn": "arn:aws:iam::111122223333:policy/AmazonSagemakerExecutionPolicy",
           "Path": "/",
           "DefaultVersionId": "v1",
           "AttachmentCount": 0,
           "PermissionsBoundaryUsageCount": 0,
           "IsAttachable": true,
           "CreateDate": "2025-01-22T20:01:21+00:00",
           "UpdateDate": "2025-01-22T20:01:21+00:00"
       }
   }
   ```

1. Hängen Sie die Richtlinie mithilfe des [attach-role-policy](https://docs.aws.amazon.com//cli/latest/reference/iam/attach-role-policy.html)CLI-Befehls `AmazonSagemakerExecutionPolicy` an die Slurm-Ausführungsrolle an[Bereitstellen zusätzlicher Ressourcen zur Unterstützung mehrerer Controller-Knoten](sagemaker-hyperpod-multihead-slurm-cfn.md#sagemaker-hyperpod-multihead-slurm-cfn-multihead), in der Sie sie erstellt haben.

   ```
   aws --region us-east-1 iam attach-role-policy \
       --role-name AmazonSagemakerExecutionRole \
       --policy-arn arn:aws:iam::111122223333:policy/AmazonSagemakerExecutionPolicy
   ```

   Dieser Befehl liefert keine Ausgabe.

   (Optional) Wenn Sie Umgebungsvariablen verwenden, finden Sie hier die Beispielbefehle.
   + So rufen Sie den Rollen- und Richtliniennamen ab 

     ```
     POLICY=$(aws --region $REGION iam list-policies --query 'Policies[?PolicyName==AmazonSagemakerExecutionPolicy].Arn' --output text)
     ROLENAME=$(aws --region $REGION iam list-roles --query "Roles[?Arn=='${SLURM_EXECUTION_ROLE_ARN}'].RoleName" —output text)
     ```
   + So fügen Sie die Richtlinie an

     ```
     aws  --region us-east-1 iam attach-role-policy \
          --role-name $ROLENAME --policy-arn $POLICY
     ```

Weitere Informationen finden Sie unter [IAM-Rolle für SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod).

# Vorbereiten und Hochladen von Lebenszyklusskripten
<a name="sagemaker-hyperpod-multihead-slurm-scripts"></a>

Nachdem Sie alle erforderlichen Ressourcen erstellt haben, müssen Sie [Lifecycle-Skripte](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts) für Ihren SageMaker HyperPod Cluster einrichten. Diese [Lebenszyklus-Skripte](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts) bieten eine [Basiskonfiguration](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config), mit der Sie einen grundlegenden HyperPod Slurm-Cluster erstellen können.

## Vorbereiten der Lebenszyklusskripte
<a name="sagemaker-hyperpod-multihead-slurm-prepare-scripts"></a>

Gehen Sie wie folgt vor, um die Lebenszyklusskripte anzurufen.

1. Laden Sie die [Lebenszyklus-Skripte](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts) aus dem GitHub Repository auf Ihren Computer herunter.

1. Laden Sie die [Lebenszyklusskripte](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts) mit dem CLI-Befehl [cp](https://docs.aws.amazon.com//cli/latest/reference/s3/cp.html) in den Amazon-S3-Bucket hoch, den Sie in [Bereitstellen von grundlegenden Ressourcen](sagemaker-hyperpod-multihead-slurm-cfn.md#sagemaker-hyperpod-multihead-slurm-cfn-basic) erstellt haben.

   ```
   aws s3 cp --recursive LifeCycleScripts/base-config s3://${ROOT_BUCKET_NAME}/LifeCycleScripts/base-config
   ```

## Erstellen einer Konfigurationsdatei
<a name="sagemaker-hyperpod-multihead-slurm-update-config-file"></a>

Gehen Sie wie folgt vor, um die Konfigurationsdatei zu erstellen und sie in denselben Amazon-S3-Bucket hochzuladen, in dem Sie die Lebenszyklusskripte speichern.

1. Erstellen Sie eine Konfigurationsdatei namens `provisioning_parameters.json` mit der folgenden Konfiguration. Beachten Sie, dass `slurm_sns_arn` optional ist. Wenn nicht angegeben, HyperPod werden die Amazon SNS SNS-Benachrichtigungen nicht eingerichtet.

   ```
   cat <<EOF > /tmp/provisioning_parameters.json
   {
     "version": "1.0.0",
     "workload_manager": "slurm",
     "controller_group": "$CONTOLLER_IG_NAME",
     "login_group": "my-login-group",
     "worker_groups": [
       {
         "instance_group_name": "$COMPUTE_IG_NAME",
         "partition_name": "dev"
       }
     ],
     "fsx_dns_name": "$SLURM_FSX_DNS_NAME",
     "fsx_mountname": "$SLURM_FSX_MOUNT_NAME",
     "slurm_configurations": {
       "slurm_database_secret_arn": "$SLURM_DB_SECRET_ARN",
       "slurm_database_endpoint": "$SLURM_DB_ENDPOINT_ADDRESS",
       "slurm_shared_directory": "/fsx",
       "slurm_database_user": "$DB_USER_NAME",
       "slurm_sns_arn": "$SLURM_SNS_FAILOVER_TOPIC_ARN"
     }
   }
   EOF
   ```

1. Laden Sie die `provisioning_parameters.json`-Datei in denselben Amazon-S3-Bucket hoch, in dem Sie die Lebenszyklusskripte speichern.

   ```
   aws s3 cp /tmp/provisioning_parameters.json s3://${ROOT_BUCKET_NAME}/LifeCycleScripts/base-config/provisioning_parameters.json
   ```
**Anmerkung**  
Wenn Sie eine API-gesteuerte Konfiguration verwenden, ist die `provisioning_parameters.json` Datei nicht erforderlich. Bei der API-gesteuerten Konfiguration definieren Sie Slurm-Knotentypen, Partitionen und FSx Mounting direkt in der API-Nutzlast. CreateCluster Einzelheiten finden Sie unter [Erste Schritte mit](smcluster-getting-started-slurm-cli.md) der Verwendung von. SageMaker HyperPod AWS CLI

## Überprüfen von Dateien im Amazon-S3-Bucket
<a name="sagemaker-hyperpod-multihead-slurm-verify-s3"></a>

Nachdem Sie alle Lebenszyklusskripts und die `provisioning_parameters.json`-Datei hochgeladen haben, sollte Ihr Amazon-S3-Bucket wie folgt aussehen.

![\[Bild mit allen Lebenszyklusskripten, die in der Konsole von Amazon Simple Storage Service in den Amazon-S3-Bucket hochgeladen wurden.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/hyperpod/hyperpod-lifecycle-scripts-s3.png)


Weitere Informationen finden Sie unter [Beginnen Sie mit grundlegenden Lebenszyklusskripten von HyperPod](https://docs.aws.amazon.com//sagemaker/latest/dg/sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.html).

# Einen SageMaker HyperPod Cluster erstellen
<a name="sagemaker-hyperpod-multihead-slurm-create"></a>

Nachdem Sie alle erforderlichen Ressourcen eingerichtet und die Skripte in den Amazon-S3-Bucket hochgeladen haben, können Sie einen Cluster erstellen.

1. Führen Sie den [https://docs.aws.amazon.com//cli/latest/reference/sagemaker/create-cluster.html](https://docs.aws.amazon.com//cli/latest/reference/sagemaker/create-cluster.html) AWS CLI Befehl aus, um einen Cluster zu erstellen. Der Erstellungsprozess kann bis zu 15 Minuten dauern.

   ```
   aws --region $REGION sagemaker create-cluster \
       --cluster-name $HP_CLUSTER_NAME \
       --vpc-config '{
           "SecurityGroupIds":["'$SECURITY_GROUP'"],
           "Subnets":["'$PRIMARY_SUBNET'", "'$BACKUP_SUBNET'"]
       }' \
       --instance-groups '[{                  
       "InstanceGroupName": "'$CONTOLLER_IG_NAME'",
       "InstanceType": "ml.t3.medium",
       "InstanceCount": 2,
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://'$BUCKET_NAME'",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "'$SLURM_EXECUTION_ROLE_ARN'",
       "ThreadsPerCore": 1
   },
   {
       "InstanceGroupName": "'$COMPUTE_IG_NAME'",          
       "InstanceType": "ml.c5.xlarge",
       "InstanceCount": 2,
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://'$BUCKET_NAME'",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "'$COMPUTE_NODE_ROLE'",
       "ThreadsPerCore": 1
   }]'
   ```

   Nach erfolgreicher Ausführung gibt der Befehl den Cluster-ARN wie folgt zurück.

   ```
   {
       "ClusterArn": "arn:aws:sagemaker:us-east-1:111122223333:cluster/cluster_id"
   }
   ```

1. (Optional) Um den Status Ihres Clusters zu überprüfen, können Sie die SageMaker AI-Konsole ([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)) verwenden. Wählen Sie in der linken Navigationsleiste **HyperPod Clusters** und anschließend **Cluster Management** aus. Wählen Sie einen Clusternamen aus, um die Cluster-Detailseite zu öffnen. Wenn Ihr Cluster erfolgreich erstellt wurde, sehen Sie, dass der Cluster-Status lautet **InService**.  
![\[Das Bild zeigt einen HyperPod Slurm-Cluster mit mehreren Controller-Knoten in der Amazon SageMaker AI-Konsole.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/hyperpod/hyperpod-lifecycle-multihead-cluster.png)

# Berücksichtigung wichtiger Hinweise
<a name="sagemaker-hyperpod-multihead-slurm-notes"></a>

Dieser Abschnitt enthält einige wichtige Hinweise, die für Sie hilfreich sein könnten. 

1. Gehen Sie wie folgt vor, um zu einem Slurm-Cluster mit mehreren Controllern zu migrieren.

   1. Folgen Sie den Anweisungen unter [Bereitstellung von Ressourcen mithilfe von Stacks CloudFormation](sagemaker-hyperpod-multihead-slurm-cfn.md), um alle erforderlichen Ressourcen bereitzustellen.

   1. Folgen Sie den Anweisungen unter [Vorbereiten und Hochladen von Lebenszyklusskripten](sagemaker-hyperpod-multihead-slurm-scripts.md), um die aktualisierten Lebenszyklusskripte hochzuladen. Verschieben Sie beim Aktualisieren der `provisioning_parameters.json`-Datei Ihre bestehende Controller-Gruppe in den `worker_groups`-Abschnitt und fügen Sie dem `controller_group`-Abschnitt einen neuen Controller-Gruppennamen hinzu.

   1. Führen Sie den API-Aufruf [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) aus, um eine neue Controller-Gruppe zu erstellen und die ursprünglichen Compute-Instance-Gruppen und die Controller-Gruppe beizubehalten.

1. Verwenden Sie den CLI-Befehl [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html), um die Anzahl der Controller-Knoten zu reduzieren. Für jede Controller-Instance-Gruppe beträgt die Mindestanzahl der Controller-Knoten, auf die Sie herunterskalieren können, 1. Das bedeutet, dass Sie die Anzahl der Controller-Knoten nicht auf 0 herunterskalieren können.
**Wichtig**  
Für Cluster, die vor dem 24. Januar 2025 erstellt wurden, müssen Sie zuerst Ihre Clustersoftware mithilfe der [UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)API aktualisieren, bevor Sie den CLI-Befehl [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) ausführen.

   Im Folgenden finden Sie ein Beispiel für einen CLI-Befehl zum Herunterskalieren der Anzahl der Controller-Knoten.

   ```
   aws sagemaker update-cluster \
       --cluster-name my_cluster \
       --instance-groups '[{                  
       "InstanceGroupName": "controller_ig_name",
       "InstanceType": "ml.t3.medium",
       "InstanceCount": 3,
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://amzn-s3-demo-bucket1",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "slurm_execution_role_arn",
       "ThreadsPerCore": 1
   },
   {
       "InstanceGroupName": "compute-ig_name",       
       "InstanceType": "ml.c5.xlarge",
       "InstanceCount": 2,
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://amzn-s3-demo-bucket1",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "compute_node_role_arn",
       "ThreadsPerCore": 1
   }]'
   ```

1. Verwenden Sie den [batch-delete-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/batch-delete-cluster-nodes.html)CLI-Befehl, um die Controller-Knoten stapelweise zu löschen. Für jede Controller-Instance-Gruppe müssen Sie mindestens einen Controller-Knoten behalten. Wenn Sie alle Controller-Knoten stapelweise löschen möchten, funktioniert die API-Operation nicht.
**Wichtig**  
Für Cluster, die vor dem 24. Januar 2025 erstellt wurden, müssen Sie zuerst Ihre Clustersoftware mithilfe der [UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)API aktualisieren, bevor Sie den [batch-delete-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/batch-delete-cluster-nodes.html)CLI-Befehl ausführen.

   Im Folgenden finden Sie ein Beispiel für einen CLI-Befehl, um die Controller-Knoten stapelweise zu löschen.

   ```
   aws sagemaker batch-delete-cluster-nodes --cluster-name my_cluster --node-ids instance_ids_to_delete
   ```

1. Um Ihre Probleme bei der Clustererstellung zu beheben, überprüfen Sie die Fehlermeldung auf der Seite mit den Cluster-Details in Ihrer SageMaker AI-Konsole. Sie können CloudWatch Protokolle auch verwenden, um Probleme bei der Clustererstellung zu beheben. Wählen Sie in der CloudWatch Konsole **Protokollgruppen** aus. Suchen Sie dann nach `clusters`, um die Liste der Protokollgruppen anzuzeigen, die sich auf Ihre Clustererstellung beziehen.  
![\[Bild, das SageMaker HyperPod Amazon-Cluster-Protokollgruppen in der CloudWatch Konsole zeigt.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/hyperpod/hyperpod-lifecycle-multihead-logs.png)

# Überprüfen der Referenz zu Umgebungsvariablen
<a name="sagemaker-hyperpod-multihead-slurm-variables-reference"></a>

Die folgenden Umgebungsvariablen werden im Tutorial von [Einrichtung mehrerer Controller-Knoten für einen SageMaker HyperPod Slurm-Cluster](sagemaker-hyperpod-multihead-slurm-setup.md) definiert und verwendet. Diese Umgebungsvariablen sind nur in der aktuellen Sitzung verfügbar, sofern sie nicht explizit beibehalten werden. Sie werden mit der `$variable_name`-Syntax definiert. Variablen mit key/value Paaren stehen für AWS von ihnen erstellte Ressourcen, während Variablen ohne Schlüssel benutzerdefiniert sind.


**Referenz zu Umgebungsvariablen**  

| Variable | Description | 
| --- | --- | 
| \$1BACKUP\$1SUBNET |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1COMPUTE\$1IG\$1NAME |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1COMPUTE\$1NODE\$1ROLE |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1CONTOLLER\$1IG\$1NAME |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1DB\$1USER\$1NAME |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1EMAIL |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1PRIMARY\$1SUBNET |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1POLICY |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1REGION |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1ROOT\$1BUCKET\$1NAME |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SECURITY\$1GROUP |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SLURM\$1DB\$1ENDPOINT\$1ADDRESS |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SLURM\$1DB\$1SECRET\$1ARN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SLURM\$1EXECUTION\$1ROLE\$1ARN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SLURM\$1FSX\$1DNS\$1NAME |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SLURM\$1FSX\$1MOUNT\$1NAME |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SLURM\$1SNS\$1FAILOVER\$1TOPIC\$1ARN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 