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à.
Installazione dell’operatore di addestramento
Consulta le sezioni seguenti per ulteriori informazioni su come installare l’operatore di addestramento.
Prerequisiti
Prima di utilizzare l'operatore addetto alla HyperPod formazione, è necessario aver completato i seguenti prerequisiti:
-
Creato un HyperPod cluster con l'orchestrazione di Amazon EKS.
-
Hai installato l'AMI più recente sul tuo HyperPod cluster. Per ulteriori informazioni, consulta SageMaker HyperPod Versioni AMI per Amazon EKS.
-
Hai configurato l’agente EKS Pod Identity dalla console. Se vuoi usare il AWS CLI, usa il seguente comando:
aws eks create-addon \ --cluster-namemy-eks-cluster\ --addon-name eks-pod-identity-agent \ --regionRegione AWS -
(Facoltativo) Se esegui i nodi del HyperPod cluster in un VPC privato, devi configurare gli endpoint PrivateLinks VPC per Amazon SageMaker AI API (
com.amazonaws.) e i servizi Amazon EKS Auth (com.amazonaws).aws-region.sagemaker.apiaws-region.eks-auth). Devi inoltre assicurarti che i nodi del cluster funzionino con sottoreti che si trovano in un gruppo di sicurezza che consenta al traffico di passare attraverso gli endpoint VPC per comunicare con AI e Amazon EKS. SageMaker Se questi non sono configurati correttamente, l'installazione del componente aggiuntivo può fallire. Per saperne di più sulla configurazione degli endpoint VPC, consulta Create a VPC endpoint.
Installazione dell’operatore di addestramento
Ora puoi installare l'operatore di HyperPod formazione tramite la console SageMaker AI, la console Amazon EKS o con i metodi AWS CLI La console offre esperienze semplificate che ti aiutano a installare l'operatore. The AWS CLI offre un approccio programmatico che consente di personalizzare maggiormente l'installazione.
Tra le due esperienze di console, l' SageMaker IA fornisce un'installazione con un clic, crea il ruolo di esecuzione IAM, crea l'associazione dell'identità del pod e installa l'operatore. L’installazione con la console di Amazon EKS è simile, ma non crea automaticamente il ruolo di esecuzione IAM. Durante questo processo, puoi scegliere di creare un nuovo ruolo di esecuzione IAM con le informazioni precompilate dalla console. Per impostazione predefinita, i ruoli che crei hanno accesso solo al cluster corrente in cui stai installando l’operatore. A meno che non modifichi le autorizzazioni del ruolo per includere altri cluster, devi creare un nuovo ruolo se rimuovi e reinstalli l’operatore.
Se hai già installato l'operatore di formazione sul tuo HyperPod cluster, puoi aggiornare il componente aggiuntivo EKS alla versione desiderata. Se desideri utilizzare l'allenamento senza checkpoint o l'allenamento elastico, considera quanto segue:
-
Sia l'allenamento checkpointless che l'allenamento elastico richiedono che l'add-on EKS sia nella versione 1.2.0 o successiva.
-
L'operatore di SageMaker HyperPod formazione Amazon mantiene la retrocompatibilità per qualsiasi versione aggiuntiva EKS, quindi puoi eseguire l'aggiornamento da qualsiasi versione aggiuntiva alla 1.2.0 o successiva.
-
Se effettui il downgrade dalle versioni 1.2.0 o successive a una versione precedente, devi prima eliminare i lavori esistenti prima del downgrade e inviare nuovamente i lavori al termine del downgrade.
L’operatore di addestramento offre diverse opzioni con valori predefiniti che potrebbero essere adatte al tuo caso d’uso. Prima di modificarle, consigliamo di provare l’operatore di addestramento con i valori predefiniti. La tabella seguente descrive tutti i parametri e gli esempi che spiegano quando potrebbe essere utile configurare i singoli parametri.
| Parametro | Description | Predefinita |
|---|---|---|
| hp TrainingControllerManager.manager.resources.requests.cpu | Quanti processori allocare per il controller | 1 |
| hp TrainingControllerManager.manager.resources.requests.memory | Quanta memoria allocare per il controller | 2Gi |
| hp TrainingControllerManager.manager.resources.limits.cpu | Il limite della CPU per il controller | 2 |
| hp TrainingControllerManager.manager.resources.limits.memory | Il limite della memoria per il controller | 4Gi |
| hp TrainingControllerManager.nodeSelector | Selettore di nodi per i pod del controller | Il comportamento predefinito consiste nel selezionare i nodi con l’etichetta sagemaker.amazonaws.com/compute-type: "HyperPod" |
HyperPod agente elastico
L'agente HyperPod elastico è un'estensione di PyTorch's ElasticAgenthyperpodrun per creare l’utilità di avvio dei processi.
Nota
Sia l'allenamento senza checkpoint che l'allenamento elastico richiedono l'uso di HyperPod elastic agent versione 1.1.0 o successiva.
RUN pip install hyperpod-elastic-agent ENTRYPOINT ["entrypoint.sh"] # entrypoint.sh ... hyperpodrun --nnodes=node_count--nproc-per-node=proc_count\ --rdzv-backend hyperpod \ # Optional --inprocess-restart \ # Optional (in-process fault recovery with checkpointless training) ... # Other torchrun args # pre-traing arg_group --pre-train-script pre.sh --pre-train-args "pre_1 pre_2 pre_3" \ # post-train arg_group --post-train-script post.sh --post-train-args "post_1 post_2 post_3" \training.py--script-args
Ora puoi inviare processi con kubectl.
HyperPod argomenti relativi agli agenti elastici
L'agente HyperPod elastico supporta tutti gli argomenti originali e aggiunge alcuni argomenti aggiuntivi. Di seguito sono riportati tutti gli argomenti disponibili nell'agente HyperPod elastico. Per ulteriori informazioni sull' PyTorchElastic Agent, consulta la relativa documentazione ufficiale
| Argomento | Description | Valore predefinito |
|---|---|---|
| --shutdown-signal | Segnale da inviare ai worker per lo spegnimento (SIGTERM o SIGKILL) | “SIGKILL” |
| --shutdown-timeout | Timeout in secondi tra i segnali di shutdown-signal e SIGKILL | 15 |
| --server-host | Indirizzo del server dell’agente | “0.0.0.0” |
| --server-port | Porta del server dell’agente | 8080 |
| --server-log-level | Livello dei log del server dell’agente | “info” |
| --server-shutdown-timeout | Timeout di spegnimento del server in secondi | 300 |
| --pre-train-script | Percorso dello script di preaddestramento | Nessuno |
| --pre-train-args | Argomenti per lo script di preaddestramento | Nessuno |
| --post-train-script | Percorso dello script di post-addestramento | Nessuno |
| --post-train-args | Argomenti per lo script di post-addestramento | Nessuno |
| --inprocess-restart | Flag che specifica se utilizzare la funzionalità inprocess_restart | FALSE |
| --inprocess-timeout | Tempo in secondi in cui l'agente attende che i lavoratori raggiungano una barriera di sincronizzazione prima di attivare un riavvio a livello di processo. | Nessuno |
Governance delle attività (facoltativo)
L'operatore di formazione è integrato con la governance delle HyperPod attività, un solido sistema di gestione progettato per semplificare l'allocazione delle risorse e garantire un utilizzo efficiente delle risorse di calcolo tra team e progetti per i tuoi cluster Amazon EKS. Per configurare la governance delle attività, consulta. HyperPod Configurazione per la governance SageMaker HyperPod delle attività
Nota
Quando si installa il componente aggiuntivo per la governance delle HyperPod attività, è necessario utilizzare la versione v1.3.0-eksbuild.1 o superiore.
Quando invii un processo, assicurati di includere il nome della coda e le etichette della classe di priorità di hyperpod-ns- e team-name-localqueue. Ad esempio, se utilizzi Kueue, le etichette diventano:priority-class-name-priority
-
kueue.x-k8s. io/queue-nome: hyperpod-ns- -localqueue
team-name -
kueue.x-k8s. io/priority-classe: -nome-priorità
priority-class
Di seguito è riportato un esempio di come potrebbe essere il tuo file di configurazione:
apiVersion: sagemaker.amazonaws.com/v1 kind: HyperPodPytorchJob metadata: name: hp-task-governance-sample namespace: hyperpod-ns-team-namelabels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue kueue.x-k8s.io/priority-class:priority-class-priority spec: nprocPerNode: "1" runPolicy: cleanPodPolicy: "None" replicaSpecs: - name: pods replicas: 4 spares: 2 template: spec: containers: - name: ptjob image: XXXX imagePullPolicy: Always ports: - containerPort: 8080 resources: requests: cpu: "2"
Quindi utilizza il comando kubectl seguente per applicare il file YAML.
kubectl apply -f task-governance-job.yaml
Kueue (facoltativo)
Sebbene sia possibile eseguire direttamente i processi, l’organizzazione può anche integrare l’operatore di addestramento con Kueue per allocare le risorse e pianificare i processi. Segui i passaggi seguenti per installare Kueue nel tuo cluster. HyperPod
-
Segui le istruzioni di installazione nella documentazione ufficiale di Kueue
. Quando raggiungi la fase di configurazione di controller_manager_config.yaml, aggiungi la configurazione seguente:externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com" -
Segui le altre fasi indicate nella guida di installazione ufficiale. Dopo aver terminato l’installazione di Kueue, puoi creare alcune code di esempio con il comando
kubectl apply -f sample-queues.yaml. Utilizza il file YAML seguente.apiVersion: kueue.x-k8s.io/v1beta1 kind: ClusterQueue metadata: name: cluster-queue spec: namespaceSelector: {} preemption: withinClusterQueue: LowerPriority resourceGroups: - coveredResources: - cpu - nvidia.com/gpu - pods flavors: - name: default-flavor resources: - name: cpu nominalQuota: 16 - name: nvidia.com/gpu nominalQuota: 16 - name: pods nominalQuota: 16 --- apiVersion: kueue.x-k8s.io/v1beta1 kind: LocalQueue metadata: name: user-queue namespace: default spec: clusterQueue: cluster-queue --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ResourceFlavor metadata: name: default-flavor --- apiVersion: kueue.x-k8s.io/v1beta1 description: High priority kind: WorkloadPriorityClass metadata: name: high-priority-class value: 1000 --- apiVersion: kueue.x-k8s.io/v1beta1 description: Low Priority kind: WorkloadPriorityClass metadata: name: low-priority-class value: 500