

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
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-cli"></a>

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](https://github.com/aws/sagemaker-hyperpod-cli).

**Topics**
+ [Obtention d’informations sur les quotas d’appareil accélérateur de cluster](#hp-eks-cli-get-clusters)
+ [Soumettre une tâche à une file d'attente et à un SageMaker espace de noms gérés par l'IA](#hp-eks-cli-start-job)
+ [Affichage des tâches](#hp-eks-cli-list-jobs)
+ [Obtention des informations détaillées sur une tâche](#hp-eks-cli-get-job)
+ [Suspension et annulation de la suspension de tâches](#hp-eks-cli-patch-job)
+ [Débogage de tâches](#hp-eks-cli-other)

## Obtention d’informations sur les quotas d’appareil accélérateur de cluster
<a name="hp-eks-cli-get-clusters"></a>

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](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-edit.md).

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
<a name="hp-eks-cli-start-job"></a>

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](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md).

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
<a name="hp-eks-cli-list-jobs"></a>

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
<a name="hp-eks-cli-get-job"></a>

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
<a name="hp-eks-cli-patch-job"></a>

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
<a name="hp-eks-cli-other"></a>

 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.