

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.

# Ausführung von Jobs auf SageMaker HyperPod Clustern, die von Amazon EKS orchestriert wurden
<a name="sagemaker-hyperpod-eks-run-jobs"></a>

Die folgenden Themen enthalten Verfahren und Beispiele für den Zugriff auf Rechenknoten und die Ausführung von ML-Workloads auf bereitgestellten SageMaker HyperPod Clustern, die mit Amazon EKS orchestriert wurden. Je nachdem, wie Sie die Umgebung auf Ihrem HyperPod Cluster eingerichtet haben, gibt es viele Möglichkeiten, ML-Workloads auf Clustern auszuführen. HyperPod 

**Anmerkung**  
Wenn Jobs über die SageMaker HyperPod CLI oder kubectl ausgeführt werden, HyperPod kann die Rechenauslastung (GPU/CPU-Stunden) über Namespaces (Teams) hinweg verfolgt werden. Diese Kennzahlen liefern Berichte zum Stromverbrauch, die Folgendes bieten:  
Transparenz hinsichtlich des Verbrauchs zugewiesener und ausgeliehener Ressourcen
Nutzung der Ressourcen durch Teams für Audits (bis zu 180 Tage)
Die Kostenzuweisung entspricht den Richtlinien zur Aufgabenverwaltung
Um Nutzungsberichte verwenden zu können, müssen Sie die Infrastruktur für Nutzungsberichte installieren. Wir empfehlen dringend, [Task Governance](sagemaker-hyperpod-eks-operate-console-ui-governance.md) so zu konfigurieren, dass Rechenkontingente durchgesetzt und eine detaillierte Kostenzuweisung ermöglicht wird.  
[Weitere Informationen zum Einrichten und Generieren von Nutzungsberichten finden Sie unter Berichterstattung über die Computenutzung in. HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-usage-reporting.html)

**Tipp**  
Für praktische Erfahrungen und Anleitungen zur Einrichtung und Verwendung eines mit Amazon EKS orchestrierten SageMaker HyperPod Clusters empfehlen wir die Teilnahme an diesem [Amazon EKS Support-Workshop](https://catalog.us-east-1.prod.workshops.aws/workshops/2433d39e-ccfe-4c00-9d3d-9917b729258e). SageMaker HyperPod

Benutzer von Data Scientists können grundlegende Modelle trainieren, indem sie das EKS-Cluster-Set als Orchestrator für den Cluster verwenden. SageMaker HyperPod Wissenschaftler nutzen die [SageMaker HyperPod CLI](https://github.com/aws/sagemaker-hyperpod-cli) und die nativen `kubectl` Befehle, um verfügbare SageMaker HyperPod Cluster zu finden, Trainingsjobs (Pods) einzureichen und ihre Workloads zu verwalten. Die SageMaker HyperPod CLI ermöglicht die Einreichung von Jobs mithilfe einer Trainingsjob-Schemadatei und bietet Funktionen für die Jobauflistung, Beschreibung, Stornierung und Ausführung. Wissenschaftler können den [Kubeflow Training Operator](https://www.kubeflow.org/docs/components/training/overview/) entsprechend den von ihnen verwalteten Rechenquoten und [SageMaker KI-gesteuerten MLflow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html) Rechenquoten für die Verwaltung von HyperPod ML-Experimenten und Trainingsläufen verwenden. 

**Topics**
+ [Installation der SageMaker HyperPod CLI](sagemaker-hyperpod-eks-run-jobs-access-nodes.md)
+ [SageMaker HyperPod CLI-Befehle](sagemaker-hyperpod-eks-hyperpod-cli-reference.md)
+ [Jobs mit der SageMaker HyperPod CLI ausführen](sagemaker-hyperpod-eks-run-jobs-hyperpod-cli.md)
+ [Jobs ausführen mit `kubectl`](sagemaker-hyperpod-eks-run-jobs-kubectl.md)

# Installation der SageMaker HyperPod CLI
<a name="sagemaker-hyperpod-eks-run-jobs-access-nodes"></a>

SageMaker HyperPod stellt das CLI ([SageMaker HyperPod Command Line Interface](https://github.com/aws/sagemaker-hyperpod-cli)) -Paket bereit. 

1. Überprüfen Sie, ob die Version von Python auf Ihrem lokalen Computer zwischen 3.8 und 3.11 liegt.

1. Überprüfen Sie die Voraussetzungen in der `README` Markdown-Datei im [SageMaker HyperPod CLI-Paket](https://github.com/aws/sagemaker-hyperpod-cli).

1. Klonen Sie das SageMaker HyperPod CLI-Paket von GitHub.

   ```
   git clone https://github.com/aws/sagemaker-hyperpod-cli.git
   ```

1. Installieren Sie die SageMaker HyperPod CLI.

   ```
   cd sagemaker-hyperpod-cli && pip install .
   ```

1. Testen Sie, ob die SageMaker HyperPod CLI erfolgreich installiert wurde, indem Sie den folgenden Befehl ausführen. 

   ```
   hyperpod --help
   ```

**Anmerkung**  
Wenn Sie ein Datenwissenschaftler sind und die SageMaker HyperPod CLI verwenden möchten, stellen Sie sicher, dass Ihre IAM-Rolle von Ihren Cluster-Administratoren ordnungsgemäß eingerichtet wurde, indem Sie die Anweisungen unter [IAM-Benutzer für Wissenschaftler](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-user) und befolgen. [Einrichten der rollenbasierten Zugriffskontrolle für Kubernetes](sagemaker-hyperpod-eks-setup-rbac.md)

# SageMaker HyperPod CLI-Befehle
<a name="sagemaker-hyperpod-eks-hyperpod-cli-reference"></a>

In der folgenden Tabelle sind die SageMaker HyperPod CLI-Befehle zusammengefasst.

**Anmerkung**  
Eine vollständige CLI-Referenz finden Sie in der [README-Datei](https://github.com/aws/sagemaker-hyperpod-cli?tab=readme-ov-file#sagemaker-hyperpod-command-line-interface) im [SageMaker HyperPod GitHubCLI-Repository](https://github.com/aws/sagemaker-hyperpod-cli).


| SageMaker HyperPod CLI-Befehl | Entität  | Description | 
| --- | --- | --- | 
| hyperpod get-clusters | Cluster/Zugreifen | Listet alle Cluster auf, für die der Benutzer über IAM-Berechtigungen zum Senden von Schulungs-Workloads verfügt. Zeigt den aktuellen Snapshot aller verfügbaren Instances, auf denen keine Workloads oder Jobs ausgeführt werden, sowie die maximale Kapazität an, gruppiert nach Status der Integritätsprüfung (z. B.:) BurnInPassed | 
| hyperpod connect-cluster | Cluster/Zugreifen | Konfiguriert für den Betrieb auf dem angegebenen Cluster kubectl und Namespace HyperPod  | 
| hyperpod start-job  | Auftrag | Übermittelt den Auftrag an den Zielcluster. Der Auftragsname ist auf Namespace-Ebene eindeutig. Benutzer können die YAML-Spezifikation überschreiben, indem sie diese als CLI-Argumente übergeben. | 
| hyperpod get-job | Auftrag | Zeigt die Metadaten des eingereichten Jobs an | 
| hyperpod list-jobs | Auftrag | Führt alle Jobs im verbundenen Bereich cluster/namespace auf, zu denen der Benutzer mit IAM-Berechtigungen zum Einreichen von Schulungs-Workloads hinzugefügt wurde | 
| hyperpod cancel-job | Auftrag | Stoppt und löscht den Job und gibt die zugrunde liegenden Rechenressourcen auf. Dieser Job kann nicht erneut fortgesetzt werden. Falls erforderlich, muss ein neuer Job gestartet werden. | 
| hyperpod list-pods | Pod | Listet alle Pods im angegebenen Job in einem Namespace auf | 
| hyperpod get-log | Pod | Ruft die Protokolle eines bestimmten Pods in einem angegebenen Job ab | 
| hyperpod exec | Pod | Führt den Bash-Befehl in der Shell der angegebenen Pods aus und veröffentlicht die Ausgabe | 
| hyperpod --help | Dienstprogramm | listet alle unterstützten Befehle auf | 

# Jobs mit der SageMaker HyperPod CLI ausführen
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli"></a>

Um Jobs auszuführen, stellen Sie sicher, dass Sie Kubeflow Training Operator in den EKS-Clustern installiert haben. Weitere Informationen finden Sie unter [Installation von Paketen auf dem Amazon-EKS-Cluster mit Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md).

Führen Sie den `hyperpod get-cluster` Befehl aus, um die Liste der verfügbaren HyperPod Cluster abzurufen.

```
hyperpod get-clusters
```

Führen Sie den aus`hyperpod connect-cluster`, um die SageMaker HyperPod CLI mit dem EKS-Cluster zu konfigurieren, der den HyperPod Cluster orchestriert.

```
hyperpod connect-cluster --cluster-name <hyperpod-cluster-name>
```

Verwenden Sie den `hyperpod start-job`-Befehl, um einen Auftrag auszuführen. Der folgende Befehl zeigt den Befehl mit den erforderlichen Optionen. 

```
hyperpod start-job \
    --job-name <job-name>
    --image <docker-image-uri>
    --entry-script <entrypoint-script>
    --instance-type <ml.instance.type>
    --node-count <integer>
```

Der `hyperpod start-job` Befehl bietet auch verschiedene Optionen wie die automatische Wiederaufnahme von Jobs und die Jobplanung.

## Automatische Wiederaufnahme von Jobs aktivieren
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli-enable-auto-resume"></a>

Der `hyperpod start-job` Befehl bietet auch die folgenden Optionen zur Angabe der automatischen Wiederaufnahme von Jobs. Damit die automatische Wiederaufnahme von Jobs mit den SageMaker HyperPod Knotenausfallfunktionen funktioniert, müssen Sie den Wert für die `restart-policy` Option auf festlegen. `OnFailure` Der Auftrag muss unter dem Namespace `kubeflow` oder einem Namespace mit dem Präfix `hyperpod` ausgeführt werden.
+ [--auto-resume<bool>] \$1Optional, aktiviert die auto Wiederaufnahme des Jobs nach Fehlschlägen, die Standardeinstellung ist false
+ [--max-retry<int>] \$1Optional, wenn auto-resume wahr ist, ist der Standardwert für max-retry 1, falls nicht angegeben
+ [--restart-policy<enum>] \$1Optional, Richtlinie neu starten. PyTorchJob Die verfügbaren Werte sind `Always`, `OnFailure`, `Never` oder `ExitCode`. Der Standardwert ist `OnFailure`. 

```
hyperpod start-job \
    ... // required options \
    --auto-resume true \
    --max-retry 3 \
    --restart-policy OnFailure
```

## Jobs mit Planungsoptionen ausführen
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli-scheduling"></a>

Der `hyperpod start-job` Befehl bietet die folgenden Optionen, um den Job mit Warteschlangenmechanismen einzurichten. 

**Anmerkung**  
Sie müssen [Kueue](https://kueue.sigs.k8s.io/docs/overview/) im EKS-Cluster installiert haben. Falls Sie die Installation noch nicht durchgeführt haben, folgen Sie den Anweisungen in [Einrichtung für die SageMaker HyperPod Task-Governance](sagemaker-hyperpod-eks-operate-console-ui-governance-setup.md).
+ [--scheduler-type<enum>] \$1Optional, Geben Sie den Scheduler-Typ an. Der Standardwert ist `Kueue`.
+ [--queue-name<string>] \$1Optional, Geben Sie den Namen der [lokalen Warteschlange oder [Cluster-Warteschlange](https://kueue.sigs.k8s.io/docs/concepts/cluster_queue/)](https://kueue.sigs.k8s.io/docs/concepts/local_queue/) an, die Sie zusammen mit dem Job einreichen möchten. Die Warteschlange sollte von Clusteradministratoren mithilfe von `CreateComputeQuota` erstellt werden.
+ [--priority<string>] \$1Optional, Geben Sie den Namen der [Workload-Prioritätsklasse](https://kueue.sigs.k8s.io/docs/concepts/workload_priority_class/) an, die von Cluster-Administratoren erstellt werden soll.

```
hyperpod start-job \
    ... // required options
    --scheduler-type Kueue \
    --queue-name high-priority-queue \
    --priority high
```

## Jobs aus einer Konfigurationsdatei ausführen
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli-from-config"></a>

Als Alternative können Sie eine Job-Konfigurationsdatei erstellen, die alle für den Job erforderlichen Parameter enthält, und diese Konfigurationsdatei dann mit der Option --config-file an den `hyperpod start-job` Befehl übergeben. In diesem Fall.

1. Erstellen Sie Ihre Job-Konfigurationsdatei mit den erforderlichen Parametern. Eine [Basiskonfigurationsdatei finden Sie in der Job-Konfigurationsdatei](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-run-jobs-hyperpod-cli.html#sagemaker-hyperpod-eks-hyperpod-cli-from-config) im SageMaker HyperPod GitHub CLI-Repository.

1. Starten Sie den Job mit der Konfigurationsdatei wie folgt.

   ```
   hyperpod start-job --config-file /path/to/test_job.yaml
   ```

**Tipp**  
Eine vollständige Liste der Parameter des `hyperpod start-job` Befehls finden Sie im Abschnitt [Einen Job einreichen](https://github.com/aws/sagemaker-hyperpod-cli?tab=readme-ov-file#submitting-a-job) im `README.md` SageMaker HyperPod GitHub CLI-Repository.

# Jobs ausführen mit `kubectl`
<a name="sagemaker-hyperpod-eks-run-jobs-kubectl"></a>

**Anmerkung**  
Für die auto Wiederaufnahme des Trainingsjobs ist die Release-Version von Kubeflow Training Operator erforderlich `1.7.0``1.8.0`, oder. `1.8.1`

Beachten Sie, dass Sie Kubeflow Training Operator mithilfe eines Helm-Diagramms in den Clustern installieren sollten. Weitere Informationen finden Sie unter [Installation von Paketen auf dem Amazon-EKS-Cluster mit Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md). Überprüfen Sie, ob die Steuerungsebene des Kubeflow Training Operators ordnungsgemäß eingerichtet ist, indem Sie den folgenden Befehl ausführen.

```
kubectl get pods -n kubeflow
```

Dies sollte eine Ausgabe ähnlich der folgenden erzeugen.

```
NAME                                             READY   STATUS    RESTARTS   AGE
training-operator-658c68d697-46zmn               1/1     Running   0          90s
```

**Um einen Trainingsjob einzureichen**

Um einen Trainingsjob auszuführen, bereiten Sie die Job-Konfigurationsdatei vor und führen Sie den [https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply)Befehl wie folgt aus.

```
kubectl apply -f /path/to/training_job.yaml
```

**So beschreiben Sie einen Trainingsjob**

Verwenden Sie den folgenden Befehl, um die Details des an den EKS-Cluster übermittelten Jobs abzurufen. Es gibt Auftragsinformationen wie die Uhrzeit der Auftragsübermittlung, die Abschlusszeit, den Auftragsstatus und die Konfigurationsdetails zurück.

```
kubectl get -o yaml training-job -n kubeflow
```

**So beenden Sie einen Trainingsjob und löschen EKS-Ressourcen**

Verwenden Sie kubectl delete, um einen Trainingsjob zu beenden. Im Folgenden finden Sie ein Beispiel für das Stoppen des Trainingsauftrags, der aus der Konfigurationsdatei erstellt wurde`pytorch_job_simple.yaml`.

```
kubectl delete -f /path/to/training_job.yaml 
```

Dies sollte die folgende Ausgabe zurückgeben.

```
pytorchjob.kubeflow.org "training-job" deleted
```

**Um die automatische Wiederaufnahme von Jobs zu aktivieren**

SageMaker HyperPod unterstützt die Funktion zur automatischen Wiederaufnahme von Jobs für Kubernetes-Jobs und ist in die Steuerebene des Kubeflow Training Operators integriert.

Stellen Sie sicher, dass im Cluster genügend Knoten vorhanden sind, die die Integritätsprüfung bestanden haben. SageMaker HyperPod Bei den Knoten sollte der Taint `sagemaker.amazonaws.com/node-health-status` auf `Schedulable` eingestellt sein. Es wird empfohlen, einen Knotenselektor in die Job-YAML-Datei aufzunehmen, um Knoten mit der entsprechenden Konfiguration wie folgt auszuwählen.

```
sagemaker.amazonaws.com/node-health-status: Schedulable
```

Der folgende Codeausschnitt ist ein Beispiel dafür, wie Sie die YAML-Konfiguration eines PyTorch Kubeflow-Jobs ändern, um die Funktion zur automatischen Wiederaufnahme von Jobs zu aktivieren. Sie müssen zwei Anmerkungen hinzufügen und `restartPolicy` wie folgt auf `OnFailure` einstellen.

```
apiVersion: "kubeflow.org/v1"
kind: PyTorchJob 
metadata:
    name: pytorch-simple
    namespace: kubeflow
    annotations: { // config for job auto resume
      sagemaker.amazonaws.com/enable-job-auto-resume: "true"
      sagemaker.amazonaws.com/job-max-retry-count: "2"
    }
spec:
  pytorchReplicaSpecs:
  ......
  Worker:
      replicas: 10
      restartPolicy: OnFailure
      template:
          spec:
              nodeSelector:
                  sagemaker.amazonaws.com/node-health-status: Schedulable
```

**Um den Status der automatischen Wiederaufnahme des Jobs zu überprüfen**

Führen Sie den folgenden Befehl aus, um den Status der automatischen Wiederaufnahme von Aufträgen zu überprüfen.

```
kubectl describe pytorchjob -n kubeflow <job-name>
```

Abhängig von den Fehlermustern sehen Sie möglicherweise zwei Muster für den Neustart des Kubeflow-Trainingsjobs, die wie folgt aussehen:

**Muster 1**:

```
Start Time:    2024-07-11T05:53:10Z
Events:
  Type     Reason                   Age                    From                   Message
  ----     ------                   ----                   ----                   -------
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-worker-0
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-worker-1
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-master-0
  Warning  PyTorchJobRestarting     7m59s                  pytorchjob-controller  PyTorchJob pt-job-1 is restarting because 1 Master replica(s) failed.
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-worker-0
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-worker-1
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-master-0
  Warning  PyTorchJobRestarting     7m58s                  pytorchjob-controller  PyTorchJob pt-job-1 is restarting because 1 Worker replica(s) failed.
```

**Muster 2**: 

```
Events:
  Type    Reason                   Age    From                   Message
  ----    ------                   ----   ----                   -------
  Normal  SuccessfulCreatePod      19m    pytorchjob-controller  Created pod: pt-job-2-worker-0
  Normal  SuccessfulCreateService  19m    pytorchjob-controller  Created service: pt-job-2-worker-0
  Normal  SuccessfulCreatePod      19m    pytorchjob-controller  Created pod: pt-job-2-master-0
  Normal  SuccessfulCreateService  19m    pytorchjob-controller  Created service: pt-job-2-master-0
  Normal  SuccessfulCreatePod      4m48s  pytorchjob-controller  Created pod: pt-job-2-worker-0
  Normal  SuccessfulCreatePod      4m48s  pytorchjob-controller  Created pod: pt-job-2-master-0
```