Esempi di comandi di governance delle HyperPod AWS CLI attività - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempi di comandi di governance delle HyperPod AWS CLI attività

Puoi usarlo HyperPod con EKS tramite Kubectl o tramite CLI personalizzata HyperPod. È possibile utilizzare questi comandi tramite Studio o. AWS CLI Di seguito vengono forniti esempi di governance delle SageMaker HyperPod attività su come visualizzare i dettagli del cluster utilizzando i HyperPod AWS CLI comandi. Per ulteriori informazioni, incluse le modalità di installazione, consulta il repository HyperPod Github della CLI.

Informazioni sulla quota del dispositivo dell’acceleratore del cluster

Il comando di esempio seguente recupera le informazioni sulla quota del dispositivo dell’acceleratore del cluster.

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

Il namespace in questo esempio, hyperpod-ns-test-team, viene creato in Kubernetes in base al nome del team, test-team, fornito durante l’allocazione delle risorse di calcolo Per ulteriori informazioni, consulta Modifica delle policy.

Risposta di esempio:

[ { "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 } } } ]

Invia un lavoro alla coda e allo SageMaker spazio dei nomi gestiti dall'intelligenza artificiale

Il comando di esempio seguente invia un lavoro al cluster. HyperPod Se hai accesso a un solo team, in questo caso ti HyperPod AWS CLI assegnerà automaticamente la coda. Se invece vengono rilevate più code, verranno visualizzate tutte le possibili opzioni selezionabili.

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

Le classi di priorità sono definite in Policy del cluster, che specifica il modo in cui viene assegnata la priorità alle attività e vengono allocate le risorse di calcolo inattive. Quando un Data Scientist invia un processo, utilizza uno dei nomi delle classi di priorità con il formato priority-class-name-priority. In questo esempio, training-priority si riferisce alla classe di priorità denominata “addestramento”. Per ulteriori informazioni sui concetti della policy, consulta Policy.

Se non viene specificata una classe di priorità, il processo viene considerato a bassa priorità, con un valore di classificazione delle attività pari a 0.

Se viene specificata una classe di priorità, che però non corrisponde a una delle classi di priorità definite in Policy del cluster, l’invio non riesce e viene visualizzato un messaggio di errore che riporta il set definito di classi di priorità.

Puoi inviare il processo anche tramite un file di configurazione YAML con il comando seguente:

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

Di seguito è riportato un esempio di file di configurazione YAML che equivale all’operazione di invio di un processo, come discusso in precedenza.

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

In alternativa, puoi inviare un processo con kubectl per garantire che l’attività venga visualizzata nella scheda Dashboard. Il seguente è un comando kubectl di esempio.

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

Quando invii il processo, includi il nome della coda e le etichette della classe di priorità. Ad esempio, con il nome della coda hyperpod-ns-team-name-localqueue e la classe di priorità priority-class-name-priority, devi includere le seguenti etichette:

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

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

Il frammento di configurazione YAML seguente mostra come aggiungere etichette al file di configurazione originale per garantire che l’attività venga visualizzata nella scheda Dashboard:

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

Elenco dei processi

Il comando seguente elenca i processi e i relativi dettagli.

hyperpod list-jobs

Risposta di esempio:

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

Informazioni dettagliate su un processo

Il comando seguente fornisce i dettagli di un processo. Se non viene specificato alcun namespace, HyperPod AWS CLI recupererà uno spazio dei nomi gestito dall' SageMaker IA a cui hai accesso.

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

Risposta di esempio:

{ "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“ }

Sospensione e ripresa dei processi

Se si desidera rimuovere alcuni lavori inviati dallo scheduler, HyperPod AWS CLI fornisce il suspend comando per rimuovere temporaneamente il lavoro dall'orchestrazione. Il processo sospeso non sarà più pianificato a meno che non venga ripreso manualmente con il comando unsuspend.

Per sospendere temporaneamente un processo:

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

Per aggiungere nuovamente un processo alla coda:

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

Debug dei processi

Fornisce HyperPod AWS CLI anche altri comandi per il debug dei problemi di invio dei lavori. Ad esempio list-pods e get-logs nel repository HyperPod AWS CLI Github.