Exécution de tâches à l’aide de kubectl - Amazon SageMaker AI

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

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