Einen SageMaker HyperPod-Cluster herunterskalieren
Sie können die Anzahl der Instances, die auf Ihrem Amazon SageMaker HyperPod-Cluster ausgeführt werden, reduzieren. Möglicherweise möchten Sie einen Cluster aus verschiedenen Gründen herunterskalieren, z. B. aufgrund einer geringeren Ressourcennutzung oder einer Kostenoptimierung.
Auf der folgenden Seite werden zwei Hauptansätze zur Verkleinerung beschrieben:
-
Herunterskalieren auf Instance-Gruppenebene: Dieser Ansatz verwendet die
UpdateCluster-API, mit der Sie:-
Die Anzahl der Instances für bestimmte Instance-Gruppen unabhängig voneinander herunterskalieren. SageMaker AI verarbeitet die Terminierung von Knoten so, dass die Anzahl der neuen ZielInstances erreicht wird, die Sie für jede Gruppe festgelegt haben. Siehe Verkleinern Sie eine Instance-Gruppe.
-
Löschen Sie Instance-Gruppen vollständig aus Ihrem Cluster. Siehe Instance-Gruppen löschen.
-
-
Herunterskalieren auf Instance-Ebene Dieser Ansatz nutzt die
BatchDeleteClusterNodes-API, mit der Sie die einzelnen Knoten angeben können, die Sie beenden möchten. Siehe Herunterskalieren auf Instance-Ebene.
Anmerkung
Beim Herunterskalieren auf Instance-Ebene mit BatchDeleteCusterNodes können Sie nur maximal 99 Instances gleichzeitig beenden. UpdateCluster unterstützt das Beenden einer beliebigen Anzahl von Instances.
Wichtige Überlegungen
-
Wenn Sie einen Cluster herunterskalieren, sollten Sie sicherstellen, dass die verbleibenden Ressourcen ausreichen, um Ihre Arbeitslast zu bewältigen, und dass alle erforderlichen Datenmigrationen oder Neugewichte ordnungsgemäß durchgeführt werden, um Unterbrechungen zu vermeiden.
-
Stellen Sie sicher, dass Sie Ihre Daten auf Amazon S3 oder einem FSx for Lustre-Dateisystem sichern, bevor Sie die API auf einer Worker-Knotengruppe aufrufen. Dies kann dazu beitragen, potenziellen Datenverlust durch das Instance-Root-Volume zu verhindern. Weitere Informationen über Sicherungen finden Sie unter Verwenden des von SageMaker HyperPod bereitgestellten Backup-Skripts.
-
Um diese API auf einem vorhandenen Cluster aufzurufen, müssen Sie zuerst den Cluster patchen, indem Sie die UpdateClusterSoftware-API ausführen. WeWeitere Informationen zum Patchen eines Clusters finden Sie unter Aktualisieren der SageMaker-HyperPod-Plattformsoftware eines Clusters.
-
Die Zählung/Abrechnung für On-Demand-Instances wird nach der Herunterskalierung automatisch gestoppt. Um die Erfassung von Reserved Instances mit reduzierter Kapazität zu beenden, sollten Sie sich an Ihr AWS Account-Team wenden, um Unterstützung zu erhalten.
-
Sie können die freigegebene Kapazität der herunterskalierten Reserved Instances verwenden, um einen anderen SageMaker HyperPod-Cluster hochzuskalieren.
Herunterskalieren auf Instance-Gruppenebene
Mit UpdateClusterdiesem Vorgang können Sie Änderungen an der Konfiguration Ihres SageMaker HyperPod-Clusters vornehmen, z. B. die Anzahl der Instances einer Instance-Gruppe reduzieren oder ganze Instance-Gruppen entfernen. Dies kann nützlich sein, wenn Sie die Ihrem Cluster zugewiesenen Ressourcen an Änderungen Ihrer Arbeitslast anpassen, die Kosten optimieren oder den Instance-Typ einer Instance-Gruppe ändern möchten.
Verkleinern Sie eine Instance-Gruppe
Verwenden Sie diesen Ansatz, wenn Sie eine Instance-Gruppe haben, die inaktiv ist und es sicher ist, eine der Instances zu beenden, um sie herunterzuskalieren. Wenn Sie eine UpdateCluster Anfrage zur Herunterskalierung einreichen, wählt HyperPod nach dem Zufallsprinzip Instances für die Kündigung aus und skaliert auf die angegebene Anzahl von Knoten für die Instance-Gruppe herunter.
Anmerkung
Wenn Sie die Anzahl der Instances in einer Instance-Gruppe auf 0 herunterskalieren, werden alle Instances innerhalb dieser Gruppe beendet. Die Instance-Gruppe selbst wird jedoch weiterhin als Teil des SageMaker HyperPod-Clusters existieren. Sie können die Instance-Gruppe zu einem späteren Zeitpunkt mit derselben Instance-Gruppenkonfiguration wieder hochskalieren.
Alternativ können Sie festlegen, dass eine Instance-Gruppe dauerhaft entfernt wird. Weitere Informationen finden Sie unter Instance-Gruppen löschen.
Zum Verkleinern mit UpdateCluster
-
Befolgen Sie die in Aktualisierung der SageMaker HyperPod-Cluster-Konfiguration beschriebenen Schritte. Wenn Sie Schritt 1.d erreicht haben, in dem Sie das Feld instanceCount angeben, geben Sie eine Zahl ein, die kleiner ist als die aktuelle Anzahl von Instances, um den Cluster zu verkleinern.
-
Führen Sie den AWS CLI Befehl update-cluster aus, um Ihre Anfrage einzureichen.
Nachfolgend finden Sie ein Beispiel für ein UpdateCluster-JSON-Objekt: Stellen Sie sich den Fall vor, dass Ihre Instance-Gruppe derzeit aus 2 laufenden Instances besteht. Wenn Sie das Feld instanceCount auf 1 setzen, wie im Beispiel gezeigt, wählt HyperPod zufällig eine der Instances aus und beendet sie.
{ "ClusterName":"name-of-cluster-to-update", "InstanceGroups": [ { "InstanceGroupName":"training-instances", "InstanceType":"instance-type", "InstanceCount":1, "LifeCycleConfig": { "SourceS3Uri":"s3://amzn-s3-demo-bucket/training-script.py", "OnCreate":"s3://amzn-s3-demo-bucket/setup-script.sh"}, "ExecutionRole":"arn:aws:iam::123456789012:role/SageMakerRole", "ThreadsPerCore":number-of-threads, "OnStartDeepHealthChecks": [ "InstanceStress", "InstanceConnectivity" ] } ], "NodeRecovery":"Automatic"}
Instance-Gruppen löschen
Sie können den UpdateClusterVorgang verwenden, um ganze Instance-Gruppen aus Ihrem SageMaker HyperPod-Cluster zu entfernen, wenn sie nicht mehr benötigt werden. Dies geht über eine einfache Verkleinerung hinaus und ermöglicht es Ihnen, bestimmte Instance-Gruppen vollständig aus der Konfiguration Ihres Clusters zu entfernen.
Anmerkung
Gehen Sie beim Entfernen einer Instance-Gruppe wie folgt vor:
-
Alle Instances innerhalb der Zielgruppe werden beendet.
-
Die gesamte Gruppenkonfiguration wird aus dem Cluster gelöscht.
-
Alle Workloads, die auf dieser Instance-Gruppe ausgeführt werden, werden gestoppt.
Um Instance-Gruppen zu löschen mit UpdateCluster
-
Wenn Sie die unter beschriebenen Schritte ausführenAktualisierung der SageMaker HyperPod-Cluster-Konfiguration:
-
Legen Sie den optionalen
InstanceGroupsToDelete-Parameter in IhrerUpdateCluster-JSON-Datei fest und übergeben Sie die kommagetrennte Liste der Instance-Gruppennamen, die Sie löschen möchten. -
Wenn Sie die
InstanceGroupsListe angeben, stellen Sie sicher, dass die Spezifikationen der Instance-Gruppen, die Sie entfernen, nicht mehr in derInstanceGroupsListe aufgeführt sind.
-
-
Führen Sie den AWS CLI Befehl update-cluster aus, um Ihre Anfrage einzureichen.
Wichtig
-
Ihr SageMaker-HyperPod-Cluster muss immer mindestens eine Instance-Gruppe verwalten.
-
Stellen Sie sicher, dass alle wichtigen Daten gesichert sind, bevor Sie sie entfernen.
-
Die Entfernung kann nicht rückgängig gemacht werden.
Nachfolgend finden Sie ein Beispiel für ein UpdateCluster-JSON-Objekt: Stellen Sie sich den Fall vor, dass ein Cluster derzeit aus drei Instance-Gruppen besteht: einer Trainingsgruppe, einer Prototyp-Schulung und einer Gruppe, die Inferenz bedient. Sie möchten die Prototyp-Trainingsgruppe löschen.
{ "ClusterName":"name-of-cluster-to-update", "InstanceGroups": [ { "InstanceGroupName":"training", "InstanceType":"instance-type", "InstanceCount":, "LifeCycleConfig": { "SourceS3Uri":"s3://amzn-s3-demo-bucket/training-script.py", "OnCreate":"s3://amzn-s3-demo-bucket/setup-script.sh"}, "ExecutionRole":"arn:aws:iam::123456789012:role/SageMakerRole", "ThreadsPerCore":number-of-threads, "OnStartDeepHealthChecks": [ "InstanceStress", "InstanceConnectivity" ] }, { "InstanceGroupName":"inference-serving", "InstanceType":"instance-type", "InstanceCount":2, [...] }, ], "InstanceGroupsToDelete": ["prototype-training"], "NodeRecovery":"Automatic"}
Herunterskalieren auf Instance-Ebene
Mit diesem BatchDeleteClusterNodes Vorgang können Sie einen SageMaker HyperPod-Cluster herunterskalieren, indem Sie die einzelnen Knoten angeben, die Sie beenden möchten. BatchDeleteClusterNodesbietet eine detailliertere Steuerung für die gezielte Entfernung von Knoten und die Cluster-Optimierung. Sie können es beispielsweise verwenden, BatchDeleteClusterNodes um bestimmte Knoten für Wartungsarbeiten, fortlaufende Upgrades oder die geografische Verteilung von Ressourcen zu löschen.
API-Anforderung und -Antwort
Wenn Sie eine BatchDeleteClusterNodes Anfrage einreichen, löscht SageMaker HyperPod Knoten anhand ihrer Instance-IDs. Die API akzeptiert eine Anfrage mit dem Clusternamen und einer Liste der zu löschenden Knoten-IDs.
Die Antwort hat zwei Abschnitte:
-
Failed: Eine Liste von Fehlern des TypsBatchDeleteClusterNodesError— einer pro Instance-ID. -
Successful: Die Liste der Instance-IDs wurde erfolgreich beendet.
Validierung und Fehlerbehandlung
Die API führt verschiedene Validierungen durch, wie zum Beispiel:
-
Überprüfung des Knoten-ID-Formats (Präfix von
i-und Amazon EC2 EC2-Instance-ID-Struktur). -
Überprüfung der Länge der Knotenliste mit einem Limit von 99 oder weniger Knoten-IDs in einer einzigen
BatchDeleteClusterNodesAnfrage. -
Stellen Sie sicher, dass ein gültiger SageMaker HyperPod-Cluster mit dem eingegebenen Clusternamen vorhanden ist und dass keine Operationen auf Clusterebene (Update, Systemupdate, Patchen oder Löschen) im Gange sind.
-
Behandlung von Fällen, in denen Instances nicht gefunden wurden, einen ungültigen Status haben oder verwendet werden.
API-Antwortcodes
-
Die API gibt einen
200Statuscode für erfolgreiche (z. B. alle Eingabeknoten erfolgreich validiert) oder teilweise erfolgreiche Anfragen (z. B. wenn einige Eingabeknoten die Validierung nicht bestanden haben) zurück. -
Wenn all diese Validierungen fehlschlagen (z. B. wenn alle Eingabeknoten die Validierung nicht bestehen), gibt die API eine Antwort auf
400Bad Request mit den entsprechenden Fehlermeldungen und Fehlercodes zurück.
Beispiel
Im Folgenden finden Sie ein Beispiel für das Herunterskalieren eines Clusters auf Instance-Ebene unter Verwendung der AWS CLI:
aws sagemaker batch-delete-cluster-nodes --cluster-name"cluster-name"--node-ids'["i-111112222233333", "i-111112222233333"]'