Installazione dell'operatore addetto alla formazione - 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 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:

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

  1. 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" ] } ] }
  2. Allega la seguente policy IAM al ruolo appena creato. Assicurati di specificare l'ARN del HyperPod cluster.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeClusterNode" ], "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/cluster_name" } ] }
  3. 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 \ --region Regione AWS
  4. Quindi crea un'associazione di identità del pod tra il tuo cluster EKS, il tuo ruolo IAM e il tuo nuovo ruolo IAM.

    aws eks create-pod-identity-association \ --cluster-name my-eks-cluster \ --role-arn ARN of your role \ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --region Regione AWS
  5. 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 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 lavori utilizzando l'operatore. Di seguito è riportato un file docker che installa elastic agent e lo utilizza hyperpodrun 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

  1. Segui la guida all'installazione nella documentazione ufficiale di Kueue. Quando raggiungi la fase di configurazionecontroller_manager_config.yaml, aggiungi la seguente configurazione:

    externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
  2. 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