

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.

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