

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

# Esecuzione di processi su SageMaker HyperPod cluster orchestrati da Amazon EKS
<a name="sagemaker-hyperpod-eks-run-jobs"></a>

I seguenti argomenti forniscono procedure ed esempi di accesso ai nodi di calcolo ed esecuzione di carichi di lavoro ML su SageMaker HyperPod cluster forniti orchestrati con Amazon EKS. A seconda di come hai configurato l'ambiente sul HyperPod cluster, esistono molti modi per eseguire carichi di lavoro ML sui cluster. HyperPod 

**Nota**  
Quando si eseguono lavori tramite SageMaker HyperPod CLI o kubectl, è HyperPod possibile tenere traccia dell'utilizzo del calcolo (ore GPU/CPU) tra i namespace (team). Queste metriche sono la base dei report di utilizzo, che forniscono:  
Visibilità sul consumo di risorse allocate e di risorse prese in prestito
Utilizzo delle risorse dei team per gli audit (fino a 180 giorni)
Attribuzione dei costi in linea con le policy di governance delle attività
Per utilizzare i report di utilizzo, è necessario installare la relativa infrastruttura. Consigliamo vivamente di configurare la [governance delle attività](sagemaker-hyperpod-eks-operate-console-ui-governance.md) per applicare le quote di calcolo e abilitare l’attribuzione granulare dei costi.  
[Per ulteriori informazioni sulla configurazione e la generazione di report sull'utilizzo, consulta Reporting Compute Usage in. HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-usage-reporting.html)

**Suggerimento**  
Per un'esperienza pratica e indicazioni su come configurare e utilizzare un SageMaker HyperPod cluster orchestrato con Amazon EKS, consigliamo di seguire questo [Amazon EKS Support](https://catalog.us-east-1.prod.workshops.aws/workshops/2433d39e-ccfe-4c00-9d3d-9917b729258e) in workshop. SageMaker HyperPod

Gli utenti di data scientist possono addestrare modelli fondamentali utilizzando il set di cluster EKS come orchestratore per il cluster. SageMaker HyperPod Gli scienziati sfruttano la [SageMaker HyperPod CLI](https://github.com/aws/sagemaker-hyperpod-cli) e i comandi `kubectl` nativi per trovare i cluster SageMaker HyperPod disponibili, inviare lavori di formazione (Pod) e gestire i propri carichi di lavoro. La SageMaker HyperPod CLI consente l'invio dei lavori utilizzando un file di schema dei lavori di formazione e fornisce funzionalità per l'elenco, la descrizione, l'annullamento e l'esecuzione dei lavori. Gli scienziati possono utilizzare [Kubeflow Training Operator](https://www.kubeflow.org/docs/components/training/overview/) in base alle quote di calcolo gestite da e gestito dall'[SageMaker IA per gestire gli esperimenti di HyperPod machine learning e le sessioni di MLflow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html) formazione. 

**Topics**
+ [

# Installazione della SageMaker HyperPod CLI
](sagemaker-hyperpod-eks-run-jobs-access-nodes.md)
+ [

# SageMaker HyperPod Comandi CLI
](sagemaker-hyperpod-eks-hyperpod-cli-reference.md)
+ [

# Esecuzione di lavori utilizzando la SageMaker HyperPod CLI
](sagemaker-hyperpod-eks-run-jobs-hyperpod-cli.md)
+ [

# Esecuzione dei processi con `kubectl`
](sagemaker-hyperpod-eks-run-jobs-kubectl.md)

# Installazione della SageMaker HyperPod CLI
<a name="sagemaker-hyperpod-eks-run-jobs-access-nodes"></a>

SageMaker HyperPod fornisce il pacchetto CLI ([SageMaker HyperPod Command Line Interface](https://github.com/aws/sagemaker-hyperpod-cli)). 

1. Controlla se la versione di Python sul computer locale è compresa tra 3.8 e 3.11.

1. [Controlla i prerequisiti nel file `README` markdown nel pacchetto CLI SageMaker HyperPod .](https://github.com/aws/sagemaker-hyperpod-cli)

1. Clona il pacchetto SageMaker HyperPod CLI da. GitHub

   ```
   git clone https://github.com/aws/sagemaker-hyperpod-cli.git
   ```

1. Installa la SageMaker HyperPod CLI.

   ```
   cd sagemaker-hyperpod-cli && pip install .
   ```

1. Verifica se la SageMaker HyperPod CLI è installata correttamente eseguendo il comando seguente. 

   ```
   hyperpod --help
   ```

**Nota**  
Se sei un data scientist e desideri utilizzare la SageMaker HyperPod CLI, assicurati che il tuo ruolo IAM sia configurato correttamente dagli amministratori del cluster seguendo le istruzioni riportate in and. [Utenti IAM per Data Scientist](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-user) [Configurazione del controllo degli accessi basato su ruoli Kubernetes](sagemaker-hyperpod-eks-setup-rbac.md)

# SageMaker HyperPod Comandi CLI
<a name="sagemaker-hyperpod-eks-hyperpod-cli-reference"></a>

La tabella seguente riassume i comandi SageMaker HyperPod CLI.

**Nota**  
[Per un riferimento completo alla CLI, consulta [README nell'archivio](https://github.com/aws/sagemaker-hyperpod-cli?tab=readme-ov-file#sagemaker-hyperpod-command-line-interface) SageMaker HyperPod CLI. GitHub](https://github.com/aws/sagemaker-hyperpod-cli)


| SageMaker HyperPod Comando CLI | Entità  | Description | 
| --- | --- | --- | 
| hyperpod get-clusters | cluster/accesso | Elenca tutti i cluster a cui l'utente è stato abilitato, con le autorizzazioni IAM, a inviare carichi di lavoro di formazione. Fornisce un'istantanea corrente di tutte le istanze disponibili che non eseguono carichi di lavoro o job e la capacità massima, raggruppandole per stati di controllo dello stato di integrità (es:) BurnInPassed | 
| hyperpod connect-cluster | cluster/accesso | kubectlConfigura HyperPod per funzionare sul cluster e sullo spazio dei nomi specificati | 
| hyperpod start-job  | job | Invia il processo al cluster di destinazione. Il nome del processo sarà univoco a livello di namespace. Gli utenti potranno sostituire le specifiche yaml passandole come argomenti della CLI. | 
| hyperpod get-job | job | Visualizza i metadati del processo inviato. | 
| hyperpod list-jobs | job | Elenca tutti i job in Connected cluster/namespace a cui l'utente è stato aggiunto con le autorizzazioni IAM per inviare carichi di lavoro di formazione | 
| hyperpod cancel-job | job | Arresta ed elimina il processo e rilascia le risorse di calcolo sottostanti. Questo processo non può essere ripreso di nuovo. Se necessario, va avviato un nuovo processo. | 
| hyperpod list-pods | pod | Elenca tutti i pod del processo specificato in un namespace | 
| hyperpod get-log | pod | Recupera i log di un particolare pod in un processo specificato | 
| hyperpod exec | pod | Esegue il comando bash nella shell dei pod specificati e pubblica l’output | 
| hyperpod --help | utility | elenca tutti i comandi supportati | 

# Esecuzione di lavori utilizzando la SageMaker HyperPod CLI
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli"></a>

Per eseguire i processi, assicurati di aver installato Kubeflow Training Operator nei cluster EKS. Per ulteriori informazioni, consulta [Installazione di pacchetti sul cluster Amazon EKS con Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md).

Esegui il `hyperpod get-cluster` comando per ottenere l'elenco dei cluster disponibili. HyperPod 

```
hyperpod get-clusters
```

Esegui `hyperpod connect-cluster` per configurare la SageMaker HyperPod CLI con il cluster EKS che orchestra il cluster. HyperPod 

```
hyperpod connect-cluster --cluster-name <hyperpod-cluster-name>
```

Utilizza il comando `hyperpod start-job` per eseguire un processo. Il comando seguente mostra il comando con le opzioni richieste. 

```
hyperpod start-job \
    --job-name <job-name>
    --image <docker-image-uri>
    --entry-script <entrypoint-script>
    --instance-type <ml.instance.type>
    --node-count <integer>
```

Il comando `hyperpod start-job` include anche varie opzioni come la ripresa automatica e la pianificazione dei processi.

## Abilitazione della ripresa automatica del processo
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli-enable-auto-resume"></a>

Il comando `hyperpod start-job` include anche le opzioni seguenti per specificare la ripresa automatica del processo. Per consentire la ripresa automatica del lavoro in modo che funzioni con le funzionalità di resilienza del SageMaker HyperPod nodo, è necessario impostare il valore dell'opzione su. `restart-policy` `OnFailure` Il processo deve essere eseguito nel namespace `kubeflow` o in uno dei namespace con il prefisso `hyperpod`.
+ [--auto-resume <bool>] \$1Facoltativo: abilita la ripresa automatica del processo in caso di errore. L’impostazione predefinita è false.
+ [--max-retry <int>] \$1Facoltativo: se la ripresa automatica è impostata su true, il valore predefinito di max-retry è 1, se non specificato.
+ <enum>[--restart-policy] \$1Optional, politica di riavvio. PyTorchJob I valori disponibili sono `Always`, `OnFailure`, `Never` o `ExitCode`. Il valore predefinito è `OnFailure`. 

```
hyperpod start-job \
    ... // required options \
    --auto-resume true \
    --max-retry 3 \
    --restart-policy OnFailure
```

## Esecuzione di processi con opzioni di pianificazione
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli-scheduling"></a>

Il comando `hyperpod start-job` offre le seguenti opzioni per configurare il processo con meccanismi di accodamento. 

**Nota**  
È necessario che [Kueue](https://kueue.sigs.k8s.io/docs/overview/) sia installato nel cluster EKS. Se non è installato, segui le istruzioni in [Configurazione per la governance SageMaker HyperPod delle attività](sagemaker-hyperpod-eks-operate-console-ui-governance-setup.md).
+ [--scheduler-type <enum>] \$1Facoltativo: specifica il tipo di scheduler. Il valore predefinito è `Kueue`.
+ [--queue-name <string>] \$1Facoltativo: specifica il nome della [coda locale](https://kueue.sigs.k8s.io/docs/concepts/local_queue/) o della [coda del cluster](https://kueue.sigs.k8s.io/docs/concepts/cluster_queue/) da inviare insieme al processo. La coda deve essere creata dagli amministratori del cluster utilizzando `CreateComputeQuota`.
+ [--priority <string>] \$1Facoltativo: specifica il nome della [classe di priorità del carico di lavoro](https://kueue.sigs.k8s.io/docs/concepts/workload_priority_class/), che deve essere creata dagli amministratori del cluster.

```
hyperpod start-job \
    ... // required options
    --scheduler-type Kueue \
    --queue-name high-priority-queue \
    --priority high
```

## Esecuzione dei processi da un file di configurazione
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli-from-config"></a>

In alternativa, puoi creare un file di configurazione del processo che contenga tutti i parametri richiesti dal processo, quindi passarlo al comando `hyperpod start-job` utilizzando l’opzione --config-file. In questo caso:

1. Crea il file di configurazione del processo con i parametri richiesti. Fate riferimento al file di configurazione del lavoro nell' GitHub archivio SageMaker HyperPod CLI per un file di configurazione di [base](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-run-jobs-hyperpod-cli.html#sagemaker-hyperpod-eks-hyperpod-cli-from-config).

1. Avvia il processo utilizzando il file di configurazione come segue.

   ```
   hyperpod start-job --config-file /path/to/test_job.yaml
   ```

**Suggerimento**  
Per un elenco completo dei parametri del `hyperpod start-job` comando, consultate la sezione [Invio di un Job](https://github.com/aws/sagemaker-hyperpod-cli?tab=readme-ov-file#submitting-a-job) nel `README.md` repository SageMaker HyperPod GitHub CLI.

# Esecuzione dei processi con `kubectl`
<a name="sagemaker-hyperpod-eks-run-jobs-kubectl"></a>

**Nota**  
La ripresa automatica del job di addestramento richiede Kubeflow Training Operator versione `1.7.0`, `1.8.0` o `1.8.1`.

Tieni presente che Kubeflow Training Operator dovrebbe essere installato nei cluster con un grafico Helm. Per ulteriori informazioni, consulta [Installazione di pacchetti sul cluster Amazon EKS con Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md). Verifica che il piano di controllo (control-plane) di Kubeflow Training Operator sia configurato correttamente eseguendo questo comando.

```
kubectl get pods -n kubeflow
```

Questo restituisce un output simile al seguente.

```
NAME                                             READY   STATUS    RESTARTS   AGE
training-operator-658c68d697-46zmn               1/1     Running   0          90s
```

**Per inviare un job di addestramento**

Per eseguire un job di addestramento, prepara il file di configurazione del processo ed esegui il comando [https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply) come segue.

```
kubectl apply -f /path/to/training_job.yaml
```

**Per descrivere un job di addestramento**

Per recuperare i dettagli del processo inviato al cluster EKS, utilizza il comando seguente. Restituisce informazioni sul processo come l’ora di invio, l’ora di completamento, lo stato e i dettagli di configurazione.

```
kubectl get -o yaml training-job -n kubeflow
```

**Per arrestare un job di addestramento ed eliminare le risorse EKS**

Per arrestare un job di addestramento, utilizza kubectl delete. Di seguito è riportato un esempio di come arrestare il job di addestramento creato dal file di configurazione `pytorch_job_simple.yaml`.

```
kubectl delete -f /path/to/training_job.yaml 
```

Dovrebbe essere restituito l’output seguente.

```
pytorchjob.kubeflow.org "training-job" deleted
```

**Per abilitare la ripresa automatica del processo**

SageMaker HyperPod supporta la funzionalità di ripristino automatico dei lavori per i lavori Kubernetes, integrandosi con il piano di controllo Kubeflow Training Operator.

Assicurati che ci siano nodi sufficienti nel cluster che abbiano superato il controllo di integrità. SageMaker HyperPod Il taint `sagemaker.amazonaws.com/node-health-status` dei nodi deve essere impostato su `Schedulable`. Consigliamo di includere un selettore di nodi nel file YAML del processo per selezionare i nodi con la configurazione appropriata come descritto di seguito.

```
sagemaker.amazonaws.com/node-health-status: Schedulable
```

Il seguente frammento di codice è un esempio di come modificare una configurazione YAML di un PyTorch lavoro Kubeflow per abilitare la funzionalità di ripristino automatico del lavoro. È necessario aggiungere due annotazioni e impostare `restartPolicy` su `OnFailure` come segue.

```
apiVersion: "kubeflow.org/v1"
kind: PyTorchJob 
metadata:
    name: pytorch-simple
    namespace: kubeflow
    annotations: { // config for job auto resume
      sagemaker.amazonaws.com/enable-job-auto-resume: "true"
      sagemaker.amazonaws.com/job-max-retry-count: "2"
    }
spec:
  pytorchReplicaSpecs:
  ......
  Worker:
      replicas: 10
      restartPolicy: OnFailure
      template:
          spec:
              nodeSelector:
                  sagemaker.amazonaws.com/node-health-status: Schedulable
```

**Per controllare lo stato di ripresa automatica del processo**

Per controllare lo stato di ripresa automatica del processo, utilizza il comando seguente.

```
kubectl describe pytorchjob -n kubeflow <job-name>
```

A seconda dei modelli di errore, potrebbero essere riavviati due modelli del job di addestramento Kubeflow, come riportato di seguito.

**Modello 1**:

```
Start Time:    2024-07-11T05:53:10Z
Events:
  Type     Reason                   Age                    From                   Message
  ----     ------                   ----                   ----                   -------
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-worker-0
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-worker-1
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-master-0
  Warning  PyTorchJobRestarting     7m59s                  pytorchjob-controller  PyTorchJob pt-job-1 is restarting because 1 Master replica(s) failed.
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-worker-0
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-worker-1
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-master-0
  Warning  PyTorchJobRestarting     7m58s                  pytorchjob-controller  PyTorchJob pt-job-1 is restarting because 1 Worker replica(s) failed.
```

**Modello 2**: 

```
Events:
  Type    Reason                   Age    From                   Message
  ----    ------                   ----   ----                   -------
  Normal  SuccessfulCreatePod      19m    pytorchjob-controller  Created pod: pt-job-2-worker-0
  Normal  SuccessfulCreateService  19m    pytorchjob-controller  Created service: pt-job-2-worker-0
  Normal  SuccessfulCreatePod      19m    pytorchjob-controller  Created pod: pt-job-2-master-0
  Normal  SuccessfulCreateService  19m    pytorchjob-controller  Created service: pt-job-2-master-0
  Normal  SuccessfulCreatePod      4m48s  pytorchjob-controller  Created pod: pt-job-2-worker-0
  Normal  SuccessfulCreatePod      4m48s  pytorchjob-controller  Created pod: pt-job-2-master-0
```