

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
<a name="sagemaker-hyperpod-operate-slurm-cli-command"></a>

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.

**Topics**
+ [Erstellen eines neuen Clusters](#sagemaker-hyperpod-operate-slurm-cli-command-create-cluster)
+ [Beschreiben eines Clusters](#sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster)
+ [Listet die Details der Clusterknoten auf](#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes)
+ [Beschreiben der Details eines Cluster-Knotens](#sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster-node)
+ [Auflisten von Clustern](#sagemaker-hyperpod-operate-slurm-cli-command-list-clusters)
+ [Aktualisieren der Clusterkonfiguration](#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster)
+ [Aktualisieren Sie die SageMaker HyperPod Plattformsoftware eines Clusters](#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software)
+ [Herunterskalieren eines Clusters](#sagemaker-hyperpod-operate-slurm-cli-command-scale-down)
+ [Einen Cluster löschen](#sagemaker-hyperpod-operate-slurm-cli-command-delete-cluster)

## Erstellen eines neuen Clusters
<a name="sagemaker-hyperpod-operate-slurm-cli-command-create-cluster"></a>

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](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) ist die verwaltete [https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html) angefügt, wodurch der Zugriff auf S3-Buckets mit dem spezifischen Präfix `sagemaker-` ermöglicht wird.

1. Bereiten Sie eine [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)API-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](sagemaker-hyperpod-lifecycle-best-practices-slurm.md). 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](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-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](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html).

   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](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-optional-vpc).

1. Führen Sie den Befehl [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html) 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
<a name="sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster"></a>

Führen Sie [describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster.html) 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 abrufen, die bei der Ausführung anderer HyperPod API-Operationen aufgetreten sind.

## Listet die Details der Clusterknoten auf
<a name="sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes"></a>

Führen Sie aus [list-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-cluster-nodes.html), 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
<a name="sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster-node"></a>

Ausführen [describe-cluster-node](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster-node.html), 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
<a name="sagemaker-hyperpod-operate-slurm-cli-command-list-clusters"></a>

Führen Sie [list-clusters](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-clusters.html) 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 [ListClusters](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusters.html)API-Referenz.

## Aktualisieren der Clusterkonfiguration
<a name="sagemaker-hyperpod-operate-slurm-cli-command-update-cluster"></a>

Führen Sie [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) 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 ganze Instanzgruppen zu entfernen. Weitere Anweisungen zum Herunterskalieren oder Löschen von Instance-Gruppen finden Sie unter [Herunterskalieren eines Clusters](#sagemaker-hyperpod-operate-slurm-cli-command-scale-down).

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.

   1. Für `InstanceGroupName`

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

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

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

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

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

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

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

   1. Für `ExecutionRole`

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

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

   1. Für `ThreadsPerCore`

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

      1. 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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html) im *Benutzerhandbuch für Amazon EC2*.

   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 [UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)API-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
           { ... }
       ]
   }
   ```

1. 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
<a name="sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software"></a>

Führen Sie aus [update-cluster-software](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster-software.html), 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](#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup).

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

Dieser Befehl ruft die [UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)API 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](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) 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](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) 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](sagemaker-hyperpod-release-notes.md)

**Tipp**  
Wenn der Sicherheitspatch fehlschlägt, können Sie Fehlermeldungen abrufen, indem Sie die [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html)-API wie unter [Beschreiben eines Clusters](#sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster) 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
<a name="sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup"></a>

SageMaker HyperPod bietet ein Skript zum Sichern und Wiederherstellen Ihrer Daten [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/patching-backup.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/patching-backup.sh)im *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
<a name="sagemaker-hyperpod-operate-slurm-cli-command-scale-down"></a>

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](smcluster-scale-down.md).

**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
<a name="sagemaker-hyperpod-operate-slurm-cli-command-delete-cluster"></a>

Führen Sie [delete-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-cluster.html) 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
```