Exemples de AWS CLI commandes de gouvernance des HyperPod tâches - 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.

Exemples de AWS CLI commandes de gouvernance des HyperPod tâches

Vous pouvez l'utiliser HyperPod avec EKS via Kubectl ou via une HyperPod CLI personnalisée. Vous pouvez utiliser ces commandes via Studio ou AWS CLI. Vous trouverez ci-dessous des exemples de gouvernance des SageMaker HyperPod tâches, expliquant comment afficher les détails du cluster à l'aide des HyperPod AWS CLI commandes. Pour plus d'informations, notamment sur la procédure d'installation, consultez le référentiel HyperPod CLI Github.

Obtention d’informations sur les quotas d’appareil accélérateur de cluster

L’exemple de commande suivant permet d’obtenir des informations sur le quota d’appareil accélérateur de cluster.

hyperpod get-clusters -n hyperpod-ns-test-team

L’espace de noms de cet exemple, hyperpod-ns-test-team, est créé dans Kubernetes en fonction du nom d’équipe fourni, test-team, lors de la création de l’allocation de calcul. Pour de plus amples informations, veuillez consulter Modification des politiques.

Exemple de réponse :

[ { "Cluster": "hyperpod-eks-test-cluster-id", "InstanceType": "ml.g5.xlarge", "TotalNodes": 2, "AcceleratorDevicesAvailable": 1, "NodeHealthStatus=Schedulable": 2, "DeepHealthCheckStatus=Passed": "N/A", "Namespaces": { "hyperpod-ns-test-team": { "TotalAcceleratorDevices": 1, "AvailableAcceleratorDevices": 1 } } } ]

Soumettre une tâche à une file d'attente et à un SageMaker espace de noms gérés par l'IA

L'exemple de commande suivant soumet une tâche à votre HyperPod cluster. Si vous n'avez accès qu'à une seule équipe, la file d'attente vous HyperPod AWS CLI sera automatiquement attribuée dans ce cas. Sinon, si plusieurs files d’attente sont découvertes, nous vous proposerons toutes les options viables que vous pourrez sélectionner.

hyperpod start-job --job-name hyperpod-cli-test --job-kind kubeflow/PyTorchJob --image docker.io/kubeflowkatib/pytorch-mnist-cpu:v1beta1-bc09cfd --entry-script /opt/pytorch-mnist/mnist.py --pull-policy IfNotPresent --instance-type ml.g5.xlarge --node-count 1 --tasks-per-node 1 --results-dir ./result --priority training-priority

Les classes de priorité sont définies dans la politique du cluster, qui définit la manière dont les tâches sont priorisées et les ressources de calcul inactives allouées. Lorsqu’un scientifique des données soumet une tâche, il utilise l’un des noms de classe de priorité avec le format priority-class-name-priority. Dans cet exemple, training-priority fait référence à la classe de priorité nommée « entraînement ». Pour plus d’informations sur les concepts de la politique, consultez Stratégies.

Si aucune classe de priorité n’est spécifiée, la tâche est traitée comme une tâche de faible priorité, avec une valeur de classement des tâches de 0.

Si une classe de priorité est spécifiée, mais qu’elle ne correspond pas à l’une des classes de priorité définies dans la politique de cluster, la soumission échoue et un message d’erreur fournit l’ensemble défini de classes de priorité.

Vous pouvez également soumettre la tâche à l’aide d’un fichier de configuration YAML en utilisant la commande suivante :

hyperpod start-job --config-file ./yaml-configuration-file-name.yaml

Voici un exemple de fichier de configuration YAML équivalent à la soumission d’une tâche, comme indiqué ci-dessus.

defaults: - override hydra/job_logging: stdout hydra: run: dir: . output_subdir: null training_cfg: entry_script: /opt/pytorch-mnist/mnist.py script_args: [] run: name: hyperpod-cli-test nodes: 1 ntasks_per_node: 1 cluster: cluster_type: k8s instance_type: ml.g5.xlarge custom_labels: kueue.x-k8s.io/priority-class: training-priority cluster_config: label_selector: required: sagemaker.amazonaws.com/node-health-status: - Schedulable preferred: sagemaker.amazonaws.com/deep-health-check-status: - Passed weights: - 100 pullPolicy: IfNotPresent base_results_dir: ./result container: docker.io/kubeflowkatib/pytorch-mnist-cpu:v1beta1-bc09cfd env_vars: NCCL_DEBUG: INFO

Vous pouvez également soumettre une tâche en utilisant kubectl pour vous assurer que la tâche apparaît dans l’onglet Tableau de bord. Voici un exemple de commande kubectl.

kubectl apply -f ./yaml-configuration-file-name.yaml

Lorsque vous soumettez la tâche, assurez-vous d’inclure le nom de votre file d’attente et les étiquettes de classe de priorité. Par exemple, avec le nom de la file d’attente hyperpod-ns-team-name-localqueue et la classe de priorité priority-class-name-priority, vous devez inclure les étiquettes suivantes :

  • kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue

  • kueue.x-k8s.io/priority-class: priority-class-name-priority

L’extrait de configuration YAML suivant montre comment ajouter des étiquettes à votre fichier de configuration d’origine pour vous assurer que votre tâche apparaîtra dans l’onglet Tableau de bord :

metadata: name: job-name namespace: hyperpod-ns-team-name labels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue kueue.x-k8s.io/priority-class: priority-class-name-priority

Affichage des tâches

La commande suivante répertorie les tâches et leurs détails.

hyperpod list-jobs

Exemple de réponse :

{ "jobs": [ { "Name": "hyperpod-cli-test", "Namespace": "hyperpod-ns-test-team", "CreationTime": "2024-11-18T21:21:15Z", "Priority": "training", "State": "Succeeded" } ] }

Obtention des informations détaillées sur une tâche

La commande suivante fournit les détails d’une tâche. Si aucun espace de noms n'est spécifié, HyperPod AWS CLI récupérera un espace de noms géré par l' SageMaker IA auquel vous avez accès.

hyperpod get-job --job-name hyperpod-cli-test

Exemple de réponse :

{ "Name": "hyperpod-cli-test", "Namespace": "hyperpod-ns-test-team", "Label": { "app": "hyperpod-cli-test", "app.kubernetes.io/managed-by": "Helm", "kueue.x-k8s.io/priority-class": "training" }, "CreationTimestamp": "2024-11-18T21:21:15Z", "Status": { "completionTime": "2024-11-18T21:25:24Z", "conditions": [ { "lastTransitionTime": "2024-11-18T21:21:15Z", "lastUpdateTime": "2024-11-18T21:21:15Z", "message": "PyTorchJob hyperpod-cli-test is created.", "reason": "PyTorchJobCreated", "status": "True", "type": "Created" }, { "lastTransitionTime": "2024-11-18T21:21:17Z", "lastUpdateTime": "2024-11-18T21:21:17Z", "message": "PyTorchJob hyperpod-ns-test-team/hyperpod-cli-test is running.", "reason": "PyTorchJobRunning", "status": "False", "type": "Running" }, { "lastTransitionTime": "2024-11-18T21:25:24Z", "lastUpdateTime": "2024-11-18T21:25:24Z", "message": "PyTorchJob hyperpod-ns-test-team/hyperpod-cli-test successfully completed.", "reason": "PyTorchJobSucceeded", "status": "True", "type": "Succeeded" } ], "replicaStatuses": { "Worker": { "selector": "training.kubeflow.org/job-name=hyperpod-cli-test,training.kubeflow.org/operator-name=pytorchjob-controller,training.kubeflow.org/replica-type=worker", "succeeded": 1 } }, "startTime": "2024-11-18T21:21:15Z" }, "ConsoleURL": "https://us-west-2.console.aws.amazon.com/sagemaker/home?region=us-west-2#/cluster-management/hyperpod-eks-test-cluster-id“ }

Suspension et annulation de la suspension de tâches

Si vous souhaitez supprimer une tâche soumise du planificateur, HyperPod AWS CLI fournit une suspend commande permettant de supprimer temporairement la tâche de l'orchestration. La tâche suspendue ne sera plus planifiée à moins que la suspension de la tâche soit annulée manuellement par la commande unsuspend.

Pour suspendre temporairement une tâche :

hyperpod patch-job suspend --job-name hyperpod-cli-test

Pour replacer une tâche dans la file d’attente :

hyperpod patch-job unsuspend --job-name hyperpod-cli-test

Débogage de tâches

HyperPod AWS CLI Il fournit également d'autres commandes vous permettant de résoudre les problèmes de soumission de tâches. Par exemple list-pods et get-logs dans le référentiel HyperPod AWS CLI Github.