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à.
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
Argomenti
Ottieni informazioni sulla quota dei dispositivi Cluster Accelerator
Il comando di esempio seguente ottiene le informazioni sulla quota del dispositivo di accelerazione del cluster.
hyperpod get-clusters -n hyperpod-ns-test-team
Lo spazio dei nomi in questo esempio viene creato in Kubernetes in base al nome del team fornito al momento della creazione dell'allocazione di test-team
calcolo. hyperpod-ns-test-team
Per ulteriori informazioni, consulta Modifica le politiche.
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 spazio dei nomi gestiti dall'intelligenza artificiale SageMaker
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. Altrimenti, se vengono scoperte più code, ti mostreremo tutte le opzioni possibili da selezionare.
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 nella politica del cluster, che definisce la priorità delle attività e l'allocazione del calcolo inattivo. Quando un data scientist invia un lavoro, utilizza uno dei nomi delle classi prioritarie con il formato.
In questo esempio, priority-class-name
-prioritytraining-priority
si riferisce alla classe prioritaria denominata «formazione». Per ulteriori informazioni sui concetti politici, vederePolicy.
Se non viene specificata una classe di priorità, il lavoro viene considerato come un lavoro a bassa priorità, con un valore di classificazione delle attività pari a 0.
Se viene specificata una classe di priorità, ma non corrisponde a una delle classi di priorità definite nella politica del cluster, l'invio ha esito negativo e un messaggio di errore fornisce il set definito di classi di priorità.
È inoltre possibile inviare il lavoro utilizzando un file di configurazione YAML utilizzando il seguente comando:
hyperpod start-job --config-file ./
yaml-configuration-file-name
.yaml
Di seguito è riportato un esempio di file di configurazione YAML che equivale all'invio di un lavoro 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 lavoro utilizzando kubectl
per assicurarti che l'attività venga visualizzata nella scheda Dashboard. Quello che segue è un esempio di comando kubectl.
kubectl apply -f ./
yaml-configuration-file-name
.yaml
Quando invii il lavoro, includi il nome della coda e le etichette della classe di priorità. Ad esempio, con il nome della coda hyperpod-ns-
e la classe di prioritàteam-name
-localqueue
, è necessario includere le seguenti etichette:priority-class-name
-priority
-
kueue.x-k8s.io/queue-name: hyperpod-ns-
team-name
-localqueue -
kueue.x-k8s.io/priority-class:
priority-class-name
-priority
Il seguente frammento di configurazione YAML 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
Visualizzazione di un elenco dei processi
Il comando seguente elenca i lavori 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"
}
]
}
Ottieni informazioni dettagliate sul lavoro
Il comando seguente fornisce i dettagli di un lavoro. 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
“
}
Sospendere e annullare i lavori
Se si desidera rimuovere alcuni lavori inviati dallo scheduler, HyperPod AWS CLI fornisce il suspend
comando per rimuovere temporaneamente il lavoro dall'orchestrazione. Il lavoro sospeso non sarà più pianificato a meno che il lavoro non venga annullato manualmente dal comando unsuspend
Per sospendere temporaneamente un lavoro:
hyperpod patch-job suspend --job-name hyperpod-cli-test
Per aggiungere nuovamente un lavoro alla coda:
hyperpod patch-job unsuspend --job-name hyperpod-cli-test
Lavori di debug
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.