Avvio di un job di addestramento mediante HyperPod CLI
SageMaker HyperPod CLI è uno strumento di interfaccia a riga di comando per la gestione dei cluster Amazon SageMaker HyperPod. È possibile utilizzare HyperPod CLI per creare, configurare e monitorare i cluster HyperPod per carichi di lavoro di machine learning. Per ulteriori informazioni, consulta il repository GitHub sagemaker-hyperpod-cli
Prerequisiti
-
Installa HyperPod CLI. Per la personalizzazione di Amazon Nova su Amazon SageMaker HyperPod, è necessario controllare la ramificazione
release_v2per utilizzare SageMaker HyperPod CLI. -
Verifica che il bucket di output Nova esista prima di inviare job. A tale scopo, esegui
aws s3 ls s3://nova-111122223333/.Il nome del bucket è il valore specificato per
recipes.run.output_s3_pathnella ricetta. Questo bucket di output archivia un file manifesto generato dopo l’addestramento, che contiene i percorsi S3 degli artefatti di output archiviati nel bucket Amazon S3 gestito dal servizio. Inoltre, potrebbe facoltativamente archiviare file TensorBoard o risultati di valutazione. -
Informazioni sui requisiti di sincronizzazione dei dati di Amazon FSx. Amazon FSx ha bisogno di tempo per sincronizzare i dati di addestramento di Amazon S3 prima che i job possano essere eseguiti.
Configurare HyperPod CLI per la personalizzazione di Amazon Nova
Per configurare HyperPod CLI per la personalizzazione di Amazon Nova, completa la seguente procedura.
-
Clona il repository GitHub sagemaker-hyperpod-cli
con ramificazione release_v2.git clone --recurse-submodules https://github.com/aws/sagemaker-hyperpod-cli.git --branch release_v2 -
Accedi alla cartella
sagemaker-hyperpod-cli.cd sagemaker-hyperpod-cli -
Verifica di disporre di tutti i prerequisiti specificati in Prerequisites
. -
Per configurare Helm, esegui questa procedura.
-
Per scaricare lo script di installazione di Helm, esegui:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 -
Per rendere eseguibile lo script, esegui:
chmod 700 get_helm.shQuesto comando modifica le autorizzazioni per rendere eseguibile lo script.
-
Per eseguire lo script di installazione di Helm, esegui:
./get_helm.sh -
Per rimuovere lo script di installazione, esegui:
rm -f ./get_helm.sh
-
-
Per installare le dipendenze HyperPod con supporto per gruppi di istanze limitati (RIG, Restricted Instance Group), segui questa procedura.
Nota
Prima di installare le dipendenze, devi disporre di un cluster HyperPod EKS con RIG. In caso contrario, creane uno seguendo queste istruzioni.
-
Per connetterti al tuo cluster HyperPod EKS, esegui:
aws eks update-kubeconfig --name <eks_cluster_name> --region us-east-1 -
Per verificare la connessione al cluster HyperPod EKS, esegui:
kubectl config current-context -
Per scaricare gli aggiornamenti per le dipendenze HyperPod standard, esegui:
helm dependencies update helm_chart/HyperPodHelmChart -
Per installare le dipendenze HyperPod standard, esegui:
helm install dependencies helm_chart/HyperPodHelmChart --namespace kube-system -
Per accedere alla directory del grafico Helm, esegui:
cd helm_chart -
Per installare dipendenze HyperPod specifiche per RIG, esegui il comando seguente.
Nota
Prima di installare le dipendenze, considera quanto segue:
-
È necessario eseguire questo comando solo una volta per cluster dopo la sua creazione.
-
È necessario assicurarsi che l’utilità yq sia installata con una versione 4 (ad esempio, v4 o versioni successive). Nello script di installazione è disponibile un controllo integrato per confermare che yq >=4.
-
È necessario confermare l’installazione inserendo
yquando richiesto. Facoltativamente, prima della conferma, visualizza l’installazione prevista in./rig-dependencies.yaml.
chmod 700 ./install_rig_dependencies.sh && ./install_rig_dependencies.sh -
-
Per tornare alla root del repository
codesagemaker-hyperpod-cli, esegui:cd ..
-
-
Per procedere con l’installazione di HyperPod CLI in
sagemaker-hyperpod-cli, segui questa procedura.-
Installa la CLI utilizzando pip:
pip install -e . Verifica l’installazione:
hyperpod --help
-
Invio di un processo
Puoi utilizzare HyperPod CLI per inviare un job di addestramento.
Per inviare un job utilizzando una ricetta, esegui il comando seguente.
hyperpod start-job [--namespace <namespace>] --recipe {{fine-tuning | evaluation | training}}/nova/<Your_Recipe_Name> --override-parameters \ '{ "instance_type":"p5d.48xlarge", "container": <Docker Image>, "recipes.run.name": <custom-run-name>, "recipes.run.output_s3_path": "<customer-s3-path>" }'
-
--recipe: il tipo di job che stai eseguendo utilizzando la ricetta. I valori validi sono:fine-tuning|evaluation|training.Tipo di processo Valore Processi SFT/PEFT/PPO/DPO fine-tuningProcessi di valutazione evaluationProcessi CPT training -
Nome della ricetta: è possibile trovare il nome nel repository nella directory:
/src/hyperpod_cli/sagemaker_hyperpod_recipes/recipe_collection/recipes/. -
Ricetta di esempio:
--recipe evaluation/nova/nova_lite_g5_12xl_bring_your_own_dataset_eval. -
Container: questo campo è obbligatorio. Per trovare le immagini per i tipi di processi, consulta la tabella seguente.
Tecnica Container DPO 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-DPO-latest Processi di valutazione 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest CPT 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:HP-CPT-latest PPO 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SMHP-PPO-TRAIN-latest SFT/PEFT 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-latest -
Nome di esecuzione personalizzato: sussistono vincoli di definizione sull’input di
custom-run-time, ad esempio niente lettere maiuscole, niente spazi, niente trattini bassi. Per ulteriori informazioni, consulta Object Names and IDs.
[Facoltativo] Se hai già un job di addestramento e vuoi scegliere come destinazione un nodo specifico per il job successivo, segui questa procedura.
-
Per ottenere tutti i nodi liberi, esegui il comando seguente.
kubectl get nodes —no-headers | awk '$2 != "NotReady" && $3 != "SchedulingDisabled" {print $1}' -
Aggiungi quanto segue al file
src\hyperpod_cli\sagemaker_hyperpod_recipes\recipes_collection\cluster\k8s.yamlper il selettore di etichette.label_selector: required: kubernetes.io/hostname: - <node_name> -
Nella directory root esegui il seguente comando. Questo garantisce che SageMaker HyperPod sia installato sul sistema dell’utente, consentendo a quest’ultimo di utilizzare la parola chiave “hyperpod” per l’invio di job e altre funzioni. È necessario eseguire questo comando dalla cartella root in cui si trova il codice di HyperPod CLI.
pip install .
Visualizzazione di un elenco dei processi
Per visualizzare un elenco dei job, esegui il comando seguente.
hyperpod list-jobs [--namespace <namespace>] [--all-namespaces]
Il comando elenca tutti i job nel namespace specificato o in tutti i namespace.
Recuperare i dettagli di un job
Per ottenere i dettagli di un job, esegui il seguente comando.
hyperpod get-job --job-name <job-name> [--namespace <namespace>] [--verbose]
Il comando recupera informazioni dettagliate su un job specifico.
Ottenere l’elenco di pod
Per ottenere l’elenco di pod, esegui il seguente comando.
hyperpod list-pods --job-name <job-name> [--namespace <namespace>]
Il comando elenca tutti i pod associati a un job specifico nel namespace specificato.
Annullare job
Per annullare un job, esegui il seguente comando.
hyperpod cancel-job --job-name <job-name> [--namespace <namespace>]
Questo comando annulla ed elimina un job di addestramento in esecuzione nel namespace specificato.