Anpassen von SageMaker HyperPod Clustern mithilfe von Lifecycle-Skripten - 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 Lifecycle-Skripten

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. Bei den folgenden Themen handelt es sich um 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

Das folgende Verfahren ist der Hauptablauf der Bereitstellung eines HyperPod Clusters und seiner 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. 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 eineKonfigurationsformular für provisioning_parameters.json. provisioning_parameters.jsonsollte 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.

  3. 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 solltenresource_config.json, dass sie HyperPod bei der Clustererstellung generiert werden. resource_config.jsonenthä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.

  4. 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 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 die verwenden AWS CLI, schreiben Sie eine Anfrage zur Clustererstellung im JSON-Format (create_cluster.json) gemäß den Anweisungen unterErstellen eines neuen Clusters.

    • 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 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. 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.