Verwaltung von SageMaker HyperPod Slurm-Clustern mit dem AWS CLI - 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.

Verwaltung von SageMaker HyperPod Slurm-Clustern mit dem AWS CLI

Die folgenden Themen enthalten Anleitungen zum Schreiben von SageMaker HyperPod API-Anforderungsdateien im JSON-Format und zum Ausführen dieser Dateien mithilfe der AWS CLI Befehle.

Erstellen eines neuen Clusters

  1. Bereiten Sie Skripte zur Lebenszykluskonfiguration vor und laden Sie sie in einen S3-Bucket hoch, z. B. s3://sagemaker-amzn-s3-demo-bucket/lifecycle-script-directory/src/. Im folgenden Schritt 2 wird davon ausgegangen, dass sich im angegebenen S3-Bucket ein Einstiegspunktskript namens on_create.sh befindet.

    Wichtig

    Legen Sie den S3-Pfad so fest, dass er mit s3://sagemaker- beginnt. An IAM-Rolle für SageMaker HyperPod ist die verwaltete AmazonSageMakerClusterInstanceRolePolicy angefügt, wodurch der Zugriff auf S3-Buckets mit dem spezifischen Präfix sagemaker- ermöglicht wird.

  2. Bereiten Sie eine CreateClusterAPI-Anforderungsdatei im JSON-Format vor. Sie sollten Instance-Gruppen so konfigurieren, dass sie mit dem Slurm-Cluster übereinstimmen, den Sie in der provisioning_parameters.json-Datei entwerfen, die während der Clustererstellung als Teil der Ausführung einer Reihe von Lebenszyklusskripten verwendet wird. Weitere Informationen hierzu finden Sie unter Anpassen von SageMaker HyperPod Clustern mithilfe von Lebenszyklusskripten. Die folgende Vorlage enthält zwei Instance-Gruppen, um die Mindestanforderungen für einen Slurm-Cluster zu erfüllen: einen Controller-Knoten (Head) und einen Rechenknoten (Worker). Geben Sie für ExecutionRole den ARN der IAM-Rolle an, die Sie mit der verwalteten AmazonSageMakerClusterInstanceRolePolicy aus Abschnitt IAM-Rolle für SageMaker HyperPod erstellt haben.

    // create_cluster.json { "ClusterName": "your-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "controller-group", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster", // Optional: Configure an additional storage per instance group. "InstanceStorageConfigs": [ { // Attach an additional EBS volume to each instance within the instance group. // The default mount path for the additional EBS volume is /opt/sagemaker. "EbsVolumeConfig":{ // Specify an integer between 1 and 16384 in gigabytes (GB). "VolumeSizeInGB": integer, } } ] }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.p4d.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster" } ], // Optional "Tags": [ { "Key": "string", "Value": "string" } ], // Optional "VpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] } }

    Je nachdem, wie Sie die Clusterstruktur mithilfe Ihrer Lebenszyklusskripte entwerfen, können Sie bis zu 20 Instance-Gruppen unter dem InstanceGroups-Parameter konfigurieren.

    Für den Tags Anforderungsparameter können Sie benutzerdefinierte Tags hinzufügen, um den SageMaker HyperPod Cluster als AWS Ressource zu verwalten. Sie können Ihrem Cluster auf die gleiche Weise Tags hinzufügen, wie Sie sie in anderen AWS Diensten hinzufügen, die Tagging unterstützen. Weitere Informationen zum Taggen von AWS Ressourcen im Allgemeinen finden Sie im Tagging AWS Resources User Guide.

    Geben Sie für den VpcConfig-Anforderungsparameter die Informationen einer VPC an, die Sie verwenden möchten. Weitere Informationen finden Sie unter Einrichtung SageMaker HyperPod mit einer benutzerdefinierten Amazon VPC.

  3. Führen Sie den Befehl create-cluster aus, um den Cluster zu erstellen.

    aws sagemaker create-cluster \ --cli-input-json file://complete/path/to/create_cluster.json

    Dies sollte den ARN des neuen Clusters zurückgeben.

Beschreiben eines Clusters

Führen Sie describe-cluster aus, um den Status des Clusters zu prüfen. Sie können entweder den Namen oder den ARN des Clusters angeben.

aws sagemaker describe-cluster --cluster-name your-hyperpod-cluster

Nachdem der Status des Clusters auf InService geändert wurde, fahren Sie mit dem nächsten Schritt fort. Mit dieser API können Sie auch Fehlermeldungen aus anderen HyperPod API-Vorgängen abrufen.

Listet die Details der Clusterknoten auf

Führen Sie aus list-cluster-nodes, um die wichtigsten Informationen der Clusterknoten zu überprüfen.

aws sagemaker list-cluster-nodes --cluster-name your-hyperpod-cluster

Dies gibt eine Antwort zurück und Ihre Cluster-Benutzer benötigen InstanceId für die Protokollierung (Verwendung von aws ssm) in ihnen.

Beschreiben der Details eines Cluster-Knotens

Ausführen describe-cluster-node, um Details eines Clusterknotens abzurufen. Sie können die Clusterknoten-ID aus der list-cluster-nodes Ausgabe abrufen. Sie können entweder den Namen oder den ARN des Clusters angeben.

aws sagemaker describe-cluster-node \ --cluster-name your-hyperpod-cluster \ --node-id i-111222333444555aa

Auflisten von Clustern

Führen Sie list-clusters aus, um alle Cluster in Ihrem Konto aufzulisten.

aws sagemaker list-clusters

Sie können auch zusätzliche Flags hinzufügen, um die Liste der Cluster zu filtern. Weitere Informationen darüber, wie dieser Befehl auf niedriger Ebene ausgeführt wird, und weitere Flags zum Filtern finden Sie in der ListClustersAPI-Referenz.

Aktualisieren der Clusterkonfiguration

Führen Sie update-cluster aus, um die Konfiguration eines Clusters zu aktualisieren.

Anmerkung

Sie können die UpdateCluster API verwenden, um ganze Instanzgruppen aus Ihrem SageMaker HyperPod Cluster herunterzuskalieren oder sie zu entfernen. Weitere Anweisungen zum Herunterskalieren oder Löschen von Instance-Gruppen finden Sie unter Herunterskalieren eines Clusters.

  1. Erstellen Sie eine UpdateCluster-Anforderungsdatei im JSON-Format. Stellen Sie sicher, dass Sie den richtigen Clusternamen und Instance-Gruppennamen für die Aktualisierung angeben. Sie können den Instance-Typ, die Anzahl der Instances, das Einstiegspunktskript für die Lebenszykluskonfiguration und den Pfad zum Skript ändern.

    1. Geben Sie für ClusterName den Namen des Clusters an, den Sie aktualisieren möchten.

    2. Für InstanceGroupName

      1. Um eine bestehende Instance-Gruppe zu aktualisieren, geben Sie den Namen der Instance-Gruppe an, die Sie aktualisieren möchten.

      2. Um eine neue Instance-Gruppe hinzuzufügen, geben Sie einen neuen Namen an, der in Ihrem Cluster nicht vorhanden ist.

    3. Für InstanceType

      1. Um eine bestehende Instance-Gruppe zu aktualisieren, müssen Sie den Instance-Typ, den Sie ursprünglich angegeben haben, der Gruppe zuordnen.

      2. Um eine neue Instance-Gruppe hinzuzufügen, geben Sie einen Instance-Typ an, mit dem Sie die Gruppe konfigurieren möchten.

    4. Für InstanceCount

      1. Um eine bestehende Instance-Gruppe zu aktualisieren, geben Sie eine Ganzzahl an, die der gewünschten Anzahl von Instances entspricht. Sie können einen höheren oder niedrigeren Wert (bis 0) angeben, um die Instance-Gruppe herauf- oder herunterskalieren.

      2. Um eine neue Instance-Gruppe hinzuzufügen, geben Sie eine Ganzzahl größer oder gleich 1 an.

    5. Für LifeCycleConfig können Sie die Werte SourceS3Uri und OnCreate ändern, wenn Sie die Instance-Gruppe aktualisieren möchten.

    6. Für ExecutionRole

      1. Verwenden Sie zum Aktualisieren einer vorhandenen Instance-Gruppe weiterhin dieselbe IAM-Rolle, die Sie bei der Clustererstellung zugewiesen haben.

      2. Um eine neue Instance-Gruppe hinzuzufügen, geben Sie eine IAM-Rolle an, die Sie anfügen möchten.

    7. Für ThreadsPerCore

      1. Verwenden Sie zum Aktualisieren einer vorhandenen Instance-Gruppe weiterhin denselben Wert, den Sie bei der Clustererstellung zugewiesen haben.

      2. Um eine neue Instance-Gruppe hinzuzufügen, können Sie einen beliebigen Wert aus den zulässigen Optionen pro Instance-Typ auswählen. Weitere Informationen finden Sie unter dem Instance-Typ und in der Spalte Gültige Threads pro Kern in der Referenztabelle unter CPU-Kerne und Threads pro CPU-Kern pro Instance-Typ im EC2 Amazon-Benutzerhandbuch.

    Der folgende Codeausschnitt ist eine JSON-Anforderungsdateivorlage, die Sie verwenden können. Weitere Informationen zur Anforderungssyntax und zu den Parametern dieser API finden Sie in der UpdateClusterAPI-Referenz.

    // update_cluster.json { // Required "ClusterName": "name-of-cluster-to-update", // Required "InstanceGroups": [ { "InstanceGroupName": "name-of-instance-group-to-update", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster", // Optional: Configure an additional storage per instance group. "InstanceStorageConfigs": [ { // Attach an additional EBS volume to each instance within the instance group. // The default mount path for the additional EBS volume is /opt/sagemaker. "EbsVolumeConfig":{ // Specify an integer between 1 and 16384 in gigabytes (GB). "VolumeSizeInGB": integer, } } ] }, // add more blocks of instance groups as needed { ... } ] }
  2. Führen Sie den folgenden update-cluster-Befehl aus, um die Anfrage einzureichen.

    aws sagemaker update-cluster \ --cli-input-json file://complete/path/to/update_cluster.json

Aktualisieren Sie die SageMaker HyperPod Plattformsoftware eines Clusters

Führen Sie aus update-cluster-software, um vorhandene Cluster mit Software und Sicherheitspatches zu aktualisieren, die vom SageMaker HyperPod Dienst bereitgestellt werden. Für --cluster-name geben Sie entweder den Namen oder den ARN des zu aktualisierenden Clusters an.

Wichtig

Vor der Ausführung dieser API müssen Sie eine Sicherungskopie Ihrer Arbeit erstellen. Der Patching-Prozess ersetzt das Root-Volume durch das aktualisierte AMI, was bedeutet, dass Ihre zuvor im Root-Volume der Instance gespeicherten Daten verloren gehen. Stellen Sie sicher, dass Sie Ihre Daten vom Instance-Root-Volume auf Amazon S3 oder Amazon FSx for Lustre sichern. Weitere Informationen finden Sie unter Verwenden Sie das Backup-Skript von SageMaker HyperPod.

aws sagemaker update-cluster-software --cluster-name your-hyperpod-cluster

Dieser Befehl ruft die UpdateClusterSoftwareAPI auf. SageMaker HyperPod Prüft nach dem API-Aufruf, ob ein neueres DLAMI für die Clusterinstanzen verfügbar ist. Wenn ein DLAMI-Update erforderlich ist, SageMaker HyperPod werden die Cluster-Instances so aktualisiert, dass sie die neuesten Versionen verwenden, SageMaker HyperPod DLAMI und Ihre Lifecycle-Skripte in dem Amazon S3 S3-Bucket ausführen, den Sie bei der Cluster-Erstellung oder -Aktualisierung angegeben haben. Wenn der Cluster bereits das neueste DLAMI verwendet, nimmt er keine Änderungen am Cluster vor und SageMaker HyperPod führt die Lebenszyklusskripts nicht erneut aus. Das SageMaker HyperPod Serviceteam bringt regelmäßig neue SageMaker HyperPod DLAMI Funktionen zur Erhöhung der Sicherheit und Verbesserung der Benutzererfahrung auf den Markt. Wir empfehlen Ihnen, immer auf die neueste Version von SageMaker HyperPod DLAMI zu aktualisieren. Für future SageMaker HyperPod DLAMI-Updates für Sicherheitspatches folgen Sie bitte. SageMaker HyperPod Versionshinweise von Amazon

Tipp

Wenn der Sicherheitspatch fehlschlägt, können Sie Fehlermeldungen abrufen, indem Sie die DescribeCluster-API wie unter Beschreiben eines Clusters beschrieben ausführen.

Anmerkung

Sie können diese API nur programmgesteuert ausführen. Die Patching-Funktionalität ist nicht in der Benutzeroberfläche der Konsole implementiert. SageMaker HyperPod

Verwenden Sie das Backup-Skript von SageMaker HyperPod

SageMaker HyperPod bietet ein Skript zum Sichern und Wiederherstellen Ihrer Daten 1.architectures/5.sagemaker-hyperpod/patching-backup.shim Awsome Distributed Training GitHub Repository. Das Skript stellt die folgenden zwei Funktionen zur Verfügung.

So sichern Sie Daten vor dem Patchen in einem S3-Bucket

sudo bash patching-backup.sh --create <s3-buckup-bucket-path>

Nachdem Sie den Befehl ausgeführt haben, überprüft das Skript squeue, ob sich Aufträge in der Warteschlange befinden, beendet Slurm, wenn dies nicht der Fall ist, erstellt ein Backup von mariadb und kopiert lokale Elemente auf die unter LOCAL_ITEMS definierte Festplatte. Sie können weitere Dateien und Verzeichnisse zu LOCAL_ITEMS hinzufügen.

# Define files and directories to back up. LOCAL_ITEMS=( "/var/spool/slurmd" "/var/spool/slurmctld" "/etc/systemd/system/slurmctld.service" "/home/ubuntu/backup_slurm_acct_db.sql" # ... Add more items as needed )

Sie können dem bereitgestellten Skript auch benutzerdefinierten Code hinzufügen, um alle Anwendungen für Ihren Anwendungsfall zu sichern.

So stellen Sie Daten nach dem Patchen aus einem S3-Bucket wieder her

sudo bash patching-backup.sh --restore <s3-buckup-bucket-path>

Herunterskalieren eines Clusters

Sie können die Anzahl der Instanzen reduzieren oder Instanzgruppen in Ihrem SageMaker HyperPod Cluster löschen, um die Ressourcenzuweisung zu optimieren oder die Kosten zu senken.

Sie skalieren die Instance-Gruppe entweder mithilfe der UpdateCluster-API-Operation herunter, um Instances aus Ihrer Instance-Gruppe nach dem Zufallsprinzip bis auf eine bestimmte Anzahl zu reduzieren, oder indem Sie bestimmte Instances mithilfe der BatchDeleteClusterNodes-API-Operation beenden. Mithilfe der UpdateCluster-API können Sie auch ganze Instance-Gruppen vollständig entfernen. Weitere Informationen zum Herunterskalieren diesen Methoden finden Sie unter Einen SageMaker HyperPod Cluster herunterskalieren.

Anmerkung

Sie können keine Instances entfernen, die als Slurm-Controller-Knoten konfiguriert sind. Der Versuch, einen Slurm-Controller-Knoten zu löschen, führt zu einem Validierungsfehler mit dem Fehlercode NODE_ID_IN_USE.

Einen Cluster löschen

Führen Sie delete-cluster aus, um einen Cluster zu löschen. Sie können entweder den Namen oder den ARN des Clusters angeben.

aws sagemaker delete-cluster --cluster-name your-hyperpod-cluster