Verwenden der AWS CLI - Amazon SageMaker

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.

Verwenden der 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 Sie einen neuen Cluster

  1. Bereiten Sie Skripts für die Lebenszykluskonfiguration vor und laden Sie sie in einen S3-Bucket hoch, z. s3://sagemaker-<your-s3-bucket>/<lifecycle-script-directory>/src/ B. Im folgenden Schritt 2 wird davon ausgegangen, dass on_create.sh im angegebenen S3-Bucket ein Einstiegspunktskript benannt ist.

    Wichtig

    Stellen Sie sicher, dass Sie den S3-Pfad für den Anfang festlegens3://sagemaker-. Der IAM-Rolle für SageMaker HyperPod hat das Managed AmazonSageMakerClusterInstanceRolePolicyangehängt, was den Zugriff auf S3-Buckets mit dem spezifischen Präfix sagemaker- ermöglicht.

  2. Bereiten Sie eine CreateClusterAPI-Anforderungsdatei im JSON-Format vor. Sie sollten die Instanzgruppen so konfigurieren, dass sie mit dem von Ihnen entworfenen Slurm-Cluster in der provisioning_params.json Datei übereinstimmen, die bei der Cluster-Erstellung als Teil der Ausführung einer Reihe von Lifecycle-Skripten verwendet wird. Weitere Informationen hierzu finden Sie unter SageMaker HyperPod Bewährte Methoden zur Lebenszykluskonfiguration. Die folgende Vorlage enthält zwei Instanzgruppen, um die Mindestanforderung für einen Slurm-Cluster zu erfüllen: einen Controller-Knoten (Head) und einen Compute-Knoten (Worker). Geben Sie für den ARN der IAM-Rolle anExecutionRole, die Sie mit der AmazonSageMakerClusterInstanceRolePolicy aus dem Abschnitt IAM-Rolle für SageMaker HyperPod verwalteten Rolle erstellt haben.

    // create_cluster.json { "ClusterName": "your-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "controller-group", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<your-s3-bucket>/<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://sagemaker-<your-s3-bucket>/<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 Lifecycle-Skripts entwerfen, können Sie bis zu 20 Instanzgruppen 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 (Optional) SageMaker HyperPod Mit Ihrer Amazon VPC einrichten.

  3. Führen Sie den folgenden Befehl aus, um die CreateCluster API-Anfrage einzureichen.

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

    Dies sollte den ARN des neuen Clusters zurückgeben.

Beschreiben Sie einen Cluster

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

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

Wenn der Status des Clusters zu wechseltInService, 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 den Befehl auslist-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 das InstanceId ist es, was Sie für die Anmeldung (Verwendungaws ssm) bei ihnen verwenden müssen.

Beschreiben Sie die Details eines Clusterknotens

Ausführendescribe-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

Cluster auflisten

Führen Sie list-clusters den Befehl 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 nach unten 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 Sie die Clusterkonfiguration

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

  1. Erstellen Sie eine UpdateCluster Anforderungsdatei im JSON-Format. Stellen Sie sicher, dass Sie den richtigen Clusternamen und Instanzgruppennamen für die Aktualisierung angeben. Sie können den Instanztyp, die Anzahl der Instanzen, das Einstiegsskript 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 Instanzgruppe zu aktualisieren, geben Sie den Namen der Instanzgruppe an, die Sie aktualisieren möchten.

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

    3. Für InstanceType

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

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

    4. Für InstanceCount

      1. Um eine bestehende Instanzgruppe zu aktualisieren, geben Sie eine Ganzzahl an, die größer als die aktuelle Anzahl von Instanzen ist. Derzeit können Sie nur die Anzahl der Instanzen erhöhen.

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

    5. Denn LifeCycleConfig Sie können SourceS3Uri sowohl als auch OnCreat Werte ändern, wenn Sie die Instanzgruppe aktualisieren möchten.

    6. Für ExecutionRole

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

      2. Um eine neue Instanzgruppe hinzuzufügen, geben Sie eine IAM-Rolle an, die Sie anhängen möchten.

    7. Für TreadsPerCore

      1. Verwenden Sie für die Aktualisierung einer vorhandenen Instanzgruppe weiterhin denselben Wert, den Sie bei der Clustererstellung angegeben haben.

      2. Um eine neue Instanzgruppe hinzuzufügen, können Sie einen beliebigen Wert aus den zulässigen Optionen pro Instanztyp wählen. Weitere Informationen finden Sie in der Referenztabelle unter CPU-Kerne und Threads pro CPU-Kern pro Instance-Typ in der Spalte Gültige Threads pro Kern im Amazon EC2 EC2-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://sagemaker-<your-s3-bucket>/<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 ausupdate-cluster-software, um vorhandene Cluster mit Software und Sicherheitspatches zu aktualisieren, die vom SageMaker HyperPod Dienst bereitgestellt werden. Geben Sie für --cluster-name entweder den Namen oder den ARN des zu aktualisierenden Clusters an.

Wichtig

Beachten Sie, dass Sie Ihre Arbeit sichern müssen, bevor Sie diese API ausführen können. Beim Patchen wird das Root-Volume durch das aktualisierte AMI ersetzt, was bedeutet, dass Ihre zuvor auf dem Instance-Root-Volume 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 UpdateClusterSoftware-API auf. Nach dem API-Aufruf SageMaker HyperPod aktualisiert die Cluster-Instances so, dass sie die neuesten Versionen verwenden, SageMaker HyperPod DLAMI und führt Ihre Lifecycle-Skripts in dem S3-Bucket aus, den Sie bei der Clustererstellung oder -aktualisierung angegeben haben. 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 DescribeClusterAPI wie unter beschrieben ausführen. Beschreiben Sie einen Cluster

Anmerkung

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

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 bietet die folgenden zwei Funktionen.

Um Daten vor dem Patchen in einem S3-Bucket zu sichern

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

Nachdem Sie den Befehl ausgeführt haben, prüft das Skript, squeue ob sich Jobs in der Warteschlange befinden, stoppt Slurm, wenn sich kein Job in der Warteschlange befindet, sichert und kopiert lokale Objekte auf der Festplattemariadb, die unter definiert sind. LOCAL_ITEMS Sie können weitere Dateien und Verzeichnisse hinzufügen. LOCAL_ITEMS

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

Um nach dem Patchen Daten aus einem S3-Bucket wiederherzustellen

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

Einen Cluster löschen

Ausführendelete-cluster, 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