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 addetto alla formazione
Consultate le seguenti sezioni per informazioni su come installare l'operatore addetto alla formazione.
Prerequisiti
Prima di utilizzare l'operatore di HyperPod formazione, è necessario aver completato i seguenti prerequisiti:
-
Configura il tuo HyperPod cluster con un Amazon VPC personalizzato
-
Hai installato l'AMI più recente sul tuo HyperPod cluster. Per ulteriori informazioni, consulta SageMaker HyperPod Versioni AMI per Amazon EKS
L'installazione dell'operatore addetto alla HyperPod formazione richiede innanzitutto l'installazione di altri componenti. Consultate le seguenti sezioni su come eseguire questa operazione.
Fase 1: configurare Amazon EKS Pod Identity Agent
-
Assicurati che il ruolo di esecuzione IAM per il tuo HyperPod cluster disponga dell'AssumeRoleForPodIdentityautorizzazione eks-auth: oppure crea un nuovo ruolo IAM con le seguenti autorizzazioni da utilizzare con l'operatore di formazione.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
-
Allega la seguente policy IAM al ruolo appena creato. Assicurati di specificare l'ARN del HyperPod cluster.
-
Configura EKS Pod Identity Agent utilizzando la console. Se si desidera utilizzare il AWS CLI, utilizzare il seguente comando.
aws eks create-addon \ --cluster-name
my-eks-cluster
\ --addon-name eks-pod-identity-agent \ --regionRegione AWS
-
aws eks create-pod-identity-association \ --cluster-name
my-eks-cluster
\ --role-arnARN of your role
\ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --regionRegione AWS
-
Dopo aver completato il processo, puoi utilizzare l' ListPodIdentityAssociations operazione per vedere l'associazione che hai creato. Di seguito è riportato un esempio di risposta di come potrebbe apparire.
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
" }] }
Fase 2: Installare l'operatore addetto alla HyperPod formazione
Ora puoi installare l'operatore di HyperPod formazione tramite la console Amazon EKS o con il funzionamento dell'CreateAddOnAPI. Se utilizzi la console, cerca il componente aggiuntivo denominato Amazon SageMaker HyperPod training operator.
Di seguito è riportato un esempio di come è possibile installare l'operatore con l'API e la CLI. Il parametro --addon-version
è facoltativo. Se non ne fornisci una, l'impostazione predefinita è la versione più recente. Per ottenere le versioni possibili, usa l' DescribeAddonVersionsoperazione.
Nota
La governance delle SageMaker HyperPod attività di Amazon non è supportata dall'operatore di formazione.
aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --resolve-conflicts OVERWRITE
L'operatore di formazione offre una serie di opzioni con valori predefiniti che potrebbero adattarsi al tuo caso d'uso. Ti consigliamo di provare l'operatore di formazione con i valori predefiniti prima di modificarli. La tabella seguente descrive tutti i parametri ed esempi di quando potresti voler configurare ciascun parametro.
Parametro | Descrizione | Default |
---|---|---|
hpTrainingControllerManager.Manager.Resources.Requests.CPU | Quanti processori allocare per il controller | 1 |
hpTrainingControllerManager.manager.resources.requests.Memory | Quanta memoria allocare al controller | 2Gi |
hpTrainingControllerManager.Manager.Resources.Limits.CPU | Il limite di CPU per il controller | 2 |
hpTrainingControllerManager.manager.resources.limits.Memory | Il limite di memoria per il controller | 4Gi |
hpTrainingControllerManager.NodeSelector | Selettore di nodi per i controller pod | Il comportamento predefinito consiste nel selezionare i nodi con l'etichetta sagemaker.amazonaws.com/compute-type: "HyperPod" |
Fase 3: Installare l'agente HyperPod elastico
L'agente HyperPod elastico è un'estensione PyTorchdi s ElasticAgenthyperpodrun
per creare il job launcher.
RUN pip install hyperpod-elastic-agent ENTRYPOINT ["entrypoint.sh"] # entrypoint.sh ... hyperpodrun --nnodes=
node_count
--nproc-per-node=proc_count
\ --rdzv-backend hyperpod \ # Optional ... # 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 lavori con. kubectl
HyperPod argomenti degli 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 su PyTorch Elastic Agent, consulta la loro documentazione ufficiale
Argomento | Descrizione | Valore predefinito |
---|---|---|
--shutdown-signal | Segnale da inviare ai lavoratori per lo spegnimento (SIGTERM o SIGKILL) | «SIGKILL» |
--shutdown-timeout | Timeout in secondi tra i segnali SIGTERM e SIGKILL | 30 |
--server-host | Indirizzo del server dell'agente | «0.0.0.0" |
--porta server | Porta del server dell'agente | 8080 |
--server-log-level | Livello di registro del server dell'agente | «informazioni» |
--server-shutdown-timeout | Timeout di spegnimento del server in secondi | 300 |
--pre-train-script | Percorso verso lo script di pre-allenamento | Nessuno |
--pre-train-args | Argomenti per lo script di pre-allenamento | Nessuno |
--post-train-script | Percorso verso lo script post-allenamento | Nessuno |
--post-train-args | Argomenti per lo script post-allenamento | Nessuno |
Kueue (opzionale)
Sebbene sia possibile eseguire direttamente i lavori, l'organizzazione può anche integrare l'operatore addetto alla formazione con Kueue per allocare risorse e pianificare i lavori. Segui i passaggi seguenti per installare Kueue nel tuo cluster. HyperPod
-
Segui la guida all'installazione nella documentazione ufficiale di Kueue
. Quando raggiungi la fase di configurazione controller_manager_config.yaml
, aggiungi la seguente configurazione:externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
-
Segui il resto dei passaggi indicati nella guida all'installazione ufficiale. Dopo aver terminato l'installazione di Kueue, puoi creare alcune code di esempio con il comando.
kubectl apply -f sample-queues.yaml
Usa il seguente file YAML.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