Installazione dell’operatore di addestramento - 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à.

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 installato cert-manager.

  • Hai configurato l’agente EKS Pod Identity dalla console. Se desideri utilizzare ilAWS CLI, usa il seguente comando:

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name eks-pod-identity-agent \ --region Regione 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.aws-region.sagemaker.api) e i servizi di autenticazione SageMaker Amazon EKS (com.amazonaws). aws-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.

SageMaker AI console (recommended)
  1. Apri la console Amazon SageMaker AI all'indirizzo https://console.aws.amazon.com/sagemaker/.

  2. Vai alla pagina dei dettagli del cluster.

  3. Nella scheda Dashboard, individua il componente aggiuntivo denominato Amazon SageMaker HyperPod training operator e scegli installa. Durante il processo di installazione, l' SageMaker intelligenza artificiale crea un ruolo di esecuzione IAM con autorizzazioni simili alla policy AmazonSageMakerHyperPodTrainingOperatorAccessgestita e crea un'associazione di identità del pod tra il cluster Amazon EKS e il nuovo ruolo di esecuzione.

Amazon EKS console
Nota

Se installi il componente aggiuntivo tramite il cluster Amazon EKS, assicurati innanzitutto di aver taggato il HyperPod cluster con la coppia chiave-valore. SageMaker:true In caso contrario, l’installazione non riuscirà.

  1. Apri la console Amazon EKS a https://console.aws.amazon.com/eks/home#/clusters.

  2. Vai al cluster EKS, scegli Componenti aggiuntivi, quindi seleziona Ottieni altri componenti aggiuntivi.

  3. Scegli Amazon SageMaker HyperPod Training Operator, quindi scegli Avanti.

  4. In Versione, consigliamo di utilizzare l’impostazione predefinita della console, ovvero la versione più recente.

  5. In Accesso aggiuntivo, scegli un ruolo IAM per Pod Identity da utilizzare con il componente aggiuntivo dell’operatore di addestramento. Se non disponi già di un ruolo, scegli Crea ruolo consigliato per crearne uno.

  6. Durante questo processo di creazione del ruolo, la console IAM precompila tutte le informazioni necessarie, come il caso d'uso, la policy AmazonSageMakerHyperPodTrainingOperatorAccessgestita e le altre autorizzazioni richieste, il nome del ruolo e la descrizione. Prosegui con le varie fasi, controlla le informazioni e scegli Crea ruolo.

  7. Nella console EKS, rivedi le impostazioni del componente aggiuntivo, quindi scegli Crea.

CLI
  1. Assicurati che il ruolo di esecuzione IAM per il tuo HyperPod cluster abbia una relazione di fiducia che consenta a EKS Pod Identity di assumere il ruolo o di creare un nuovo ruolo IAM con la seguente politica di fiducia. In alternativa, puoi utilizzare la console di Amazon EKS per installare il componente aggiuntivo, che crea un ruolo consigliato.

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession", "eks-auth:AssumeRoleForPodIdentity" ] } ] }
  2. Allega la policy AmazonSageMakerHyperPodTrainingOperatorAccess gestita al ruolo che hai creato.

  3. Quindi, crea un’associazione Pod Identity tra il cluster EKS, il ruolo IAM e il nuovo ruolo IAM.

    aws eks create-pod-identity-association \ --cluster-name my-eks-cluster \ --role-arn ARN of your execution role \ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --region Regione AWS
  4. Al termine del processo, è possibile utilizzare l' ListPodIdentityAssociations operazione per visualizzare l'associazione creata. Il possibile aspetto è mostrato nella seguente risposta di esempio.

    aws eks list-pod-identity-associations --cluster-name my-eks-cluster { "associations": [{ "clusterName": "my-eks-cluster", "namespace": "aws-hyperpod", "serviceAccount": "hp-training-operator-controller-manager", "associationArn": "arn:aws:eks:us-east-2:123456789012:podidentityassociation/my-hyperpod-cluster/a-1a2b3c4d5e6f7g8h9", "associationId": "a-1a2b3c4d5e6f7g8h9" }] }
  5. Per installare l’operatore di addestramento, utilizza l’operazione create-addon. Il parametro --addon-version è facoltativo. Se non ne fornisci uno, l’impostazione predefinita è la versione più recente. Per ottenere le versioni possibili, utilizzate l' DescribeAddonVersionsoperazione.

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --resolve-conflicts OVERWRITE

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.

Amazon EKS Console
  1. Apri la console Amazon EKS a https://console.aws.amazon.com/eks/home#/clusters.

  2. Vai al tuo cluster EKS e scegli Componenti aggiuntivi. Quindi, scegli il componente aggiuntivo Amazon SageMaker HyperPod Training Operator e scegli Modifica.

  3. Nel menu Versione, scegli la versione del componente aggiuntivo che desideri, quindi scegli Salva modifiche.

CLI
  1. Per prima cosa ottieni l'elenco delle versioni supportate del componente aggiuntivo per il tuo cluster.

    aws eks describe-addon-versions \ --kubernetes-version $(aws eks describe-cluster --name my-eks-cluster --query 'cluster.version' --output text) \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --query 'addons[0].addonVersions[].addonVersion' \ --output table
  2. Quindi aggiorna il componente aggiuntivo alla versione che desideri.

    aws eks update-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --addon-version target-version --resolve-conflicts OVERWRITE

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 ElasticAgent. Orchestra i cicli di vita dei lavoratori addetti alla formazione su ogni container e comunica con l'operatore addetto alla formazione. HyperPod Per utilizzare l'operatore addetto alla HyperPod formazione, è necessario installare l'agente HyperPod elastico nell'immagine di formazione prima di poter inviare ed eseguire i lavori utilizzando l'operatore. Il seguente è un file Docker che installa l’agente elastico e utilizza hyperpodrun 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-team-name-localqueue e priority-class-name-priority. Ad esempio, se utilizzi Kueue, le etichette diventano:

  • 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-name labels: 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

  1. 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"
  2. 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