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.
-
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.
-
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
CreateClusterAPI-Payload, indem Sie sieSlurmConfiginnerhalb jeder Instanzgruppe verwenden. Mit diesem Ansatz:-
Es wird keine
provisioning_parameters.jsonDatei 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
SlurmConfigin 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.jsonDatei 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.
-
-
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 ausgehen
resource_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. -
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.pyAnmerkung
Die
provisioning_parameters.jsonDatei ist bei Verwendung der Konfiguration nicht erforderlich. API-drivenWenn Sie Option B (Legacy-Konfiguration) ausgewählt haben:
Ihr Ordner muss den vollständigen Satz von Lifecycle-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 -
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äfixsagemaker-beginnen. Der folgende Befehl ist ein Beispielbefehl zum Hochladen aller Dateien in einen S3-Bucket.aws s3 cp --recursive./lifecycle_filess3://sagemaker-hyperpod-lifecycle/src -
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.
-
-
Senden Sie die Anfrage zur Cluster-Erstellung ab. HyperPod stellt einen Cluster auf der Grundlage der Anfrage bereit, erstellt dann eine
resource_config.jsonDatei 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.
Themen
Welche speziellen Konfigurationen werden in den Slurm-Konfigurationsdateien verwaltet HyperPod
Mounten von Amazon FSx für Lustre und Amazon FSx für OpenZFS in einem Cluster HyperPod
Validierung der JSON-Konfigurationsdateien vor dem Erstellen eines Slurm-Clusters auf HyperPod
Interaktives Entwickeln von Lifecycle-Skripten auf einem Clusterknoten HyperPod