

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exécution de tâches à l’aide de `kubectl`
<a name="sagemaker-hyperpod-eks-run-jobs-kubectl"></a>

**Note**  
La reprise automatique des tâches d’entraînement nécessite la version `1.7.0`, `1.8.0` ou `1.8.1` de Kubeflow Training Operator.

Notez que vous devez installer Kubeflow Training Operator dans les clusters à l’aide de Charts de Helm. Pour de plus amples informations, veuillez consulter [Installation de packages sur le cluster Amazon EKS à l’aide de Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md). Vérifiez si le plan de contrôle de Kubeflow Training Operator est correctement configuré en exécutant la commande suivante.

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

Cela devrait retourner une sortie semblable à ce qui suit.

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

**Pour soumettre une tâche d’entraînement**

Pour exécuter une tâche d’entraînement, préparez le fichier de configuration de la tâche et exécutez la commande [https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) comme suit.

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

**Pour décrire une tâche d’entraînement**

Pour extraire les détails de la tâche soumise au cluster EKS, utilisez la commande suivante. Elle renvoie des informations sur la tâche telles que l’heure de soumission, le temps d’exécution, le statut et les détails de configuration de la tâche.

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

**Pour arrêter une tâche d’entraînement et supprimer les ressources EKS**

Pour arrêter une tâche d’entraînement, utilisez kubectl delete. Voici un exemple d’arrêt d’une tâche d’entraînement créée à partir du fichier de configuration `pytorch_job_simple.yaml`.

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

La sortie suivante doit être renvoyée :

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

**Pour activer la reprise automatique des tâches**

SageMaker HyperPod prend en charge la fonctionnalité de reprise automatique des tâches pour les tâches Kubernetes, en s'intégrant au plan de contrôle Kubeflow Training Operator.

Assurez-vous que le cluster compte un nombre suffisant de nœuds ayant passé avec succès le test SageMaker HyperPod de santé. Les nœuds doivent avoir le rejet `sagemaker.amazonaws.com/node-health-status` défini sur `Schedulable`. Il est recommandé d’inclure un sélecteur de nœuds dans le fichier YAML de tâche pour sélectionner les nœuds avec la configuration appropriée comme suit.

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

L'extrait de code suivant est un exemple de modification de la configuration YAML d'une tâche Kubeflow pour activer la fonctionnalité de reprise automatique de la PyTorch tâche. Vous devez ajouter deux annotations et définir `restartPolicy` sur `OnFailure` comme suit.

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

**Pour vérifier le statut de reprise automatique des tâches**

Exécutez la commande suivante pour vérifier le statut de la reprise automatique des tâches.

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

En fonction des modèles d’échec, vous pouvez observer deux modèles de redémarrage des tâches d’entraînement Kubeflow, comme suit.

**Modèle 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.
```

**Modèle 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
```