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 HyperPod di 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 desideri utilizzare ilAWS 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 HyperPod del cluster in un VPC privato, devi configurare gli endpoint PrivateLinks VPC per l'API Amazon AI (
com.amazonaws.) e i servizi di autenticazione SageMaker Amazon EKS (com.amazonaws).aws-region.sagemaker.apiaws-region.eks-auth). È inoltre necessario assicurarsi che i nodi del cluster funzionino con sottoreti che fanno parte di un gruppo di sicurezza che consente al traffico di instradare il traffico attraverso gli endpoint VPC per comunicare con AI SageMaker e Amazon EKS. Se questi non sono configurati correttamente, l'installazione del componente aggiuntivo può fallire. Per ulteriori informazioni sulla configurazione degli endpoint VPC, consulta Creare un endpoint VPC.
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 offrono esperienze semplificate che ti aiutano a installare l'operatore. AWS CLIOffre un approccio programmatico che consente di personalizzare una parte maggiore dell'installazione.
Tra le due esperienze di console, l' SageMaker intelligenza artificiale fornisce un'installazione con un solo clic, crea il ruolo di esecuzione IAM, crea l'associazione di 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 che desideri. Se desideri utilizzare l'allenamento senza checkpoint o l'allenamento elastico, considera quanto segue:
-
Sia l'allenamento senza checkpoint che l'allenamento elastico richiedono che il componente aggiuntivo EKS sia nella versione 1.2.0 o successiva.
-
L'operatore di SageMaker HyperPod formazione di Amazon mantiene la retrocompatibilità per qualsiasi versione aggiuntiva EKS, quindi puoi eseguire l'aggiornamento da qualsiasi versione aggiuntiva alla 1.2.0 o superiore.
-
Se effettui il downgrade dalla versione 1.2.0 o successiva 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 |
|---|---|---|
| hpTrainingControllerManager.Manager.Resources.Requests.CPU | Quanti processori allocare per il controller | 1 |
| hpTrainingControllerManager.Manager.Resources.Requests.Memoria | Quanta memoria allocare per il controller | 2Gi |
| hpTrainingControllerManager.Manager.Resources.Limits.CPU | Il limite della CPU per il controller | 2 |
| hpTrainingControllerManager.Manager.Resources.Limits.Memoria | Il limite della memoria per il controller | 4Gi |
| hpTrainingControllerManager.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 PyTorchdi s ElasticAgenthyperpodrun per creare l’utilità di avvio dei processi.
Nota
Sia l'allenamento senza checkpoint che l'allenamento elastico richiedono l'utilizzo della versione 1.1.0 o successiva di HyperPod elastic agent.
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 dell'agente elastico
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 su PyTorch Elastic Agent, consulta la loro 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 il segnale di spegnimento e i segnali 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 | Bandiera 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 robusto sistema di gestione progettato per semplificare l'allocazione delle risorse e garantire un utilizzo efficiente delle risorse di elaborazione tra team e progetti per i 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 successiva.
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
-
team-namekueue.x-k8s.io/queue-name: hyperpod-ns- -localqueue -
kueue.x-k8s.io/priority-class: -name-priority
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