

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.

# Anpassen von SageMaker HyperPod Clustern mithilfe von Lebenszyklusskripten
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm"></a>

SageMaker HyperPod bietet up-and-running Always-Compute-Cluster, die in hohem Maße anpassbar sind, da Sie Lebenszyklus-Skripte schreiben können, die angeben, SageMaker HyperPod wie die Cluster-Ressourcen eingerichtet werden. Die folgenden Themen enthalten bewährte Methoden für die Vorbereitung von Lebenszyklusskripten für die Einrichtung von SageMaker HyperPod Clustern mit Open-Source-Workload-Manager-Tools.

In den folgenden Themen werden ausführliche bewährte Methoden für die Vorbereitung von Lifecycle-Skripten für die Einrichtung von Slurm-Konfigurationen erörtert. SageMaker HyperPod

## Allgemeine Übersicht
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-highlevel-overview"></a>

Das folgende Verfahren ist der Hauptablauf für die Bereitstellung eines HyperPod Clusters und dessen Einrichtung mit Slurm. Die Schritte werden dabei ***von unten nach oben*** angeordnet.

1. Planen Sie, wie Sie Slurm-Knoten auf einem Cluster erstellen möchten. HyperPod Wenn Sie beispielsweise zwei Slurm-Knoten konfigurieren möchten, müssen Sie zwei Instanzgruppen in einem HyperPod Cluster einrichten.

1. Bereiten Sie die Slurm-Konfiguration vor. Wählen Sie einen der folgenden Ansätze:
   + **Option A: API-gesteuerte Konfiguration (empfohlen)** — Definieren Sie Slurm-Knotentypen und -partitionen direkt in der `CreateCluster` API-Payload und verwenden Sie sie `SlurmConfig` innerhalb jeder Instanzgruppe. Mit diesem Ansatz:
     + Es wird keine `provisioning_parameters.json` Datei benötigt
     + Die Slurm-Topologie ist in der API-Nutzlast zusammen mit den Definitionen der Instanzgruppen definiert
     + FSx Dateisysteme werden konfiguriert über per-instance-group `InstanceStorageConfigs`
     + Die Konfigurationsstrategie wird gesteuert über `Orchestrator.Slurm.SlurmConfigStrategy`

     Beispiel `SlurmConfig` in einer Instanzgruppe:

     ```
     {
         "InstanceGroupName": "gpu-compute",
         "InstanceType": "ml.p4d.24xlarge",
         "InstanceCount": 8,
         "SlurmConfig": {
             "NodeType": "Compute",
             "PartitionNames": ["gpu-training"]
         }
     }
     ```
   + **Option B: Legacy-Konfiguration** — Bereiten Sie eine `provisioning_parameters.json` Datei vor, bei der es sich um eine[Konfigurationsformular für provisioning\$1parameters.json](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-provisioning-forms-slurm). `provisioning_parameters.json`sollte Informationen zur Konfiguration des Slurm-Knotens enthalten, der HyperPod auf dem Cluster bereitgestellt werden soll. Dies sollte das Design der Slurm-Knotens aus Schritt 1 widerspiegeln.

1. Bereiten Sie eine Reihe von Lifecycle-Skripten vor, auf denen Slurm eingerichtet werden HyperPod soll, um Softwarepakete zu installieren und eine Umgebung im Cluster für Ihren Anwendungsfall einzurichten. Sie sollten die Lebenszyklusskripte so strukturieren, dass sie gemeinsam in einem zentralen Python-Skript (`lifecycle_script.py`) ausgeführt werden, und ein Einstiegspunkt-Shell-Skript (`on_create.sh`) schreiben, um das Python-Skript auszuführen. Das Entrypoint-Shell-Skript müssen Sie später in Schritt 5 für eine Anfrage zur HyperPod Clustererstellung bereitstellen. 

   Beachten Sie außerdem, dass Sie beim Schreiben der Skripts davon ausgehen sollten`resource_config.json`, dass sie HyperPod bei der Clustererstellung generiert werden. `resource_config.json`enthält HyperPod Cluster-Ressourceninformationen wie IP-Adressen, Instanztypen und, und ist genau das ARNs, was Sie für die Konfiguration von Slurm verwenden müssen.

1. Sammeln Sie alle Dateien aus den vorherigen Schritten in einem Ordner. Die Ordnerstruktur hängt vom Konfigurationsansatz ab, den Sie in Schritt 2 ausgewählt haben.

   Wenn Sie Option A (API-gesteuerte Konfiguration) ausgewählt haben:

   Ihr Ordner benötigt nur Lebenszyklusskripts für benutzerdefinierte Einrichtungsaufgaben. Die Konfiguration und FSx das Mounten von Slurm werden automatisch auf der HyperPod Grundlage der API-Payload durchgeführt.

   ```
   └── lifecycle_files // your local folder
   
       ├── on_create.sh
       ├── lifecycle_script.py
       └── ... // more setup scripts to be fed into lifecycle_script.py
   ```
**Anmerkung**  
Die `provisioning_parameters.json` Datei ist nicht erforderlich, wenn eine API-gesteuerte Konfiguration verwendet wird.

   Wenn Sie Option B (Legacy-Konfiguration) ausgewählt haben:

   Ihr Ordner muss den vollständigen Satz von Lebenszyklus-Skripten enthalten`provisioning_parameters.json`.

   ```
   └── lifecycle_files // your local folder
   
       ├── provisioning_parameters.json
       ├── on_create.sh
       ├── lifecycle_script.py
       └── ... // more setup scrips to be fed into lifecycle_script.py
   ```

1. Laden Sie alle Dateien in einen S3-Bucket hoch. Kopieren Sie den S3-Bucket-Pfad und behalten Sie ihn. Beachten Sie, dass Sie einen S3-Bucket-Pfad erstellen sollten, der mit `sagemaker-` beginnt, da Sie eine [IAM-Rolle für SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) auswählen müssen, an die [`AmazonSageMakerClusterInstanceRolePolicy`](security-iam-awsmanpol-AmazonSageMakerClusterInstanceRolePolicy.md) angefügt ist, wodurch nur S3-Bucket-Pfade zulässig sind, die mit dem Präfix `sagemaker-` beginnen. Der folgende Befehl ist ein Beispielbefehl zum Hochladen aller Dateien in einen S3-Bucket.

   ```
   aws s3 cp --recursive ./lifecycle_files s3://sagemaker-hyperpod-lifecycle/src
   ```

1. Bereiten Sie eine Anfrage zur HyperPod Clustererstellung vor. 
   + Option 1: Wenn Sie die verwenden AWS CLI, schreiben Sie eine Anfrage zur Clustererstellung im JSON-Format (`create_cluster.json`) gemäß den Anweisungen unter[Erstellen eines neuen Clusters](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-create-cluster).
   + Option 2: Wenn Sie die Benutzeroberfläche der SageMaker AI-Konsole verwenden, füllen Sie das Formular „**Clusteranfrage erstellen**“ in der Benutzeroberfläche der HyperPod Konsole aus. Folgen Sie dabei den Anweisungen unter[Erstellen Sie einen SageMaker HyperPod Cluster](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-create-cluster).

   Stellen Sie in dieser Phase sicher, dass Sie Instance-Gruppen in derselben Struktur erstellen, die Sie in Schritt 1 und 2 geplant haben. Achten Sie außerdem darauf, dass Sie den S3-Bucket aus Schritt 5 in den Anforderungsformularen angeben.

1. Reichen Sie die Anfrage zur Clustererstellung ein. HyperPod stellt auf der Grundlage der Anfrage einen Cluster bereit, erstellt dann eine `resource_config.json` Datei in den HyperPod Cluster-Instanzen und richtet Slurm auf dem Cluster ein, auf dem die Lifecycle-Skripten ausgeführt werden.

Die folgenden Themen führen Sie durch die einzelnen Schritte und gehen detailliert darauf ein, wie Sie Konfigurationsdateien und Lebenszyklusskripte so organisieren, dass sie bei der HyperPod Clustererstellung ordnungsgemäß funktionieren.

**Topics**
+ [Allgemeine Übersicht](#sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-highlevel-overview)
+ [Die grundlegenden Lebenszyklusskripte werden bereitgestellt von HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.md)
+ [Welche speziellen Konfigurationen werden in Slurm-Konfigurationsdateien verwaltet HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-what-hyperpod-overrides-in-slurm-conf.md)
+ [Rotationen im Slurm-Protokoll](sagemaker-hyperpod-slurm-log-rotation.md)
+ [Einbinden von Amazon FSx for Lustre und Amazon FSx for OpenZFS in einem Cluster HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-setup-with-fsx.md)
+ [Validierung der JSON-Konfigurationsdateien vor der Erstellung eines Slurm-Clusters auf HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-validate-json-files.md)
+ [Validierung der Laufzeit vor der Ausführung von Produktionsworkloads auf einem Slurm-Cluster HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-validate-runtime.md)
+ [Interaktive Entwicklung von Lebenszyklus-Skripten auf einem Clusterknoten HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-develop-lifecycle-scripts.md)