View a markdown version of this page

Anpassen von SageMaker HyperPod Clustern mithilfe von Lebenszyklusskripten - Amazon SageMaker KI

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

SageMaker HyperPod bietet ständig betriebsbereite Rechencluster, die in hohem Maße anpassbar sind, da Sie Lifecycle-Skripts schreiben können, um zu erfahren, SageMaker HyperPod wie die Cluster-Ressourcen eingerichtet werden. Die folgenden Themen enthalten bewährte Methoden für die Vorbereitung von Lifecycle-Skripten für die Einrichtung von SageMaker HyperPod Clustern mit Open-Source-Tools für Workload Manager.

In den folgenden Themen werden ausführliche Best Practices für die Vorbereitung von Lifecycle-Skripten für die Einrichtung von Slurm-Konfigurationen behandelt. SageMaker HyperPod

High-level -Übersicht

Das folgende Verfahren ist der Hauptablauf bei der 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.

  2. Bereite die Slurm-Konfiguration vor. Wählen Sie einen der folgenden Ansätze:

    • Option A: API-driven Konfiguration (empfohlen) — Definieren Sie Slurm-Knotentypen und Partitionen direkt in der CreateCluster API-Payload, indem Sie sie SlurmConfig innerhalb jeder Instanzgruppe verwenden. Mit diesem Ansatz:

      • Es wird keine provisioning_parameters.json Datei benötigt

      • Die Slurm-Topologie wird in der API-Nutzlast zusammen mit Instanzgruppendefinitionen definiert

      • FSx-Dateisysteme werden pro Instanzgruppe konfiguriert über 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 handeltKonfigurationsformular für provisioning_parameters.json. provisioning_parameters.jsonsollte Informationen zur Konfiguration des Slurm-Knotens enthalten, die auf dem HyperPod Cluster bereitgestellt werden sollen. Dies sollte das Design der Slurm-Knotens aus Schritt 1 widerspiegeln.

  3. Bereiten Sie eine Reihe von Lifecycle-Skripten vor, HyperPod um Slurm einzurichten, 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 ist das, was Sie später in Schritt 5 für eine Anfrage zur HyperPod Clustererstellung angeben müssen.

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

  4. Sammeln Sie alle Dateien aus den vorherigen Schritten in einem Ordner. Die Ordnerstruktur hängt von dem Konfigurationsansatz ab, den Sie in Schritt 2 gewählt haben.

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

    Ihr Ordner benötigt nur Lifecycle-Skripts für benutzerdefinierte Einrichtungsaufgaben. Die Slurm-Konfiguration und das FSx-Mounten werden automatisch auf der HyperPod Grundlage der API-Nutzlast 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 bei Verwendung der Konfiguration nicht erforderlich. API-driven

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

    Ihr Ordner muss den vollständigen Satz von Lifecycle-Skripten enthaltenprovisioning_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
  5. 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 auswählen müssen, an die AmazonSageMakerClusterInstanceRolePolicy 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
  6. Bereiten Sie eine Anfrage zur HyperPod Clustererstellung vor.

    • Option 1: Wenn Sie den verwenden AWS CLI, schreiben Sie eine Anfrage zur Clustererstellung im JSON-Format (create_cluster.json), indem Sie den Anweisungen unter folgenErstellen eines neuen Clusters.

    • Option 2: Wenn Sie die Benutzeroberfläche der SageMaker AI-Konsole verwenden, füllen Sie das Formular „Anfrage zum Erstellen eines Clusters“ in der Benutzeroberfläche der HyperPod Konsole aus. Folgen Sie dazu den Anweisungen unterErstellen Sie einen SageMaker HyperPod 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.

  7. Senden Sie die Anfrage zur Cluster-Erstellung ab. HyperPod stellt einen Cluster auf der Grundlage der Anfrage bereit, erstellt dann eine resource_config.json Datei in den HyperPod Cluster-Instances und richtet Slurm auf dem Cluster ein, auf dem die Lifecycle-Skripte ausgeführt werden.

Die folgenden Themen führen Sie durch und tauchen tief in die Details ein, wie Sie Konfigurationsdateien und Lifecycle-Skripte so organisieren, dass sie bei der HyperPod Cluster-Erstellung ordnungsgemäß funktionieren.