

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
<a name="sagemaker-eks-operator-install"></a>

Consulta le sezioni seguenti per ulteriori informazioni su come installare l’operatore di addestramento.

## Prerequisiti
<a name="sagemaker-eks-operator-prerequisites"></a>

 Prima di utilizzare l'operatore HyperPod di formazione, è necessario aver completato i seguenti prerequisiti: 
+  [Creato un HyperPod cluster con l'orchestrazione di Amazon EKS](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-create-cluster.html). 
+ Hai installato l'AMI più recente sul tuo HyperPod cluster. Per ulteriori informazioni, consulta [SageMaker HyperPod Versioni AMI per Amazon EKS](sagemaker-hyperpod-release-ami-eks.md).
+ [Hai installato cert-manager](https://cert-manager.io/docs/installation/).
+  [Hai configurato l’agente EKS Pod Identity dalla console](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html). Se desideri utilizzare il AWS 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](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws).

## Installazione dell’operatore di addestramento
<a name="sagemaker-eks-operator-install-operator"></a>

 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 CLI Offre 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/](https://console.aws.amazon.com/sagemaker/).

1. Vai alla pagina dei dettagli del cluster.

1. 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 [ AmazonSageMakerHyperPodTrainingOperatorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerHyperPodTrainingOperatorAccess.html)gestita 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](https://console.aws.amazon.com/eks/home#/clusters).

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

1. Scegli Amazon SageMaker HyperPod Training Operator, quindi scegli **Avanti**.

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

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

1. Durante questo processo di creazione del ruolo, la console IAM precompila tutte le informazioni necessarie, come il caso d'uso, la policy [ AmazonSageMakerHyperPodTrainingOperatorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerHyperPodTrainingOperatorAccess.html)gestita e le altre autorizzazioni richieste, il nome del ruolo e la descrizione. Prosegui con le varie fasi, controlla le informazioni e scegli **Crea ruolo**.

1. 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) 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 ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
         "Effect": "Allow",
         "Principal": {
           "Service": "pods.eks.amazonaws.com"
         },
         "Action": [
           "sts:AssumeRole",
           "sts:TagSession",
           "eks-auth:AssumeRoleForPodIdentity"
         ]
       }
     ]
   }
   ```

------

1.  Allega la [policy AmazonSageMakerHyperPodTrainingOperatorAccess gestita](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerHyperPodTrainingOperatorAccess.html) al ruolo che hai creato. 

1.  [Quindi, crea un’associazione Pod Identity tra il cluster EKS, il ruolo IAM e il nuovo ruolo IAM](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html).

   ```
   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}}
   ```

1.  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}}"
       }]
   }
   ```

1. 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'[ DescribeAddonVersions](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html)operazione.

   ```
   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](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless.html) [elastico](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-elastic-training.html), 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](https://console.aws.amazon.com/eks/home#/clusters).

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

1. 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
   ```

1. 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
<a name="sagemaker-eks-operator-elastic-agent"></a>

L'agente HyperPod elastico è un'estensione [PyTorchdi s ElasticAgent](https://docs.pytorch.org/docs/stable/elastic/agent.html). 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](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless.html) [elastico](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-elastic-training.html) 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
<a name="sagemaker-eks-operator-elastic-agent-args"></a>

 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](https://docs.pytorch.org/docs/stable/elastic/agent.html). 


| 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 | Contrassegno 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)
<a name="sagemaker-eks-operator-task-governance"></a>

L'operatore di formazione è integrato con la [governance delle HyperPod attività](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-governance), 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à](sagemaker-hyperpod-eks-operate-console-ui-governance-setup.md) 

**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-name}}kueue.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)
<a name="sagemaker-eks-operator-kueue"></a>

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](https://kueue.sigs.k8s.io/docs/installation/#install-a-custom-configured-released-version). Quando raggiungi la fase di configurazione di `controller_manager_config.yaml`, aggiungi la configurazione seguente:

   ```
   externalFrameworks:
   - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
   ```

1. 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
   ```