

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

# Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod"></a>

SageMaker HyperPod ti aiuta a fornire cluster resilienti per l'esecuzione di carichi di lavoro di machine learning (ML) e lo sviluppo di state-of-the-art modelli come modelli di linguaggio di grandi dimensioni (LLMs), modelli di diffusione e modelli di base (). FMs Accelera lo sviluppo FMs eliminando gli oneri indifferenziati legati alla creazione e alla manutenzione di cluster di elaborazione su larga scala alimentati da migliaia di acceleratori come Trainium e NVIDIA A100 e H100 Graphical Processing Unit (). AWS GPUs In caso di guasto degli acceleratori, le funzionalità di resilienza delle istanze di SageMaker HyperPod Monitor the Cluster rilevano e sostituiscono automaticamente l'hardware difettoso in modo che tu possa concentrarti sull'esecuzione di carichi di lavoro ML.

Per iniziare, controlla[Prerequisiti per l'utilizzo SageMaker HyperPod](sagemaker-hyperpod-prerequisites.md), configura [AWS Identity and Access Management per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md) e scegli una delle seguenti opzioni di orchestrazione supportate da. SageMaker HyperPod

**Supporto Slurm in SageMaker HyperPod**

SageMaker HyperPod fornisce supporto per l'esecuzione di carichi di lavoro di machine learning su cluster resilienti mediante l'integrazione con Slurm, un gestore di carichi di lavoro open source. Il supporto di Slurm SageMaker HyperPod consente una perfetta orchestrazione del cluster tramite la configurazione del cluster Slurm, consentendo di configurare nodi head, login e worker sui SageMaker HyperPod cluster. Questa integrazione facilita anche la pianificazione dei processi basata su Slurm per l'esecuzione di carichi di lavoro ML sul cluster, nonché l'accesso diretto ai nodi del cluster per la pianificazione dei processi. Con il supporto per la configurazione HyperPod del ciclo di vita, puoi personalizzare l'ambiente di elaborazione dei cluster per soddisfare i tuoi requisiti specifici. Inoltre, sfruttando le librerie di formazione distribuite di Amazon SageMaker AI, puoi ottimizzare le prestazioni dei cluster sulle AWS risorse di elaborazione e di rete. Per ulteriori informazioni, consulta [Orchestrazione SageMaker HyperPod dei cluster con Slurm](sagemaker-hyperpod-slurm.md). 

**Supporto Amazon EKS in SageMaker HyperPod**

SageMaker HyperPod si integra inoltre con Amazon EKS per consentire la formazione su larga scala di modelli di base su cluster di elaborazione resilienti e di lunga durata. Ciò consente agli utenti amministratori del cluster di effettuare il provisioning dei HyperPod cluster e collegarli a un piano di controllo EKS, abilitando la gestione dinamica della capacità, l'accesso diretto alle istanze del cluster e le funzionalità di resilienza. Per i data scientist, il supporto di Amazon EKS HyperPod consente di eseguire carichi di lavoro containerizzati per la formazione dei modelli di base, l'inferenza sul cluster EKS e lo sfruttamento della funzionalità di ripristino automatico del lavoro per la formazione Kubeflow. PyTorch L'architettura prevede una mappatura 1 a 1 tra un cluster EKS (piano di controllo) e un HyperPod cluster (nodi di lavoro) all'interno di un VPC, fornendo una soluzione strettamente integrata per l'esecuzione di carichi di lavoro ML su larga scala. Per ulteriori informazioni, consulta [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**UltraServers con HyperPod**

HyperPod UltraServers offre potenza di calcolo AI integrando i superchip NVIDIA in un'infrastruttura coesa e ad alte prestazioni. Ciascuna NVL72 UltraServer combina 18 istanze con 72 istanze NVIDIA Blackwell GPUs interconnesse NVLink, consentendo inferenze più rapide e prestazioni di formazione più rapide rispetto alle istanze della generazione precedente. Questa architettura è particolarmente utile per le organizzazioni che lavorano con modelli di base composti da trilioni di parametri, poiché la memoria GPU unificata consente a interi modelli di rimanere all'interno di un unico dominio, eliminando i colli di bottiglia della rete tra nodi. NVLink HyperPod migliora questo vantaggio hardware con una pianificazione intelligente basata sulla topologia che ottimizza il posizionamento dei carichi di lavoro, la sostituzione automatica delle istanze per ridurre al minimo le interruzioni e opzioni di implementazione flessibili che supportano configurazioni di risorse dedicate e condivise. Per i team che si spingono oltre i limiti delle dimensioni e delle prestazioni dei modelli, questa integrazione fornisce la base computazionale necessaria per addestrare e implementare i modelli di IA più avanzati con un’efficienza senza precedenti.

SageMaker HyperPod ottimizza automaticamente il posizionamento delle istanze su. UltraServers Per impostazione predefinita, HyperPod assegna la priorità a tutte le istanze in una UltraServer prima di utilizzarne un'altra. Ad esempio, se desideri 14 istanze e ne hai 2 UltraServers nel tuo piano, l' SageMaker IA utilizza tutte le istanze della prima. UltraServer Se desideri 20 istanze, l' SageMaker IA utilizza tutte le 18 istanze nella prima UltraServer e poi ne utilizza altre 2 nella seconda.

## Regioni AWS supportato da SageMaker HyperPod
<a name="sagemaker-hyperpod-available-regions"></a>

SageMaker HyperPod è disponibile nelle seguenti versioni Regioni AWS. 
+ us-east-1
+ us-east-2
+ us-west-1
+ us-west-2
+ eu-central-1
+ eu-north-1
+ eu-west-1
+ eu-west-2
+ eu-south-2
+ ap-south-1
+ ap-southeast-1
+ ap-southeast-2
+ ap-southeast-3
+ ap-southeast-4
+ ap-northeast-1
+ sa-east-1

**Topics**
+ [Regioni AWS supportato da SageMaker HyperPod](#sagemaker-hyperpod-available-regions)
+ [SageMaker HyperPod Guida introduttiva di Amazon](sagemaker-hyperpod-quickstart.md)
+ [Prerequisiti per l'utilizzo SageMaker HyperPod](sagemaker-hyperpod-prerequisites.md)
+ [AWS Identity and Access Management per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md)
+ [AWS KMS key Crittografia gestita dal cliente per SageMaker HyperPod](smcluster-cmk.md)
+ [SageMaker HyperPod ricette](sagemaker-hyperpod-recipes.md)
+ [Orchestrazione SageMaker HyperPod dei cluster con Slurm](sagemaker-hyperpod-slurm.md)
+ [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md)
+ [Utilizzo della pianificazione basata sulla topologia in Amazon SageMaker HyperPod](sagemaker-hyperpod-topology.md)
+ [Implementazione di modelli su Amazon SageMaker HyperPod](sagemaker-hyperpod-model-deployment.md)
+ [HyperPod in Studio](sagemaker-hyperpod-studio.md)
+ [SageMaker HyperPod riferimenti](sagemaker-hyperpod-ref.md)
+ [Note di SageMaker HyperPod rilascio di Amazon](sagemaker-hyperpod-release-notes.md)
+ [SageMaker HyperPod AMI Amazon](sagemaker-hyperpod-release-ami.md)

# SageMaker HyperPod Guida introduttiva di Amazon
<a name="sagemaker-hyperpod-quickstart"></a>

Questa guida rapida ti guida nella creazione del tuo primo HyperPod cluster con orchestrazioni Slurm e Amazon EKS (EKS). Scegli l'orchestrazione più adatta alle esigenze della tua infrastruttura per iniziare. SageMaker HyperPod

**Topics**
+ [Crea un cluster orchestrato da SLURM SageMaker HyperPod](#sagemaker-hyperpod-quickstart-slurm)
+ [Crea un cluster orchestrato da EKS SageMaker HyperPod](#sagemaker-hyperpod-quickstart-eks)
+ [Invio di carichi di lavoro](#sagemaker-hyperpod-quickstart-workload)

## Crea un cluster orchestrato da SLURM SageMaker HyperPod
<a name="sagemaker-hyperpod-quickstart-slurm"></a>

Segui questi passaggi per creare il tuo primo SageMaker HyperPod cluster con l'orchestrazione Slurm.

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

1. Scegli **HyperPod Clusters** nel riquadro di navigazione a sinistra, quindi **Cluster Management**.

1. Nella pagina **SageMaker HyperPod Cluster, scegli **Crea HyperPod ** cluster**. 

1. Nel menu a discesa **Crea HyperPod cluster**, scegli **Orchestrated** by Slurm.

1. Nella pagina di creazione del cluster, scegli **Configurazione rapida**. Con questa opzione, puoi iniziare immediatamente con le impostazioni predefinite. SageMaker L'intelligenza artificiale creerà nuove risorse come VPC, sottoreti, gruppi di sicurezza, bucket Amazon S3, ruolo IAM e FSx for Lustre nel processo di creazione del cluster.

1. In **Impostazioni generali**, specifica un nome per il nuovo cluster. Dopo la creazione del cluster, non è più possibile modificarne il nome.

1. In **Gruppi di istanze**, scegli **Aggiungi gruppo**. Ogni gruppo di istanze può essere configurato in modo diverso ed è possibile creare un cluster eterogeneo composto da più gruppi di istanze con vari tipi di istanze. Per implementare un cluster, devi aggiungere almeno un gruppo di istanze. Puoi aggiungere un gruppo di istanze alla volta. Per creare più gruppi di istanze, ripeti il processo per ogni gruppo.

   Segui questa procedura per aggiungere un gruppo di istanze.

   1. In **Tipo di gruppo di istanze**, scegli un tipo per il tuo gruppo di istanze. Per questo avvio rapido, scegli **Controller (head)** per `my-controller-group`, **Login** per `my-login-group` e **Calcolo (worker)** per `worker-group-1`. 

   1. In **Nome**, specifica un nome per il gruppo di istanze. Per questo avvio rapido, crea tre gruppi di istanze denominati `my-controller-group`, `my-login-group` e `worker-group-1`.

   1.  In **Capacità dell’istanza**, scegli la capacità on demand o un piano di addestramento per riservare le tue risorse di calcolo.

   1. Per **Tipo di istanza**, scegli l’istanza per il gruppo di istanze. Per questo avvio rapido, seleziona `ml.c5.xlarge` per `my-controller-group`, `ml.m5.4xlarge` per `my-login-group` e `ml.trn1.32xlarge` per `worker-group-1`. 

      Assicurati di scegliere il tipo di istanza con quote sufficienti nel tuo account oppure richiedi quote aggiuntive seguendo le istruzioni riportate in [SageMaker HyperPod quote](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas).

   1. In **Quantità istanze**. specifica un numero intero che non sia maggiore della quota dell’istanza per l’utilizzo del cluster. Per questo avvio rapido, inserisci **1** in tutti e tre i gruppi.

   1. In **Zona di disponibilità di destinazione**, scegli la zona di disponibilità in cui allocare le istanze. La zona di disponibilità deve corrispondere alla posizione della capacità di calcolo accelerata.

   1. Per **Volume di archiviazione aggiuntivo per istanza (GB) (facoltativo)**, specifica un numero intero compreso tra 1 e 16.384 per impostare la dimensione di un volume Elastic Block Store (EBS) aggiuntivo in gigabyte (GB). Il volume EBS è collegato a ciascuna istanza del gruppo di istanze. Il percorso di montaggio predefinito per il volume EBS aggiuntivo è `/opt/sagemaker`. Dopo aver creato correttamente il cluster, è possibile accedere tramite SSH alle istanze del cluster (nodi) e verificare che il volume EBS sia montato correttamente eseguendo il comando `df -h`. Il collegamento di un volume EBS aggiuntivo fornisce un’archiviazione stabile, fuori istanza e con persistenza indipendente, come descritto nella sezione [Amazon EBS volumes](https://docs.aws.amazon.com//ebs/latest/userguide/ebs-volumes.html) in *Amazon Elastic Block Store User Guide*.

   1. Scegli **Aggiungi gruppo di istanze**.

1.  In **Impostazioni predefinite di configurazione rapida**, rivedi le impostazioni predefinite. Questa sezione elenca tutte le impostazioni predefinite per la creazione del cluster, incluse tutte le nuove AWS risorse che verranno create durante il processo di creazione del cluster.

1. Seleziona **Invia**.

Per ulteriori informazioni, consulta [Guida introduttiva all' SageMaker HyperPod utilizzo della console SageMaker AI](smcluster-getting-started-slurm-console.md).

## Crea un cluster orchestrato da EKS SageMaker HyperPod
<a name="sagemaker-hyperpod-quickstart-eks"></a>

Segui questi passaggi per creare il tuo primo SageMaker HyperPod cluster con l'orchestrazione di Amazon EKS.

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

1. Scegli **HyperPod Clusters** nel riquadro di navigazione a sinistra, quindi **Cluster Management**.

1. Nella pagina **SageMaker HyperPod Cluster, scegli **Crea HyperPod ** cluster**. 

1. Nel menu a discesa **Crea HyperPod cluster**, scegli **Orchestrated by** Amazon EKS.

1. Nella pagina di creazione del cluster, scegli **Configurazione rapida**. Con questa opzione, puoi iniziare immediatamente con le impostazioni predefinite. SageMaker L'intelligenza artificiale creerà nuove risorse come VPC, sottoreti, gruppi di sicurezza, bucket Amazon S3, ruolo IAM e FSx for Lustre nel processo di creazione del cluster.

1. In **Impostazioni generali**, specifica un nome per il nuovo cluster. Dopo la creazione del cluster, non è più possibile modificarne il nome. 

1. In **Gruppi di istanze**, scegli **Aggiungi gruppo**. Ogni gruppo di istanze può essere configurato in modo diverso ed è possibile creare un cluster eterogeneo composto da più gruppi di istanze con vari tipi di istanze. Per implementare un cluster, devi aggiungere almeno un gruppo di istanze. Puoi aggiungere un gruppo di istanze alla volta. Per creare più gruppi di istanze, ripeti il processo per ogni gruppo.

   Segui questa procedura per aggiungere un gruppo di istanze.

   1. In **Tipo di gruppo di istanze**, scegli **Standard** o **Gruppo di istanze limitato (RIG)**. Di solito si sceglie **Standard** perché fornisce un ambiente di calcolo generico senza limitazioni di sicurezza aggiuntive. **Gruppo di istanze limitato (RIG)** è un ambiente specializzato per la personalizzazione di modelli di fondazione come Amazon Nova. Per ulteriori informazioni sulla configurazione di RIG per la personalizzazione del modello Amazon Nova, consulta la personalizzazione di Amazon Nova nella guida per SageMaker HyperPod l'utente di [Amazon Nova 1.0 o nella guida per l'utente](https://docs.aws.amazon.com//nova/latest/userguide/nova-hp.html) di [Amazon Nova 2.0](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp.html).

   1. In **Nome**, specifica un nome per il gruppo di istanze.

   1.  In **Capacità dell’istanza**, scegli la capacità on demand o un piano di addestramento per riservare le tue risorse di calcolo.

   1. Per **Tipo di istanza**, scegli l’istanza per il gruppo di istanze. Assicurati di scegliere il tipo di istanza con quote sufficienti nel tuo account oppure richiedi quote aggiuntive seguendo le istruzioni riportate in [SageMaker HyperPod quote](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas).

   1. In **Quantità istanze**. specifica un numero intero che non sia maggiore della quota dell’istanza per l’utilizzo del cluster. Per questo avvio rapido, inserisci **1** in tutti e tre i gruppi.

   1. In **Zona di disponibilità di destinazione**, scegli la zona di disponibilità in cui allocare le istanze. La zona di disponibilità deve corrispondere alla posizione della capacità di calcolo accelerata.

   1. Per **Volume di archiviazione aggiuntivo per istanza (GB) (facoltativo)**, specifica un numero intero compreso tra 1 e 16.384 per impostare la dimensione di un volume Elastic Block Store (EBS) aggiuntivo in gigabyte (GB). Il volume EBS è collegato a ciascuna istanza del gruppo di istanze. Il percorso di montaggio predefinito per il volume EBS aggiuntivo è `/opt/sagemaker`. Dopo aver creato correttamente il cluster, è possibile accedere tramite SSH alle istanze del cluster (nodi) e verificare che il volume EBS sia montato correttamente eseguendo il comando `df -h`. Il collegamento di un volume EBS aggiuntivo fornisce un’archiviazione stabile, fuori istanza e con persistenza indipendente, come descritto nella sezione [Amazon EBS volumes](https://docs.aws.amazon.com//ebs/latest/userguide/ebs-volumes.html) in *Amazon Elastic Block Store User Guide*.

   1. Per **Controlli approfonditi dell’integrità delle istanze**, scegli un’opzione. I controlli dell’integrità approfonditi monitorano l’integrità dell’istanza durante la creazione e dopo gli aggiornamenti software, ripristinando automaticamente le istanze difettose con riavvii o sostituzioni, se abilitati.

   1. Scegli **Aggiungi gruppo di istanze**.

1.  In **Impostazioni predefinite di configurazione rapida**, rivedi le impostazioni predefinite. Questa sezione elenca tutte le impostazioni predefinite per la creazione del cluster, incluse tutte le nuove AWS risorse che verranno create durante il processo di creazione del cluster.

1. Seleziona **Invia**.

Per ulteriori informazioni, consulta [Creazione di un SageMaker HyperPod cluster con l'orchestrazione di Amazon EKS](sagemaker-hyperpod-eks-operate-console-ui-create-cluster.md).

## Invio di carichi di lavoro
<a name="sagemaker-hyperpod-quickstart-workload"></a>

Segui questi tutorial del workshop per inviare carichi di lavoro di esempio.
+ [Amazon SageMaker HyperPod per Slurm](https://catalog.workshops.aws/sagemaker-hyperpod/en-US)
+ [Amazon SageMaker HyperPod per Amazon EKS](https://catalog.workshops.aws/sagemaker-hyperpod-eks/en-US)

# Prerequisiti per l'utilizzo SageMaker HyperPod
<a name="sagemaker-hyperpod-prerequisites"></a>

Le seguenti sezioni illustrano i prerequisiti prima di iniziare. SageMaker HyperPod

**Topics**
+ [SageMaker HyperPod quote](#sagemaker-hyperpod-prerequisites-quotas)
+ [Configurazione SageMaker HyperPod con un Amazon VPC personalizzato](#sagemaker-hyperpod-prerequisites-optional-vpc)
+ [Configurazione di cluster su più cluster SageMaker HyperPod AZs](#sagemaker-hyperpod-prerequisites-multiple-availability-zones)
+ [Configurazione AWS Systems Manager ed esecuzione come per il controllo degli accessi degli utenti del cluster](#sagemaker-hyperpod-prerequisites-ssm)
+ [(Facoltativo) Configurazione SageMaker HyperPod con Amazon FSx for Lustre](#sagemaker-hyperpod-prerequisites-optional-fsx)

## SageMaker HyperPod quote
<a name="sagemaker-hyperpod-prerequisites-quotas"></a>

Puoi creare SageMaker HyperPod cluster in base alle quote di *utilizzo dei cluster* nel tuo account. AWS 

**Importante**  
Per ulteriori informazioni sui SageMaker HyperPod prezzi, consulta la pagina [SageMaker HyperPod prezzi](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-pricing) e [ SageMaker i prezzi di Amazon](https://aws.amazon.com/sagemaker/pricing/).

### Visualizza le SageMaker HyperPod quote Amazon utilizzando il Console di gestione AWS
<a name="sagemaker-hyperpod-prerequisites-quotas-view"></a>

Cerca i valori predefiniti e applicati di una *quota*, nota anche come *limite*, per *l'utilizzo del cluster*, utilizzata per SageMaker HyperPod.

1. Apri la [Quote di servizio console](https://console.aws.amazon.com/servicequotas/).

1. Nel pannello di navigazione a sinistra, scegli **Servizi AWS **.

1. Dall'elenco dei **AWS servizi**, cerca e seleziona **Amazon SageMaker AI**.

1. Nell'elenco delle **quote di servizio**, puoi vedere il nome della quota di servizio, il valore applicato (se disponibile), la quota AWS predefinita e se il valore della quota è regolabile. 

1. Nella barra di ricerca, digita **utilizzo del cluster**. Vengono mostrate le quote per l’utilizzo del cluster, le quote applicate e le quote predefinite.

**Elenco delle quote di servizio comuni per creare un HyperPod cluster e dei relativi prerequisiti**

Potresti voler verificare se hai richiesto aumenti del limite delle quote di servizio per le seguenti quote per creare un nuovo HyperPod cluster insieme ai prerequisiti nella console AI. SageMaker Vai alla console **Service Quota** e cerca i seguenti termini.


****  

| No | Nome della quota | Termine di ricerca | Description | 
| --- | --- | --- | --- | 
| 1 | Numero massimo di istanze consentite per cluster SageMaker HyperPod | In SageMaker AI cerca «Numero massimo di istanze consentite per SageMaker HyperPod cluster» | Il valore della quota a livello di account deve essere superiore al numero di istanze che desideri aggiungere al cluster | 
| 2 | Dimensione massima del volume EBS in GB per un'istanza di cluster SageMaker HyperPod  |  In SageMaker AI cerca «Dimensione massima del volume EBS in GB per un'istanza HyperPod cluster»   |  Il valore della quota a livello di account deve essere superiore al volume EBS che desideri aggiungere al cluster  | 
| 3 | Numero totale di istanze consentite tra i cluster SageMaker HyperPod |  In SageMaker AI cerca «Numero totale di istanze consentite tra i cluster» SageMaker HyperPod    | Il valore della quota a livello di account deve essere superiore al totale delle istanze che desideri aggiungere in tutti i cluster del tuo account in forma aggregata | 
| 4 |  Quote di istanze   |  In SageMaker AI, cerca «ml». «<instance\$1type>per l'utilizzo del cluster», ad esempio: ml.p5.48xlarge per l'utilizzo del cluster  | Il valore della quota a livello di account per il particolare tipo di istanza (ad esempio: ml.p5.48xlarge) deve essere maggiore del numero di istanze da aggiungere a tutti i cluster dell'account in forma aggregata. | 
| 5 |  VPCs per regione  | In Amazon Virtual Private Cloud (Amazon VPC) cerca «VPCsper regione» | Il valore della quota a livello di account deve essere sufficiente per creare un nuovo VPC nell'account durante la configurazione del cluster. HyperPod Verifica se hai già esaurito questo limite di quota controllando la console VPC. Questo aumento della quota è necessario solo se intendi creare un nuovo VPC tramite l'opzione di configurazione del cluster rapida o personalizzata nella SageMaker HyperPod console. | 
| 6 |  Gateway Internet per regione  |  In Amazon Virtual Private Cloud (Amazon VPC) cerca «Gateway Internet per regione»  | Il valore della quota a livello di account deve essere sufficiente per creare un gateway Internet aggiuntivo nell'account durante la configurazione del cluster. SageMaker HyperPod Questo aumento della quota è necessario solo se intendi creare un nuovo VPC tramite l'opzione di configurazione del cluster rapida o personalizzata nella SageMaker HyperPod console.  | 
| 7 | Interfacce di rete per regione | In Amazon Virtual Private Cloud (Amazon VPC) cerca «Interfacce di rete per regione» |  Il valore della quota a livello di account deve contenere un numero sufficiente di interfacce di rete nell'account al momento della configurazione del cluster. HyperPod   | 
| 8 | Elastico EC2-VPC IPs | In Amazon Elastic Compute Cloud (Amazon EC2), cerca «EC2-VPC Elastic» IPs | Il valore della quota a livello di account deve essere sufficiente per creare un nuovo VPC nell'account durante la configurazione del cluster. HyperPod Verifica se hai già esaurito questo limite di quota controllando la console VPC. Questo aumento della quota è necessario solo se intendi creare un nuovo VPC tramite l'opzione di configurazione del cluster rapida o personalizzata nella SageMaker HyperPod console. | 

### Richiedi un aumento della SageMaker HyperPod quota Amazon utilizzando il Console di gestione AWS
<a name="sagemaker-hyperpod-prerequisites-quotas-increase"></a>

Aumenta le quote a livello di account o di risorsa.

1. Per aumentare la quota delle istanze per *l’utilizzo del cluster*, seleziona la quota da aumentare.

1. Se la quota è regolabile, puoi richiedere un aumento della quota a livello di account o di risorsa in base al valore elencato nella colonna **Regolabilità**.

1. In **Aumenta il valore della quota**, inserisci il nuovo valore. Questo valore deve essere maggiore di quello corrente.

1. Scegli **Richiedi**.

1. Per visualizzare eventuali richieste in sospeso o risolte di recente nella console, vai alla scheda **Cronologia richieste** dalla pagina dei dettagli del servizio o scegli **Dashboard** dal riquadro di navigazione. Per le richieste in sospeso, scegliere lo stato della richiesta per aprire la ricevuta della richiesta. Lo stato iniziale di una richiesta è **Pending** (In attesa). Dopo la modifica dello stato in **Quota richiesta**, vedrai il numero del caso con Supporto AWS. Scegli il numero del caso per aprire il ticket della tua richiesta.

Per ulteriori informazioni generali su come richiedere un aumento della quota, consulta [Requesting a Quota Increase](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html) in *AWS Service Quotas User Guide*.

## Configurazione SageMaker HyperPod con un Amazon VPC personalizzato
<a name="sagemaker-hyperpod-prerequisites-optional-vpc"></a>

Per configurare un SageMaker HyperPod cluster con un Amazon VPC personalizzato, esamina i seguenti prerequisiti.

**Nota**  
La configurazione VPC è obbligatoria per l’orchestrazione Amazon EKS. Per l’orchestrazione Slurm, la configurazione VPC è facoltativa.
+  Convalida la capacità dell'[Elastic Network Interface](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) (ENI) Account AWS prima di creare un SageMaker HyperPod cluster con un VPC personalizzato. Il limite ENI è controllato da Amazon EC2 e varia a seconda. Regione AWS SageMaker HyperPod non può richiedere automaticamente aumenti delle quote. 

**Per verificare la tua attuale quota ENI:**

  1. Apri la [Quote di servizio console](https://console.aws.amazon.com/servicequotas/).

  1. **Nella sezione **Gestisci quote**, utilizza l'elenco a discesa ** AWS Servizi** per cercare VPC.** 

  1. Scegli di visualizzare le quote di **Amazon Virtual Private Cloud (Amazon VPC)**. 

  1. Cerca la Service Quota **Interfacce di rete per Regione** o il **Codice di quota** `L-DF5E4CA3`.

  Se l'attuale limite ENI non è sufficiente per le esigenze del SageMaker HyperPod cluster, richiedi un aumento della quota. Assicurarsi preventivamente una capacità ENI adeguata aiuta a prevenire gli errori di implementazione dei cluster.
+ Quando utilizzi un VPC personalizzato per connettere un SageMaker HyperPod cluster con AWS risorse, fornisci il nome, l'ID Regione AWS, la sottorete e il gruppo di sicurezza VPC durante la IDs creazione del cluster. IDs 
**Nota**  
Quando Amazon VPC e sottoreti sono supportati IPv6 nel cluster o a livello di gruppo [https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_CreateCluster.html#sagemaker-CreateCluster-request-VpcConfig](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_CreateCluster.html#sagemaker-CreateCluster-request-VpcConfig)di istanze utilizzando l'`OverrideVPCConfig`attributo of [https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_ClusterInstanceGroupSpecification.html](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_ClusterInstanceGroupSpecification.html), le comunicazioni di rete differiscono in base alla piattaforma di orchestrazione del cluster:  
I cluster orchestrati da SLURM configurano automaticamente i nodi con due indirizzi e, permettendo comunicazioni di rete immediate. IPv6 IPv4 IPv6 Non è richiesta alcuna configurazione aggiuntiva oltre alle impostazioni. `VPCConfig` IPv6 
Nei cluster orchestrati da EKS, i nodi ricevono l'indirizzamento dual-stack, ma i pod possono essere utilizzati solo quando IPv6 il cluster Amazon EKS è abilitato in modo esplicito. IPv6 È necessario creare un nuovo cluster IPv6 Amazon EKS: i cluster IPv4 Amazon EKS esistenti non possono essere convertiti in IPv6. Per informazioni sulla distribuzione di un cluster IPv6 Amazon EKS, consulta [Amazon EKS IPv6 Cluster Deployment](https://docs.aws.amazon.com/eks/latest/userguide/deploy-ipv6-cluster.html#_deploy_an_ipv6_cluster_with_eksctl).
Risorse aggiuntive per la IPv6 configurazione:  
Per informazioni sull'aggiunta del IPv6 supporto al tuo VPC, consulta [IPv6 Support for VPC](https://docs.aws.amazon.com//vpc/latest/userguide/vpc-migrate-ipv6.html).
Per informazioni sulla creazione di un nuovo VPC IPv6 compatibile, [Amazon VPC consulta](https://docs.aws.amazon.com//vpc/latest/userguide/create-vpc.html) la Guida alla creazione.
Per configurare SageMaker HyperPod con un Amazon VPC personalizzato, consulta Configurazione [Amazon VPC](https://docs.aws.amazon.com//sagemaker/latest/dg/sagemaker-hyperpod-prerequisites.html#sagemaker-hyperpod-prerequisites-optional-vpc) personalizzata per. SageMaker HyperPod
+ Assicurati che tutte le risorse siano distribuite nello stesso ambiente del cluster Regione AWS . SageMaker HyperPod Configura le regole dei gruppi di sicurezza per consentire la comunicazione tra le risorse all’interno del VPC. Ad esempio, quando crei un VPC in `us-west-2`, alloca le sottoreti su una o più zone di disponibilità (ad esempio `us-west-2a` o `us-west-2b`) e crea un gruppo di sicurezza che consenta il traffico tra i gruppi.
**Nota**  
SageMaker HyperPod supporta l'implementazione di zone di disponibilità multiple. Per ulteriori informazioni, consulta [Configurazione di cluster su più cluster SageMaker HyperPod AZs](#sagemaker-hyperpod-prerequisites-multiple-availability-zones).
+ Stabilisci la connettività Amazon Simple Storage Service (Amazon S3) per i SageMaker HyperPod gruppi di istanze distribuiti tramite VPC creando un endpoint VPC. Senza accesso a Internet, i gruppi di istanze non possono archiviare o recuperare gli script del ciclo di vita, i dati di addestramento o gli artefatti del modello. Ti consigliamo di creare una policy IAM personalizzata che limiti l’accesso dei bucket Amazon S3 al VPC privato. Per ulteriori informazioni, consulta [Endpoints for Amazon S3](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints-s3.html) in *AWS PrivateLink Guide*.
+ Per HyperPod i cluster che utilizzano istanze abilitate per Elastic Fabric Adapter (EFA), configura il gruppo di sicurezza per consentire tutto il traffico in entrata e in uscita da e verso il gruppo di sicurezza stesso. In particolare, evita di utilizzare `0.0.0.0/0` per le regole in uscita, perché potrebbe causare errori nei controlli dell’integrità EFA. Per ulteriori informazioni sulle linee guida per la preparazione dei gruppi di sicurezza EFA, consulta [Step 1: Prepare an EFA-enabled security group](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security) in *Amazon EC2 User Guide*.
+ Valuta attentamente la dimensione del blocco CIDR (Classless Inter-Domain Routing) della sottorete prima di creare cluster. HyperPod 
  + La dimensione dell’intervallo CIDR della sottorete non può essere modificata dopo la creazione. Questo aspetto è particolarmente importante quando utilizzi istanze accelerate di grandi dimensioni come P5. Senza una dimensione del blocco sufficiente, in caso di aumento verticale dovrai ricreare i cluster.
  + Quando scegli la dimensione dell’intervallo CIDR della sottorete appropriata, considera questi fattori: i tipi di istanze, il numero previsto di istanze e il numero di indirizzi IP utilizzati da ciascuna istanza.
  + Per i cluster orchestrati da Slurm, ogni istanza P5 può creare 32 indirizzi IP (uno per ogni scheda di rete). Per i cluster orchestrati da EKS, ogni istanza P5 può creare 81 indirizzi IP (50 dalla scheda primaria più uno da ciascuna delle restanti 31 schede). Per specifiche dettagliate, consulta [Network specifications ](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html#ac_network) in *Amazon EC2 Instance Types Developer Guide*.
  + [Per esempi di CloudFormation modelli che specificano la dimensione del blocco CIDR della sottorete, consulta il modello [HyperPod Slurm e il modello HyperPod ](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/sagemaker-hyperpod.yaml)[Amazon EKS](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/7.sagemaker-hyperpod-eks/cfn-templates/nested-stacks/private-subnet-stack.yaml) nel repository. awsome-distributed-training ](https://github.com/aws-samples/awsome-distributed-training/tree/main)

## Configurazione di cluster su più cluster SageMaker HyperPod AZs
<a name="sagemaker-hyperpod-prerequisites-multiple-availability-zones"></a>

È possibile configurare SageMaker HyperPod i cluster su più zone di disponibilità (AZs) per migliorare l'affidabilità e la disponibilità.

**Nota**  
Il traffico Elastic Fabric Adapter (EFA) non può attraversare o. AZs VPCs Questo non si applica al normale traffico IP dal dispositivo ENA di un'interfaccia EFA. Per ulteriori informazioni, consulta [EFA limitations](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html).
+ **Comportamento predefinito**

  HyperPod distribuisce tutte le istanze del cluster in un'unica zona di disponibilità. La configurazione VPC determina l’AZ di implementazione:
  + Per i cluster orchestrati da Slurm, la configurazione VPC è facoltativa. Quando non viene fornita alcuna configurazione VPC, l' HyperPod impostazione predefinita è una sottorete dal VPC della piattaforma. 
  + Per i cluster orchestrati da EKS, la configurazione VPC è obbligatoria.
  + Sia per gli orchestratori Slurm che EKS, quando [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html)viene fornita, seleziona una sottorete dall'elenco delle sottoreti del fornitore. HyperPod `VpcConfig` Tutti i gruppi di istanze ereditano la AZ della sottorete. 
**Nota**  
Una volta creato un cluster, non è possibile modificarne le impostazioni `VpcConfig`.

  Per ulteriori informazioni sulla configurazione VPCs per i cluster, vedere la sezione precedente,. HyperPod [Configurazione SageMaker HyperPod con un Amazon VPC personalizzato](#sagemaker-hyperpod-prerequisites-optional-vpc)
+ **Configurazione Multi-AZ**

  È possibile configurare il HyperPod cluster su più gruppi AZs durante la creazione di un cluster o l'aggiunta di un nuovo gruppo di istanze a un cluster esistente. Per configurare le implementazioni Multi-AZ, puoi sostituire le impostazioni VPC predefinite del cluster specificando sottoreti e gruppi di sicurezza diversi, possibilmente in diverse zone di disponibilità, per singoli gruppi di istanze all’interno del cluster. 

  SageMaker HyperPod Gli utenti dell'API possono utilizzare la `OverrideVpcConfig` proprietà all'interno di [ClusterInstanceGroupSpecification](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ClusterInstanceGroupSpecification.html)quando lavorano con [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)o [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html) APIs.

  Il campo `OverrideVpcConfig`:
  + Non può essere modificato dopo la creazione del gruppo di istanze.
  + È facoltativo. Se non è specificato, viene utilizzato il livello del cluster [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html) come impostazione predefinita.
  + Per i cluster orchestrati da Slurm, può essere specificato solo quando viene fornito il livello del cluster `VpcConfig`. Se non è specificato alcun valore `VpcConfig` a livello del cluster, `OverrideVpcConfig` non può essere utilizzato per alcun gruppo di istanze.
  + Contiene due campi obbligatori:
    + `Subnets`- accetta tra 1 e 16 sottoreti IDs
    + `SecurityGroupIds`- accetta tra 1 e 5 gruppi di sicurezza IDs

  Per ulteriori informazioni sulla creazione o l'aggiornamento di un SageMaker HyperPod cluster utilizzando l'interfaccia utente della SageMaker HyperPod console o il AWS CLI:
  + [Orchestrazione Slurm: vedere Operazione dei cluster orchestrati da Slurm. HyperPod](sagemaker-hyperpod-operate-slurm.md)
  + Orchestrazione EKS. [ HyperPodVedi Cluster operativi orchestrati](sagemaker-hyperpod-eks-operate.md) da EKS.

**Nota**  
Quando esegui carichi di lavoro su più carichi di lavoro AZs, tieni presente che la comunicazione di rete tra di loro introduce una latenza aggiuntiva. AZs Considera questo fattore quando progetti applicazioni sensibili alla latenza.

## Configurazione AWS Systems Manager ed esecuzione come per il controllo degli accessi degli utenti del cluster
<a name="sagemaker-hyperpod-prerequisites-ssm"></a>

[SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami)viene fornito con [AWS Systems Manager](https://aws.amazon.com/systems-manager/)(SSM) pronto all'uso per aiutarti a gestire l'accesso ai gruppi di istanze SageMaker HyperPod del cluster. Questa sezione descrive come creare utenti del sistema operativo (OS) nei SageMaker HyperPod cluster e associarli a utenti e ruoli IAM. Questa opzione è utile per autenticare le sessioni SSM utilizzando le credenziali dell’account utente del sistema operativo.

**Nota**  
La concessione agli utenti dell'accesso ai nodi HyperPod del cluster consente loro di installare e utilizzare software gestito dagli utenti sui nodi. Assicurati di rispettare il principio delle autorizzazioni con privilegio minimo per gli utenti.

### Attivazione di RunAs nel tuo account AWS
<a name="sagemaker-hyperpod-prerequisites-ssm-enable-runas"></a>

In qualità di amministratore AWS dell'account o amministratore del cloud, puoi gestire l'accesso ai SageMaker HyperPod cluster a livello di ruolo o utente IAM utilizzando la [funzionalità Run As di SSM](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-preferences-run-as.html). Con questa funzionalità puoi avviare ogni sessione SSM utilizzando l’utente del sistema operativo associato al ruolo o all’utente IAM.

Per abilitare RunAs nel tuo AWS account, segui la procedura descritta in [Attivare il supporto RunAs per i nodi gestiti Linux e macOS](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-preferences-run-as.html). Se hai già creato utenti del sistema operativo nel tuo cluster, assicurati di associarli a ruoli o utenti IAM taggandoli come indicato nell’**Opzione 2** della Fase 5 in **To turn on Run As support for Linux and macOS managed nodes**.

## (Facoltativo) Configurazione SageMaker HyperPod con Amazon FSx for Lustre
<a name="sagemaker-hyperpod-prerequisites-optional-fsx"></a>

Per iniziare a utilizzare SageMaker HyperPod e mappare i percorsi di dati tra il cluster e il tuo ﬁle system FSx for Lustre, seleziona uno dei formati supportati da. Regioni AWS SageMaker HyperPod Dopo aver scelto quella Regione AWS che preferite, dovreste anche determinare quale zona di disponibilità (AZ) utilizzare. 

Se si utilizzano nodi di SageMaker HyperPod elaborazione AZs diversi da quelli in AZs cui è configurato il sistema ﬁle FSx for Lustre all'interno dello stesso Regione AWS, è possibile che si verifichino problemi di comunicazione e di rete. Ti consigliamo di utilizzare la stessa AZ fisica utilizzata per l'account di SageMaker HyperPod servizio per evitare qualsiasi traffico inter-AZ tra SageMaker HyperPod i cluster e il tuo sistema ﬁle for Lustre. FSx Inoltre, assicurati che sia configurato il tuo VPC. Se desideri utilizzare Amazon FSx come file system principale per lo storage, devi configurare SageMaker HyperPod i cluster con il tuo VPC.

# AWS Identity and Access Management per SageMaker HyperPod
<a name="sagemaker-hyperpod-prerequisites-iam"></a>

AWS Identity and Access Management (IAM) è un AWS servizio che aiuta un amministratore a controllare in modo sicuro l'accesso alle AWS risorse. Gli amministratori IAM controllano chi è *autenticato* (accesso effettuato) e *autorizzato* (dispone di autorizzazioni) a utilizzare risorse Amazon EKS. IAM è un AWS servizio che puoi utilizzare senza costi aggiuntivi.

**Importante**  
Le politiche IAM personalizzate che consentono ad Amazon SageMaker Studio o Amazon SageMaker Studio Classic di creare SageMaker risorse Amazon devono inoltre concedere le autorizzazioni per aggiungere tag a tali risorse. L’autorizzazione per aggiungere tag alle risorse è necessaria perché Studio e Studio Classic applicano automaticamente tag a tutte le risorse che creano. Se una policy IAM consente a Studio e Studio Classic di creare risorse ma non consente l'etichettatura, possono verificarsi errori AccessDenied "" durante il tentativo di creare risorse. Per ulteriori informazioni, consulta [Fornisci le autorizzazioni per etichettare SageMaker le risorse AI](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS politiche gestite per Amazon SageMaker AI](security-iam-awsmanpol.md)che danno i permessi per creare SageMaker risorse includono già le autorizzazioni per aggiungere tag durante la creazione di tali risorse.

Supponiamo che vi siano due livelli principali di SageMaker HyperPod utenti: utenti *amministratori del cluster e utenti* di *data scientist*.
+ **Utenti amministratori del cluster**: sono responsabili della creazione e della gestione dei SageMaker HyperPod cluster. Ciò include la configurazione dei HyperPod cluster e la gestione dell'accesso degli utenti ad essi.
  + Crea e configura SageMaker HyperPod cluster con Slurm o Amazon EKS.
  + Crea e configura ruoli IAM per gli utenti dei data scientist e HyperPod le risorse del cluster.
  + Per l' SageMaker HyperPod orchestrazione con Amazon EKS, crea e configura [voci di accesso EKS](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html), [controllo degli accessi basato sui ruoli (RBAC)](sagemaker-hyperpod-eks-setup-rbac.md) e Pod Identity per soddisfare i casi d'uso della scienza dei dati.
+ **Utenti Data Scientist**: si occupano dell’addestramento dei modelli di ML. Usano l'orchestrator open source o la CLI per inviare e gestire SageMaker HyperPod i lavori di formazione.
  + Assumi e utilizza il ruolo IAM fornito dagli utenti amministratori del cluster.
  + Interagisci con l'orchestrator open source CLIs supportato da SageMaker HyperPod (Slurm o Kubernetes) o la SageMaker HyperPod CLI per verificare la capacità dei cluster, connetterti al cluster e inviare carichi di lavoro.

Configura i ruoli IAM per gli amministratori dei cluster associando le autorizzazioni o le politiche corrette per gestire i cluster. SageMaker HyperPod Gli amministratori dei cluster devono inoltre creare ruoli IAM per fornire SageMaker HyperPod le risorse necessarie all'esecuzione e alla comunicazione con AWS le risorse necessarie, come Amazon S3 AWS Systems Manager , CloudWatch Amazon e (SSM). Infine, l'amministratore dell' AWS account o gli amministratori del cluster devono concedere agli scienziati le autorizzazioni per accedere ai cluster ed eseguire carichi di lavoro ML. SageMaker HyperPod 

A seconda dell’orchestratore scelto, le autorizzazioni necessarie per l’amministratore del cluster e i Data Scientist possono variare. Puoi anche controllare l’ambito delle autorizzazioni per varie azioni nei ruoli utilizzando le chiavi di condizione per ogni servizio. Utilizza i seguenti riferimenti di autorizzazione ai servizi per aggiungere un ambito dettagliato per i servizi correlati a. SageMaker HyperPod
+ [Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html)
+ [Amazon Elastic Container Registry](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerregistry.html) (per l'orchestrazione dei SageMaker HyperPod cluster con Amazon EKS)
+ [Amazon Elastic Kubernetes](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html) Service (per l'orchestrazione dei SageMaker HyperPod cluster con Amazon EKS)
+ [Amazon FSx](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonfsx.html)
+ [AWS IAM Identity Center (successore di Single Sign-On) AWS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiamidentitycentersuccessortoawssinglesign-on.html)
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html)
+ [Amazon Simple Storage Service](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsagemaker.html)
+ [AWS Systems Manager](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssystemsmanager.html)

**Topics**
+ [Autorizzazioni IAM per la creazione di cluster](#sagemaker-hyperpod-prerequisites-iam-cluster-creation)
+ [Utenti IAM per l’amministratore del cluster](#sagemaker-hyperpod-prerequisites-iam-cluster-admin)
+ [Utenti IAM per Data Scientist](#sagemaker-hyperpod-prerequisites-iam-cluster-user)
+ [Ruolo IAM per SageMaker HyperPod](#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod)

## Autorizzazioni IAM per la creazione di cluster
<a name="sagemaker-hyperpod-prerequisites-iam-cluster-creation"></a>

La creazione di HyperPod cluster richiede le autorizzazioni IAM descritte nel seguente esempio di policy. Se Account AWS disponi [https://docs.aws.amazon.com//aws-managed-policy/latest/reference/AdministratorAccess.html](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/AdministratorAccess.html)delle autorizzazioni, queste vengono concesse per impostazione predefinita.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreateCluster",
                "sagemaker:DeleteCluster",
                "sagemaker:UpdateCluster"
            ],
            "Resource": "arn:aws:sagemaker:*:*:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:AddTags"
            ],
            "Resource": "arn:aws:sagemaker:*:*:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:ListTags",
                "sagemaker:ListClusters",
                "sagemaker:ListClusterNodes",
                "sagemaker:ListComputeQuotas",
                "sagemaker:ListTrainingPlans",
                "sagemaker:DescribeCluster",
                "sagemaker:DescribeClusterNode"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:UpdateStack",
                "cloudformation:DeleteStack",
                "cloudformation:ContinueUpdateRollback",
                "cloudformation:SetStackPolicy",
                "cloudformation:ValidateTemplate",
                "cloudformation:DescribeStacks",
                "cloudformation:DescribeStackEvents",
                "cloudformation:Get*",
                "cloudformation:List*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::*:role/sagemaker-*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "sagemaker.amazonaws.com",
                        "eks.amazonaws.com",
                        "lambda.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole",
                "iam:GetRole"
            ],
            "Resource": "arn:aws:iam::*:role/*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "sagemaker.amazonaws.com",
                        "eks.amazonaws.com",
                        "lambda.amazonaws.com",
                        "cloudformation.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Sid": "AmazonVPCFullAccess",
            "Effect": "Allow",
            "Action": [
                "ec2:AcceptVpcPeeringConnection",
                "ec2:AcceptVpcEndpointConnections",
                "ec2:AllocateAddress",
                "ec2:AssignIpv6Addresses",
                "ec2:AssignPrivateIpAddresses",
                "ec2:AssociateAddress",
                "ec2:AssociateDhcpOptions",
                "ec2:AssociateRouteTable",
                "ec2:AssociateSecurityGroupVpc",
                "ec2:AssociateSubnetCidrBlock",
                "ec2:AssociateVpcCidrBlock",
                "ec2:AttachClassicLinkVpc",
                "ec2:AttachInternetGateway",
                "ec2:AttachNetworkInterface",
                "ec2:AttachVpnGateway",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateCarrierGateway",
                "ec2:CreateCustomerGateway",
                "ec2:CreateDefaultSubnet",
                "ec2:CreateDefaultVpc",
                "ec2:CreateDhcpOptions",
                "ec2:CreateEgressOnlyInternetGateway",
                "ec2:CreateFlowLogs",
                "ec2:CreateInternetGateway",
                "ec2:CreateLocalGatewayRouteTableVpcAssociation",
                "ec2:CreateNatGateway",
                "ec2:CreateNetworkAcl",
                "ec2:CreateNetworkAclEntry",
                "ec2:CreateNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:CreateRoute",
                "ec2:CreateRouteTable",
                "ec2:CreateSecurityGroup",
                "ec2:CreateSubnet",
                "ec2:CreateTags",
                "ec2:CreateVpc",
                "ec2:CreateVpcEndpoint",
                "ec2:CreateVpcEndpointConnectionNotification",
                "ec2:CreateVpcEndpointServiceConfiguration",
                "ec2:CreateVpcPeeringConnection",
                "ec2:CreateVpnConnection",
                "ec2:CreateVpnConnectionRoute",
                "ec2:CreateVpnGateway",
                "ec2:DeleteCarrierGateway",
                "ec2:DeleteCustomerGateway",
                "ec2:DeleteDhcpOptions",
                "ec2:DeleteEgressOnlyInternetGateway",
                "ec2:DeleteFlowLogs",
                "ec2:DeleteInternetGateway",
                "ec2:DeleteLocalGatewayRouteTableVpcAssociation",
                "ec2:DeleteNatGateway",
                "ec2:DeleteNetworkAcl",
                "ec2:DeleteNetworkAclEntry",
                "ec2:DeleteNetworkInterface",
                "ec2:DeleteNetworkInterfacePermission",
                "ec2:DeleteRoute",
                "ec2:DeleteRouteTable",
                "ec2:DeleteSecurityGroup",
                "ec2:DeleteSubnet",
                "ec2:DeleteTags",
                "ec2:DeleteVpc",
                "ec2:DeleteVpcEndpoints",
                "ec2:DeleteVpcEndpointConnectionNotifications",
                "ec2:DeleteVpcEndpointServiceConfigurations",
                "ec2:DeleteVpcPeeringConnection",
                "ec2:DeleteVpnConnection",
                "ec2:DeleteVpnConnectionRoute",
                "ec2:DeleteVpnGateway",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAddresses",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeCarrierGateways",
                "ec2:DescribeClassicLinkInstances",
                "ec2:DescribeCustomerGateways",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeEgressOnlyInternetGateways",
                "ec2:DescribeFlowLogs",
                "ec2:DescribeInstances",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeIpv6Pools",
                "ec2:DescribeLocalGatewayRouteTables",
                "ec2:DescribeLocalGatewayRouteTableVpcAssociations",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeMovingAddresses",
                "ec2:DescribeNatGateways",
                "ec2:DescribeNetworkAcls",
                "ec2:DescribeNetworkInterfaceAttribute",
                "ec2:DescribeNetworkInterfacePermissions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribePrefixLists",
                "ec2:DescribeRouteTables",
                "ec2:DescribeSecurityGroupReferences",
                "ec2:DescribeSecurityGroupRules",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSecurityGroupVpcAssociations",
                "ec2:DescribeStaleSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcClassicLink",
                "ec2:DescribeVpcClassicLinkDnsSupport",
                "ec2:DescribeVpcEndpointConnectionNotifications",
                "ec2:DescribeVpcEndpointConnections",
                "ec2:DescribeVpcEndpoints",
                "ec2:DescribeVpcEndpointServiceConfigurations",
                "ec2:DescribeVpcEndpointServicePermissions",
                "ec2:DescribeVpcEndpointServices",
                "ec2:DescribeVpcPeeringConnections",
                "ec2:DescribeVpcs",
                "ec2:DescribeVpnConnections",
                "ec2:DescribeVpnGateways",
                "ec2:DetachClassicLinkVpc",
                "ec2:DetachInternetGateway",
                "ec2:DetachNetworkInterface",
                "ec2:DetachVpnGateway",
                "ec2:DisableVgwRoutePropagation",
                "ec2:DisableVpcClassicLink",
                "ec2:DisableVpcClassicLinkDnsSupport",
                "ec2:DisassociateAddress",
                "ec2:DisassociateRouteTable",
                "ec2:DisassociateSecurityGroupVpc",
                "ec2:DisassociateSubnetCidrBlock",
                "ec2:DisassociateVpcCidrBlock",
                "ec2:EnableVgwRoutePropagation",
                "ec2:EnableVpcClassicLink",
                "ec2:EnableVpcClassicLinkDnsSupport",
                "ec2:GetSecurityGroupsForVpc",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:ModifySecurityGroupRules",
                "ec2:ModifySubnetAttribute",
                "ec2:ModifyVpcAttribute",
                "ec2:ModifyVpcEndpoint",
                "ec2:ModifyVpcEndpointConnectionNotification",
                "ec2:ModifyVpcEndpointServiceConfiguration",
                "ec2:ModifyVpcEndpointServicePermissions",
                "ec2:ModifyVpcPeeringConnectionOptions",
                "ec2:ModifyVpcTenancy",
                "ec2:MoveAddressToVpc",
                "ec2:RejectVpcEndpointConnections",
                "ec2:RejectVpcPeeringConnection",
                "ec2:ReleaseAddress",
                "ec2:ReplaceNetworkAclAssociation",
                "ec2:ReplaceNetworkAclEntry",
                "ec2:ReplaceRoute",
                "ec2:ReplaceRouteTableAssociation",
                "ec2:ResetNetworkInterfaceAttribute",
                "ec2:RestoreAddressToClassic",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress",
                "ec2:UnassignIpv6Addresses",
                "ec2:UnassignPrivateIpAddresses",
                "ec2:UpdateSecurityGroupRuleDescriptionsEgress",
                "ec2:UpdateSecurityGroupRuleDescriptionsIngress"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CloudWatchPermissions",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:*",
                "logs:*",
                "sns:CreateTopic",
                "sns:ListSubscriptions",
                "sns:ListSubscriptionsByTopic",
                "sns:ListTopics",
                "sns:Subscribe",
                "iam:GetPolicy",
                "iam:GetPolicyVersion",
                "iam:GetRole",
                "oam:ListSinks",
                "rum:*",
                "synthetics:*",
                "xray:*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:PutBucketPolicy",
                "s3:PutBucketTagging",
                "s3:PutBucketPublicAccessBlock",
                "s3:PutBucketLogging",
                "s3:DeleteBucketPolicy",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:PutEncryptionConfiguration",
                "s3:AbortMultipartUpload",
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::*",
                "arn:aws:s3:::*/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "eks:CreateCluster",
                "eks:DeleteCluster",
                "eks:CreateNodegroup",
                "eks:DeleteNodegroup",
                "eks:UpdateNodegroupConfig",
                "eks:UpdateNodegroupVersion",
                "eks:UpdateClusterConfig",
                "eks:UpdateClusterVersion",
                "eks:CreateFargateProfile",
                "eks:DeleteFargateProfile",
                "eks:CreateAddon",
                "eks:DeleteAddon",
                "eks:UpdateAddon",
                "eks:CreateAccessEntry",
                "eks:DeleteAccessEntry",
                "eks:UpdateAccessEntry",
                "eks:AssociateAccessPolicy",
                "eks:AssociateIdentityProviderConfig",
                "eks:DisassociateIdentityProviderConfig",
                "eks:TagResource",
                "eks:UntagResource",
                "eks:AccessKubernetesApi",
                "eks:Describe*",
                "eks:List*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter",
                "ssm:PutParameter",
                "ssm:DeleteParameter",
                "ssm:DescribeParameters"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "sagemaker.*.amazonaws.com",
                        "ec2.*.amazonaws.com",
                        "s3.*.amazonaws.com",
                        "eks.*.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction",
                "lambda:UpdateFunctionCode",
                "lambda:UpdateFunctionConfiguration",
                "lambda:AddPermission",
                "lambda:RemovePermission",
                "lambda:PublishLayerVersion",
                "lambda:DeleteLayerVersion",
                "lambda:InvokeFunction",
                "lambda:Get*",
                "lambda:List*",
                "lambda:TagResource"
            ],
            "Resource": [
                "arn:aws:lambda:*:*:function:*",
                "arn:aws:lambda:*:*:layer:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:DeleteRole",
                "iam:DeleteRolePolicy"
            ],
            "Resource": [
                "arn:aws:iam::*:role/*sagemaker*",
                "arn:aws:iam::*:role/*eks*",
                "arn:aws:iam::*:role/*hyperpod*",
                "arn:aws:iam::*:policy/*sagemaker*",
                "arn:aws:iam::*:policy/*hyperpod*",
                "arn:aws:iam::*:role/*LifeCycleScriptStack*",
                "arn:aws:iam::*:role/*LifeCycleScript*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:TagRole",
                "iam:PutRolePolicy",
                "iam:Get*",
                "iam:List*",
                "iam:AttachRolePolicy",
                "iam:DetachRolePolicy"
            ],
            "Resource": [
                "arn:aws:iam::*:role/*",
                "arn:aws:iam::*:policy/*"
            ]
        },
        {
            "Sid": "FullAccessToFSx",
            "Effect": "Allow",
            "Action": [
                "fsx:AssociateFileGateway",
                "fsx:AssociateFileSystemAliases",
                "fsx:CancelDataRepositoryTask",
                "fsx:CopyBackup",
                "fsx:CopySnapshotAndUpdateVolume",
                "fsx:CreateAndAttachS3AccessPoint",
                "fsx:CreateBackup",
                "fsx:CreateDataRepositoryAssociation",
                "fsx:CreateDataRepositoryTask",
                "fsx:CreateFileCache",
                "fsx:CreateFileSystem",
                "fsx:CreateFileSystemFromBackup",
                "fsx:CreateSnapshot",
                "fsx:CreateStorageVirtualMachine",
                "fsx:CreateVolume",
                "fsx:CreateVolumeFromBackup",
                "fsx:DetachAndDeleteS3AccessPoint",
                "fsx:DeleteBackup",
                "fsx:DeleteDataRepositoryAssociation",
                "fsx:DeleteFileCache",
                "fsx:DeleteFileSystem",
                "fsx:DeleteSnapshot",
                "fsx:DeleteStorageVirtualMachine",
                "fsx:DeleteVolume",
                "fsx:DescribeAssociatedFileGateways",
                "fsx:DescribeBackups",
                "fsx:DescribeDataRepositoryAssociations",
                "fsx:DescribeDataRepositoryTasks",
                "fsx:DescribeFileCaches",
                "fsx:DescribeFileSystemAliases",
                "fsx:DescribeFileSystems",
                "fsx:DescribeS3AccessPointAttachments",
                "fsx:DescribeSharedVpcConfiguration",
                "fsx:DescribeSnapshots",
                "fsx:DescribeStorageVirtualMachines",
                "fsx:DescribeVolumes",
                "fsx:DisassociateFileGateway",
                "fsx:DisassociateFileSystemAliases",
                "fsx:ListTagsForResource",
                "fsx:ManageBackupPrincipalAssociations",
                "fsx:ReleaseFileSystemNfsV3Locks",
                "fsx:RestoreVolumeFromSnapshot",
                "fsx:TagResource",
                "fsx:UntagResource",
                "fsx:UpdateDataRepositoryAssociation",
                "fsx:UpdateFileCache",
                "fsx:UpdateFileSystem",
                "fsx:UpdateSharedVpcConfiguration",
                "fsx:UpdateSnapshot",
                "fsx:UpdateStorageVirtualMachine",
                "fsx:UpdateVolume"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Utenti IAM per l’amministratore del cluster
<a name="sagemaker-hyperpod-prerequisites-iam-cluster-admin"></a>

Gli amministratori dei cluster (amministratori) gestiscono e configurano i SageMaker HyperPod cluster, eseguendo le attività in essi contenute. [SageMaker HyperPod Operazioni del cluster Slurm](sagemaker-hyperpod-operate-slurm.md) Il seguente esempio di policy include il set minimo di autorizzazioni per gli amministratori del cluster per eseguire il SageMaker HyperPod core APIs e gestire i cluster all'interno dell'account. SageMaker HyperPod AWS 

**Nota**  
Gli utenti IAM con ruoli di amministratore del cluster possono utilizzare le chiavi di condizione per fornire un controllo granulare degli accessi durante la gestione delle risorse SageMaker HyperPod del cluster specificamente per le azioni e. `CreateCluster` `UpdateCluster` Per trovare le chiavi di condizione supportate per queste azioni, cerca `CreateCluster` o `UpdateCluster` nelle [Azioni definite dall' SageMaker IA](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsagemaker.html#amazonsagemaker-actions-as-permissions).

------
#### [ Slurm ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreateCluster",
                "sagemaker:ListClusters"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:DeleteCluster",
                "sagemaker:DescribeCluster",
                "sagemaker:DescribeClusterNode",
                "sagemaker:ListClusterNodes",
                "sagemaker:UpdateCluster",
                "sagemaker:UpdateClusterSoftware",
                "sagemaker:BatchDeleteClusterNodes"
            ],
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/*"
        }
    ]
}
```

------
#### [ Amazon EKS ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/execution-role-name"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreateCluster",
                "sagemaker:DeleteCluster",
                "sagemaker:DescribeCluster",
                "sagemaker:DescribeClusterNode",
                "sagemaker:ListClusterNodes",
                "sagemaker:ListClusters",
                "sagemaker:UpdateCluster",
                "sagemaker:UpdateClusterSoftware",
                "sagemaker:BatchAddClusterNodes",
                "sagemaker:BatchDeleteClusterNodes",
                "sagemaker:ListComputeQuotas",
                "sagemaker:ListClusterSchedulerConfigs",
                "sagemaker:DeleteClusterSchedulerConfig",
                "sagemaker:DeleteComputeQuota",
                "eks:DescribeCluster",
                "eks:CreateAccessEntry",
                "eks:DescribeAccessEntry",
                "eks:DeleteAccessEntry",
                "eks:AssociateAccessPolicy",
                "iam:CreateServiceLinkedRole"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Per concedere le autorizzazioni di accesso alla console di SageMaker intelligenza artificiale, utilizza la policy di esempio fornita in [Autorizzazioni necessarie per utilizzare la console Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/security_iam_id-based-policy-examples.html#console-permissions).

*Per concedere le autorizzazioni di accesso alla console Amazon EC2 Systems Manager, utilizza la policy di esempio fornita [in Uso AWS Systems Manager della console nella AWS Systems Manager Guida per l'](https://docs.aws.amazon.com/systems-manager/latest/userguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-console)utente.*

Potresti anche considerare di associare la [`AmazonSageMakerFullAccess`](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSageMakerFullAccess)policy al ruolo; tuttavia, tieni presente che la `AmazonSageMakerFullAccess` policy concede le autorizzazioni per tutte le chiamate, le funzionalità e le SageMaker risorse dell'API.

Per indicazioni generali sugli utenti IAM, consulta [IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) in *AWS Identity and Access Management User Guide*.

## Utenti IAM per Data Scientist
<a name="sagemaker-hyperpod-prerequisites-iam-cluster-user"></a>

Gli scienziati accedono ed eseguono carichi di lavoro ML su nodi del cluster forniti dagli SageMaker HyperPod amministratori del cluster. Agli scienziati del tuo AWS account, devi concedere l'autorizzazione `"ssm:StartSession"` a eseguire il comando SSM. `start-session` Di seguito è riportata una policy di esempio per gli utenti IAM.

------
#### [ Slurm ]

Aggiungi la policy seguente per concedere a un utente IAM le autorizzazioni di sessione SSM per connettersi a una destinazione SSM. Ciò consente di accedere ai HyperPod cluster.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession"
            ],
            "Resource": "*"    
        }
    ]
}
```

------

------
#### [ Amazon EKS ]

Concedi le seguenti autorizzazioni di ruolo IAM ai data scientist per l'esecuzione `hyperpod list-clusters` e `hyperpod connect-cluster` i comandi tra i comandi HyperPod CLI. Per ulteriori informazioni sulla HyperPod CLI, consulta. [Esecuzione di processi su SageMaker HyperPod cluster orchestrati da Amazon EKS](sagemaker-hyperpod-eks-run-jobs.md) Include anche le autorizzazioni di sessione SSM per la connessione a una destinazione SSM per tutte le risorse. Ciò consente di accedere ai HyperPod cluster.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DescribeHyerpodClusterPermissions",
            "Effect": "Allow",
            "Action": [
                "sagemaker:DescribeCluster"
            ],
            "Resource": "arn:aws:sagemaker:us-east-2:111122223333:cluster/hyperpod-cluster-name"
        },
        {
            "Sid": "UseEksClusterPermissions",
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:sagemaker:us-east-2:111122223333:cluster/eks-cluster-name"
        },
        {
            "Sid": "ListClustersPermission",
            "Effect": "Allow",
            "Action": [
                "sagemaker:ListClusters"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession"
            ],
            "Resource": "*"    
        }
    ]
}
```

------

*Per concedere ai data scientist l'accesso a utenti o ruoli IAM a Kubernetes APIs nel cluster, consulta anche [Concedere a utenti e ruoli IAM l'accesso a Kubernetes APIs](https://docs.aws.amazon.com/eks/latest/userguide/grant-k8s-access.html) nella Amazon EKS User Guide.*

------

## Ruolo IAM per SageMaker HyperPod
<a name="sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod"></a>

 SageMaker HyperPod Affinché i cluster possano funzionare e comunicare con AWS le risorse necessarie, è necessario creare un ruolo IAM da far assumere al HyperPod cluster. 

Inizia collegando la [AWS politica gestita: AmazonSageMakerHyperPodServiceRolePolicy](security-iam-awsmanpol-AmazonSageMakerHyperPodServiceRolePolicy.md) del ruolo gestito. In base AWS a questa politica gestita, i gruppi di istanze del SageMaker HyperPod cluster assumono il ruolo di comunicare con Amazon CloudWatch, Amazon S3 e AWS Systems Manager Agent (agente SSM). Questa policy gestita è il requisito minimo per il corretto funzionamento SageMaker HyperPod delle risorse, quindi è necessario fornire un ruolo IAM con questa policy a tutti i gruppi di istanze. 

**Suggerimento**  
A seconda delle preferenze in merito alla progettazione del livello di autorizzazioni per più gruppi di istanze, puoi anche configurare più ruoli IAM e collegarli a diversi gruppi di istanze. Quando configuri l'accesso utente del cluster a nodi specifici del SageMaker HyperPod cluster, i nodi assumono il ruolo con le autorizzazioni selettive assegnate manualmente.  
Quando configuri l’accesso per i Data Scientist a nodi specifici del cluster con [AWS Systems Manager](https://aws.amazon.com/systems-manager/) (vedi anche [Configurazione AWS Systems Manager ed esecuzione come per il controllo degli accessi degli utenti del cluster](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm)), i nodi del cluster assumono il ruolo con le autorizzazioni selettive assegnate manualmente.

Dopo aver creato i ruoli IAM, prendi nota dei loro nomi e. ARNs I ruoli vengono utilizzati durante la creazione di un SageMaker HyperPod cluster, concedendo le autorizzazioni corrette richieste a ciascun gruppo di istanze per comunicare con le risorse necessarie AWS .

------
#### [ Slurm ]

In caso di HyperPod orchestrazione con Slurm, è necessario allegare la seguente policy gestita al ruolo IAM. SageMaker HyperPod 
+ [AmazonSageMakerClusterInstanceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerClusterInstanceRolePolicy.html)

**(Facoltativo) Autorizzazioni aggiuntive per l'utilizzo SageMaker HyperPod con Amazon Virtual Private Cloud**

Se desideri utilizzare il tuo Amazon Virtual Private Cloud (VPC) al posto del tuo SageMaker VPC AI predefinito, devi aggiungere le seguenti autorizzazioni aggiuntive al ruolo IAM per. SageMaker HyperPod

```
{
    "Effect": "Allow",
    "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:DeleteNetworkInterface",
        "ec2:DeleteNetworkInterfacePermission",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribeVpcs",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups",
        "ec2:DetachNetworkInterface"
    ],
    "Resource": "*"
}
{
    "Effect": "Allow",
    "Action": "ec2:CreateTags",
    "Resource": [
        "arn:aws:ec2:*:*:network-interface/*"
    ]
}
```

L'elenco seguente riporta le autorizzazioni necessarie per abilitare le funzionalità SageMaker HyperPod del cluster quando configuri il cluster con il tuo Amazon VPC personale.
+ Le seguenti `ec2` autorizzazioni sono necessarie per abilitare la configurazione di un SageMaker HyperPod cluster con il tuo VPC.

  ```
  {
      "Effect": "Allow",
      "Action": [
          "ec2:CreateNetworkInterface",
          "ec2:CreateNetworkInterfacePermission",
          "ec2:DeleteNetworkInterface",
          "ec2:DeleteNetworkInterfacePermission",
          "ec2:DescribeNetworkInterfaces",
          "ec2:DescribeVpcs",
          "ec2:DescribeDhcpOptions",
          "ec2:DescribeSubnets",
          "ec2:DescribeSecurityGroups"
      ],
      "Resource": "*"
  }
  ```
+ È necessaria la seguente `ec2` autorizzazione per abilitare la [SageMaker HyperPod funzionalità di ripristino automatico](sagemaker-hyperpod-resiliency-slurm-auto-resume.md).

  ```
  {
      "Effect": "Allow",
      "Action": [
          "ec2:DetachNetworkInterface"
      ],
      "Resource": "*"
  }
  ```
+ La seguente `ec2` autorizzazione consente di SageMaker HyperPod creare tag sulle interfacce di rete all'interno del tuo account.

  ```
  {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": [
          "arn:aws:ec2:*:*:network-interface/*"
      ]
  }
  ```

------
#### [ Amazon EKS ]

Per l' HyperPod orchestrazione con Amazon EKS, è necessario collegare le seguenti politiche gestite al ruolo SageMaker HyperPod IAM.
+ [AmazonSageMakerClusterInstanceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerClusterInstanceRolePolicy.html)

Oltre alle policy gestite, collega la policy di autorizzazione seguente al ruolo.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AssignPrivateIpAddresses",
        "ec2:AttachNetworkInterface",
        "ec2:CreateNetworkInterface",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:DeleteNetworkInterface",
        "ec2:DeleteNetworkInterfacePermission",
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceTypes",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribeTags",
        "ec2:DescribeVpcs",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups",
        "ec2:DetachNetworkInterface",
        "ec2:ModifyNetworkInterfaceAttribute",
        "ec2:UnassignPrivateIpAddresses",
        "ecr:BatchCheckLayerAvailability",
        "ecr:BatchGetImage",
        "ecr:GetAuthorizationToken",
        "ecr:GetDownloadUrlForLayer",
        "eks-auth:AssumeRoleForPodIdentity"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:network-interface/*"
      ]
    }
  ]
}
```

------

**Nota**  
L’autorizzazione `"eks-auth:AssumeRoleForPodIdentity"` è facoltativa. È necessaria se prevedi di utilizzare EKS Pod Identity.

**SageMaker HyperPod ruolo collegato al servizio**

Per il supporto di Amazon EKS in SageMaker HyperPod, HyperPod crea un ruolo collegato ai servizi [AWS politica gestita: AmazonSageMakerHyperPodServiceRolePolicy](security-iam-awsmanpol-AmazonSageMakerHyperPodServiceRolePolicy.md) per monitorare e supportare la resilienza sul cluster EKS, ad esempio la sostituzione dei nodi e il riavvio dei lavori.

**Policy IAM aggiuntive per i cluster Amazon EKS con Gruppo di istanze limitato (RIG)**

I carichi di lavoro eseguiti in gruppi di istanze limitati si basano sul ruolo di esecuzione per caricare i dati da Amazon S3. Devi aggiungere le altre autorizzazioni Amazon S3 al ruolo di esecuzione in modo che i processi di personalizzazione in esecuzione nei gruppi di istanze limitati possano recuperare correttamente i dati di input.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket"      
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ]
    }
  ]
}
```

------

------

# AWS KMS key Crittografia gestita dal cliente per SageMaker HyperPod
<a name="smcluster-cmk"></a>

Per impostazione predefinita, il volume root Amazon EBS collegato al SageMaker HyperPod cluster viene crittografato utilizzando un file AWS KMS key di proprietà di AWS. Ora hai la possibilità di crittografare sia il volume root Amazon EBS che il volume secondario con le chiavi KMS gestite dal cliente. L'argomento seguente descrive come funzionano le chiavi gestite dai clienti (CMKs) con i volumi nei HyperPod cluster.

**Nota**  
Le seguenti esclusioni si applicano all'utilizzo di chiavi gestite dal cliente per i SageMaker HyperPod cluster:  
La crittografia con chiave gestita dal cliente è supportata solo per i cluster che utilizzano la modalità di provisioning continuo dei nodi. I gruppi di istanze limitati non supportano le chiavi gestite dal cliente.
HyperPod i cluster attualmente non supportano il passaggio del contesto di crittografia nelle richieste di AWS KMS crittografia a chiave gestite dal cliente. Pertanto, assicurati che la policy della chiave KMS non sia limitata da condizioni basate sul contesto di crittografia, perché ciò impedirebbe al cluster di utilizzare la chiave.
La transizione delle chiavi KMS non è attualmente supportata, quindi non puoi modificare la chiave KMS specificata nella tua configurazione. Per utilizzare una chiave diversa, crea un nuovo gruppo di istanze con la chiave desiderata ed elimina quello precedente.
La specificazione delle chiavi gestite dal cliente per HyperPod i cluster tramite la console non è attualmente supportata.

## Permissions
<a name="smcluster-cmk-permissions"></a>

Prima di poter utilizzare la chiave gestita dal cliente con HyperPod, è necessario completare i seguenti prerequisiti:
+ Assicurati che al ruolo di esecuzione AWS IAM che stai utilizzando per l' SageMaker IA siano aggiunte le seguenti autorizzazioni. AWS KMS L'`[ kms:CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)`autorizzazione consente di HyperPod eseguire le seguenti azioni utilizzando le autorizzazioni per la tua chiave KMS:
  + Ridimensionamento del numero di istanze (operazioni) UpdateCluster 
  + Aggiungere nodi del cluster (BatchAddClusterNodes operazioni)
  + Software di applicazione di patch (UpdateClusterSoftware operazioni)

  Per ulteriori informazioni sull’aggiornamento delle autorizzazioni per il ruolo IAM, consulta [Adding and removing IAM identity permissions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) nella *Guida per l’utente di IAM*.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "kms:CreateGrant",
                  "kms:DescribeKey"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
+ Aggiungi le autorizzazioni seguenti alla tua policy della chiave KMS. Per ulteriori informazioni, consulta [Change a key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html) in *AWS KMS Developer Guide*.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Id": "hyperpod-key-policy",
      "Statement": [
          {
              "Sid": "Enable IAM User Permissions",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::111122223333:root"
              },
              "Action": "kms:*",
              "Resource": "*"
          },
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::111122223333:role/<iam-role>"
              },
              "Action": "kms:CreateGrant",
              "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
              "Condition": {
                  "StringEquals": {
                      "kms:ViaService": "sagemaker.us-east-1.amazonaws.com"
                  },
                  "Bool": {
                      "kms:GrantIsForAWSResource": "true"
                  }
              }
          },
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::111122223333:role/<iam-role>"
              },
              "Action": "kms:DescribeKey",
              "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
              "Condition": {
                  "StringEquals": {
                      "kms:ViaService": "sagemaker.us-east-1.amazonaws.com"
                  }
              }
          }
      ]
  }
  ```

------

## Come utilizzare la chiave KMS
<a name="smcluster-cmk-usage"></a>

È possibile specificare le chiavi gestite dal cliente durante la creazione o l'aggiornamento di un cluster utilizzando le operazioni [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)e le [UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)API. La struttura `InstanceStorageConfigs` consente fino a due configurazioni `EbsVolumeConfig`, in cui è possibile configurare il volume root Amazon EBS e, facoltativamente, un volume secondario. Puoi utilizzare la stessa chiave KMS o una chiave KMS diversa per ogni volume, a seconda delle esigenze.

Puoi scegliere di specificare una chiave gestita dal cliente per nessuno, entrambi o uno solo dei volumi. Tuttavia, non puoi specificare due volumi root o due volumi secondari.

Durante la configurazione del volume root, si applicano i seguenti requisiti:
+ `RootVolume` deve essere impostato su `True`. Il valore predefinito è `False`, che configura il volume secondario.
+ Il campo `VolumeKmsKeyId` è obbligatorio ed è necessario specificare la chiave gestita dal cliente. Questo perché il volume root deve essere sempre crittografato con una chiave AWS proprietaria o una chiave gestita dal cliente (se non si specifica la propria, viene utilizzata una chiave AWS proprietaria).
+ Non è possibile specificare il `VolumeSizeInGB` campo per i volumi root poiché HyperPod determina automaticamente la dimensione del volume principale.

Durante la configurazione del volume secondario, si applicano i seguenti requisiti:
+ `RootVolume` deve essere `False` (il valore predefinito di questo campo è `False`).
+ Il campo `VolumeKmsKeyId` è facoltativo. Puoi utilizzare la stessa chiave gestita dal cliente specificata per il volume root oppure una chiave diversa.
+ Il campo `VolumeSizeInGB` è obbligatorio perché è necessario specificare la dimensione desiderata per il volume secondario.

**Importante**  
Quando utilizzi le chiavi gestite dal cliente, ti consigliamo vivamente di utilizzare chiavi KMS diverse per ogni gruppo di istanze del cluster. L’utilizzo della stessa chiave gestita dal cliente in più gruppi di istanze potrebbe concedere autorizzazioni continuative involontarie anche se provi a revocare una concessione. Ad esempio, se revocate una AWS KMS concessione per i volumi di un gruppo di istanze, quel gruppo di istanze potrebbe comunque consentire operazioni di ridimensionamento e applicazione di patch a causa delle concessioni esistenti su altri gruppi di istanze che utilizzano la stessa chiave. Per evitare questo problema, assicurati di assegnare chiavi KMS univoche a ciascun gruppo di istanze del cluster. Se devi limitare le autorizzazioni sui gruppi di istanze, prova una delle seguenti opzioni:  
Disabilita la chiave KMS.
Applica le policy di rifiuto alla policy della chiave KMS.
Revoca tutte le concessioni del gruppo di istanze per la chiave (invece di revocare una sola concessione).
Elimina il gruppo di istanze.
Elimina il cluster.

Gli esempi seguenti mostrano come specificare le chiavi gestite dal cliente per i volumi root e secondari utilizzando and. CreateCluster UpdateCluster APIs Questi esempi mostrano solo i campi obbligatori per l’integrazione delle chiavi gestite dal cliente. Per configurare una chiave gestita dal cliente per un solo volume, specifica solo una `EbsVolumeConfig`.

Per ulteriori informazioni sulla configurazione delle richieste di creazione e aggiornamento dei cluster, consulta [Creazione di un cluster SageMaker HyperPod](sagemaker-hyperpod-eks-operate-cli-command-create-cluster.md) e [Aggiornamento SageMaker HyperPod della configurazione del cluster](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md).

------
#### [ CreateCluster ]

L'esempio seguente mostra una AWS CLI richiesta di [creazione di cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html) con crittografia a chiave gestita dal cliente.

```
aws sagemaker create-cluster \
  --cluster-name <your-hyperpod-cluster> \
  --instance-groups '[{
    "ExecutionRole": "arn:aws:iam::111122223333:role/<your-SageMaker-Execution-Role>",
    "InstanceCount": 2,
    "InstanceGroupName": "<your-ig-name>",
    "InstanceStorageConfigs": [
            {
                "EbsVolumeConfig": {
                    "RootVolume": True,
                    "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/root-volume-key-id"
                }
            },
            {
                "EbsVolumeConfig": {
                    "VolumeSizeInGB": 100,
                    "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/secondary-volume-key-id"
                }
            }
    ],
    "InstanceType": "<desired-instance-type>"
  }]' \
  --vpc-config '{
    "SecurityGroupIds": ["<sg-id>"],
    "Subnets": ["<subnet-id>"]
  }'
```

------
#### [ UpdateCluster ]

L'esempio seguente mostra una AWS CLI richiesta di [aggiornamento del cluster con crittografia a chiave](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) gestita dal cliente.

```
aws sagemaker update-cluster \
  --cluster-name <your-hyperpod-cluster> \
  --instance-groups '[{
    "InstanceGroupName": "<your-ig-name>",
    "InstanceStorageConfigs": [
            {
                "EbsVolumeConfig": {
                    "RootVolume": true,
                    "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/root-volume-key-id"
                }
            },
            {
                "EbsVolumeConfig": {
                    "VolumeSizeInGB": 100,
                    "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/secondary-volume-key-id"
                }
            }
    ]
  }]'
```

------

# SageMaker HyperPod ricette
<a name="sagemaker-hyperpod-recipes"></a>

 SageMaker HyperPod Le ricette Amazon sono stack di formazione preconfigurati forniti da AWS per aiutarti a iniziare rapidamente ad addestrare e perfezionare i modelli di base disponibili al pubblico (FMs) di varie famiglie di modelli come Llama, Mistral, Mixtral o. DeepSeek Le ricette automatizzano il ciclo di end-to-end formazione, incluso il caricamento di set di dati, l'applicazione di tecniche di addestramento distribuite e la gestione dei checkpoint per un recupero più rapido dai guasti. 

SageMaker HyperPod le ricette sono particolarmente utili per gli utenti che potrebbero non avere competenze approfondite nell'apprendimento automatico, in quanto riducono gran parte della complessità associata all'addestramento di modelli di grandi dimensioni.

È possibile eseguire le ricette all'interno SageMaker HyperPod o come SageMaker attività di formazione.

Le tabelle seguenti sono conservate nel SageMaker HyperPod GitHub repository e forniscono la maggior parte delle up-to-date informazioni sui modelli supportati per il pre-addestramento e la messa a punto, le rispettive ricette e script di avvio, i tipi di istanze supportati e altro ancora.
+ Per l’elenco più aggiornato dei modelli, delle ricette e degli script di avvio supportati per il preaddestramento, consulta la [tabella di preaddestramento](https://github.com/aws/sagemaker-hyperpod-recipes?tab=readme-ov-file#pre-training).
+ Per l’elenco più aggiornato dei modelli, delle ricette e degli script di avvio supportati per il fine-tuning, consulta la [tabella di fine-tuning](https://github.com/aws/sagemaker-hyperpod-recipes?tab=readme-ov-file#fine-tuning).

Per SageMaker HyperPod gli utenti, l'automazione dei flussi di lavoro di end-to-end formazione deriva dall'integrazione dell'adattatore di formazione con le ricette. SageMaker HyperPod L'adattatore di formazione è basato sul [ NeMo framework NVIDIA](https://docs.nvidia.com/nemo-framework/user-guide/latest/overview.html) e sul pacchetto [Neuronx](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/neuronx-distributed/index.html) Distributed Training. Se hai familiarità con l'utilizzo NeMo, il processo di utilizzo del training adapter è lo stesso. L’adattatore di addestramento esegue la ricetta sul cluster.

![\[Diagramma che mostra il flusso di lavoro delle SageMaker HyperPod ricette. L'icona «Ricetta» in alto si inserisce nella casella «lanciatore di HyperPod ricette». Questa casella si collega a una sezione più ampia denominata “Cluster: slurm, K8s,...” che contiene tre icone GPU con i file delle ricette associati. La parte inferiore della sezione del cluster è denominata «Train with HyperPod Training Adapter».\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/sagemaker-hyperpod-recipes-overview.png)


Puoi anche addestrare un tuo modello definendo una ricetta personalizzata.

Per iniziare con un tutorial, consulta [Esercitazioni](sagemaker-hyperpod-recipes-tutorials.md).

**Topics**
+ [Esercitazioni](sagemaker-hyperpod-recipes-tutorials.md)
+ [Configurazioni predefinite](default-configurations.md)
+ [Configurazioni specifiche dei cluster](cluster-specific-configurations.md)
+ [Considerazioni](cluster-specific-configurations-special-considerations.md)
+ [Impostazioni avanzate](cluster-specific-configurations-advanced-settings.md)
+ [Appendice](appendix.md)

# Esercitazioni
<a name="sagemaker-hyperpod-recipes-tutorials"></a>

I tutorial rapidi seguenti ti aiutano a iniziare a utilizzare le ricette per l’addestramento:
+ SageMaker HyperPod con Slurm Orchestration
  + Preaddestramento
    + [HyperPod tutorial di pre-formazione sul cluster Slurm (GPU)](hyperpod-gpu-slurm-pretrain-tutorial.md)
    + [Tutorial di preaddestramento sul cluster Trainium Slurm](hyperpod-trainium-slurm-cluster-pretrain-tutorial.md)
  + Fine-tuning
    + [HyperPod Tutorial Slurm Cluster Left-LoRa (GPU)](hyperpod-gpu-slurm-peft-lora-tutorial.md)
    + [HyperPod Tutorial Slurm Cluster DPO (GPU)](hyperpod-gpu-slurm-dpo-tutorial.md)
+ SageMaker HyperPod con K8s Orchestration
  + Preaddestramento
    + [Tutorial di preaddestramento sul cluster Kubernetes (GPU)](sagemaker-hyperpod-gpu-kubernetes-cluster-pretrain-tutorial.md)
    + [Tutorial di pre-formazione sui lavori SageMaker di formazione Trainium](sagemaker-hyperpod-trainium-sagemaker-training-jobs-pretrain-tutorial.md)
+ SageMaker lavori di formazione
  + Preaddestramento
    + [SageMaker lavori di formazione tutorial di pre-formazione (GPU)](sagemaker-hyperpod-gpu-sagemaker-training-jobs-pretrain-tutorial.md)
    + [Tutorial di pre-formazione sui lavori SageMaker di formazione Trainium](sagemaker-hyperpod-trainium-sagemaker-training-jobs-pretrain-tutorial.md)

# HyperPod tutorial di pre-formazione sul cluster Slurm (GPU)
<a name="hyperpod-gpu-slurm-pretrain-tutorial"></a>

Il tutorial seguente configura l’ambiente Slurm e avvia un job di addestramento su un modello Llama da 8 miliardi di parametri.

**Prerequisiti**  
Prima di iniziare a configurare l’ambiente per eseguire la ricetta, assicurati di avere:  
Configura un cluster GPU Slurm HyperPod .  
Il tuo cluster HyperPod Slurm deve avere Nvidia Enroot e Pyxis abilitati (questi sono abilitati di default).
Una posizione di archiviazione condivisa. Può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.
I dati in uno dei seguenti formati:  
JSON
JSONGZ (JSON compresso)
ARROW
(Facoltativo) È necessario ottenere un HuggingFace token se si utilizzano i pesi del modello HuggingFace per il pre-allenamento o la messa a punto. Per ulteriori informazioni su come ottenere il token, consulta [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## HyperPod Configurazione dell'ambiente GPU Slurm
<a name="hyperpod-gpu-slurm-environment-setup"></a>

Per avviare un processo di formazione su un cluster HyperPod GPU Slurm, procedi come segue:

1. SSH nel nodo head del cluster Slurm.

1. Dopo aver effettuato l’accesso, configura l’ambiente virtuale. Assicurati di utilizzare Python 3.9 o versioni successive.

   ```
   #set up a virtual environment
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. Clona le SageMaker HyperPod ricette e gli archivi degli SageMaker HyperPod adattatori in una posizione di archiviazione condivisa.

   ```
   git clone https://github.com/aws/sagemaker-hyperpod-training-adapter-for-nemo.git
   git clone --recursive https://github.com/aws/sagemaker-hyperpod-recipes.git
   cd sagemaker-hyperpod-recipes
   pip3 install -r requirements.txt
   ```

1. Crea un file squash utilizzando Enroot. Per trovare il rilascio più recente del container SMP, consulta [Note di rilascio per la libreria di parallelismo dei SageMaker modelli](model-parallel-release-notes.md). Per una comprensione più approfondita di come utilizzare il file Enroot, consulta l'immagine [AWS Nemo-Launcher ottimizzata per Build](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/2.nemo-launcher#2-build-aws-optimized-nemo-launcher-image).

   ```
   REGION="<region>"
   IMAGE="658645717510.dkr.ecr.${REGION}.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121"
   aws ecr get-login-password --region ${REGION} | docker login --username AWS --password-stdin 658645717510.dkr.ecr.${REGION}.amazonaws.com
   enroot import -o $PWD/smdistributed-modelparallel.sqsh dockerd://${IMAGE}
   mv $PWD/smdistributed-modelparallel.sqsh "/fsx/<any-path-in-the-shared-filesystem>"
   ```

1. Per utilizzare il file squash Enroot per iniziare l’addestramento, consulta l’esempio seguente per modificare il file `recipes_collection/config.yaml`.

   ```
   container: /fsx/path/to/your/smdistributed-modelparallel.sqsh
   ```

## Avvio del job di addestramento
<a name="hyperpod-gpu-slurm-launch-training-job"></a>

Dopo aver installato le dipendenze, avvia un job di addestramento dalla directory `sagemaker-hyperpod-recipes/launcher_scripts`. [Ottieni le dipendenze clonando l'archivio delle ricette: SageMaker HyperPod ](https://github.com/aws/sagemaker-hyperpod-recipes)

Prima di tutto, scegli la tua ricetta di addestramento da GitHub. Il nome del modello viene specificato come parte della ricetta. Nell’esempio seguente utilizziamo lo script `launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.sh` per avviare `llama/hf_llama3_8b_seq16k_gpu_p5x16_pretrain`, una ricetta di preaddestramento Llama 8b con lunghezza della sequenza 8192.
+ `IMAGE`: il container della sezione di configurazione dell’ambiente.
+ (Facoltativo) Se hai bisogno di pesi già addestrati, puoi fornire il HuggingFace token HuggingFace impostando la seguente coppia chiave-valore:

  ```
  recipes.model.hf_access_token=<your_hf_token>
  ```

```
#!/bin/bash
IMAGE="${YOUR_IMAGE}"
SAGEMAKER_TRAINING_LAUNCHER_DIR="${SAGEMAKER_TRAINING_LAUNCHER_DIR:-${PWD}}"

TRAIN_DIR="${YOUR_TRAIN_DIR}" # Location of training dataset
VAL_DIR="${YOUR_VAL_DIR}" # Location of validation dataset

# experiment ouput directory
EXP_DIR="${YOUR_EXP_DIR}"

HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
  recipes=training/llama/hf_llama3_8b_seq16k_gpu_p5x16_pretrain \
  base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
  recipes.run.name="hf_llama3_8b" \
  recipes.exp_manager.exp_dir="$EXP_DIR" \
  recipes.model.data.train_dir="$TRAIN_DIR" \
  recipes.model.data.val_dir="$VAL_DIR" \
  container="${IMAGE}" \
  +cluster.container_mounts.0="/fsx:/fsx"
```

Dopo aver configurato tutti i parametri richiesti nello script di avvio, puoi eseguire lo script con questo comando.

```
bash launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.sh
```

Per ulteriori informazioni sulla configurazione del cluster Slurm, consulta [Esecuzione di un lavoro di formazione su HyperPod Slurm](cluster-specific-configurations-run-training-job-hyperpod-slurm.md).

# Tutorial di preaddestramento sul cluster Trainium Slurm
<a name="hyperpod-trainium-slurm-cluster-pretrain-tutorial"></a>

Il tutorial seguente configura un ambiente Trainium su un cluster Slurm e avvia un job di addestramento su un modello Llama da 8 miliardi di parametri.

**Prerequisiti**  
Prima di iniziare a configurare l’ambiente, assicurati di avere:  
Configura un cluster Trainium Slurm SageMaker HyperPod .
Una posizione di archiviazione condivisa. Può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.
I dati in uno dei seguenti formati:  
JSON
JSONGZ (JSON compresso)
ARROW
(Facoltativo) È necessario ottenere un HuggingFace token se si utilizzano i pesi del modello HuggingFace per il pre-allenamento o la messa a punto. Per ulteriori informazioni su come ottenere il token, consulta [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## Configurazione dell’ambiente Trainium sul cluster Slurm
<a name="hyperpod-trainium-slurm-cluster-pretrain-setup-trainium-environment"></a>

Per avviare un job di addestramento su un cluster Slurm, procedi come descritto di seguito:
+ SSH nel nodo head del cluster Slurm.
+ Dopo aver effettuato l’accesso, configura l’ambiente Neuron. Per informazioni sulla configurazione di Neuron, consulta [Neuron setup steps](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-training/tutorials/hf_llama3_8B_SFT.html#setting-up-the-environment). Ti consigliamo di fare affidamento sulle AMI di deep learning preinstallate con i driver di Neuron, come [Ubuntu 20 con DLAMI PyTorch](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/setup/neuron-setup/pytorch/neuronx/ubuntu/torch-neuronx-ubuntu20-pytorch-dlami.html#setup-torch-neuronx-ubuntu20-dlami-pytorch).
+ Clona l'archivio delle SageMaker HyperPod ricette in una posizione di archiviazione condivisa nel cluster. La posizione di archiviazione condivisa può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.

  ```
  git clone --recursive https://github.com/aws/sagemaker-hyperpod-recipes.git
  cd sagemaker-hyperpod-recipes
  pip3 install -r requirements.txt
  ```
+ Segui il seguente tutorial: [HuggingFace Llama3-8B](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-training/tutorials/hf_llama3_8B_pretraining.html#) Pretraining
+ Prepara una configurazione del modello. Le configurazioni del modello disponibili nel repository Neuron. Per la configurazione del modello utilizzata in questo tutorial, consulta la [configurazione del modello llama3 8b](https://github.com/aws-neuron/neuronx-distributed/blob/main/examples/training/llama/tp_zero1_llama_hf_pretrain/8B_config_llama3/config.json).

## Avvio del job di addestramento in Trainium
<a name="hyperpod-trainium-slurm-cluster-pretrain-launch-training-job-trainium"></a>

Per avviare un job di addestramento in Trainium, specifica una configurazione del cluster e una ricetta Neuron. Ad esempio, per avviare un job di preaddestramento di llama3 8b in Trainium, imposta lo script di avvio `launcher_scripts/llama/run_hf_llama3_8b_seq8k_trn1x4_pretrain.sh` su quanto segue:
+ `MODEL_CONFIG`: la configurazione del modello dalla sezione di configurazione dell’ambiente
+ (Facoltativo) Se hai bisogno di pesi già addestrati, puoi fornire il HuggingFace token impostando la seguente coppia chiave-valore: HuggingFace 

  ```
  recipes.model.hf_access_token=<your_hf_token>
  ```

```
#!/bin/bash

#Users should set up their cluster type in /recipes_collection/config.yaml

SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"}

COMPILE=0
TRAIN_DIR="${TRAIN_DIR}" # Location of training dataset
MODEL_CONFIG="${MODEL_CONFIG}" # Location of config.json for the model

HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
    base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
    instance_type="trn1.32xlarge" \
    recipes.run.compile="$COMPILE" \
    recipes.run.name="hf-llama3-8b" \
    recipes.trainer.num_nodes=4 \
    recipes=training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain \
    recipes.data.train_dir="$TRAIN_DIR" \
    recipes.model.model_config="$MODEL_CONFIG"
```

Per avviare il job di addestramento, utilizza il comando seguente:

```
bash launcher_scripts/llama/run_hf_llama3_8b_seq8k_trn1x4_pretrain.sh
```

Per ulteriori informazioni sulla configurazione del cluster Slurm, consulta [Esecuzione di un lavoro di formazione su HyperPod Slurm](cluster-specific-configurations-run-training-job-hyperpod-slurm.md).

# HyperPod Tutorial Slurm Cluster DPO (GPU)
<a name="hyperpod-gpu-slurm-dpo-tutorial"></a>

Il tutorial seguente configura un ambiente Slurm e avvia un processo di ottimizzazione diretta delle preferenze (DPO) su un modello Llama da otto miliardi di parametri.

**Prerequisiti**  
Prima di iniziare a configurare l’ambiente, assicurati di avere:  
Configura il cluster GPU Slurm HyperPod   
Il tuo cluster HyperPod Slurm deve avere Nvidia Enroot e Pyxis abilitati (questi sono abilitati di default).
Una posizione di archiviazione condivisa. Può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.
Un set di dati di preferenze binarie tokenizzato in uno dei formati seguenti:  
JSON
JSONGZ (JSON compresso)
ARROW
(Facoltativo) Se ti servono i pesi preallenati di HuggingFace o se stai allenando un modello Llama 3.2, devi procurarti il HuggingFace token prima di iniziare l'allenamento. Per ulteriori informazioni su come ottenere il token, consulta [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## Configura l'ambiente GPU Slurm HyperPod
<a name="hyperpod-gpu-slurm-dpo-hyperpod-gpu-slurm-environment"></a>

Per avviare un job di addestramento su un cluster Slurm, procedi come descritto di seguito:
+ SSH nel nodo head del cluster Slurm.
+ Dopo aver effettuato l’accesso, configura l’ambiente virtuale. Assicurati di utilizzare Python 3.9 o versioni successive.

  ```
  #set up a virtual environment
  python3 -m venv ${PWD}/venv
  source venv/bin/activate
  ```
+ Clona le SageMaker HyperPod ricette e gli archivi degli SageMaker HyperPod adattatori in una posizione di archiviazione condivisa. La posizione di archiviazione condivisa può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.

  ```
  git clone https://github.com/aws/sagemaker-hyperpod-training-adapter-for-nemo.git
  git clone --recursive https://github.com/aws/sagemaker-hyperpod-recipes.git
  cd sagemaker-hyperpod-recipes
  pip3 install -r requirements.txt
  ```
+ Crea un file squash utilizzando Enroot. Per trovare il rilascio più recente del container SMP, consulta [Note di rilascio per la libreria di parallelismo dei SageMaker modelli](model-parallel-release-notes.md). Per ulteriori informazioni sull'utilizzo del file Enroot, consulta l'immagine [AWS Nemo-Launcher ottimizzata per Build](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/2.nemo-launcher#2-build-aws-optimized-nemo-launcher-image).

  ```
  REGION="<region>"
  IMAGE="658645717510.dkr.ecr.${REGION}.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121"
  aws ecr get-login-password --region ${REGION} | docker login --username AWS --password-stdin 658645717510.dkr.ecr.${REGION}.amazonaws.com
  enroot import -o $PWD/smdistributed-modelparallel.sqsh dockerd://${IMAGE}
  mv $PWD/smdistributed-modelparallel.sqsh "/fsx/<any-path-in-the-shared-filesystem>"
  ```
+ Per utilizzare il file squash Enroot per iniziare l’addestramento, consulta l’esempio seguente per modificare il file `recipes_collection/config.yaml`.

  ```
  container: /fsx/path/to/your/smdistributed-modelparallel.sqsh
  ```

## Avvio del job di addestramento
<a name="hyperpod-gpu-slurm-dpo-launch-training-job"></a>

Per avviare un processo DPO per il modello Llama da 8 miliardi di parametri con una lunghezza di sequenza di 8192 su un singolo nodo di calcolo Slurm, imposta lo script di avvio `launcher_scripts/llama/run_hf_llama3_8b_seq8k_gpu_dpo.sh` su quanto segue:
+ `IMAGE`: il container della sezione di configurazione dell’ambiente.
+ `HF_MODEL_NAME_OR_PATH`: definisci il nome o il percorso dei pesi preaddestrati nel parametro hf\$1model\$1name\$1or\$1path della ricetta.
+ (Facoltativo) Se hai bisogno di pesi già addestrati, puoi fornire il HuggingFace token impostando la seguente coppia chiave-valore: HuggingFace 

  ```
  recipes.model.hf_access_token=${HF_ACCESS_TOKEN}
  ```

**Nota**  
Il modello di riferimento utilizzato per il DPO in questa configurazione deriva automaticamente dal modello di base in fase di addestramento (non viene definito in modo esplicito alcun modello di riferimento separato). Gli iperparametri specifici del DPO sono preconfigurati con i valori predefiniti seguenti:  
`beta`: 0.1 (controlla l’intensità della regolarizzazione della divergenza KL)
`label_smoothing`: 0.0 (nessun livellamento applicato alle etichette delle preferenze)

```
recipes.dpo.beta=${BETA}
recipes.dpo.label_smoothing=${LABEL_SMOOTHING}
```

```
#!/bin/bash
IMAGE="${YOUR_IMAGE}"
SAGEMAKER_TRAINING_LAUNCHER_DIR="${SAGEMAKER_TRAINING_LAUNCHER_DIR:-${PWD}}"

TRAIN_DIR="${YOUR_TRAIN_DIR}" # Location of training dataset
VAL_DIR="${YOUR_VAL_DIR}" # Location of validation dataset
# experiment output directory
EXP_DIR="${YOUR_EXP_DIR}"
HF_ACCESS_TOKEN="${YOUR_HF_TOKEN}"
HF_MODEL_NAME_OR_PATH="${HF_MODEL_NAME_OR_PATH}"
BETA="${BETA}"
LABEL_SMOOTHING="${LABEL_SMOOTHING}"

# Add hf_model_name_or_path and turn off synthetic_data
HYDRA_FULL_ERROR=1 python3 ${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py \
recipes=fine-tuning/llama/hf_llama3_8b_seq8k_gpu_dpo \
base_results_dir=${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results \
recipes.run.name="hf_llama3_dpo" \
recipes.exp_manager.exp_dir="$EXP_DIR" \
recipes.model.data.train_dir="$TRAIN_DIR" \
recipes.model.data.val_dir="$VAL_DIR" \
recipes.model.hf_model_name_or_path="$HF_MODEL_NAME_OR_PATH" \
container="${IMAGE}" \
+cluster.container_mounts.0="/fsx:/fsx" \
recipes.model.hf_access_token="${HF_ACCESS_TOKEN}" \
recipes.dpo.enabled=true \
recipes.dpo.beta="${BETA}" \
recipes.dpo.label_smoothing="${LABEL_SMOOTHING}$" \
```

Dopo aver configurato tutti i parametri richiesti nello script precedente, puoi eseguire il job di addestramento.

```
bash launcher_scripts/llama/run_hf_llama3_8b_seq8k_gpu_dpo.sh
```

Per ulteriori informazioni sulla configurazione del cluster Slurm, consulta [Esecuzione di un lavoro di formazione su HyperPod Slurm](cluster-specific-configurations-run-training-job-hyperpod-slurm.md).

# HyperPod Tutorial Slurm Cluster Left-LoRa (GPU)
<a name="hyperpod-gpu-slurm-peft-lora-tutorial"></a>

Il tutorial seguente configura l’ambiente Slurm e avvia un processo di fine-tuning efficiente in termini di parametri (PEFT) su un modello Llama da 8 miliardi di parametri.

**Prerequisiti**  
Prima di iniziare a configurare l’ambiente, assicurati di avere:  
Configura il HyperPod cluster GPU Slurm  
Il tuo cluster HyperPod Slurm deve avere Nvidia Enroot e Pyxis abilitati (questi sono abilitati di default).
Una posizione di archiviazione condivisa. Può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.
I dati in uno dei seguenti formati:  
JSON
JSONGZ (JSON compresso)
ARROW
(Facoltativo) Se ti servono i pesi preallenati di HuggingFace o se stai allenando un modello Llama 3.2, devi procurarti il HuggingFace token prima di iniziare l'allenamento. Per ulteriori informazioni su come ottenere il token, consulta [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## Configura l'ambiente GPU Slurm HyperPod
<a name="hyperpod-gpu-slurm-peft-lora-setup-hyperpod-gpu-slurm-environment"></a>

Per avviare un job di addestramento su un cluster Slurm, procedi come descritto di seguito:
+ SSH nel nodo head del cluster Slurm.
+ Dopo aver effettuato l’accesso, configura l’ambiente virtuale. Assicurati di utilizzare Python 3.9 o versioni successive.

  ```
  #set up a virtual environment
  python3 -m venv ${PWD}/venv
  source venv/bin/activate
  ```
+ Clona le SageMaker HyperPod ricette e gli archivi degli SageMaker HyperPod adattatori in una posizione di archiviazione condivisa. La posizione di archiviazione condivisa può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.

  ```
  git clone https://github.com/aws/sagemaker-hyperpod-training-adapter-for-nemo.git
  git clone --recursive https://github.com/aws/sagemaker-hyperpod-recipes.git
  cd sagemaker-hyperpod-recipes
  pip3 install -r requirements.txt
  ```
+ Crea un file squash utilizzando Enroot. Per trovare il rilascio più recente del container SMP, consulta [Note di rilascio per la libreria di parallelismo dei SageMaker modelli](model-parallel-release-notes.md). Per ulteriori informazioni sull'utilizzo del file Enroot, consulta l'immagine [AWS Nemo-Launcher ottimizzata per Build](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/2.nemo-launcher#2-build-aws-optimized-nemo-launcher-image).

  ```
  REGION="<region>"
  IMAGE="658645717510.dkr.ecr.${REGION}.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121"
  aws ecr get-login-password --region ${REGION} | docker login --username AWS --password-stdin 658645717510.dkr.ecr.${REGION}.amazonaws.com
  enroot import -o $PWD/smdistributed-modelparallel.sqsh dockerd://${IMAGE}
  mv $PWD/smdistributed-modelparallel.sqsh "/fsx/<any-path-in-the-shared-filesystem>"
  ```
+ Per utilizzare il file squash Enroot per iniziare l’addestramento, consulta l’esempio seguente per modificare il file `recipes_collection/config.yaml`.

  ```
  container: /fsx/path/to/your/smdistributed-modelparallel.sqsh
  ```

## Avvio del job di addestramento
<a name="hyperpod-gpu-slurm-peft-lora-launch-training-job"></a>

Per avviare un processo PEFT per il modello Llama da 8 miliardi di parametri con una lunghezza di sequenza di 8192 su un singolo nodo di calcolo Slurm, imposta lo script di avvio `launcher_scripts/llama/run_hf_llama3_8b_seq8k_gpu_lora.sh` su quanto segue:
+ `IMAGE`: il container della sezione di configurazione dell’ambiente.
+ `HF_MODEL_NAME_OR_PATH`: definisci il nome o il percorso dei pesi preaddestrati nel parametro hf\$1model\$1name\$1or\$1path della ricetta.
+ (Facoltativo) Se hai bisogno di pesi già addestrati, puoi fornire il HuggingFace token impostando la seguente coppia chiave-valore: HuggingFace 

  ```
  recipes.model.hf_access_token=${HF_ACCESS_TOKEN}
  ```

```
#!/bin/bash
IMAGE="${YOUR_IMAGE}"
SAGEMAKER_TRAINING_LAUNCHER_DIR="${SAGEMAKER_TRAINING_LAUNCHER_DIR:-${PWD}}"

TRAIN_DIR="${YOUR_TRAIN_DIR}" # Location of training dataset
VAL_DIR="${YOUR_VAL_DIR}" # Location of validation dataset

# experiment output directory
EXP_DIR="${YOUR_EXP_DIR}"
HF_ACCESS_TOKEN="${YOUR_HF_TOKEN}"
HF_MODEL_NAME_OR_PATH="${YOUR_HF_MODEL_NAME_OR_PATH}"

# Add hf_model_name_or_path and turn off synthetic_data
HYDRA_FULL_ERROR=1 python3 ${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py \
    recipes=fine-tuning/llama/hf_llama3_8b_seq8k_gpu_lora \
    base_results_dir=${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results \
    recipes.run.name="hf_llama3_lora" \
    recipes.exp_manager.exp_dir="$EXP_DIR" \
    recipes.model.data.train_dir="$TRAIN_DIR" \
    recipes.model.data.val_dir="$VAL_DIR" \
    recipes.model.hf_model_name_or_path="$HF_MODEL_NAME_OR_PATH" \
    container="${IMAGE}" \
    +cluster.container_mounts.0="/fsx:/fsx" \
    recipes.model.hf_access_token="${HF_ACCESS_TOKEN}"
```

Dopo aver configurato tutti i parametri richiesti nello script precedente, puoi eseguire il job di addestramento.

```
bash launcher_scripts/llama/run_hf_llama3_8b_seq8k_gpu_lora.sh
```

Per ulteriori informazioni sulla configurazione del cluster Slurm, consulta [Esecuzione di un lavoro di formazione su HyperPod Slurm](cluster-specific-configurations-run-training-job-hyperpod-slurm.md).

# Tutorial di preaddestramento sul cluster Kubernetes (GPU)
<a name="sagemaker-hyperpod-gpu-kubernetes-cluster-pretrain-tutorial"></a>

Esistono due modi per avviare un job di addestramento in un cluster GPU Kubernetes:
+ [Strumento da riga di comando (consigliato) HyperPod ](https://github.com/aws/sagemaker-hyperpod-cli)
+ Il programma di avvio degli stili NeMo 

**Prerequisiti**  
Prima di iniziare a configurare l’ambiente, assicurati di avere:  
Un cluster HyperPod GPU Kubernetes è configurato correttamente.
Una posizione di archiviazione condivisa. Può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.
I dati in uno dei seguenti formati:  
JSON
JSONGZ (JSON compresso)
ARROW
(Facoltativo) È necessario ottenere un HuggingFace token se si utilizzano i pesi del modello HuggingFace per il pre-allenamento o la messa a punto. Per ulteriori informazioni su come ottenere il token, consulta [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## Configurazione dell’ambiente GPU Kubernetes
<a name="sagemaker-hyperpod-gpu-kubernetes-environment-setup"></a>

Per configurare un ambiente GPU Kubernetes, procedi come descritto di seguito:
+ Configura l’ambiente virtuale. Assicurati di utilizzare Python 3.9 o versioni successive.

  ```
  python3 -m venv ${PWD}/venv
  source venv/bin/activate
  ```
+ Installa le dipendenze utilizzando uno dei metodi seguenti:
  + [(Consigliato): metodo dello strumento a riga di comando: HyperPod ](https://github.com/aws/sagemaker-hyperpod-cli)

    ```
    # install HyperPod command line tools
    git clone https://github.com/aws/sagemaker-hyperpod-cli
    cd sagemaker-hyperpod-cli
    pip3 install .
    ```
  + SageMaker HyperPod metodo delle ricette:

    ```
    # install SageMaker HyperPod Recipes.
    git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
    cd sagemaker-hyperpod-recipes
    pip3 install -r requirements.txt
    ```
+ [Configura kubectl ed eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html).
+ [Installa Helm](https://helm.sh/docs/intro/install/).
+ Connettiti al cluster Kubernetes.

  ```
  aws eks update-kubeconfig --region "CLUSTER_REGION" --name "CLUSTER_NAME"
  hyperpod connect-cluster --cluster-name "CLUSTER_NAME" [--region "CLUSTER_REGION"] [--namespace <namespace>]
  ```

## Avvia il processo di formazione con la SageMaker HyperPod CLI
<a name="sagemaker-hyperpod-gpu-kubernetes-launch-training-job-cli"></a>

Ti consigliamo di utilizzare lo strumento dell'interfaccia SageMaker HyperPod a riga di comando (CLI) per inviare il tuo lavoro di formazione con le tue configurazioni. L’esempio seguente invia un job di addestramento per il modello `hf_llama3_8b_seq16k_gpu_p5x16_pretrain`.
+ `your_training_container`: un container per il Deep Learning. Per trovare il rilascio più recente del container SMP, consulta [Note di rilascio per la libreria di parallelismo dei SageMaker modelli](model-parallel-release-notes.md).
+ (Facoltativo) Se hai bisogno di pesi già addestrati, puoi fornire il HuggingFace token HuggingFace impostando la seguente coppia chiave-valore:

  ```
  "recipes.model.hf_access_token": "<your_hf_token>"
  ```

```
hyperpod start-job --recipe training/llama/hf_llama3_8b_seq16k_gpu_p5x16_pretrain \
--persistent-volume-claims fsx-claim:data \
--override-parameters \
'{
"recipes.run.name": "hf-llama3-8b",
"recipes.exp_manager.exp_dir": "/data/<your_exp_dir>",
"container": "658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121",
"recipes.model.data.train_dir": "<your_train_data_dir>",
"recipes.model.data.val_dir": "<your_val_data_dir>",
"cluster": "k8s",
"cluster_type": "k8s"
}'
```

Dopo aver inviato un job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

```
kubectl get pods
NAME                             READY   STATUS             RESTARTS        AGE
hf-llama3-<your-alias>-worker-0   0/1     running         0               36s
```

Se `STATUS` è `PENDING` o `ContainerCreating`, utilizza il comando seguente per ottenere maggiori dettagli.

```
kubectl describe pod name_of_pod
```

Quando lo `STATUS` del processo diventa `Running`, puoi esaminare il log utilizzando il comando seguente.

```
kubectl logs name_of_pod
```

`STATUS` diventa `Completed` quando esegui `kubectl get pods`.

## Avvio del job di addestramento con l’utilità di avvio delle ricette
<a name="sagemaker-hyperpod-gpu-kubernetes-launch-training-job-recipes"></a>

In alternativa, puoi utilizzare le SageMaker HyperPod ricette per inviare il tuo lavoro di formazione. Per utilizzare le ricette, devi aggiornare `k8s.yaml` e `config.yaml` ed eseguire lo script di avvio.
+ In `k8s.yaml`, aggiorna `persistent_volume_claims`. Monta il FSx claim Amazon `/data` nella directory di ogni pod di elaborazione

  ```
  persistent_volume_claims:
    - claimName: fsx-claim
      mountPath: data
  ```
+ In `config.yaml`, aggiorna `repo_url_or_path` sotto `git`.

  ```
  git:
    repo_url_or_path: <training_adapter_repo>
    branch: null
    commit: null
    entry_script: null
    token: null
  ```
+ Aggiornamento di `launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.sh`
  + `your_contrainer`: un container per il Deep Learning. Per trovare il rilascio più recente del container SMP, consulta [Note di rilascio per la libreria di parallelismo dei SageMaker modelli](model-parallel-release-notes.md).
  + (Facoltativo) Se hai bisogno di pesi già addestrati, puoi fornire il HuggingFace token HuggingFace impostando la seguente coppia chiave-valore:

    ```
    recipes.model.hf_access_token=<your_hf_token>
    ```

  ```
  #!/bin/bash
  #Users should setup their cluster type in /recipes_collection/config.yaml
  REGION="<region>"
  IMAGE="658645717510.dkr.ecr.${REGION}.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121"
  SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"}
  EXP_DIR="<your_exp_dir>" # Location to save experiment info including logging, checkpoints, ect
  TRAIN_DIR="<your_training_data_dir>" # Location of training dataset
  VAL_DIR="<your_val_data_dir>" # Location of talidation dataset
  
  HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
      recipes=training/llama/hf_llama3_8b_seq8k_gpu_p5x16_pretrain \
      base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
      recipes.run.name="hf-llama3" \
      recipes.exp_manager.exp_dir="$EXP_DIR" \
      cluster=k8s \
      cluster_type=k8s \
      container="${IMAGE}" \
      recipes.model.data.train_dir=$TRAIN_DIR \
      recipes.model.data.val_dir=$VAL_DIR
  ```
+ Avvio del job di addestramento

  ```
  bash launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.sh
  ```

Dopo aver inviato il job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

```
kubectl get pods
```

```
NAME READY   STATUS             RESTARTS        AGE
hf-llama3-<your-alias>-worker-0   0/1     running         0               36s
```

Se `STATUS` è `PENDING` o `ContainerCreating`, utilizza il comando seguente per ottenere maggiori dettagli.

```
kubectl describe pod <name-of-pod>
```

Quando lo `STATUS` del processo diventa `Running`, puoi esaminare il log utilizzando il comando seguente.

```
kubectl logs name_of_pod
```

`STATUS` diventa `Completed` quando esegui `kubectl get pods`.

Per ulteriori informazioni sulla connessione al cluster k8s, consulta [Esecuzione di un processo di formazione su k8s HyperPod](cluster-specific-configurations-run-training-job-hyperpod-k8s.md).

# Tutorial di preaddestramento sul cluster Trainium Kubernetes
<a name="sagemaker-hyperpod-trainium-kubernetes-cluster-pretrain-tutorial"></a>

Puoi utilizzare uno dei metodi seguenti per avviare un job di addestramento in un cluster Trainium Kubernetes.
+ [Strumento da riga di comando (consigliato) HyperPod ](https://github.com/aws/sagemaker-hyperpod-cli)
+ Il programma di avvio degli stili NeMo 

**Prerequisiti**  
Prima di iniziare a configurare l’ambiente, assicurati di avere:  
Configura un cluster HyperPod Trainium Kubernetes
Una posizione di archiviazione condivisa che può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.
I dati in uno dei seguenti formati:  
JSON
JSONGZ (JSON compresso)
ARROW
(Facoltativo) È necessario ottenere un HuggingFace token se si utilizzano i pesi del modello HuggingFace per il pre-allenamento o la messa a punto. Per ulteriori informazioni su come ottenere il token, consulta [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## Configurazione dell’ambiente Trainium Kubernetes
<a name="sagemaker-hyperpod-trainium-setup-trainium-kubernetes-environment"></a>

Per configurare l’ambiente Trainium Kubernetes, procedi come descritto di seguito:

1. **Completa i passaggi del seguente tutorial: [HuggingFace Llama3-8B](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-training/tutorials/hf_llama3_8B_pretraining.html#download-the-dataset) Pretraining a partire da Scarica il set di dati.** 

1. Prepara una configurazione del modello. Sono disponibili nel repository Neuron. Per questo tutorial, puoi utilizzare la configurazione del modello llama3 8b.

1. Configura l’ambiente virtuale. Assicurati di utilizzare Python 3.9 o versioni successive.

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. Installazione delle dipendenze
   + (Consigliato) Utilizza il seguente strumento da riga di comando HyperPod 

     ```
     # install HyperPod command line tools
     git clone https://github.com/aws/sagemaker-hyperpod-cli
     cd sagemaker-hyperpod-cli
     pip3 install .
     ```
   + Se utilizzi SageMaker HyperPod ricette, specifica quanto segue

     ```
     # install SageMaker HyperPod Recipes.
     git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
     cd sagemaker-hyperpod-recipes
     pip3 install -r requirements.txt
     ```

1. [Configura kubectl ed eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html).

1. [Installa Helm](https://helm.sh/docs/intro/install/).

1. Connettiti al cluster Kubernetes.

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   hyperpod connect-cluster --cluster-name "${CLUSTER_NAME}" [--region "${CLUSTER_REGION}"] [--namespace <namespace>]
   ```

1. Container: il [container Neuron](https://github.com/aws-neuron/deep-learning-containers?tab=readme-ov-file#pytorch-training-neuronx)

## Avvia il processo di formazione con la SageMaker HyperPod CLI
<a name="sagemaker-hyperpod-trainium-launch-training-job-cli"></a>

Ti consigliamo di utilizzare lo strumento dell'interfaccia SageMaker HyperPod a riga di comando (CLI) per inviare il tuo lavoro di formazione con le tue configurazioni. L’esempio seguente invia un job di addestramento per il modello Trainium `hf_llama3_8b_seq8k_trn1x4_pretrain`.
+ `your_neuron_container`: il [container Neuron](https://github.com/aws-neuron/deep-learning-containers?tab=readme-ov-file#pytorch-training-neuronx).
+ `your_model_config`: la configurazione del modello dalla sezione di configurazione dell’ambiente.
+ (Facoltativo) Se hai bisogno di pesi già addestrati, puoi fornire il HuggingFace token HuggingFace impostando la seguente coppia chiave-valore:

  ```
  "recipes.model.hf_access_token": "<your_hf_token>"
  ```

```
hyperpod start-job --recipe training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain \
--persistent-volume-claims fsx-claim:data \
--override-parameters \
'{
 "cluster": "k8s",
 "cluster_type": "k8s",
 "container": "<your_neuron_contrainer>",
 "recipes.run.name": "hf-llama3",
 "recipes.run.compile": 0,
 "recipes.model.model_config": "<your_model_config>",
 "instance_type": "trn1.32xlarge",
 "recipes.data.train_dir": "<your_train_data_dir>"
}'
```

Dopo aver inviato un job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

```
kubectl get pods
NAME                              READY   STATUS             RESTARTS        AGE
hf-llama3-<your-alias>-worker-0   0/1     running         0               36s
```

Se `STATUS` è `PENDING` o `ContainerCreating`, utilizza il comando seguente per ottenere maggiori dettagli.

```
kubectl describe pod name_of_pod
```

Quando lo `STATUS` del processo diventa `Running`, puoi esaminare il log utilizzando il comando seguente.

```
kubectl logs name_of_pod
```

`STATUS` diventa `Completed` quando esegui `kubectl get pods`.

## Avvio del job di addestramento con l’utilità di avvio delle ricette
<a name="sagemaker-hyperpod-trainium-launch-training-job-recipes"></a>

In alternativa, utilizza le SageMaker HyperPod ricette per inviare il tuo lavoro di formazione. Per inviare il job di addestramento utilizzando una ricetta, aggiorna `k8s.yaml` e `config.yaml`. Esegui lo script bash per il modello per avviarlo.
+ In`k8s.yaml`, aggiorna persistent\$1volume\$1claims per montare il claim FSx Amazon nella directory /data nei nodi di calcolo

  ```
  persistent_volume_claims:
    - claimName: fsx-claim
      mountPath: data
  ```
+ scripts/llama/runAggiorna launcher\$1 \$1hf\$1llama3\$18b\$1seq8k\$1trn1x4\$1pretrain.sh
  + `your_neuron_contrainer`: il container della sezione di configurazione dell’ambiente
  + `your_model_config`: la configurazione del modello dalla sezione di configurazione dell’ambiente

  (Facoltativo) Se hai bisogno di pesi già addestrati, puoi fornire il HuggingFace token HuggingFace impostando la seguente coppia chiave-valore:

  ```
  recipes.model.hf_access_token=<your_hf_token>
  ```

  ```
   #!/bin/bash
  #Users should set up their cluster type in /recipes_collection/config.yaml
  IMAGE="<your_neuron_contrainer>"
  MODEL_CONFIG="<your_model_config>"
  SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"}
  TRAIN_DIR="<your_training_data_dir>" # Location of training dataset
  VAL_DIR="<your_val_data_dir>" # Location of talidation dataset
  
  HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
    recipes=training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain \
    base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
    recipes.run.name="hf-llama3-8b" \
    instance_type=trn1.32xlarge \
    recipes.model.model_config="$MODEL_CONFIG" \
    cluster=k8s \
    cluster_type=k8s \
    container="${IMAGE}" \
    recipes.data.train_dir=$TRAIN_DIR \
    recipes.data.val_dir=$VAL_DIR
  ```
+ Avvia il processo.

  ```
  bash launcher_scripts/llama/run_hf_llama3_8b_seq8k_trn1x4_pretrain.sh
  ```

Dopo aver inviato un job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

```
kubectl get pods
NAME                             READY   STATUS             RESTARTS        AGE
hf-llama3-<your-alias>-worker-0   0/1     running         0               36s
```

Se lo `STATUS` è `PENDING` o`ContainerCreating`, utilizza il comando seguente per ottenere maggiori dettagli.

```
kubectl describe pod name_of_pod
```

Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.

```
kubectl logs name_of_pod
```

`STATUS` diventa `Completed` quando esegui `kubectl get pods`.

Per ulteriori informazioni sulla connessione al cluster k8s, consulta [Tutorial di preaddestramento sul cluster Trainium Kubernetes](#sagemaker-hyperpod-trainium-kubernetes-cluster-pretrain-tutorial).

# SageMaker lavori di formazione tutorial di pre-formazione (GPU)
<a name="sagemaker-hyperpod-gpu-sagemaker-training-jobs-pretrain-tutorial"></a>

Questo tutorial ti guida attraverso il processo di configurazione ed esecuzione di un processo di pre-formazione utilizzando processi di formazione con SageMaker istanze GPU.
+ Configurare l'ambiente
+ Avvia un processo di formazione utilizzando le ricette SageMaker HyperPod 

Prima di cominciare, assicurati che i requisiti seguenti siano soddisfatti.

**Prerequisiti**  
Prima di iniziare a configurare l’ambiente, assicurati di avere:  
 FSx File system Amazon o un bucket Amazon S3 in cui caricare i dati e generare gli artefatti di addestramento.
È stata richiesta una quota di servizio per 1x ml.p4d.24xlarge e 1x ml.p5.48xlarge su Amazon AI. SageMaker Per richiedere un aumento delle Service Quotas, procedi come descritto di seguito:  
Nella console AWS Service Quotas, accedi ai AWS servizi,
Scegli **Amazon SageMaker AI**.
Scegli un’istanza ml.p4d.24xlarge e un’istanza ml.p5.48xlarge.
Crea un ruolo AWS Identity and Access Management(IAM) con le seguenti politiche gestite per concedere all' SageMaker IA le autorizzazioni per eseguire gli esempi.  
AmazonSageMakerFullAccess
Amazon EC2 FullAccess
I dati in uno dei seguenti formati:  
JSON
JSONGZ (JSON compresso)
ARROW
(Facoltativo) Se utilizzi i pesi modello di cui disponi HuggingFace per il pre-allenamento o la messa a punto, devi ricevere un HuggingFace token. Per ulteriori informazioni su come ottenere il token, consulta [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## Configurazione dell'ambiente di lavoro di formazione su GPU SageMaker
<a name="sagemaker-hyperpod-gpu-sagemaker-training-jobs-environment-setup"></a>

Prima di eseguire un processo di SageMaker formazione, configura le AWS credenziali e la regione preferita eseguendo il `aws configure` comando. In alternativa al comando configure, puoi fornire le tue credenziali tramite variabili di ambiente come`AWS_ACCESS_KEY_ID`, e `AWS_SESSION_TOKEN.` Per ulteriori informazioni`AWS_SECRET_ACCESS_KEY`, consulta [SageMaker AI Python SDK](https://github.com/aws/sagemaker-python-sdk).

Consigliamo vivamente di utilizzare un notebook SageMaker AI Jupyter in SageMaker AI JupyterLab per avviare un processo di formazione. SageMaker Per ulteriori informazioni, consulta [SageMaker JupyterLab](studio-updated-jl.md).
+ (Facoltativo) Configura l’ambiente virtuale e le dipendenze. Se utilizzi un notebook Jupyter in Amazon SageMaker Studio, puoi saltare questo passaggio. Assicurati di utilizzare Python 3.9 o versioni successive.

  ```
  # set up a virtual environment
  python3 -m venv ${PWD}/venv
  source venv/bin/activate
  # install dependencies after git clone.
  
  git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
  cd sagemaker-hyperpod-recipes
  pip3 install -r requirements.txt
  # Set the aws region.
  
  aws configure set <your_region>
  ```
+ Installa SageMaker AI Python SDK

  ```
  pip3 install --upgrade sagemaker
  ```
+ `Container`: Il contenitore GPU viene impostato automaticamente dall'SDK SageMaker AI Python. Puoi anche fornire un tuo container.
**Nota**  
Se stai eseguendo un job di addestramento multimodale Llama 3.2, la versione di `transformers` deve essere `4.45.2 `o superiore.

  Aggiungi `transformers==4.45.2` `requirements.txt` a `source_dir` solo quando usi SageMaker AI Python SDK. Ad esempio, aggiungilo se lo usi in un notebook in AI. SageMaker JupyterLab

  Se utilizzi HyperPod ricette per l'avvio utilizzando il tipo di cluster`sm_jobs`, ciò verrà eseguito automaticamente.

## Avvio del job di addestramento con un notebook Jupyter
<a name="sagemaker-hyperpod-gpu-sagemaker-training-jobs-launch-training-job-notebook"></a>

Puoi usare il seguente codice Python per eseguire un processo di SageMaker formazione con la tua ricetta. Sfrutta lo PyTorch stimatore dell'[SDK AI SageMaker Python](https://sagemaker.readthedocs.io/en/stable/) per inviare la ricetta. L'esempio seguente avvia la ricetta llama3-8b sulla piattaforma AI Training. SageMaker 

```
import os
import sagemaker,boto3
from sagemaker.debugger import TensorBoardOutputConfig

from sagemaker.pytorch import PyTorch

sagemaker_session = sagemaker.Session()
role = sagemaker.get_execution_role()

bucket = sagemaker_session.default_bucket() 
output = os.path.join(f"s3://{bucket}", "output")
output_path = "<s3-URI>"

overrides = {
    "run": {
        "results_dir": "/opt/ml/model",
    },
    "exp_manager": {
        "exp_dir": "",
        "explicit_log_dir": "/opt/ml/output/tensorboard",
        "checkpoint_dir": "/opt/ml/checkpoints",
    },   
    "model": {
        "data": {
            "train_dir": "/opt/ml/input/data/train",
            "val_dir": "/opt/ml/input/data/val",
        },
    },
}

tensorboard_output_config = TensorBoardOutputConfig(
    s3_output_path=os.path.join(output, 'tensorboard'),
    container_local_output_path=overrides["exp_manager"]["explicit_log_dir"]
)

estimator = PyTorch(
    output_path=output_path,
    base_job_name=f"llama-recipe",
    role=role,
    instance_type="ml.p5.48xlarge",
    training_recipe="training/llama/hf_llama3_8b_seq8k_gpu_p5x16_pretrain",
    recipe_overrides=recipe_overrides,
    sagemaker_session=sagemaker_session,
    tensorboard_output_config=tensorboard_output_config,
)

estimator.fit(inputs={"train": "s3 or fsx input", "val": "s3 or fsx input"}, wait=True)
```

Il codice precedente crea un oggetto PyTorch estimatore con la ricetta di addestramento e quindi adatta il modello utilizzando il metodo. `fit()` Utilizza il parametro training\$1recipe per specificare la ricetta da utilizzare per l’addestramento.

**Nota**  
Se stai eseguendo un job di addestramento multimodale Llama 3.2, la versione di transformers deve essere 4.45.2 o superiore.

Aggiungi `transformers==4.45.2` `requirements.txt` a `source_dir` solo quando utilizzi direttamente SageMaker AI Python SDK. Ad esempio, devi aggiungere la versione al file di testo quando utilizzi un notebook Jupyter.

Quando distribuisci l'endpoint per un lavoro di SageMaker formazione, devi specificare l'URI dell'immagine che stai utilizzando. Se non lo fornisci, lo strumento di stima utilizza l’immagine di addestramento per l’implementazione. Le immagini di formazione SageMaker HyperPod fornite non contengono le dipendenze necessarie per l'inferenza e la distribuzione. Di seguito è riportato un esempio di come utilizzare un’immagine di inferenza per l’implementazione:

```
from sagemaker import image_uris
container=image_uris.retrieve(framework='pytorch',region='us-west-2',version='2.0',py_version='py310',image_scope='inference', instance_type='ml.p4d.24xlarge')
predictor = estimator.deploy(initial_instance_count=1,instance_type='ml.p4d.24xlarge',image_uri=container)
```

**Nota**  
L'esecuzione del codice precedente sull'istanza del notebook Sagemaker potrebbe richiedere più dei 5 GB di spazio di archiviazione predefiniti forniti dall'intelligenza artificiale. SageMaker JupyterLab Se riscontri problemi relativi allo spazio non disponibile, crea una nuova istanza del notebook di tipo diverso e aumenta lo spazio di archiviazione del notebook.

## Avvio del job di addestramento con l’utilità di avvio delle ricette
<a name="sagemaker-hyperpod-gpu-sagemaker-training-jobs-launch-training-job-recipes"></a>

Aggiorna il file `./recipes_collection/cluster/sm_jobs.yaml` in modo che abbia il seguente aspetto:

```
sm_jobs_config:
  output_path: <s3_output_path>
  tensorboard_config:
    output_path: <s3_output_path>
    container_logs_path: /opt/ml/output/tensorboard  # Path to logs on the container
  wait: True  # Whether to wait for training job to finish
  inputs:  # Inputs to call fit with. Set either s3 or file_system, not both.
    s3:  # Dictionary of channel names and s3 URIs. For GPUs, use channels for train and validation.
      train: <s3_train_data_path>
      val: null
  additional_estimator_kwargs:  # All other additional args to pass to estimator. Must be int, float or string.
    max_run: 180000
    enable_remote_debug: True
  recipe_overrides:
    exp_manager:
      explicit_log_dir: /opt/ml/output/tensorboard
    data:
      train_dir: /opt/ml/input/data/train
    model:
      model_config: /opt/ml/input/data/train/config.json
    compiler_cache_url: "<compiler_cache_url>"
```

Aggiorna `./recipes_collection/config.yaml` per specificare `sm_jobs` in `cluster` e `cluster_type`.

```
defaults:
  - _self_
  - cluster: sm_jobs  # set to `slurm`, `k8s` or `sm_jobs`, depending on the desired cluster
  - recipes: training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain
cluster_type: sm_jobs  # bcm, bcp, k8s or sm_jobs. If bcm, k8s or sm_jobs, it must match - cluster above.
```

Avvia il processo con il comando seguente.

```
python3 main.py --config-path recipes_collection --config-name config
```

Per ulteriori informazioni sulla configurazione dei lavori di SageMaker formazione, consulta Esegui un lavoro di formazione sui lavori di formazione. SageMaker 

# Tutorial di pre-formazione sui lavori SageMaker di formazione Trainium
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-pretrain-tutorial"></a>

Questo tutorial ti guida attraverso il processo di configurazione ed esecuzione di un lavoro di pre-formazione utilizzando lavori di formazione con SageMaker AWS istanze Trainium.
+ Configurare l'ambiente
+ Avvio di un job di addestramento

Prima di cominciare, assicurati che i requisiti seguenti siano soddisfatti.

**Prerequisiti**  
Prima di iniziare a configurare l’ambiente, assicurati di avere:  
 FSx File system Amazon o bucket S3 in cui è possibile caricare i dati e generare gli artefatti di addestramento.
Richiedi una quota di servizio per l'`ml.trn1.32xlarge`istanza su Amazon SageMaker AI. Per richiedere un aumento delle Service Quotas, procedi come descritto di seguito:  
Vai alla console AWS Service Quotas.
Scegli i AWS servizi.
Seleziona JupyterLab.
Specifica un’istanza per `ml.trn1.32xlarge`.
Crea un ruolo AWS Identity and Access Management (IAM) con `AmazonSageMakerFullAccess` le policy `AmazonEC2FullAccess` gestite. Queste politiche forniscono ad Amazon SageMaker AI le autorizzazioni per eseguire gli esempi.
I dati in uno dei seguenti formati:  
JSON
JSONGZ (JSON compresso)
ARROW
(Facoltativo) Se ti servono i pesi preallenati di HuggingFace o se stai allenando un modello Llama 3.2, devi ottenere il HuggingFace token prima di iniziare l'allenamento. Per ulteriori informazioni su come ottenere il token, consulta [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## Configura il tuo ambiente per i lavori di formazione Trainium SageMaker
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-environment-setup"></a>

Prima di eseguire un processo di SageMaker formazione, utilizza il `aws configure` comando per configurare AWS le credenziali e la regione preferita. In alternativa, puoi fornire le tue credenziali anche tramite variabili di ambiente come `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` e `AWS_SESSION_TOKEN`. Per ulteriori informazioni, consulta [SageMaker AI Python SDK](https://github.com/aws/sagemaker-python-sdk).

Consigliamo vivamente di utilizzare un notebook SageMaker AI Jupyter in SageMaker AI JupyterLab per avviare un processo di formazione. SageMaker Per ulteriori informazioni, consulta [SageMaker JupyterLab](studio-updated-jl.md).
+ (Facoltativo) Se utilizzi il notebook Jupyter in Amazon SageMaker Studio, puoi saltare l'esecuzione del comando seguente. Assicurati di utilizzare una versione uguale o superiore a Python 3.9.

  ```
  # set up a virtual environment
  python3 -m venv ${PWD}/venv
  source venv/bin/activate
  # install dependencies after git clone.
  
  git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
  cd sagemaker-hyperpod-recipes
  pip3 install -r requirements.txt
  ```
+ Installa SageMaker AI Python SDK

  ```
  pip3 install --upgrade sagemaker
  ```
+ 
  + Se stai eseguendo un job di addestramento multimodale Llama 3.2, la versione di `transformers` deve essere `4.45.2` o superiore.
    + Aggiungi `transformers==4.45.2` a `requirements.txt` in source\$1dir solo quando utilizzi l'SDK AI Python. SageMaker 
    + Se si utilizzano HyperPod ricette da avviare utilizzandole `sm_jobs` come tipo di cluster, non è necessario specificare la versione dei transformers.
  + `Container`: Il contenitore Neuron viene impostato automaticamente da SageMaker AI Python SDK.

## Avvio del job di addestramento con un notebook Jupyter
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-notebook"></a>

Puoi usare il seguente codice Python per eseguire un processo di SageMaker formazione utilizzando la tua ricetta. Sfrutta lo PyTorch stimatore dell'[SDK AI SageMaker Python](https://sagemaker.readthedocs.io/en/stable/) per inviare la ricetta. L'esempio seguente avvia la ricetta llama3-8b come AI Training Job. SageMaker 
+ `compiler_cache_url`: cache da utilizzare per salvare gli artefatti compilati, ad esempio un artefatto Amazon S3.

```
import os
import sagemaker,boto3
from sagemaker.debugger import TensorBoardOutputConfig

from sagemaker.pytorch import PyTorch

sagemaker_session = sagemaker.Session()
role = sagemaker.get_execution_role()

recipe_overrides = {
    "run": {
        "results_dir": "/opt/ml/model",
    },
    "exp_manager": {
        "explicit_log_dir": "/opt/ml/output/tensorboard",
    },
    "data": {
        "train_dir": "/opt/ml/input/data/train",
    },
    "model": {
        "model_config": "/opt/ml/input/data/train/config.json",
    },
    "compiler_cache_url": "<compiler_cache_url>"
} 

tensorboard_output_config = TensorBoardOutputConfig(
    s3_output_path=os.path.join(output, 'tensorboard'),
    container_local_output_path=overrides["exp_manager"]["explicit_log_dir"]
)

estimator = PyTorch(
    output_path=output_path,
    base_job_name=f"llama-trn",
    role=role,
    instance_type="ml.trn1.32xlarge",
    sagemaker_session=sagemaker_session,
    training_recipe="training/llama/hf_llama3_70b_seq8k_trn1x16_pretrain",
    recipe_overrides=recipe_overrides,
)

estimator.fit(inputs={"train": "your-inputs"}, wait=True)
```

Il codice precedente crea un oggetto PyTorch estimatore con la ricetta di addestramento e quindi adatta il modello utilizzando il metodo. `fit()` Utilizza il parametro `training_recipe` per specificare la ricetta da utilizzare per l’addestramento.

## Avvio del job di addestramento con l’utilità di avvio delle ricette
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-recipes"></a>
+ Aggiornamento di `./recipes_collection/cluster/sm_jobs.yaml`
  + compiler\$1cache\$1url: l’URL utilizzato per salvare gli artefatti. Può essere un URL di Amazon S3.

  ```
  sm_jobs_config:
    output_path: <s3_output_path>
    wait: True
    tensorboard_config:
      output_path: <s3_output_path>
      container_logs_path: /opt/ml/output/tensorboard  # Path to logs on the container
    wait: True  # Whether to wait for training job to finish
    inputs:  # Inputs to call fit with. Set either s3 or file_system, not both.
      s3:  # Dictionary of channel names and s3 URIs. For GPUs, use channels for train and validation.
        train: <s3_train_data_path>
        val: null
    additional_estimator_kwargs:  # All other additional args to pass to estimator. Must be int, float or string.
      max_run: 180000
      image_uri: <your_image_uri>
      enable_remote_debug: True
      py_version: py39
    recipe_overrides:
      model:
        exp_manager:
          exp_dir: <exp_dir>
        data:
          train_dir: /opt/ml/input/data/train
          val_dir: /opt/ml/input/data/val
  ```
+ Aggiornamento di `./recipes_collection/config.yaml`

  ```
  defaults:
    - _self_
    - cluster: sm_jobs
    - recipes: training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain
  cluster_type: sm_jobs # bcm, bcp, k8s or sm_jobs. If bcm, k8s or sm_jobs, it must match - cluster above.
  
  instance_type: ml.trn1.32xlarge
  base_results_dir: ~/sm_job/hf_llama3_8B # Location to store the results, checkpoints and logs.
  ```
+ Avvia il processo con `main.py`.

  ```
  python3 main.py --config-path recipes_collection --config-name config
  ```

Per ulteriori informazioni sulla configurazione dei lavori di SageMaker formazione, vedere. [SageMaker lavori di formazione tutorial di pre-formazione (GPU)](sagemaker-hyperpod-gpu-sagemaker-training-jobs-pretrain-tutorial.md)

# Configurazioni predefinite
<a name="default-configurations"></a>

Questa sezione descrive i componenti e le impostazioni essenziali necessari per avviare e personalizzare i processi di formazione utilizzando il Large Language Model (LLM). SageMaker HyperPod Questa sezione descrive i repository chiave, i file di configurazione e le strutture delle ricette che costituiscono la base dei job di addestramento. La comprensione di queste configurazioni predefinite è fondamentale per impostare e gestire in modo efficace i flussi di lavoro di addestramento LLM, sia quando utilizzi le ricette predefinite sia quando le personalizzi in base alle tue esigenze.

**Topics**
+ [GitHub archivi](github-repositories.md)
+ [Configurazione generale](sagemaker-hyperpod-recipes-general-configuration.md)

# GitHub archivi
<a name="github-repositories"></a>

Per avviare un processo di formazione, si utilizzano file provenienti da due archivi distinti GitHub:
+ [SageMaker HyperPod ricette](https://github.com/aws/sagemaker-hyperpod-recipes)
+ [SageMaker HyperPod adattatore da allenamento per NeMo](https://github.com/aws/sagemaker-hyperpod-training-adapter-for-nemo)

Questi repository contengono componenti essenziali per l’avvio, la gestione e la personalizzazione dei job di addestramento dei modelli linguistici di grandi dimensioni (LLM). Utilizzate gli script dei repository per configurare ed eseguire i lavori di formazione per i vostri. LLMs

## HyperPod archivio di ricette
<a name="sagemaker-hyperpod-recipe-repository"></a>

Usa l'archivio delle [SageMaker HyperPod ricette](https://github.com/aws/sagemaker-hyperpod-recipes) per ottenere una ricetta.

1. `main.py`: Questo file funge da punto di ingresso principale per l'avvio del processo di invio di un lavoro di formazione a un cluster o a un processo di formazione. SageMaker 

1. `launcher_scripts`: Questa directory contiene una raccolta di script di uso comune progettati per facilitare il processo di formazione per vari Large Language Models (). LLMs

1. `recipes_collection`: questa cartella contiene una raccolta di ricette LLM predefinite fornite dagli sviluppatori. Gli utenti possono sfruttare queste ricette insieme ai propri dati personalizzati per addestrare modelli LLM personalizzati in base alle loro esigenze specifiche.

Le SageMaker HyperPod ricette vengono utilizzate per avviare attività di formazione o perfezionamento. Indipendentemente dal cluster che stai utilizzando, il processo di invio del processo è lo stesso. Ad esempio, puoi utilizzare lo stesso script per inviare un processo a un cluster Slurm o Kubernetes. L’utilità di avvio invia un job di addestramento in base a tre file di configurazione:

1. Configurazione generale (`config.yaml`): include impostazioni comuni come i parametri predefiniti o le variabili di ambiente utilizzate nel job di addestramento.

1. Configurazione del cluster (cluster): per i job di addestramento che utilizzano solo i cluster. Se stai inviando un job di addestramento a un cluster Kubernetes, potresti dover specificare informazioni come volume, etichetta o policy di riavvio. Per i cluster Slurm, potrebbe essere necessario specificare il nome del processo Slurm. Tutti i parametri sono correlati al cluster specifico che stai utilizzando.

1. Ricetta (ricette): le ricette contengono le impostazioni per il job di addestramento, come i tipi di modello, il grado di sharding o i percorsi dei set di dati. Ad esempio, puoi specificare Llama come modello di addestramento e addestrarlo utilizzando tecniche di parallelizzazione del modello o dei dati come Fully Sharded Distributed Parallel (FSDP) su otto computer. Puoi anche specificare frequenze o percorsi di checkpoint diversi per il tuo job di addestramento.

Dopo aver specificato una ricetta, esegui lo script di avvio per specificare un processo di end-to-end formazione su un cluster in base alle configurazioni tramite il punto di ingresso. `main.py` Per ogni ricetta che utilizzi, sono disponibili script shell di accompagnamento nella cartella launch\$1scripts. Questi esempi ti guidano nelle procedure di invio e avvio dei job di addestramento. La figura seguente illustra come un lanciatore di SageMaker HyperPod ricette invia un processo di formazione a un cluster in base a quanto sopra. Attualmente, il lanciatore di SageMaker HyperPod ricette è basato su Nvidia Framework Launcher. NeMo [Per ulteriori informazioni, consulta NeMo Launcher Guide.](https://docs.nvidia.com/nemo-framework/user-guide/latest/overview.html)

![\[Diagramma che illustra il flusso di lavoro del programma di avvio delle HyperPod ricette. Sulla sinistra, all’interno di una casella tratteggiata, ci sono tre icone di file denominate “Ricetta”, “config.yaml” e “slurm.yaml o k8s.yaml o sm_job.yaml (configurazione cluster)”. Una freccia punta da questo riquadro verso una casella centrale denominata "Recipe Launcher»HyperPod . Da questa casella centrale, un’altra freccia punta a destra verso “Job di addestramento”, con “main.py” scritto sopra la freccia.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/sagemaker-hyperpod-recipe-launcher.png)


## HyperPod archivio di adattatori per ricette
<a name="hyperpod-recipe-adapter"></a>

L'adattatore SageMaker HyperPod di formazione è un framework di formazione. Puoi utilizzarlo per gestire l’intero ciclo di vita dei tuoi job di addestramento. Utilizza l’adattatore per implementare il preaddestramento o il fine-tuning dei modelli in più computer. L’adattatore utilizza diverse tecniche di parallelizzazione per distribuire l’addestramento. Gestisce anche l’implementazione e la gestione del salvataggio dei checkpoint. Per ulteriori dettagli, consultare [Impostazioni avanzate](cluster-specific-configurations-advanced-settings.md).

Usa il [repository degli adattatori per SageMaker HyperPod ricette](https://github.com/aws/sagemaker-hyperpod-training-adapter-for-nemo) per utilizzare l'adattatore per ricette.

1. `src`: questa directory contiene l’implementazione dell’addestramento dei modelli linguistici di grandi dimensioni (LLM), che comprende varie funzionalità come la parallelizzazione del modello, l’addestramento di precisione misto e la gestione dei checkpoint.

1. `examples`: questa cartella fornisce una raccolta di esempi che mostrano come creare un punto di ingresso per l’addestramento di un modello LLM e funge da guida pratica per gli utenti.

# Configurazione generale
<a name="sagemaker-hyperpod-recipes-general-configuration"></a>

Il file config.yaml specifica la ricetta di addestramento e il cluster. Include anche configurazioni di runtime come le variabili di ambiente per il job di addestramento.

```
defaults:
  - _self_
  - cluster: slurm 
  - recipes: training/llama/hf_llama3_8b_seq8192_gpu
instance_type: p5.48xlarge
git:
  repo_url_or_path: null
  branch: null
  commit: null
  entry_script: null
  token: null
env_vars:
  NCCL_DEBUG: WARN
```

Puoi modificare i parametri seguenti in `config.yaml`:

1. `defaults`: specifica le impostazioni predefinite, ad esempio il cluster predefinito o le ricette predefinite.

1. `instance_type`: modifica il tipo di istanza Amazon EC2 in modo che corrisponda al tipo di istanza che stai utilizzando.

1. `git`: Specificate la posizione dell'archivio degli adattatori di SageMaker HyperPod ricette per il processo di formazione.

1. `env_vars`: puoi specificare le variabili di ambiente da passare al job di addestramento al runtime. Ad esempio, puoi regolare il livello di registrazione di log di NCCL specificando la variabile di ambiente NCCL\$1DEBUG.

La ricetta è la configurazione principale che definisce l’architettura del job di addestramento. Questo file include molte informazioni importanti per il tuo job di addestramento, come le seguenti:
+ Se utilizzare la parallelizzazione del modello
+ L’origine dei tuoi set di dati
+ Addestramento di precisione misto
+ Configurazioni relative ai checkpoint

Puoi utilizzare le ricette così come sono. Oppure, puoi utilizzare le informazioni seguenti per modificarle.

## run
<a name="run"></a>

Di seguito sono riportate le informazioni di base per l’esecuzione del job di addestramento.

```
run:
  name: llama-8b
  results_dir: ${base_results_dir}/${.name}
  time_limit: "6-00:00:00"
  model_type: hf
```

1. `name`: specifica il nome del job di addestramento nel file di configurazione.

1. `results_dir`: puoi specificare la directory in cui vengono archiviati i risultati del job di addestramento.

1. `time_limit`: puoi impostare un tempo massimo di addestramento per il job di addestramento per evitare che occupi troppo a lungo le risorse hardware.

1. `model_type`: puoi specificare il tipo di modello che stai utilizzando. Ad esempio, è possibile specificare `hf` se il modello proviene da HuggingFace.

## exp\$1manager
<a name="exp-manager"></a>

exp\$1manager configura l’esperimento. Con exp\$1manager, puoi specificare campi come la directory di output o le impostazioni del checkpoint. Di seguito è riportato un esempio su come configurare exp\$1manager.

```
exp_manager:
  exp_dir: null
  name: experiment
  create_tensorboard_logger: True
```

1. `exp_dir`: la directory degli esperimenti include l’output standard e i file di errore standard per il job di addestramento. Per impostazione predefinita, utilizza la directory corrente.

1. `name`: il nome dell’esperimento utilizzato per identificare l’esperimento in exp\$1dir.

1. `create_tensorboard_logger`: `False` Specificare `True` o abilitare o disabilitare il TensorBoard logger.

## Checkpoint
<a name="checkpointing"></a>

Ecco i tre tipi di checkpoint supportati:
+ Checkpoint automatici
+ Checkpoint manuali
+ Checkpoint completo

### Checkpoint automatici
<a name="auto-checkpointing"></a>

Se stai salvando o caricando checkpoint gestiti automaticamente dall'adattatore per SageMaker HyperPod ricette, puoi abilitarli. `auto_checkpoint` Per abilitare `auto_checkpoint`, imposta `enabled` su `True`. Puoi utilizzare i checkpoint automatici sia per l’addestramento che per il fine-tuning. Puoi utilizzare i checkpoint automatici sia per i file system condivisi che per Amazon S3.

```
exp_manager
  checkpoint_dir: ${recipes.exp_manager.exp_dir}/checkpoints/
  auto_checkpoint:
    enabled: True
```

Il checkpoint automatico sta salvando local\$1state\$1dict in modo asincrono con un intervallo di salvataggio ottimale calcolato automaticamente.

**Nota**  
Con questa modalità, i checkpoint salvati automaticamente non supportano il re-sharding tra le esecuzioni di addestramento. Per riprendere dall’ultimo checkpoint salvato automaticamente, è necessario mantenere gli stessi gradi di sharding. Non è necessario specificare informazioni aggiuntive per la ripresa automatica.

### Checkpoint manuali
<a name="manual-checkpointing"></a>

Puoi modificare `checkpoint_callback_params` per salvare in modo asincrono un checkpoint intermedio in shared\$1state\$1dict. Ad esempio, puoi specificare la configurazione seguente per abilitare i checkpoint con shard dopo ogni dieci fasi e mantenere gli ultimi tre checkpoint.

I checkpoint con shard consentono di modificare i gradi di sharding tra le esecuzioni di addestramento e di caricare il checkpoint impostando `resume_from_checkpoint`.

**Nota**  
Se si tratta di un fine-tuning PEFT, i checkpoint con shard non supportano Amazon S3.
I checkpoint automatici e manuali si escludono a vicenda.
Sono consentite solo modifiche ai gradi di sharding e di replica FSDP.

```
exp_manager:
  checkpoint_callback_params:
    # Set save_top_k = 0 to disable sharded checkpointing
    save_top_k: 3
    every_n_train_steps: 10
    monitor: "step"
    mode: "max"
    save_last: False
  resume_from_checkpoint: ${recipes.exp_manager.exp_dir}/checkpoints/
```

Per ulteriori informazioni sui checkpoint, consulta [Checkpointing con SMP](model-parallel-core-features-v2-checkpoints.md).

### Checkpoint completo
<a name="full-checkpointing"></a>

Il checkpoint full\$1state\$1dict esportato può essere utilizzato per l’inferenza o il fine-tuning. Puoi caricare un checkpoint completo con hf\$1model\$1name\$1or\$1path. In questa modalità, vengono salvati solo i pesi del modello.

Per esportare il modello full\$1state\$1dict, puoi impostare i parametri seguenti.

**Nota**  
Attualmente, i checkpoint completi non sono supportati per Amazon S3. Non puoi impostare il percorso S3 per `exp_manager.checkpoint_dir` se stai abilitando i checkpoint completi. Tuttavia, puoi impostare `exp_manager.export_full_model.final_export_dir` su una directory specifica nel tuo file system locale e `exp_manager.checkpoint_dir` su un percorso Amazon S3.

```
exp_manager:
  export_full_model:
    # Set every_n_train_steps = 0 to disable full checkpointing
    every_n_train_steps: 0
    save_last: True
    final_export_dir : null
```

## modello
<a name="model"></a>

Definisci i vari aspetti dell’architettura del modello e del job di addestramento. Sono incluse le impostazioni per la parallelizzazione del modello, la precisione e la gestione dei dati. Di seguito sono riportati i componenti chiave che puoi configurare nella sezione del modello:

### parallelizzazione del modello
<a name="model-parallelism"></a>

Dopo aver specificato la ricetta, definisci il modello che stai addestrando. Puoi anche definire la parallelizzazione del modello. Ad esempio, puoi definire tensor\$1model\$1parallel\$1degree. Puoi abilitare altre funzionalità come l'allenamento con FP8 precisione. Ad esempio, puoi addestrare un modello con la parallelizzazione tensoriale e la parallelizzazione contestuale:

```
model:
  model_type: llama_v3
  # Base configs
  train_batch_size: 4
  val_batch_size: 1
  seed: 12345
  grad_clip: 1.0

  # Model parallelism
  tensor_model_parallel_degree: 4
  expert_model_parallel_degree: 1
  context_parallel_degree: 2
```

Per comprendere meglio le diverse tecniche di parallelizzazione del modello, puoi fare riferimento ai seguenti approcci:

1. [Parallelizzazione tensoriale](model-parallel-core-features-v2-tensor-parallelism.md)

1. [Parallelizzazione degli esperti](model-parallel-core-features-v2-expert-parallelism.md)

1. [Parallelizzazione del contesto](model-parallel-core-features-v2-context-parallelism.md)

1. [Parallelizzazione dei dati sottoposti a sharding](model-parallel-core-features-v2-sharded-data-parallelism.md)

### FP8
<a name="fp8"></a>

Per abilitare FP8 (precisione a virgola mobile a 8 bit), puoi specificare la configurazione FP8 relativa nell'esempio seguente:

```
model:
  # FP8 config
  fp8: True
  fp8_amax_history_len: 1024
  fp8_amax_compute_algo: max
```

È importante notare che il formato FP8 dei dati è attualmente supportato solo sul tipo di istanza P5. Se utilizzi un tipo di istanza precedente, come P4, disabilita la FP8 funzionalità per il processo di addestramento del modello. Per ulteriori informazioni su FP8, consulta[Addestramento di precisione misto](model-parallel-core-features-v2-mixed-precision.md).

### data
<a name="data"></a>

Puoi specificare i set di dati personalizzati per il job di addestramento aggiungendo i percorsi dei dati nei dati. Il modulo dati del nostro sistema supporta i seguenti formati dei dati:

1. JSON

1. JSONGZ (JSON compresso)

1. ARROW

Tuttavia, la preparazione del set di dati pretokenizzato è una tua responsabilità. Se sei un utente esperto e hai requisiti specifici, puoi anche implementare e integrare un modulo dati personalizzato. Per ulteriori informazioni sui HuggingFace set di dati, vedere [Datasets](https://huggingface.co/docs/datasets/v3.1.0/en/index).

```
model:
  data:
    train_dir: /path/to/your/train/data
    val_dir: /path/to/your/val/data
    dataset_type: hf
    use_synthetic_data: False
```

Puoi specificare come stai addestrando il modello. Per impostazione predefinita, la ricetta utilizza il preaddestramento anziché il fine-tuning. L’esempio seguente configura la ricetta per eseguire un processo di fine-tuning con LoRA (Low-Rank Adaptation).

```
model:
  # Fine tuning config
  do_finetune: True
  # The path to resume from, needs to be HF compatible
  hf_model_name_or_path: null
  hf_access_token: null
  # PEFT config
  peft:
    peft_type: lora
    rank: 32
    alpha: 16
    dropout: 0.1
```

[Per informazioni sulle ricette, vedi SageMaker HyperPod ricette.](https://github.com/aws/sagemaker-hyperpod-recipes)

# Configurazioni specifiche dei cluster
<a name="cluster-specific-configurations"></a>

SageMaker HyperPod offre flessibilità nell'esecuzione di lavori di formazione in diversi ambienti di cluster. Ogni ambiente ha requisiti e processi di configurazione specifici. Questa sezione descrive i passaggi e le configurazioni necessarie per eseguire i lavori di formazione in SageMaker HyperPod Slurm, SageMaker HyperPod k8s e i lavori di formazione. SageMaker La comprensione di queste configurazioni è fondamentale per sfruttare efficacemente la potenza dell’addestramento distribuito nell’ambiente prescelto.

Puoi utilizzare una ricetta negli ambienti cluster seguenti:
+ SageMaker HyperPod Orchestrazione Slurm
+ SageMaker HyperPod Orchestrazione di servizi Amazon Elastic Kubernetes
+ SageMaker lavori di formazione

Per avviare un job di addestramento in un cluster, imposta e installa la configurazione e l’ambiente del cluster corrispondenti.

**Topics**
+ [Esecuzione di un lavoro di formazione su HyperPod Slurm](cluster-specific-configurations-run-training-job-hyperpod-slurm.md)
+ [Esecuzione di un processo di formazione su k8s HyperPod](cluster-specific-configurations-run-training-job-hyperpod-k8s.md)
+ [SageMaker Esecuzione di un processo di formazione](cluster-specific-configurations-run-sagemaker-training-job.md)

# Esecuzione di un lavoro di formazione su HyperPod Slurm
<a name="cluster-specific-configurations-run-training-job-hyperpod-slurm"></a>

SageMaker HyperPod Recipes supporta l'invio di un lavoro di formazione a un GPU/Trainium cluster slurm. Prima di inviare il job di addestramento, aggiorna la configurazione del cluster. Utilizza uno dei metodi seguenti per aggiornare la configurazione del cluster:
+ Modificare le `slurm.yaml`
+ Sovrascrivila tramite la riga di comando

Dopo aver aggiornato la configurazione del cluster, installa l’ambiente.

## Configurazione del cluster
<a name="cluster-specific-configurations-configure-cluster-slurm-yaml"></a>

Per inviare un job di addestramento a un cluster Slurm, imposta la configurazione specifica per Slurm. Modifica `slurm.yaml` per configurare il cluster Slurm. Di seguito è riportato un esempio di configurazione del cluster Slurm. Puoi modificare questo file in base alle tue esigenze di addestramento:

```
job_name_prefix: 'sagemaker-'
slurm_create_submission_file_only: False 
stderr_to_stdout: True
srun_args:
  # - "--no-container-mount-home"
slurm_docker_cfg:
  docker_args:
    # - "--runtime=nvidia" 
  post_launch_commands: 
container_mounts: 
  - "/fsx:/fsx"
```

1. `job_name_prefix`: specifica un prefisso per il nome del processo per identificare facilmente i tue invii al cluster Slurm.

1. `slurm_create_submission_file_only`: imposta questa configurazione su True per un’esecuzione di prova che faciliti il debug.

1. `stderr_to_stdout`: specifica se stai reindirizzando l’errore standard (stderr) all’output standard (stdout).

1. `srun_args`: personalizza le configurazioni srun aggiuntive, ad esempio escludendo nodi di calcolo specifici. Per ulteriori informazioni, consulta la documentazione relativa a srun.

1. `slurm_docker_cfg`: Il programma di avvio delle SageMaker HyperPod ricette avvia un contenitore Docker per eseguire il processo di formazione. Puoi specificare argomenti Docker aggiuntivi all’interno di questo parametro.

1. `container_mounts`: specifica i volumi che stai montando nel container nell’utilità di avvio delle ricette per consentire ai job di addestramento di accedere ai file in quei volumi.

# Esecuzione di un processo di formazione su k8s HyperPod
<a name="cluster-specific-configurations-run-training-job-hyperpod-k8s"></a>

SageMaker HyperPod Recipes supporta l'invio di un lavoro di formazione a un cluster GPU/Trainium Kubernetes. Prima di inviare il job di addestramento, completa una delle operazioni seguenti:
+ Modifica il file di configurazione del cluster `k8s.yaml`
+ Sovrascrivi la configurazione del cluster tramite la riga di comando

Dopo aver eseguito una delle fasi precedenti, installa l’ambiente corrispondente.

## Configurazione del cluster con `k8s.yaml`
<a name="cluster-specific-configurations-configure-cluster-k8s-yaml"></a>

Per inviare un job di addestramento a un cluster Kubernetes, devi impostare le configurazioni specifiche per Kubernetes. Le configurazioni includono il namespace del cluster o la posizione del volume persistente.

```
pullPolicy: Always
restartPolicy: Never
namespace: default
persistent_volume_claims:
  - null
```

1. `pullPolicy`: puoi specificare la policy pull quando invii un job di addestramento. Se specifichi “Sempre”, il cluster Kubernetes estrae sempre l’immagine dal repository. Per ulteriori informazioni, consulta [Image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy).

1. `restartPolicy`: specifica se riavviare il job di addestramento se non riesce.

1. `namespace`: puoi specificare il namespace Kubernetes a cui viene inviato il job di addestramento.

1. `persistent_volume_claims`: puoi specificare un volume condiviso per il tuo job di addestramento per consentire a tutti i processi di addestramento di accedere ai file nel volume.

# SageMaker Esecuzione di un processo di formazione
<a name="cluster-specific-configurations-run-sagemaker-training-job"></a>

SageMaker HyperPod Recipes supporta l'invio di un lavoro SageMaker di formazione. Prima di inviare il job di addestramento, devi aggiornare la configurazione del cluster, `sm_job.yaml`, e installare l’ambiente corrispondente.

## Usa la tua ricetta come lavoro SageMaker formativo
<a name="cluster-specific-configurations-cluster-config-sm-job-yaml"></a>

Puoi usare la tua ricetta come lavoro di SageMaker formazione se non gestisci un cluster. È necessario modificare il file di configurazione del processo di SageMaker formazione per eseguire la ricetta. `sm_job.yaml`

```
sm_jobs_config:
  output_path: null 
  tensorboard_config:
    output_path: null 
    container_logs_path: null
  wait: True 
  inputs: 
    s3: 
      train: null
      val: null
    file_system:  
      directory_path: null
  additional_estimator_kwargs: 
    max_run: 1800
```

1. `output_path`: puoi specificare dove salvare il modello in un URL Amazon S3.

1. `tensorboard_config`: È possibile specificare una configurazione TensorBoard correlata, ad esempio il percorso di output o il percorso TensorBoard dei registri.

1. `wait`: puoi specificare se stai aspettando il completamento del processo quando invii il tuo job di addestramento.

1. `inputs`: puoi specificare i percorsi per i dati di addestramento e convalida. L'origine dati può provenire da un file system condiviso come Amazon FSx o un URL Amazon S3.

1. `additional_estimator_kwargs`: Argomenti di valutazione aggiuntivi per l'invio di un lavoro di formazione alla piattaforma Training Job. SageMaker Per ulteriori informazioni, consulta [Algorithm Estimator](https://sagemaker.readthedocs.io/en/stable/api/training/algorithm.html).

# Considerazioni
<a name="cluster-specific-configurations-special-considerations"></a>

Quando utilizzi una SageMaker HyperPod ricetta Amazon, ci sono alcuni fattori che possono influire sul processo di formazione dei modelli.
+ La versione di `transformers` deve essere uguale o superiore a `4.45.2` per Llama 3.2. Se utilizzi un flusso di lavoro Slurm o K8s, la versione viene aggiornata automaticamente.
+ Mixtral non supporta la precisione in virgola mobile a 8 bit () FP8
+ L'istanza Amazon EC2 p4 non supporta FP8

# Impostazioni avanzate
<a name="cluster-specific-configurations-advanced-settings"></a>

L'adattatore per SageMaker HyperPod ricette è basato sui framework Nvidia Nemo e PyTorch-Lightning. Se hai già utilizzato questi framework, l'integrazione di modelli o funzionalità personalizzati nell'adattatore per ricette è un processo simile. SageMaker HyperPod Oltre a modificare l’adattatore delle ricette, puoi modificare il tuo script di preaddestramento o di fine-tuning. Per indicazioni su come scrivere uno script di addestramento personalizzato, consulta gli [esempi](https://github.com/aws/sagemaker-hyperpod-training-adapter-for-nemo/tree/main/examples).

## Usa l' SageMaker HyperPod adattatore per creare il tuo modello
<a name="cluster-specific-configurations-use-hyperpod-adapter-create-model"></a>

All’interno dell’adattatore delle ricette, puoi personalizzare i file seguenti nelle posizioni specificate:

1. `collections/data`: contiene un modulo responsabile del caricamento dei set di dati. Attualmente supporta solo set di dati provenienti da HuggingFace. Se hai requisiti più avanzati, la struttura del codice ti consente di aggiungere moduli dati personalizzati all’interno della stessa cartella.

1. `collections/model`: include le definizioni di vari modelli linguistici. Al momento, supporta i modelli linguistici di grandi dimensioni più diffusi, come Llama, Mixtral e Mistral. Questa opzione ti offre la flessibilità di introdurre le tue definizioni del modello all’interno di questa cartella.

1. `collections/parts`: questa cartella contiene strategie per addestrare i modelli in modo distribuito. Un esempio è la strategia Fully Sharded Data Parallel (FSDP), che consente lo sharding di un modello linguistico di grandi dimensioni su più acceleratori. Inoltre, le strategie supportano varie forme di parallelizzazione del modello. Puoi anche introdurre strategie di addestramento personalizzate per l’addestramento dei modelli.

1. `utils`: contiene varie utilità volte a facilitare la gestione di un job di addestramento. Funge da repository dove conservare i propri strumenti. Puoi utilizzare i tuoi strumenti per attività come la risoluzione dei problemi o il benchmarking. Puoi anche aggiungere i tuoi callback PyTorch Lightning personalizzati all'interno di questa cartella. Puoi utilizzare i callback PyTorch Lightning per integrare senza problemi funzionalità o operazioni specifiche nel ciclo di vita della formazione.

1. `conf`: contiene le definizioni dello schema di configurazione utilizzate per convalidare parametri specifici in un job di addestramento. Se introduci nuovi parametri o configurazioni, puoi aggiungere lo schema personalizzato a questa cartella. Puoi utilizzare lo schema personalizzato per definire le regole di convalida. Puoi convalidare tipi di dati, intervalli o qualsiasi altro vincolo di parametro. Puoi anche definire uno schema personalizzato per convalidare i parametri.

# Appendice
<a name="appendix"></a>

Consulta la sezione seguente per ottenere informazioni sul monitoraggio e l’analisi dei risultati dell’addestramento.

## Monitoraggio dei risultati dell’addestramento
<a name="monitor-training-results"></a>

Il monitoraggio e l'analisi dei risultati della formazione sono essenziali per gli sviluppatori per valutare la convergenza e risolvere i problemi. SageMaker HyperPod le ricette offrono l'integrazione con Tensorboard per analizzare il comportamento di allenamento. Per affrontare le sfide legate alla profilazione di lavori di formazione distribuiti su larga scala, queste ricette includono anche. VizTracer VizTracerè uno strumento a basso costo per tracciare e visualizzare l'esecuzione del codice Python. Per ulteriori informazioni su, vedere. VizTracer [VizTracer](https://viztracer.readthedocs.io/en/latest/installation.html)

Le seguenti sezioni ti guidano nel processo di implementazione di queste funzionalità nelle tue SageMaker HyperPod ricette.

### TensorBoard
<a name="tensorboard"></a>

TensorBoard è un potente strumento per visualizzare e analizzare il processo di addestramento. Per abilitare TensorBoard, modifica la ricetta impostando il parametro seguente:

```
exp_manager:
  exp_dir: null
  name: experiment
  create_tensorboard_logger: True
```

Dopo aver abilitato il logger TensorBoard, i log di addestramento vengono generati e archiviati nella directory degli esperimenti. L’esperimento è definito in exp\$1manager.exp\$1dir. Per accedere ai log e analizzarli in locale, procedi come indicato di seguito:

**Per accedere ai log e analizzarli**

1. Scarica la cartella degli esperimenti TensorBoard dal tuo ambiente di addestramento al computer locale.

1. Apri un prompt del terminale o di comando sul tuo computer locale.

1. Passa alla directory che contiene la cartella degli esperimenti scaricata.

1. Avvia TensorBoard con il comando seguente.

   ```
   tensorboard --port=<port> --bind_all --logdir experiment.
   ```

1. Apri il browser web e vai a http://localhost:8008.

Ora puoi vedere lo stato e le visualizzazioni dei tuoi job di addestramento all’interno dell’interfaccia TensorBoard. L’accesso allo stato e alle visualizzazioni consente di monitorare e analizzare il processo di addestramento. Il monitoraggio e l’analisi del processo di addestramento consentono di ottenere informazioni approfondite sul comportamento e sulle prestazioni dei modelli. Per ulteriori informazioni su come monitorare e analizzare la formazione con Tensorboard, consulta la Guida per l'utente di [NVIDIA Framework NeMo ](https://docs.nvidia.com/nemo-framework/user-guide/latest/llms/index.html).

### VizTracer
<a name="viztracer"></a>

Per abilitarlo VizTracer, puoi modificare la tua ricetta impostando il parametro model.viztracer.enabled su true. Ad esempio, puoi aggiornare la ricetta del lama per VizTracer abilitarla aggiungendo la seguente configurazione:

```
model:
  viztracer:
    enabled: true
```

Una volta completata la formazione, il tuo VizTracer profilo si trova nella cartella degli esperimenti exp\$1dir/result.json. Per analizzare il tuo profilo, puoi scaricarlo e aprirlo utilizzando lo strumento vizviewer:

```
vizviewer --port <port> result.json
```

Questo comando avvia vizviewer sulla porta 9001. <port>Puoi visualizzarlo VizTracer specificando http://localhost: nel tuo browser. Dopo l'apertura VizTracer, iniziate ad analizzare l'allenamento. Per ulteriori informazioni sull'utilizzo VizTracer, consultate VizTracer la documentazione.

## SageMaker JumpStart contro SageMaker HyperPod
<a name="sagemaker-jumpstart-vs-hyperpod"></a>

Sebbene SageMaker JumpStart forniscano funzionalità di ottimizzazione, le SageMaker HyperPod ricette forniscono quanto segue:
+ Controllo granulare aggiuntivo sul ciclo di addestramento
+ Personalizzazione delle ricette per i tuoi modelli e dati
+ Supporto per la parallelizzazione del modello

Utilizza le SageMaker HyperPod ricette quando hai bisogno di accedere agli iperparametri del modello, all'addestramento multinodo e alle opzioni di personalizzazione per il ciclo di allenamento.

Per ulteriori informazioni sulla messa a punto dei modelli, consulta SageMaker JumpStart [Fine-tuning dei modelli di fondazione disponibili al pubblico con la classe `JumpStartEstimator`](jumpstart-foundation-models-use-python-sdk-estimator-class.md)

# Orchestrazione SageMaker HyperPod dei cluster con Slurm
<a name="sagemaker-hyperpod-slurm"></a>

Il supporto di Slurm SageMaker HyperPod consente di fornire cluster resilienti per l'esecuzione di carichi di lavoro di machine learning (ML) e lo sviluppo di state-of-the-art modelli come modelli di linguaggio di grandi dimensioni (), modelli di diffusione e modelli di base (LLMs). FMs Accelera lo sviluppo FMs eliminando gli oneri indifferenziati legati alla creazione e alla manutenzione di cluster di elaborazione su larga scala alimentati da migliaia di acceleratori come Trainium e NVIDIA A100 e H100 Graphical Processing Units (). AWS GPUs In caso di guasto degli acceleratori, le funzionalità di resilienza dei SageMaker HyperPod monitor e delle istanze cluster rilevano e sostituiscono automaticamente l'hardware difettoso in modo che tu possa concentrarti sull'esecuzione di carichi di lavoro ML. Inoltre, con il supporto per la configurazione del ciclo di vita SageMaker HyperPod, puoi personalizzare il tuo ambiente di elaborazione per adattarlo al meglio alle tue esigenze e configurarlo con le librerie di formazione distribuite di Amazon SageMaker AI per ottenere prestazioni ottimali su. AWS

**Gestione dei cluster**

È possibile creare, configurare e gestire SageMaker HyperPod i cluster graficamente tramite l'interfaccia utente della console (UI) e programmaticamente tramite l'interfaccia a AWS riga di comando (CLI) oppure. AWS SDK per Python (Boto3) Con Amazon VPC, puoi proteggere la rete del cluster e anche trarre vantaggio dalla configurazione del cluster con risorse nel tuo VPC, come Amazon FSx for Lustre, che offre il throughput più veloce. Puoi anche assegnare diversi ruoli IAM ai gruppi di istanze del cluster e limitare le azioni che le risorse e gli utenti del cluster possono eseguire. Per ulteriori informazioni, consulta [SageMaker HyperPod Operazioni del cluster Slurm](sagemaker-hyperpod-operate-slurm.md).

**Configurazione dell’ambiente di ML**

SageMaker HyperPod viene eseguito[SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami), che configura un ambiente ML sui cluster. HyperPod Puoi configurare personalizzazioni aggiuntive per DLAMI fornendo script del ciclo di vita per supportare il tuo caso d’uso. Per ulteriori informazioni su come configurare gli script del ciclo di vita, consulta [Iniziare con SageMaker HyperPod](smcluster-getting-started-slurm.md) e [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md).

**Pianificazione dei processi**

Dopo aver creato correttamente un HyperPod cluster, gli utenti del cluster possono accedere ai nodi del cluster (come il nodo principale o controller, il nodo di accesso e il nodo di lavoro) e pianificare i lavori per l'esecuzione di carichi di lavoro di machine learning. Per ulteriori informazioni, consulta [Lavori su cluster SageMaker HyperPod](sagemaker-hyperpod-run-jobs-slurm.md).

**Resilienza contro i guasti hardware**

SageMaker HyperPod esegue controlli di integrità sui nodi del cluster e fornisce una funzionalità di ripristino automatico del carico di lavoro. Con le funzionalità di resilienza del cluster di HyperPod, puoi riprendere il carico di lavoro dall'ultimo checkpoint salvato, dopo che i nodi difettosi sono stati sostituiti con nodi integri in cluster con più di 16 nodi. Per ulteriori informazioni, consulta [SageMaker HyperPod resilienza del cluster](sagemaker-hyperpod-resiliency-slurm.md).

**Registrazione di log e gestione dei cluster**

Puoi trovare i parametri di utilizzo SageMaker HyperPod delle risorse e i log del ciclo di vita in Amazon e gestire le SageMaker HyperPod risorse CloudWatch taggandole. Ogni esecuzione dell’API `CreateCluster` crea un flusso di log distinto, denominato in base al formato `<cluster-name>-<timestamp>`. Nel flusso di log, puoi controllare i nomi degli host, il nome degli script del ciclo di vita non riusciti e gli output degli script non riusciti, ad esempio `stdout` e `stderr`. Per ulteriori informazioni, consulta [SageMaker HyperPod gestione dei cluster](sagemaker-hyperpod-cluster-management-slurm.md).

** SageMaker Compatibile con gli strumenti di intelligenza artificiale**

Utilizzando SageMaker HyperPod, puoi configurare i cluster con librerie di comunicazioni collettive AWS ottimizzate offerte dall' SageMaker IA, come la libreria [SageMaker AI Distributed Data Parallelism (SMDDP](data-parallel.md)). La libreria SMDDP implementa il `AllGather` funzionamento ottimizzato per l'infrastruttura di AWS calcolo e di rete per le istanze di machine learning AI più performanti SageMaker basate su NVIDIA A100. GPUs Per ulteriori informazioni, consulta [Esecuzione di carichi di lavoro di formazione distribuiti con Slurm on HyperPod](sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload.md).

**Posizionamento delle istanze con UltraServers**

SageMaker L'intelligenza artificiale alloca automaticamente i lavori alle istanze interne all'azienda sulla UltraServer base di una strategia che prevede al massimo l'utilizzo di tutte le istanze di una UltraServer prima di utilizzarne un'altra. Ad esempio, se richiedi 14 istanze e ne hai 2 UltraServers nel tuo piano di allenamento, l' SageMaker IA utilizza tutte le istanze della prima. UltraServer Se hai richiesto 20 istanze e ne hai 2 UltraServers nel tuo piano di allenamento, l' SageMaker IA utilizzerà tutte le 17 istanze nella prima UltraServer e poi ne utilizzerà 3 nella seconda. UltraServer

**Topics**
+ [Iniziare con SageMaker HyperPod](smcluster-getting-started-slurm.md)
+ [SageMaker HyperPod Operazioni del cluster Slurm](sagemaker-hyperpod-operate-slurm.md)
+ [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md)
+ [SageMaker HyperPod supporto per nodi multitesta](sagemaker-hyperpod-multihead-slurm.md)
+ [Lavori su cluster SageMaker HyperPod](sagemaker-hyperpod-run-jobs-slurm.md)
+ [SageMaker HyperPod monitoraggio delle risorse del cluster](sagemaker-hyperpod-cluster-observability-slurm.md)
+ [SageMaker HyperPod resilienza del cluster](sagemaker-hyperpod-resiliency-slurm.md)
+ [Provisioning continuo per operazioni avanzate del cluster con Slurm](sagemaker-hyperpod-scaling-slurm.md)
+ [SageMaker HyperPod gestione dei cluster](sagemaker-hyperpod-cluster-management-slurm.md)
+ [SageMaker HyperPod FAQs](sagemaker-hyperpod-faq-slurm.md)

# Iniziare con SageMaker HyperPod
<a name="smcluster-getting-started-slurm"></a>

Inizia a creare il tuo primo SageMaker HyperPod cluster e scopri le funzionalità operative del cluster di. SageMaker HyperPod Puoi creare un SageMaker HyperPod cluster tramite l'interfaccia utente della console SageMaker AI o i AWS CLI comandi. Questo tutorial mostra come creare un nuovo SageMaker HyperPod cluster con Slurm, un popolare software di pianificazione del carico di lavoro. Dopo aver seguito questo tutorial, saprai come accedere ai nodi del cluster usando i AWS Systems Manager comandi (). `aws ssm` Dopo aver completato questo tutorial, consulta anche [SageMaker HyperPod Operazioni del cluster Slurm](sagemaker-hyperpod-operate-slurm.md) per saperne di più sulle operazioni SageMaker HyperPod di base e [Lavori su cluster SageMaker HyperPod](sagemaker-hyperpod-run-jobs-slurm.md) per imparare a pianificare i lavori sul cluster predisposto.

**Suggerimento**  
[Per trovare esempi e soluzioni pratiche, vedi anche il SageMaker HyperPod workshop.](https://catalog.workshops.aws/sagemaker-hyperpod)

**Topics**
+ [Guida introduttiva all' SageMaker HyperPod utilizzo della console SageMaker AI](smcluster-getting-started-slurm-console.md)
+ [Creazione di cluster utilizzando modelli SageMaker HyperPod CloudFormation](smcluster-getting-started-slurm-console-create-cluster-cfn.md)
+ [Guida introduttiva all'utilizzo di SageMaker HyperPod AWS CLI](smcluster-getting-started-slurm-cli.md)

# Guida introduttiva all' SageMaker HyperPod utilizzo della console SageMaker AI
<a name="smcluster-getting-started-slurm-console"></a>

Il seguente tutorial mostra come creare un nuovo SageMaker HyperPod cluster e configurarlo con Slurm tramite l'interfaccia utente della console SageMaker AI. Seguendo il tutorial, creerai un HyperPod cluster con tre nodi Slurm,, e. `my-controller-group` `my-login-group` `worker-group-1`

**Topics**
+ [Crea un cluster](#smcluster-getting-started-slurm-console-create-cluster-page)
+ [Distribuire le risorse](#smcluster-getting-started-slurm-console-create-cluster-deploy)
+ [Eliminazione del cluster e pulizia delle risorse](#smcluster-getting-started-slurm-console-delete-cluster-and-clean)

## Crea un cluster
<a name="smcluster-getting-started-slurm-console-create-cluster-page"></a>

Per accedere alla pagina **SageMaker HyperPod Clusters** e scegliere **Slurm** orchestration, segui questi passaggi.

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

1. Scegli **HyperPod Clusters** nel riquadro di navigazione a sinistra, quindi **Cluster Management**.

1. Nella pagina **SageMaker HyperPod Cluster, scegli **Crea HyperPod ** cluster**. 

1. Nel menu a discesa **Crea HyperPod cluster**, scegli **Orchestrated** by Slurm.

1. Nella pagina di creazione del cluster Slurm sono disponibili due opzioni. Scegli quella più adatta alle tue esigenze.

   1. **Configurazione rapida**: per iniziare subito con le impostazioni predefinite, scegli **Configurazione rapida**. Con questa opzione, l' SageMaker intelligenza artificiale creerà nuove risorse come VPC, sottoreti, gruppi di sicurezza, bucket Amazon S3, ruolo IAM e FSx for Lustre nel processo di creazione del cluster.

   1. **Configurazione personalizzata**: per l’integrazione con le risorse AWS esistenti o per soddisfare requisiti di rete, sicurezza o archiviazione specifici, scegli **Configurazione personalizzata**. Con questa opzione, puoi scegliere di utilizzare le risorse esistenti o crearne di nuove e puoi personalizzare la configurazione in base alle tue esigenze.

## Configurazione rapida
<a name="smcluster-getting-started-slurm-console-create-cluster-default"></a>

Nella sezione **Configurazione rapida**, segui questi passaggi per creare il tuo cluster con l'orchestrazione Slurm. HyperPod 

### Impostazioni generali
<a name="smcluster-getting-started-slurm-console-create-cluster-default-general"></a>

Specifica un nome per il nuovo cluster. Dopo la creazione del cluster, non è più possibile modificarne il nome.

### Gruppi di istanze
<a name="smcluster-getting-started-slurm-console-create-cluster-default-instance-groups"></a>

Per aggiungere un gruppo di istanze, scegli **Aggiungi gruppo**. Ogni gruppo di istanze può essere configurato in modo diverso ed è possibile creare un cluster eterogeneo composto da più gruppi di istanze con vari tipi di istanze. Per implementare un cluster, devi aggiungere almeno un gruppo di istanze per i tipi di gruppo Controller e Calcolo.

**Importante**  
Puoi aggiungere un gruppo di istanze alla volta. Per creare più gruppi di istanze, ripeti il processo per ogni gruppo.

Segui questa procedura per aggiungere un gruppo di istanze.

1. In **Tipo di gruppo di istanze**, scegli un tipo per il tuo gruppo di istanze. Per questo tutorial, scegli **Controller (head)** per `my-controller-group`, **Login** per `my-login-group` e **Calcolo (worker)** per `worker-group-1`.

1. In **Nome**, specifica un nome per il gruppo di istanze. Per questo tutorial, crea tre gruppi di istanze denominati `my-controller-group`, `my-login-group` e `worker-group-1`.

1.  In **Capacità dell’istanza**, scegli la capacità on demand o un piano di addestramento per riservare le tue risorse di calcolo.

1. Per **Tipo di istanza**, scegli l’istanza per il gruppo di istanze. Per questo tutorial, seleziona `ml.c5.xlarge` per `my-controller-group`, `ml.m5.4xlarge` per `my-login-group` e `ml.trn1.32xlarge` per `worker-group-1`. 
**Importante**  
Assicurati di selezionare un tipo di istanza con quote sufficienti e un numero adeguato di indirizzi IP non assegnati per il tuo account. Per visualizzare o richiedere quote aggiuntive, consulta [SageMaker HyperPod quote](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas).

1. In **Quantità istanze**. specifica un numero intero che non sia maggiore della quota dell’istanza per l’utilizzo del cluster. Per questo tutorial, inserisci **1** per tutti e tre i gruppi.

1. In **Zona di disponibilità di destinazione**, scegli la zona di disponibilità in cui allocare le istanze. La zona di disponibilità deve corrispondere alla posizione della capacità di calcolo accelerata.

1. Per **Volume di archiviazione aggiuntivo per istanza (GB) (facoltativo)**, specifica un numero intero compreso tra 1 e 16.384 per impostare la dimensione di un volume Elastic Block Store (EBS) aggiuntivo in gigabyte (GB). Il volume EBS è collegato a ciascuna istanza del gruppo di istanze. Il percorso di montaggio predefinito per il volume EBS aggiuntivo è `/opt/sagemaker`. Dopo aver creato correttamente il cluster, è possibile accedere tramite SSH alle istanze del cluster (nodi) e verificare che il volume EBS sia montato correttamente eseguendo il comando `df -h`. Il collegamento di un volume EBS aggiuntivo fornisce un’archiviazione stabile, fuori istanza e con persistenza indipendente, come descritto nella sezione [Amazon EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html) in *Amazon Elastic Block Store User Guide*.

1. Scegli **Aggiungi gruppo di istanze**.

### Impostazioni predefinite della configurazione rapida
<a name="smcluster-getting-started-slurm-console-create-cluster-default-settings"></a>

Questa sezione elenca tutte le impostazioni predefinite per la creazione del cluster, incluse tutte le nuove AWS risorse che verranno create durante il processo di creazione del cluster. Verificare le impostazioni predefinite.

## Configurazione personalizzata
<a name="smcluster-getting-started-slurm-console-create-cluster-custom"></a>

Nella sezione **Configurazione personalizzata**, segui questi passaggi per creare il tuo HyperPod cluster con l'orchestrazione Slurm.

### Impostazioni generali
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-general"></a>

Specifica un nome per il nuovo cluster. Dopo la creazione del cluster, non è più possibile modificarne il nome.

In **Ripristino dell’istanza**, scegli **Automatico *(consigliato)*** o **Nessuno**.

### Rete
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-network"></a>

Configura le impostazioni di rete per la creazione del cluster. Queste impostazioni non possono essere modificate dopo la creazione del cluster.

1. Per quanto riguarda il **VPC**, scegli il tuo VPC se ne hai già uno che consente all' SageMaker IA di accedere al tuo VPC. Per creare un nuovo VPC, segui le istruzioni in [Create a VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) in *Amazon Virtual Private Cloud User Guide*. Puoi lasciarlo su **Nessuno** per utilizzare il VPC SageMaker AI predefinito.

1. Per il **blocco VPC IPv4 CIDR**, inserisci l'IP iniziale del tuo VPC.

1. Per le **zone di disponibilità**, scegli le zone di disponibilità (AZ) in cui HyperPod verranno create le sottoreti per il tuo cluster. Scegli AZs quella che corrisponde alla posizione della tua capacità di elaborazione accelerata.

1. In **Gruppi di sicurezza**, crea un gruppo di sicurezza o scegli fino a cinque gruppi di sicurezza configurati con regole per consentire la comunicazione tra risorse all’interno del VPC.

### Gruppi di istanze
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-instance-groups"></a>

Per aggiungere un gruppo di istanze, scegli **Aggiungi gruppo**. Ogni gruppo di istanze può essere configurato in modo diverso ed è possibile creare un cluster eterogeneo composto da più gruppi di istanze con vari tipi di istanze. Per implementare un cluster, devi aggiungere almeno un gruppo di istanze.

**Importante**  
Puoi aggiungere un gruppo di istanze alla volta. Per creare più gruppi di istanze, ripeti il processo per ogni gruppo.

Segui questa procedura per aggiungere un gruppo di istanze.

1. In **Tipo di gruppo di istanze**, scegli un tipo per il tuo gruppo di istanze. Per questo tutorial, scegli **Controller (head)** per `my-controller-group`, **Login** per `my-login-group` e **Calcolo (worker)** per `worker-group-1`.

1. In **Nome**, specifica un nome per il gruppo di istanze. Per questo tutorial, crea tre gruppi di istanze denominati `my-controller-group`, `my-login-group` e `worker-group-1`.

1.  In **Capacità dell’istanza**, scegli la capacità on demand o un piano di addestramento per riservare le tue risorse di calcolo.

1. Per **Tipo di istanza**, scegli l’istanza per il gruppo di istanze. Per questo tutorial, seleziona `ml.c5.xlarge` per `my-controller-group`, `ml.m5.4xlarge` per `my-login-group` e `ml.trn1.32xlarge` per `worker-group-1`. 
**Importante**  
Assicurati di selezionare un tipo di istanza con quote sufficienti e un numero adeguato di indirizzi IP non assegnati per il tuo account. Per visualizzare o richiedere quote aggiuntive, consulta [SageMaker HyperPod quote](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas).

1. In **Quantità istanze**. specifica un numero intero che non sia maggiore della quota dell’istanza per l’utilizzo del cluster. Per questo tutorial, inserisci **1** per tutti e tre i gruppi.

1. In **Zona di disponibilità di destinazione**, scegli la zona di disponibilità in cui allocare le istanze. La zona di disponibilità deve corrispondere alla posizione della capacità di calcolo accelerata.

1. Per **Volume di archiviazione aggiuntivo per istanza (GB) (facoltativo)**, specifica un numero intero compreso tra 1 e 16.384 per impostare la dimensione di un volume Elastic Block Store (EBS) aggiuntivo in gigabyte (GB). Il volume EBS è collegato a ciascuna istanza del gruppo di istanze. Il percorso di montaggio predefinito per il volume EBS aggiuntivo è `/opt/sagemaker`. Dopo aver creato correttamente il cluster, è possibile accedere tramite SSH alle istanze del cluster (nodi) e verificare che il volume EBS sia montato correttamente eseguendo il comando `df -h`. Il collegamento di un volume EBS aggiuntivo fornisce un’archiviazione stabile, fuori istanza e con persistenza indipendente, come descritto nella sezione [Amazon EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html) in *Amazon Elastic Block Store User Guide*.

1. Scegli **Aggiungi gruppo di istanze**.

### Script del ciclo di vita
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-lifecycle"></a>

Puoi scegliere di utilizzare gli script del ciclo di vita predefiniti o quelli personalizzati, che verranno archiviati nel tuo bucket Amazon S3. [Puoi visualizzare gli script del ciclo di vita predefiniti nell'archivio Awesome Distributed Training. GitHub ](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/7.sagemaker-hyperpod-eks/LifecycleScripts) Per ulteriori informazioni sugli script del ciclo di vita, consulta [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md).

1. In **Script del ciclo di vita**, scegli tra script del ciclo di vita predefiniti o personalizzati.

1. In **Bucket S3 per gli script del ciclo di vita**, scegli se creare un nuovo bucket o utilizzare un bucket esistente per archiviare gli script del ciclo di vita.

### Permissions
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-permissions"></a>

Scegli o crea un ruolo IAM che HyperPod consenta di eseguire e accedere alle AWS risorse necessarie per tuo conto.

### Archiviazione
<a name="smcluster-getting-started-slurm-console-create-cluster-custom-storage"></a>

Configura il file system FSx for Lustre da fornire sul HyperPod cluster.

1. Per **File system**, scegliete un file system FSx for Lustre esistente, FSx per crearne uno nuovo, oppure non installatene uno FSx per Lustre.

1. In **Throughput per unità di archiviazione**, scegli il throughput che sarà disponibile per ogni TiB di archiviazione allocata.

1. In **Capacità di archiviazione**, inserisci un valore di capacità in TB.

1. Per **Tipo di compressione dei dati**, scegliete di **LZ4**abilitare la compressione dei dati.

1. In **Versione Lustre**, visualizza il valore consigliato per i nuovi file system.

### Tag (facoltativo)
<a name="smcluster-getting-started-slurm-console-create-cluster-tags"></a>

Per i **tag: *facoltativo***, aggiungi coppie di chiavi e valori al nuovo cluster e gestisci il cluster come AWS risorsa. Per ulteriori informazioni, consulta [Tagging delle risorse AWS](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html).

## Distribuire le risorse
<a name="smcluster-getting-started-slurm-console-create-cluster-deploy"></a>

Dopo aver completato le configurazioni del cluster utilizzando **Configurazione rapida** o **Configurazione personalizzata**, scegli l’opzione seguente per avviare il provisioning delle risorse e la creazione del cluster.
+  **Invia**: l' SageMaker IA inizierà a fornire le risorse di configurazione predefinite e a creare il cluster. 
+ **Scarica i parametri del CloudFormation modello**: scaricherai il file JSON dei parametri di configurazione ed eseguirai il AWS CLI comando per distribuire lo CloudFormation stack per fornire le risorse di configurazione e creare il cluster. Se necessario, puoi modificare il file JSON dei parametri scaricato. Se scegli questa opzione, consulta [Creazione di cluster utilizzando modelli SageMaker HyperPod CloudFormation](smcluster-getting-started-slurm-console-create-cluster-cfn.md) per ulteriori informazioni.

## Eliminazione del cluster e pulizia delle risorse
<a name="smcluster-getting-started-slurm-console-delete-cluster-and-clean"></a>

Dopo aver testato con successo la creazione di un SageMaker HyperPod cluster, questo continua a funzionare nello `InService` stato fino a quando non lo elimini. Ti consigliamo di eliminare tutti i cluster creati utilizzando istanze SageMaker AI su richiesta quando non sono in uso per evitare di incorrere in costi di servizio continui in base ai prezzi su richiesta. In questo tutorial hai creato un cluster costituito da due gruppi di istanze. Uno di essi utilizza un’istanza C5, quindi assicurati di eliminare il cluster seguendo le istruzioni riportate in [Eliminare un SageMaker HyperPod cluster](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-delete-cluster).

Tuttavia, se hai creato un cluster con capacità di calcolo riservata, lo stato dei cluster non influisce sulla fatturazione del servizio.

Per pulire gli script del ciclo di vita dal bucket S3 utilizzato per questo tutorial, vai al bucket S3 che hai utilizzato durante la creazione del cluster e rimuovi completamente i file.

Se hai testato l'esecuzione di carichi di lavoro sul cluster, assicurati di aver caricato dati o di aver salvato artefatti in diversi bucket S3 o servizi di file system come Amazon FSx for Lustre e Amazon Elastic File System. Per evitare addebiti, elimina tutti gli artefatti e i dati dall’archiviazione o dal file system.

# Creazione di cluster utilizzando modelli SageMaker HyperPod CloudFormation
<a name="smcluster-getting-started-slurm-console-create-cluster-cfn"></a>

È possibile creare SageMaker HyperPod cluster utilizzando i CloudFormation modelli per. HyperPod È necessario eseguire l'installazione AWS CLI per procedere.

**Topics**
+ [Configura le risorse nella console e distribuiscile utilizzando CloudFormation](#smcluster-getting-started-slurm-console-create-cluster-deploy-console)
+ [Configura le risorse e distribuiscile utilizzando CloudFormation](#smcluster-getting-started-slurm-console-create-cluster-deploy-cfn)

## Configura le risorse nella console e distribuiscile utilizzando CloudFormation
<a name="smcluster-getting-started-slurm-console-create-cluster-deploy-console"></a>

È possibile configurare le risorse utilizzando Console di gestione AWS e distribuire utilizzando i CloudFormation modelli. 

Segui questa procedura.

1. *Invece di scegliere **Invia***, scegli **Scarica i parametri del CloudFormation modello** alla fine del tutorial in[Guida introduttiva all' SageMaker HyperPod utilizzo della console SageMaker AI](smcluster-getting-started-slurm-console.md). Il tutorial contiene importanti informazioni di configurazione, necessarie per creare correttamente il cluster.
**Importante**  
Se scegli **Invia**, non sarai in grado di implementare un cluster con lo stesso nome finché non elimini il cluster.

   Dopo aver scelto **Scarica i parametri del CloudFormation modello**, **la finestra Utilizzo del file di configurazione per creare il cluster tramite** la AWS CLI finestra apparirà sul lato destro della pagina.

1. Nella finestra **Utilizzo del file di configurazione per creare il cluster con la AWS CLI**, scegli **Scarica il file dei parametri di configurazione**. Il file verrà scaricato sul tuo computer. Puoi modificare il file JSON di configurazione in base alle tue esigenze o lasciarlo così com’è, se non sono necessarie modifiche.

1. In un terminale, vai alla posizione del file dei parametri `file://params.json`.

1. Esegui il AWS CLI comando [create-stack](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/create-stack.html) per distribuire lo CloudFormation stack che fornirà le risorse configurate e creerà il cluster. HyperPod

   ```
   aws cloudformation create-stack 
       --stack-name my-stack
       --template-url https://aws-sagemaker-hyperpod-cluster-setup.amazonaws.com/templates-slurm/main-stack-slurm-based-template.yaml
       --parameters file://params.json
       --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
   ```

1. [Per visualizzare lo stato del provisioning delle risorse, accedi alla console. CloudFormation ](https://console.aws.amazon.com/cloudformation)

   **Una volta completata la creazione del cluster, visualizza il nuovo cluster in Cluster nel riquadro principale della console.** SageMaker HyperPod Puoi anche controllarne lo stato nella colonna **Stato**.

1. Quando lo stato del cluster diventa `InService`, puoi iniziare ad accedere ai nodi del cluster. Per accedere ai nodi del cluster e iniziare a eseguire carichi di lavoro di ML, consulta [Lavori su cluster SageMaker HyperPod](sagemaker-hyperpod-run-jobs-slurm.md).

## Configura le risorse e distribuiscile utilizzando CloudFormation
<a name="smcluster-getting-started-slurm-console-create-cluster-deploy-cfn"></a>

È possibile configurare le risorse e distribuirle utilizzando i CloudFormation modelli per. SageMaker HyperPod

Segui questa procedura.

1. Scarica un CloudFormation modello per SageMaker HyperPod dal [sagemaker-hyperpod-cluster-setup](https://github.com/aws/sagemaker-hyperpod-cluster-setup) GitHub repository.

1. Esegui il AWS CLI comando [create-stack](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/create-stack.html) per distribuire lo CloudFormation stack che fornirà le risorse configurate e creerà il cluster. HyperPod

   ```
   aws cloudformation create-stack 
       --stack-name my-stack
       --template-url URL_of_the_file_that_contains_the_template_body
       --parameters file://params.json
       --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
   ```

1. Per visualizzare lo stato del provisioning delle risorse, accedere alla console CloudFormation .

   Una volta completata la creazione del cluster, visualizza il nuovo cluster in **Clusters nel riquadro principale** della console. SageMaker HyperPod Puoi anche controllarne lo stato nella colonna **Stato**.

1. Quando lo stato del cluster diventa `InService`, puoi iniziare ad accedere ai nodi del cluster. Per accedere ai nodi del cluster e iniziare a eseguire carichi di lavoro di ML, consulta [Lavori su cluster SageMaker HyperPod](sagemaker-hyperpod-run-jobs-slurm.md).

# Guida introduttiva all'utilizzo di SageMaker HyperPod AWS CLI
<a name="smcluster-getting-started-slurm-cli"></a>

Crea il tuo primo SageMaker HyperPod cluster utilizzando i AWS CLI comandi per HyperPod.

## Crea il tuo primo SageMaker HyperPod cluster con Slurm
<a name="smcluster-getting-started-slurm-cli-create-cluster"></a>

[Il seguente tutorial mostra come creare un nuovo SageMaker HyperPod cluster e configurarlo con Slurm tramite i comandi per.AWS CLI SageMaker HyperPod](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-cli) Seguendo il tutorial, creerai un HyperPod cluster con tre nodi Slurm:,, e. `my-controller-group` `my-login-group` `worker-group-1`

Con l'approccio di configurazione basato sull'API, definisci i tipi di nodi Slurm e le assegnazioni delle partizioni direttamente nella richiesta API utilizzando. CreateCluster `SlurmConfig` Ciò elimina la necessità di un `provisioning_parameters.json` file separato e fornisce funzionalità integrate di convalida, rilevamento delle deviazioni e configurazione. per-instance-group FSx 

1. Prima di tutto, prepara e carica gli script del ciclo di vita su un bucket Amazon S3. Durante la creazione del cluster, li HyperPod esegue in ogni gruppo di istanze. Carica gli script del ciclo di vita su Amazon S3 utilizzando il comando seguente.

   ```
   aws s3 sync \
       ~/local-dir-to-lifecycle-scripts/* \
       s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
   ```
**Nota**  
Il percorso del bucket S3 deve iniziare con un prefisso`sagemaker-`, poiché il [ruolo IAM for SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) with consente l'accesso `AmazonSageMakerClusterInstanceRolePolicy` solo ai bucket Amazon S3 che iniziano con il prefisso specifico.

   [Se parti da zero, usa gli script del ciclo di vita di esempio forniti nell'archivio Awsome Distributed Training. GitHub ](https://github.com/aws-samples/awsome-distributed-training/) I seguenti passaggi secondari mostrano come scaricare e caricare gli script del ciclo di vita di esempio in un bucket Amazon S3.

   1. Scarica una copia degli script del ciclo di vita di esempio in una directory sul computer locale.

      ```
      git clone https://github.com/aws-samples/awsome-distributed-training/
      ```

   1. Accedi alla directory [https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config), dove puoi trovare un set di script del ciclo di vita.

      ```
      cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config
      ```

      Per ulteriori informazioni sugli esempi di script del ciclo di vita, consulta [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md).

   1. Carica gli script su `s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src`. Puoi eseguire questa operazione con la console di Amazon S3 o con il comando della AWS CLI Amazon S3 seguente.

      ```
      aws s3 sync \
          ~/local-dir-to-lifecycle-scripts/* \
          s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
      ```
**Nota**  
Con la configurazione basata su API, non è necessario creare o caricare un file. `provisioning_parameters.json` La configurazione Slurm viene definita direttamente nella richiesta CreateCluster API nel passaggio successivo.

1. Prepara un file di [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)richiesta in formato JSON e salvalo con nome. `create_cluster.json`

   Con la configurazione basata su API, è possibile specificare il tipo di nodo Slurm e l'assegnazione della partizione per ciascun gruppo di istanze utilizzando il campo. `SlurmConfig` È inoltre possibile configurare le impostazioni Slurm a livello di cluster utilizzando. `Orchestrator.Slurm`

   Per `ExecutionRole`, fornisci l’ARN del ruolo IAM che hai creato con la policy gestita `AmazonSageMakerClusterInstanceRolePolicy` in [Prerequisiti per l'utilizzo SageMaker HyperPod](sagemaker-hyperpod-prerequisites.md).

   ```
   {
       "ClusterName": "my-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole",
               "InstanceStorageConfigs": [
                   {
                       "EbsVolumeConfig": {
                           "VolumeSizeInGB": 500
                       }
                   }
               ]
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Login"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Compute",
                   "PartitionNames": ["partition-1"]
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole"
           }
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       }
   }
   ```

   **SlurmConfig campi**:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

   **Campi Orchestrator.Slurm:**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

   **SlurmConfigStrategy opzioni:**
   + `Managed`(consigliato): gestisce `slurm.conf` e rileva HyperPod completamente le modifiche non autorizzate (rilevamento della deriva). Gli aggiornamenti falliscono se viene rilevata una deriva.
   + `Overwrite`: HyperPod `slurm.conf` sovrascrive gli aggiornamenti, ignorando eventuali modifiche manuali.
   + `Merge`: HyperPod conserva le modifiche manuali e le unisce alla configurazione dell'API.

   **Aggiunta FSx per Lustre (opzionale):**

   Per montare un filesystem FSx for Lustre sui tuoi nodi di calcolo, aggiungilo `FsxLustreConfig` al gruppo for the instance. `InstanceStorageConfigs` Ciò richiede una configurazione VPC personalizzata.

   ```
   {
       "InstanceGroupName": "worker-group-1",
       "InstanceType": "ml.trn1.32xlarge",
       "InstanceCount": 1,
       "SlurmConfig": {
           "NodeType": "Compute",
           "PartitionNames": ["partition-1"]
       },
       "InstanceStorageConfigs": [
           {
               "FsxLustreConfig": {
                   "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com",
                   "MountPath": "/fsx",
                   "MountName": "abcdefgh"
               }
           }
       ],
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole"
   }
   ```

   **Aggiunta FSx per OpenZFS (opzionale):**

   Puoi anche montarlo FSx per i filesystem OpenZFS:

   ```
   "InstanceStorageConfigs": [
       {
           "FsxOpenZfsConfig": {
               "DnsName": "fs-0xyz789abc123456.fsx.us-west-2.amazonaws.com",
               "MountPath": "/shared"
           }
       }
   ]
   ```
**Nota**  
Ogni gruppo di istanze può avere al massimo uno FSx per la configurazione di Lustre e uno per OpenZFS. FSx Gruppi di istanze diversi possono montare diversi filesystem.

   **Aggiungere la configurazione VPC (richiesta per FSx):**

   Se si utilizza FSx, è necessario specificare una configurazione VPC personalizzata:

   ```
   {
       "ClusterName": "my-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::<account-id>:role/HyperPodExecutionRole"
           },
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       },
       "VpcConfig": {
           "SecurityGroupIds": ["sg-0abc123def456789a"],
           "Subnets": ["subnet-0abc123def456789a"]
       }
   }
   ```

1. Utilizza il comando seguente per creare il cluster.

   ```
   aws sagemaker create-cluster --cli-input-json file://complete/path/to/create_cluster.json
   ```

   Questo dovrebbe restituire l’ARN del cluster creato.

   ```
   {
       "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/my-hyperpod-cluster"
   }
   ```

   Se ricevi un errore dovuto ai limiti delle risorse, assicurati di sostituire il tipo di istanza con uno che disponga di quote sufficienti nel tuo account oppure richiedi quote aggiuntive seguendo la procedura in [SageMaker HyperPod quote](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas).

   **Errori di convalida comuni:**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html)

1. Esegui `describe-cluster` per verificare lo stato del cluster.

   ```
   aws sagemaker describe-cluster --cluster-name my-hyperpod-cluster
   ```

   Risposta di esempio:

   ```
   {
       "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/my-hyperpod-cluster",
       "ClusterName": "my-hyperpod-cluster",
       "ClusterStatus": "Creating",
       "InstanceGroups": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceType": "ml.c5.xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Controller"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Login"
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceCount": 1,
               "CurrentCount": 0,
               "TargetCount": 1,
               "SlurmConfig": {
                   "NodeType": "Compute",
                   "PartitionNames": ["partition-1"]
               },
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://sagemaker-<bucket>/src",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodExecutionRole"
           }
       ],
       "Orchestrator": {
           "Slurm": {
               "SlurmConfigStrategy": "Managed"
           }
       },
       "CreationTime": "2024-01-15T10:30:00Z"
   }
   ```

   Quando lo stato del cluster diventa **InService**, procedi con la fase successiva. La creazione del cluster richiede in genere 10-15 minuti.

1. Esegui `list-cluster-nodes` per controllare i dettagli dei nodi del cluster.

   ```
   aws sagemaker list-cluster-nodes --cluster-name my-hyperpod-cluster
   ```

   Risposta di esempio:

   ```
   {
       "ClusterNodeSummaries": [
           {
               "InstanceGroupName": "my-controller-group",
               "InstanceId": "i-0abc123def456789a",
               "InstanceType": "ml.c5.xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:35:00Z"
           },
           {
               "InstanceGroupName": "my-login-group",
               "InstanceId": "i-0abc123def456789b",
               "InstanceType": "ml.m5.4xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:35:00Z"
           },
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceId": "i-0abc123def456789c",
               "InstanceType": "ml.trn1.32xlarge",
               "InstanceStatus": {
                   "Status": "Running",
                   "Message": ""
               },
               "LaunchTime": "2024-01-15T10:36:00Z"
           }
       ]
   }
   ```

   `InstanceId`Questo è ciò di cui gli utenti del cluster hanno bisogno per accedere (`aws ssm`) al loro interno. Per ulteriori informazioni sull’accesso ai nodi del cluster e sull’esecuzione di carichi di lavoro di ML, consulta [Lavori su cluster SageMaker HyperPod](sagemaker-hyperpod-run-jobs-slurm.md).

1. Connect al cluster utilizzando AWS Systems Manager Session Manager.

   ```
   aws ssm start-session \
       --target sagemaker-cluster:my-hyperpod-cluster_my-login-group-i-0abc123def456789b \
       --region us-west-2
   ```

   Una volta connesso, verifica che Slurm sia configurato correttamente:

   ```
   # Check Slurm nodes
   sinfo
   
   # Check Slurm partitions
   sinfo -p partition-1
   
   # Submit a test job
   srun -p partition-1 --nodes=1 hostname
   ```

## Eliminazione del cluster e pulizia delle risorse
<a name="smcluster-getting-started-slurm-cli-delete-cluster-and-clean"></a>

Dopo aver testato con successo la creazione di un SageMaker HyperPod cluster, questo continua a funzionare nello `InService` stato fino a quando non lo elimini. Ti consigliamo di eliminare tutti i cluster creati utilizzando la capacità di SageMaker intelligenza artificiale su richiesta quando non sono in uso per evitare di incorrere in costi di servizio continui in base ai prezzi su richiesta. In questo tutorial, hai creato un cluster composto da tre gruppi di istanze. Assicurati di eliminare il cluster eseguendo il comando seguente.

```
aws sagemaker delete-cluster --cluster-name my-hyperpod-cluster
```

Per pulire gli script del ciclo di vita dal bucket Amazon S3 utilizzato per questo tutorial, vai al bucket Amazon S3 che hai utilizzato durante la creazione del cluster e rimuovi completamente i file.

```
aws s3 rm s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src --recursive
```

Se hai testato l'esecuzione di carichi di lavoro di training su modelli sul cluster, controlla anche se hai caricato dati o se il tuo processo ha salvato artefatti in diversi bucket Amazon S3 o servizi di file system come Amazon FSx for Lustre e Amazon Elastic File System. Per evitare addebiti, elimina tutti gli artefatti e i dati dall’archiviazione o dal file system.

## Argomenti correlati
<a name="smcluster-getting-started-slurm-cli-related-topics"></a>
+ [SageMaker HyperPod Configurazione Slurm](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-slurm-configuration)
+ [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md)
+ [FSx configurazione tramite InstanceStorageConfigs](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-slurm-fsx-config)
+ [SageMaker HyperPod Operazioni del cluster Slurm](sagemaker-hyperpod-operate-slurm.md)

# SageMaker HyperPod Operazioni del cluster Slurm
<a name="sagemaker-hyperpod-operate-slurm"></a>

Questa sezione fornisce indicazioni sulla gestione SageMaker HyperPod tramite l'interfaccia utente della console SageMaker AI o AWS Command Line Interface (CLI). Imparerai come eseguire varie attività correlate a SageMaker HyperPod, sia che tu preferisca un'interfaccia visiva o l'utilizzo dei comandi.

**Topics**
+ [Gestione dei cluster SageMaker HyperPod Slurm tramite la console SageMaker](sagemaker-hyperpod-operate-slurm-console-ui.md)
+ [Gestione dei cluster SageMaker HyperPod Slurm utilizzando il AWS CLI](sagemaker-hyperpod-operate-slurm-cli-command.md)

# Gestione dei cluster SageMaker HyperPod Slurm tramite la console SageMaker
<a name="sagemaker-hyperpod-operate-slurm-console-ui"></a>

I seguenti argomenti forniscono indicazioni su come gestire SageMaker HyperPod tramite l'interfaccia utente della console.

**Topics**
+ [Crea un SageMaker HyperPod cluster](#sagemaker-hyperpod-operate-slurm-console-ui-create-cluster)
+ [Esplora i tuoi SageMaker HyperPod cluster](#sagemaker-hyperpod-operate-slurm-console-ui-browse-clusters)
+ [Visualizza i dettagli di ogni cluster SageMaker HyperPod](#sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters)
+ [Modifica un SageMaker HyperPod cluster](#sagemaker-hyperpod-operate-slurm-console-ui-edit-clusters)
+ [Eliminare un SageMaker HyperPod cluster](#sagemaker-hyperpod-operate-slurm-console-ui-delete-cluster)

## Crea un SageMaker HyperPod cluster
<a name="sagemaker-hyperpod-operate-slurm-console-ui-create-cluster"></a>

Consulta le istruzioni [Guida introduttiva all' SageMaker HyperPod utilizzo della console SageMaker AI](smcluster-getting-started-slurm-console.md) per creare un nuovo SageMaker HyperPod cluster tramite l'interfaccia utente della SageMaker HyperPod console.

## Esplora i tuoi SageMaker HyperPod cluster
<a name="sagemaker-hyperpod-operate-slurm-console-ui-browse-clusters"></a>

In **Cluster** nel riquadro principale della SageMaker HyperPod console nella pagina principale della SageMaker HyperPod console, tutti i cluster creati dovrebbero apparire elencati nella sezione **Cluster**, che fornisce una visualizzazione riepilogativa dei cluster, del loro ARNs stato e dell'ora di creazione.

## Visualizza i dettagli di ogni cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters"></a>

In **Cluster** nella pagina principale della console, i **nomi** dei cluster sono attivati come link. Scegli il link del nome del cluster per visualizzare i dettagli di ogni cluster.

## Modifica un SageMaker HyperPod cluster
<a name="sagemaker-hyperpod-operate-slurm-console-ui-edit-clusters"></a>

1. In **Cluster** nel riquadro principale della SageMaker HyperPod console, scegli il cluster che desideri aggiornare.

1. Seleziona il cluster e scegli **Modifica**.

1. Nella pagina **Modifica <your-cluster>**, puoi modificare le configurazioni dei gruppi di istanze esistenti, aggiungere altri gruppi di istanze, eliminare i gruppi di istanze e modificare i tag per il cluster. Dopo aver apportato le modifiche, scegli **Invia**. 

   1. Nella sezione **Configura gruppi di istanze**, puoi aggiungere altri gruppi di istanze scegliendo **Crea gruppo di istanze**.

   1. Nella sezione **Configura gruppi di istanze**, puoi scegliere **Modifica** per modificarne la configurazione o **Elimina** per rimuovere definitivamente il gruppo di istanze.
**Importante**  
Durante l’eliminazione di un gruppo di istanze, considera i seguenti punti:  
Il SageMaker HyperPod cluster deve sempre mantenere almeno un gruppo di istanze.
Assicurati che venga eseguito il backup di tutti i dati critici prima della rimozione.
Il processo di rimozione non può essere annullato.
**Nota**  
L’eliminazione di un gruppo di istanze comporterà la terminazione di tutte le risorse di calcolo associate a quel gruppo.

   1. Nella sezione **Tag**, puoi aggiornare i tag per il cluster.

## Eliminare un SageMaker HyperPod cluster
<a name="sagemaker-hyperpod-operate-slurm-console-ui-delete-cluster"></a>

1. In **Cluster** nel riquadro principale della SageMaker HyperPod console, scegli il cluster che desideri eliminare.

1. Seleziona il cluster e scegli **Elimina**.

1. Nella finestra pop-up per l’eliminazione del cluster, esamina attentamente le informazioni sul cluster per verificare che il cluster sia quello desiderato.

1. Dopo aver esaminato le informazioni sul cluster, scegli **Sì, elimina il cluster**.

1. Digita **delete** nel campo di testo per confermare l’eliminazione.

1. Scegli **Elimina** nell’angolo in basso a destra della finestra pop-up per completare l’invio della richiesta di eliminazione del cluster.

# Gestione dei cluster SageMaker HyperPod Slurm utilizzando il AWS CLI
<a name="sagemaker-hyperpod-operate-slurm-cli-command"></a>

I seguenti argomenti forniscono indicazioni sulla scrittura di file di richiesta SageMaker HyperPod API in formato JSON e sulla loro esecuzione utilizzando i AWS CLI comandi.

**Topics**
+ [Creazione di un nuovo cluster](#sagemaker-hyperpod-operate-slurm-cli-command-create-cluster)
+ [Descrizione di un cluster](#sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster)
+ [Elenco dei dettagli dei nodi del cluster](#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes)
+ [Descrizione dei dettagli di un nodo del cluster](#sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster-node)
+ [Elenco dei cluster](#sagemaker-hyperpod-operate-slurm-cli-command-list-clusters)
+ [Aggiornamento della configurazione del cluster](#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster)
+ [Aggiorna il software della SageMaker HyperPod piattaforma di un cluster](#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software)
+ [Riduzione verticale di un cluster](#sagemaker-hyperpod-operate-slurm-cli-command-scale-down)
+ [Eliminazione di un cluster](#sagemaker-hyperpod-operate-slurm-cli-command-delete-cluster)

## Creazione di un nuovo cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-create-cluster"></a>

1. Prepara gli script di configurazione del ciclo di vita e caricali in un bucket S3, ad esempio `s3://sagemaker-amzn-s3-demo-bucket/lifecycle-script-directory/src/`. La fase 2 seguente presuppone che esista uno script del punto di ingresso denominato `on_create.sh` nel bucket S3 specificato.
**Importante**  
Assicurati di impostare il percorso S3 in modo che inizi con `s3://sagemaker-`. Al [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) è collegata la policy gestita [https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html), che consente l’accesso ai bucket S3 con il prefisso specifico `sagemaker-`.

1. Preparare un file di richiesta [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)API in formato JSON. Devi configurare i gruppi di istanze in modo che corrispondano al cluster Slurm progettato nel file `provisioning_parameters.json` che verrà utilizzato durante la creazione del cluster nell’ambito dell’esecuzione di un set di script del ciclo di vita. Per ulteriori informazioni, consulta [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md). Il modello seguente ha due gruppi di istanze per soddisfare i requisiti minimi per un cluster Slurm: un nodo controller (head) e un nodo di calcolo (worker). Per `ExecutionRole`, fornisci l’ARN del ruolo IAM che hai creato con la policy gestita `AmazonSageMakerClusterInstanceRolePolicy` nella sezione [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod).

   ```
   // create_cluster.json
   {
       "ClusterName": "your-hyperpod-cluster",
       "InstanceGroups": [
           {
               "InstanceGroupName": "controller-group",
               "InstanceType": "ml.m5.xlarge",
               "InstanceCount": 1,
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster",
               // Optional: Configure an additional storage per instance group.
               "InstanceStorageConfigs": [
                   {
                      // Attach an additional EBS volume to each instance within the instance group.
                      // The default mount path for the additional EBS volume is /opt/sagemaker.
                      "EbsVolumeConfig":{
                         // Specify an integer between 1 and 16384 in gigabytes (GB).
                         "VolumeSizeInGB": integer,
                      }
                   }
               ]
           }, 
           {
               "InstanceGroupName": "worker-group-1",
               "InstanceType": "ml.p4d.xlarge",
               "InstanceCount": 1,
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster"
           }
       ],
       // Optional
       "Tags": [ 
           { 
              "Key": "string",
              "Value": "string"
           }
       ],
       // Optional
       "VpcConfig": { 
           "SecurityGroupIds": [ "string" ],
           "Subnets": [ "string" ]
       }
   }
   ```

   A seconda di come progetti la struttura del cluster con gli script del ciclo di vita, puoi configurare fino a 20 gruppi di istanze nel parametro `InstanceGroups`.

   Per il parametro di `Tags` richiesta, puoi aggiungere tag personalizzati per la gestione del SageMaker HyperPod cluster come AWS risorsa. Puoi aggiungere tag al tuo cluster nello stesso modo in cui li aggiungi in altri AWS servizi che supportano i tag. Per ulteriori informazioni sull'etichettatura AWS delle risorse in generale, consulta la Guida per l'utente di [Tagging AWS Resources](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html).

   Per il parametro di richiesta `VpcConfig`, specifica le informazioni del VPC da utilizzare. Per ulteriori informazioni, consulta [Configurazione SageMaker HyperPod con un Amazon VPC personalizzato](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-optional-vpc).

1. Utilizza il comando [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html) come segue.

   ```
   aws sagemaker create-cluster \
       --cli-input-json file://complete/path/to/create_cluster.json
   ```

   Questo dovrebbe restituire l’ARN del nuovo cluster.

## Descrizione di un cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster"></a>

Esegui [describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster.html) per verificare lo stato del cluster. Puoi specificare il nome o l’ARN del cluster.

```
aws sagemaker describe-cluster --cluster-name your-hyperpod-cluster
```

Quando lo stato del cluster diventa **InService**, procedi con la fase successiva. Utilizzando questa API, puoi anche recuperare i messaggi di errore dall'esecuzione di altre HyperPod operazioni API.

## Elenco dei dettagli dei nodi del cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes"></a>

Esegui [list-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-cluster-nodes.html)per controllare le informazioni chiave dei nodi del cluster.

```
aws sagemaker list-cluster-nodes --cluster-name your-hyperpod-cluster
```

Questo restituisce una risposta e `InstanceId` è ciò che ti serve per l’accesso (con `aws ssm`).

## Descrizione dei dettagli di un nodo del cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster-node"></a>

Esegui [describe-cluster-node](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster-node.html)per recuperare i dettagli di un nodo del cluster. È possibile ottenere l'ID del nodo del cluster dall' list-cluster-nodesoutput. Puoi specificare il nome o l’ARN del cluster.

```
aws sagemaker describe-cluster-node \
    --cluster-name your-hyperpod-cluster \
    --node-id i-111222333444555aa
```

## Elenco dei cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-list-clusters"></a>

Esegui [list-clusters](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-clusters.html) per elencare tutti i cluster del tuo account.

```
aws sagemaker list-clusters
```

Puoi anche aggiungere ulteriori flag per filtrare l’elenco dei cluster. Per ulteriori informazioni su cosa viene eseguito questo comando a basso livello e sui flag aggiuntivi per il filtraggio, consulta il riferimento all'[ListClusters](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusters.html)API.

## Aggiornamento della configurazione del cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-update-cluster"></a>

Esegui [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) per aggiornare la configurazione di un cluster.

**Nota**  
Puoi utilizzare l'`UpdateCluster`API per ridimensionare o rimuovere interi gruppi di istanze dal cluster SageMaker HyperPod . Per ulteriori istruzioni su come ridurre verticalmente o eliminare i gruppi di istanze, consulta [Riduzione verticale di un cluster](#sagemaker-hyperpod-operate-slurm-cli-command-scale-down).

1. Crea un file di richiesta `UpdateCluster` in formato JSON. Assicurati di specificare correttamente il nome del cluster e il nome del gruppo di istanze da aggiornare. Puoi modificare il tipo di istanza, il numero di istanze, lo script del punto di ingresso della configurazione del ciclo di vita e il percorso dello script.

   1. Per `ClusterName`, specifica il nome del cluster da aggiornare.

   1. Per `InstanceGroupName`

      1. Per aggiornare un gruppo di istanze esistente, specifica il nome del gruppo di istanze da aggiornare.

      1. Per aggiungere un nuovo gruppo di istanze, specifica un nuovo nome non presente nel cluster.

   1. Per `InstanceType`

      1. Per aggiornare un gruppo di istanze esistente, è necessario che il tipo di istanza specificato all’inizio corrisponda al gruppo.

      1. Per aggiungere un nuovo gruppo di istanze, specifica il tipo di istanza con cui configurare il gruppo.

   1. Per `InstanceCount`

      1. Per aggiornare un gruppo di istanze esistente, specifica un numero intero corrispondente al numero di istanze desiderato. Puoi fornire un valore più alto o più basso (fino a 0) per aumentare o ridurre verticalmente il gruppo di istanze.

      1. Per aggiungere un nuovo gruppo di istanze, specifica un numero intero maggiore o uguale a 1. 

   1. Per `LifeCycleConfig`, puoi modificare entrambi i valori `SourceS3Uri` e `OnCreate` per aggiornare il gruppo di istanze.

   1. Per `ExecutionRole`

      1. Per aggiornare un gruppo di istanze esistente, continua a utilizzare lo stesso ruolo IAM collegato durante la creazione del cluster.

      1. Per aggiungere un nuovo gruppo di istanze, specifica un ruolo IAM da collegare.

   1. Per `ThreadsPerCore`

      1. Per aggiornare un gruppo di istanze esistente, continua a utilizzare lo stesso valore specificato durante la creazione del cluster.

      1. Per aggiungere un nuovo gruppo di istanze, puoi scegliere qualsiasi valore tra le opzioni consentite dal tipo di istanza. Per ulteriori informazioni, cerca il tipo di istanza e consulta la colonna **Thread validi per core** nella tabella di riferimento in [CPU cores and threads per CPU core per instance type](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html) in *Amazon EC2 User Guide*.

   Puoi utilizzare il frammento di codice seguente, che corrisponde a un modello di file di richiesta JSON. Per ulteriori informazioni sulla sintassi della richiesta e sui parametri di questa API, consulta il riferimento all'[UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)API.

   ```
   // update_cluster.json
   {
       // Required
       "ClusterName": "name-of-cluster-to-update",
       // Required
       "InstanceGroups": [
           {
               "InstanceGroupName": "name-of-instance-group-to-update",
               "InstanceType": "ml.m5.xlarge",
               "InstanceCount": 1,
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
                   "OnCreate": "on_create.sh"
               },
               "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster",
               // Optional: Configure an additional storage per instance group.
               "InstanceStorageConfigs": [
                   {
                      // Attach an additional EBS volume to each instance within the instance group.
                      // The default mount path for the additional EBS volume is /opt/sagemaker.
                      "EbsVolumeConfig":{
                         // Specify an integer between 1 and 16384 in gigabytes (GB).
                         "VolumeSizeInGB": integer,
                      }
                   }
               ]
           },
           // add more blocks of instance groups as needed
           { ... }
       ]
   }
   ```

1. Esegui il comando `update-cluster` per inviare la richiesta. 

   ```
   aws sagemaker update-cluster \
       --cli-input-json file://complete/path/to/update_cluster.json
   ```

## Aggiorna il software della SageMaker HyperPod piattaforma di un cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software"></a>

Esegui [update-cluster-software](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster-software.html)per aggiornare i cluster esistenti con software e patch di sicurezza fornite dal SageMaker HyperPod servizio. Per `--cluster-name`, specifica il nome o l’ARN del cluster da aggiornare.

**Importante**  
Ricorda di eseguire il backup del tuo lavoro prima di applicare questa API. Il processo di applicazione delle patch sostituisce il volume root con l’AMI aggiornata, il che significa che i dati precedenti archiviati nel volume root dell’istanza andranno persi. Assicurati di eseguire il backup dei dati dal volume root dell'istanza su Amazon S3 o Amazon FSx for Lustre. Per ulteriori informazioni, consulta [Utilizza lo script di backup fornito da SageMaker HyperPod](#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup).

```
aws sagemaker update-cluster-software --cluster-name your-hyperpod-cluster
```

Questo comando richiama l'API. [UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html) Dopo la chiamata all'API, SageMaker HyperPod verifica se è disponibile un DLAMI più recente per le istanze del cluster. Se è necessario un aggiornamento DLAMI, SageMaker HyperPod aggiornerà le istanze del cluster per utilizzare le più recenti [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) ed eseguirà gli script del ciclo di vita nel bucket Amazon S3 specificato durante la creazione o l'aggiornamento del cluster. Se il cluster utilizza già il DLAMI più recente, non SageMaker HyperPod apporterà alcuna modifica al cluster né eseguirà nuovamente gli script del ciclo di vita. Il team SageMaker HyperPod di assistenza lancia regolarmente nuovi strumenti per migliorare la sicurezza e migliorare l'esperienza [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) degli utenti. Ti consigliamo di continuare ad aggiornare sempre alla versione più recente di SageMaker HyperPod DLAMI. Per i futuri aggiornamenti SageMaker HyperPod DLAMI per le patch di sicurezza, segui con. [Note di SageMaker HyperPod rilascio di Amazon](sagemaker-hyperpod-release-notes.md)

**Suggerimento**  
Se la patch di sicurezza non riesce, è possibile recuperare i messaggi di errore eseguendo l’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html) come indicato in [Descrizione di un cluster](#sagemaker-hyperpod-operate-slurm-cli-command-describe-cluster).

**Nota**  
Puoi eseguire questa API solo in modo programmatico. La funzionalità di patching non è implementata nell'interfaccia utente della SageMaker HyperPod console.

### Utilizza lo script di backup fornito da SageMaker HyperPod
<a name="sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup"></a>

SageMaker HyperPod fornisce uno script per il backup e il ripristino dei dati [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/patching-backup.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/patching-backup.sh)nel * GitHub repository Awsome Distributed Training*. Lo script fornisce le funzioni seguenti.

**Per eseguire il backup dei dati su un bucket S3 prima dell’applicazione delle patch**

```
sudo bash patching-backup.sh --create <s3-buckup-bucket-path>
```

Dopo aver eseguito il comando, lo script verifica `squeue` per rilevare se ci sono processi in coda, arresta Slurm se non c’è alcun processo in coda, esegue il backup di `mariadb` e copia gli elementi locali sul disco definito in `LOCAL_ITEMS`. Puoi aggiungere altri file e directory a `LOCAL_ITEMS`.

```
# Define files and directories to back up.
LOCAL_ITEMS=(
    "/var/spool/slurmd"
    "/var/spool/slurmctld"
    "/etc/systemd/system/slurmctld.service"
    "/home/ubuntu/backup_slurm_acct_db.sql"
    # ... Add more items as needed
)
```

Inoltre, puoi aggiungere codice personalizzato allo script fornito per eseguire il backup di qualsiasi applicazione collegata al tuo caso d’uso.

**Per ripristinare i dati da un bucket S3 dopo l’applicazione delle patch**

```
sudo bash patching-backup.sh --restore <s3-buckup-bucket-path>
```

## Riduzione verticale di un cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-scale-down"></a>

È possibile ridurre il numero di istanze o eliminare i gruppi di istanze nel SageMaker HyperPod cluster per ottimizzare l'allocazione delle risorse o ridurre i costi.

Puoi ridurre verticalmente le istanze con l’operazione API `UpdateCluster` per terminare in modo casuale le istanze dal gruppo di istanze fino a un numero specificato oppure puoi terminare istanze specifiche utilizzando l’operazione API `BatchDeleteClusterNodes`. Puoi anche rimuovere completamente interi gruppi di istanze utilizzando l’API `UpdateCluster`. Per ulteriori informazioni su come ridurre verticalmente le istanze con questi metodi, consulta [Ridimensionamento di un cluster SageMaker HyperPod](smcluster-scale-down.md).

**Nota**  
Non è possibile rimuovere le istanze configurate come nodi controller Slurm. Il tentativo di eliminare un nodo controller Slurm genera un errore di convalida con il codice di errore `NODE_ID_IN_USE`.

## Eliminazione di un cluster
<a name="sagemaker-hyperpod-operate-slurm-cli-command-delete-cluster"></a>

Esegui [delete-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-cluster.html) per eliminare un cluster. Puoi specificare il nome o l’ARN del cluster.

```
aws sagemaker delete-cluster --cluster-name your-hyperpod-cluster
```

# Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm"></a>

SageMaker HyperPod offre sempre cluster di up-and-running calcolo, che sono altamente personalizzabili in quanto è possibile scrivere script del ciclo di vita per indicare come configurare le risorse del cluster. SageMaker HyperPod Gli argomenti seguenti sono le best practice per preparare gli script del ciclo di vita per configurare SageMaker HyperPod i cluster con strumenti open source per la gestione del carico di lavoro.

Negli argomenti seguenti vengono illustrate le best practice approfondite per la preparazione degli script del ciclo di vita su cui configurare le configurazioni Slurm. SageMaker HyperPod

## Panoramica generale
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-highlevel-overview"></a>

La procedura seguente è il flusso principale per il provisioning di un HyperPod cluster e la sua configurazione con Slurm. Le fasi sono in ordine, in base a un approccio dal ***basso verso l’alto***.

1. Pianifica come vuoi creare i nodi Slurm su un cluster. HyperPod Ad esempio, se desideri configurare due nodi Slurm, dovrai configurare due gruppi di istanze in un cluster. HyperPod 

1. Prepara la configurazione di Slurm. Scegliete uno dei seguenti approcci:
   + **Opzione A: configurazione basata su API (consigliata)**: definisci i tipi di nodi e le partizioni Slurm direttamente nel payload dell'`CreateCluster`API utilizzando all'interno di ciascun gruppo di istanze. `SlurmConfig` Con questo approccio:
     + Non è necessario alcun `provisioning_parameters.json` file
     + La topologia Slurm è definita nel payload dell'API insieme alle definizioni dei gruppi di istanze
     + FSx i filesystem sono configurati tramite per-instance-group `InstanceStorageConfigs`
     + La strategia di configurazione è controllata tramite `Orchestrator.Slurm.SlurmConfigStrategy`

     Esempio `SlurmConfig` in un gruppo di istanze:

     ```
     {
         "InstanceGroupName": "gpu-compute",
         "InstanceType": "ml.p4d.24xlarge",
         "InstanceCount": 8,
         "SlurmConfig": {
             "NodeType": "Compute",
             "PartitionNames": ["gpu-training"]
         }
     }
     ```
   + **Opzione B: configurazione precedente:** prepara un `provisioning_parameters.json` file, che è un[Modulo di configurazione per provisioning\$1parameters.json](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-provisioning-forms-slurm). `provisioning_parameters.json`deve contenere informazioni sulla configurazione del nodo Slurm da fornire sul cluster. HyperPod Questo file dovrebbe riflettere la progettazione dei nodi Slurm della Fase 1.

1. Prepara un set di script del ciclo di vita su cui configurare Slurm per installare pacchetti software e configurare un ambiente nel cluster adatto HyperPod al tuo caso d'uso. È necessario strutturare gli script del ciclo di vita in modo che vengano eseguiti collettivamente in ordine in uno script Python centrale (`lifecycle_script.py`), oltre a scrivere uno script shell del punto di ingresso (`on_create.sh`) per eseguire lo script Python. Lo script di shell entrypoint è ciò che devi fornire a una richiesta di creazione di HyperPod cluster più avanti nel Passaggio 5. 

   Inoltre, si noti che è necessario scrivere gli script in modo da aspettarsi `resource_config.json` che vengano generati HyperPod durante la creazione del cluster. `resource_config.json`contiene informazioni sulle risorse del HyperPod cluster come indirizzi IP, tipi di istanze e ARNs, ed è ciò che è necessario utilizzare per configurare Slurm.

1. Raccogli tutti i file delle fasi precedenti in una cartella. La struttura delle cartelle dipende dall'approccio di configurazione selezionato nel passaggio 2.

   Se hai selezionato l'opzione A (configurazione basata su API):

   La cartella necessita solo di script del ciclo di vita per attività di configurazione personalizzate. La configurazione e il FSx montaggio di Slurm vengono gestiti HyperPod automaticamente in base al payload dell'API.

   ```
   └── lifecycle_files // your local folder
   
       ├── on_create.sh
       ├── lifecycle_script.py
       └── ... // more setup scripts to be fed into lifecycle_script.py
   ```
**Nota**  
Il `provisioning_parameters.json` file non è necessario quando si utilizza la configurazione basata su API.

   Se hai selezionato l'opzione B (configurazione precedente):

   La cartella deve includere `provisioning_parameters.json` e il set completo di script del ciclo di vita.

   ```
   └── lifecycle_files // your local folder
   
       ├── provisioning_parameters.json
       ├── on_create.sh
       ├── lifecycle_script.py
       └── ... // more setup scrips to be fed into lifecycle_script.py
   ```

1. Carica tutti i file in un bucket S3. Copia e annota il percorso del bucket S3. Ricorda di creare un percorso del bucket S3 che inizi con `sagemaker-`, perché dovrai scegliere un percorso del [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) collegato a [`AmazonSageMakerClusterInstanceRolePolicy`](security-iam-awsmanpol-AmazonSageMakerClusterInstanceRolePolicy.md), che consente solo i percorsi dei bucket S3 che iniziano con il prefisso `sagemaker-`. Di seguito è riportato un comando di esempio per caricare tutti i file in un bucket S3.

   ```
   aws s3 cp --recursive ./lifecycle_files s3://sagemaker-hyperpod-lifecycle/src
   ```

1. Prepara una richiesta di creazione HyperPod del cluster. 
   + Opzione 1: se utilizzi il AWS CLI, scrivi una richiesta di creazione del cluster in formato JSON (`create_cluster.json`) seguendo le istruzioni all'indirizzo[Creazione di un nuovo cluster](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-create-cluster).
   + Opzione 2: se utilizzi l'interfaccia utente della console SageMaker AI, compila il modulo di richiesta **Crea un cluster** nell'interfaccia utente della HyperPod console seguendo le istruzioni riportate all'indirizzo[Crea un SageMaker HyperPod cluster](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-create-cluster).

   In questa fase, assicurati di creare gruppi di istanze nella stessa struttura pianificata nelle Fasi 1 e 2. Inoltre, assicurati di specificare il bucket S3 della Fase 5 nei moduli di richiesta.

1. Invia la richiesta di creazione del cluster. HyperPod esegue il provisioning di un cluster in base alla richiesta, quindi crea un `resource_config.json` file nelle istanze del HyperPod cluster e configura Slurm sul cluster che esegue gli script del ciclo di vita.

I seguenti argomenti illustrano e approfondiscono i dettagli su come organizzare i file di configurazione e gli script del ciclo di vita in modo che funzionino correttamente durante la creazione del cluster. HyperPod

**Topics**
+ [Panoramica generale](#sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-highlevel-overview)
+ [Script del ciclo di vita di base forniti da HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.md)
+ [Quali configurazioni particolari gestisce nei file di configurazione Slurm HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-what-hyperpod-overrides-in-slurm-conf.md)
+ [Slurm registra le rotazioni](sagemaker-hyperpod-slurm-log-rotation.md)
+ [Montaggio di Amazon FSx for Lustre e Amazon FSx for OpenZFS su un cluster HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-setup-with-fsx.md)
+ [Convalida dei file di configurazione JSON prima di creare un cluster Slurm su HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-validate-json-files.md)
+ [Convalida del runtime prima di eseguire carichi di lavoro di produzione su un cluster Slurm HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-validate-runtime.md)
+ [Sviluppo interattivo di script del ciclo di vita su un nodo del cluster HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-develop-lifecycle-scripts.md)

# Script del ciclo di vita di base forniti da HyperPod
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config"></a>

Questa sezione illustra ogni componente del flusso di base di configurazione di Slurm on HyperPod con un approccio ***dall'alto*** verso il basso. Inizia dalla preparazione di una richiesta di creazione HyperPod del cluster per eseguire l'`CreateCluster`API e approfondisce la struttura gerarchica fino agli script del ciclo di vita. [Utilizza gli script di esempio relativi al ciclo di vita forniti nell'archivio Awsome Distributed Training. GitHub ](https://github.com/aws-samples/awsome-distributed-training/) Clona il repository con il comando seguente.

```
git clone https://github.com/aws-samples/awsome-distributed-training/
```

Gli script del ciclo di vita di base per la configurazione di un cluster Slurm sono disponibili all'indirizzo. SageMaker HyperPod [https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config)

```
cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config
```

Il diagramma di flusso seguente mostra una panoramica dettagliata di come progettare gli script del ciclo di vita di base. Le descrizioni sotto il diagramma e la guida procedurale spiegano come funzionano durante la chiamata API. HyperPod `CreateCluster`

![\[Un diagramma di flusso dettagliato della creazione dei HyperPod cluster e della struttura degli script del ciclo di vita.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod-lifecycle-structure.png)


***Figura:** Un diagramma di flusso dettagliato della creazione dei HyperPod cluster e della struttura degli script del ciclo di vita. (1) Le frecce tratteggiate indicano il punto in cui vengono “richiamate” le caselle e mostrano il flusso dei file di configurazione e la preparazione degli script del ciclo di vita. Il processo inizia dalla preparazione del file `provisioning_parameters.json` e degli script del ciclo di vita. Questi vengono quindi codificati in `lifecycle_script.py` per essere eseguiti in ordine collettivamente. E l'esecuzione dello `lifecycle_script.py` script viene eseguita dallo script di `on_create.sh` shell, che deve essere eseguito nel terminale dell' HyperPodistanza. (2) Le frecce piene mostrano il flusso principale di creazione del HyperPod cluster e il modo in cui le caselle vengono «richiamate» o «inviate a». `on_create.sh`è necessario per la richiesta di creazione del cluster, nel modulo Crea una richiesta di cluster `create_cluster.json` o nel modulo **Crea una richiesta di cluster** nell'interfaccia utente della console. Dopo aver inviato la richiesta, HyperPod esegue l'`CreateCluster`API in base alle informazioni di configurazione fornite dalla richiesta e dagli script del ciclo di vita. (3) La freccia punteggiata indica che la HyperPod piattaforma crea istanze `resource_config.json` nel cluster durante il provisioning delle risorse del cluster. `resource_config.json`contiene informazioni sulle risorse del HyperPod cluster come l'ARN del cluster, i tipi di istanza e gli indirizzi IP. È importante notare che gli script del ciclo di vita vanno preparati in modo che prevedano il file `resource_config.json` durante la creazione del cluster. Per ulteriori informazioni, consulta la guida con le procedure di seguito.*

La seguente guida procedurale spiega cosa succede durante la creazione del HyperPod cluster e come sono progettati gli script del ciclo di vita di base.

1. `create_cluster.json`— Per inviare una richiesta di creazione di un HyperPod cluster, si prepara un file di `CreateCluster` richiesta in formato JSON. In questo esempio di best practice, supponiamo che il file di richiesta si chiami `create_cluster.json`. Scrivi `create_cluster.json` per fornire gruppi di istanze a un HyperPod cluster. La best practice consiste nell'aggiungere lo stesso numero di gruppi di istanze del numero di nodi Slurm che intendi configurare sul HyperPod cluster. Assicurati di assegnare nomi distintivi ai gruppi di istanze che assegnerai ai nodi Slurm che intendi configurare.

   Inoltre, devi specificare un percorso al bucket S3 per archiviare l’intero set di file di configurazione e script del ciclo di vita nel campo `InstanceGroups.LifeCycleConfig.SourceS3Uri` del modulo di richiesta `CreateCluster`. Inoltre, devi specificare il nome del file di uno script shell del punto di ingresso (chiamato, supponiamo, `on_create.sh`) in `InstanceGroups.LifeCycleConfig.OnCreate`.
**Nota**  
Se utilizzi il modulo di invio **Crea un cluster** nell'interfaccia utente della console, la HyperPod console gestisce la compilazione e l'invio della `CreateCluster` richiesta per tuo conto ed esegue l'`CreateCluster`API nel backend. In questo caso, non è necessario creare`create_cluster.json`, ma assicurati di specificare le informazioni corrette sulla configurazione del cluster nel modulo di invio **Crea un cluster**.

1. `on_create.sh`— Per ogni gruppo di istanze, è necessario fornire uno script di shell entrypoint per eseguire comandi`on_create.sh`, eseguire script per installare pacchetti software e configurare l'ambiente cluster con Slurm. HyperPod Le due cose da preparare sono una `provisioning_parameters.json` necessaria per configurare Slurm e un set di script del ciclo di vita HyperPod per l'installazione dei pacchetti software. Questo script deve essere scritto per trovare ed eseguire i file seguenti, come mostrato nello script di esempio in [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/on_create.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/on_create.sh).
**Nota**  
Assicurati di caricare l’intero set di script del ciclo di vita nella posizione S3 specificata in `create_cluster.json`. Anche il file `provisioning_parameters.json` deve trovarsi nella stessa posizione.

   1. `provisioning_parameters.json`: questo è un [Modulo di configurazione per provisioning\$1parameters.json](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-provisioning-forms-slurm). Lo script `on_create.sh` trova questo file JSON e definisce la variabile di ambiente per identificarne il percorso. Tramite questo file JSON, puoi configurare nodi Slurm e opzioni di storage come Amazon FSx for Lustre for Slurm con cui comunicare. Inoltre`provisioning_parameters.json`, assicurati di assegnare i gruppi di istanze del HyperPod cluster utilizzando i nomi specificati ai nodi Slurm in modo appropriato in base `create_cluster.json` a come intendi configurarli.

      Il diagramma seguente mostra un esempio di come i due file di configurazione JSON `provisioning_parameters.json` devono essere scritti per HyperPod assegnare i gruppi di `create_cluster.json` istanze ai nodi Slurm. In questo esempio, supponiamo di dover configurare tre nodi Slurm: il nodo controller (gestione), il nodo login (facoltativo) e il nodo di calcolo (worker).
**Suggerimento**  
Per aiutarti a convalidare questi due file JSON, il team di HyperPod assistenza fornisce uno script di convalida,. [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/validate-config.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/validate-config.py) Per ulteriori informazioni, consulta [Convalida dei file di configurazione JSON prima di creare un cluster Slurm su HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-validate-json-files.md).  
![\[Confronto diretto tra file .json.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod-lifecycle-slurm-config.png)

      ***Figura:** Confronto diretto tra la configurazione per la creazione di HyperPod cluster e quella `create_cluster.json` per `provisiong_params.json` Slurm. Il numero di gruppi di istanze in `create_cluster.json` deve corrispondere al numero di nodi che intendi configurare come nodi Slurm. Nel caso dell'esempio in figura, tre nodi Slurm verranno configurati su un HyperPod cluster di tre gruppi di istanze. È necessario assegnare i gruppi di istanze del HyperPod cluster ai nodi Slurm specificando di conseguenza i nomi dei gruppi di istanze.*

   1. `resource_config.json`— Durante la creazione del cluster, lo `lifecycle_script.py` script viene scritto in modo da aspettarsi un file da. `resource_config.json` HyperPod Questo file contiene informazioni sul cluster, ad esempio i tipi di istanze e gli indirizzi IP.

      Quando esegui l'`CreateCluster`API, HyperPod crea un file di configurazione delle risorse in `/opt/ml/config/resource_config.json` base al `create_cluster.json` file. Il percorso del file viene salvato nella variabile di ambiente denominata `SAGEMAKER_RESOURCE_CONFIG_PATH`. 
**Importante**  
Il `resource_config.json` file viene generato automaticamente dalla HyperPod piattaforma e NON è necessario crearlo. Il codice seguente, che mostra un esempio del file `resource_config.json` generato dalla creazione del cluster in base al file `create_cluster.json` della fase precedente, ti aiuta a capire cosa succede nel backend e come è fatto un file `resource_config.json` generato automaticamente.

      ```
      {
      
          "ClusterConfig": {
              "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/abcde01234yz",
              "ClusterName": "your-hyperpod-cluster"
          },
          "InstanceGroups": [
              {
                  "Name": "controller-machine",
                  "InstanceType": "ml.c5.xlarge",
                  "Instances": [
                      {
                          "InstanceName": "controller-machine-1",
                          "AgentIpAddress": "111.222.333.444",
                          "CustomerIpAddress": "111.222.333.444",
                          "InstanceId": "i-12345abcedfg67890"
                      }
                  ]
              },
              {
                  "Name": "login-group",
                  "InstanceType": "ml.m5.xlarge",
                  "Instances": [
                      {
                          "InstanceName": "login-group-1",
                          "AgentIpAddress": "111.222.333.444",
                          "CustomerIpAddress": "111.222.333.444",
                          "InstanceId": "i-12345abcedfg67890"
                      }
                  ]
              },
              {
                  "Name": "compute-nodes",
                  "InstanceType": "ml.trn1.32xlarge",
                  "Instances": [
                      {
                          "InstanceName": "compute-nodes-1",
                          "AgentIpAddress": "111.222.333.444",
                          "CustomerIpAddress": "111.222.333.444",
                          "InstanceId": "i-12345abcedfg67890"
                      },
                      {
                          "InstanceName": "compute-nodes-2",
                          "AgentIpAddress": "111.222.333.444",
                          "CustomerIpAddress": "111.222.333.444",
                          "InstanceId": "i-12345abcedfg67890"
                      },
                      {
                          "InstanceName": "compute-nodes-3",
                          "AgentIpAddress": "111.222.333.444",
                          "CustomerIpAddress": "111.222.333.444",
                          "InstanceId": "i-12345abcedfg67890"
                      },
                      {
                          "InstanceName": "compute-nodes-4",
                          "AgentIpAddress": "111.222.333.444",
                          "CustomerIpAddress": "111.222.333.444",
                          "InstanceId": "i-12345abcedfg67890"
                      }
                  ]
              }
          ]
      }
      ```

   1. `lifecycle_script.py`— Questo è lo script Python principale che esegue collettivamente gli script del ciclo di vita configurando Slurm sul cluster durante il provisioning. HyperPod Questo script legge `provisioning_parameters.json` e `resource_config.json` nei percorsi specificati o identificati in `on_create.sh`, passa le informazioni pertinenti a ogni script del ciclo di vita e quindi esegue in ordine gli script del ciclo di vita.

      Gli script del ciclo di vita sono un set di script che offre la massima flessibilità di personalizzazione e consente di installare pacchetti software e impostare le configurazioni necessarie o personalizzate durante la creazione di cluster, ad esempio la configurazione di Slurm, la creazione di utenti e l’installazione di Conda o Docker. [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/lifecycle_script.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/lifecycle_script.py)Lo script di esempio è pronto per eseguire altri script del ciclo di vita di base nel repository, come l'avvio di Slurm deamons () [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/start_slurm.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/start_slurm.sh), il montaggio di Amazon FSx for Lustre () e la configurazione di MariaDB accounting () [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/mount_fsx.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/mount_fsx.sh)e RDS accounting (). [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/setup_mariadb_accounting.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/setup_mariadb_accounting.sh) Puoi anche aggiungere altri script, impacchettarli nella stessa directory e aggiungere righe di codice per consentire l'esecuzione degli script. `lifecycle_script.py` HyperPod *Per ulteriori informazioni sugli script del ciclo di vita di base, consulta anche gli script del ciclo di [vita 3.1 nell'archivio Awsome Distributed Training](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod#31-lifecycle-scripts). GitHub *
**Nota**  
HyperPod viene eseguito [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) su ogni istanza di un cluster e l'AMI dispone di pacchetti software preinstallati che rispettano le compatibilità tra essi e le funzionalità. HyperPod Tieni presente che se reinstalli uno qualsiasi dei pacchetti preinstallati, sei responsabile dell'installazione dei pacchetti compatibili e tieni presente che alcune HyperPod funzionalità potrebbero non funzionare come previsto.

      Oltre alle configurazioni predefinite, nella cartella [https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils) sono disponibili altri script per l’installazione dei software seguenti. Il file `lifecycle_script.py` è già pronto per includere righe di codice per l’esecuzione degli script di installazione, quindi consulta le indicazioni seguenti per cercare tali righe e rimuovi i commenti per attivarle.

      1. Le righe di codice seguenti servono per l’installazione di [Docker](https://www.docker.com/), [Enroot](https://github.com/NVIDIA/enroot) e [Pyxis](https://github.com/NVIDIA/pyxis). Questi pacchetti sono necessari per eseguire i container Docker su un cluster Slurm. 

         Per abilitare questa fase di installazione, imposta il parametro `enable_docker_enroot_pyxis` su `True` nel file [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/config.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/config.py).

         ```
         # Install Docker/Enroot/Pyxis
         if Config.enable_docker_enroot_pyxis:
             ExecuteBashScript("./utils/install_docker.sh").run()
             ExecuteBashScript("./utils/install_enroot_pyxis.sh").run(node_type)
         ```

      1. Puoi integrare il tuo HyperPod cluster con [Amazon Managed Service for Prometheus](https://docs.aws.amazon.com/prometheus/latest/userguide/what-is-Amazon-Managed-Service-Prometheus.html) e [Amazon Managed](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html) Grafana per esportare i parametri relativi al cluster e ai nodi HyperPod del cluster nelle dashboard di Amazon Managed Grafana. Per esportare le metriche e utilizzare la [dashboard Slurm](https://grafana.com/grafana/dashboards/4323-slurm-dashboard/), la [dashboard NVIDIA DCGM Exporter](https://grafana.com/grafana/dashboards/12239-nvidia-dcgm-exporter-dashboard/) e la [dashboard delle metriche EFA](https://grafana.com/grafana/dashboards/20579-efa-metrics-dev/) su Grafana gestito da Amazon, devi installare lo [strumento di esportazione Slurm per Prometheus](https://github.com/vpenso/prometheus-slurm-exporter), lo [strumento di esportazione NVIDIA DCGM](https://github.com/NVIDIA/dcgm-exporter) e lo [strumento di esportazione di nodi EFA](https://github.com/aws-samples/awsome-distributed-training/blob/main/4.validation_and_observability/3.efa-node-exporter/README.md). Per ulteriori informazioni sull’installazione dei pacchetti di esportazione e sull’utilizzo delle dashboard Grafana in uno spazio di lavoro Grafana gestito da Amazon, consulta [SageMaker HyperPod monitoraggio delle risorse del cluster](sagemaker-hyperpod-cluster-observability-slurm.md). 

         Per abilitare questa fase di installazione, imposta il parametro `enable_observability` su `True` nel file [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/config.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/config.py).

         ```
         # Install metric exporting software and Prometheus for observability
         
         if Config.enable_observability:
             if node_type == SlurmNodeType.COMPUTE_NODE:
                 ExecuteBashScript("./utils/install_docker.sh").run()
                 ExecuteBashScript("./utils/install_dcgm_exporter.sh").run()
                 ExecuteBashScript("./utils/install_efa_node_exporter.sh").run()
             
             if node_type == SlurmNodeType.HEAD_NODE:
                 wait_for_scontrol()
                 ExecuteBashScript("./utils/install_docker.sh").run()
                 ExecuteBashScript("./utils/install_slurm_exporter.sh").run()
                 ExecuteBashScript("./utils/install_prometheus.sh").run()
         ```

1. Assicurati di caricare tutti i file e gli script di configurazione della **Fase 2** nel bucket S3 fornito nella richiesta `CreateCluster` della **Fase 1**. Ad esempio, presupponi che `create_cluster.json` contenga quanto segue:

   ```
   "LifeCycleConfig": { 
   
       "SourceS3URI": "s3://sagemaker-hyperpod-lifecycle/src",
       "OnCreate": "on_create.sh"
   }
   ```

   Di conseguenza, `"s3://sagemaker-hyperpod-lifecycle/src"` dovrebbe contenere `on_create.sh`, `lifecycle_script.py`, `provisioning_parameters.json` e tutti gli altri script di configurazione. Supponi di aver preparato i file in una cartella locale come segue.

   ```
   └── lifecycle_files // your local folder
       ├── provisioning_parameters.json
       ├── on_create.sh
       ├── lifecycle_script.py
       └── ... // more setup scrips to be fed into lifecycle_script.py
   ```

   Per caricare i file, utilizza il comando S3 come segue.

   ```
   aws s3 cp --recursive ./lifecycle_scripts s3://sagemaker-hyperpod-lifecycle/src
   ```

# Quali configurazioni particolari gestisce nei file di configurazione Slurm HyperPod
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm-what-hyperpod-overrides-in-slurm-conf"></a>

Quando crei un cluster Slurm su HyperPod, l' HyperPod agente configura [https://slurm.schedmd.com/gres.conf.html](https://slurm.schedmd.com/gres.conf.html)i file [https://slurm.schedmd.com/slurm.conf.html](https://slurm.schedmd.com/slurm.conf.html)and `/opt/slurm/etc/` per gestire il cluster Slurm in base alla richiesta di creazione del cluster e agli script HyperPod del ciclo di vita. L'elenco seguente mostra quali parametri specifici l'agente gestisce e sovrascrive. HyperPod 

**Importante**  
Si consiglia vivamente di **non** modificare questi parametri gestiti da HyperPod.
+ In [https://slurm.schedmd.com/slurm.conf.html](https://slurm.schedmd.com/slurm.conf.html), HyperPod imposta i seguenti parametri di base: `ClusterName``SlurmctldHost`,`PartitionName`, e`NodeName`.

  Inoltre, per abilitare la [Ripristino automatico dei nodi e ripristino automatico](sagemaker-hyperpod-resiliency-slurm-auto-resume.md) funzionalità, HyperPod richiede i `SchedulerParameters` parametri `TaskPlugin` e impostati come segue. Per impostazione predefinita, l' HyperPod agente imposta questi due parametri con i valori richiesti.

  ```
  TaskPlugin=task/none
  SchedulerParameters=permit_job_expansion
  ```
+ In [https://slurm.schedmd.com/gres.conf.html](https://slurm.schedmd.com/gres.conf.html), HyperPod gestisce `NodeName` i nodi GPU.

# Slurm registra le rotazioni
<a name="sagemaker-hyperpod-slurm-log-rotation"></a>

SageMaker HyperPod fornisce la rotazione automatica dei log dei daemon Slurm per aiutare a gestire l'utilizzo dello spazio su disco e mantenere le prestazioni del sistema. La rotazione dei log è fondamentale per evitare che i log consumino uno spazio eccessivo su disco e garantire un funzionamento ottimale del sistema archiviando e rimuovendo automaticamente i vecchi file di registro mantenendo al contempo le informazioni di registrazione recenti. Le rotazioni dei log di Slurm sono abilitate per impostazione predefinita quando si crea un cluster.

## Come funziona la rotazione dei log
<a name="sagemaker-hyperpod-slurm-log-rotation-how-it-works"></a>

Se abilitata, la configurazione di rotazione dei log:
+ Monitora tutti i file di registro Slurm con l'estensione `.log` situata nella `/var/log/slurm/` cartella sui nodi controller, login e calcolo.
+ Ruota i log quando raggiungono una dimensione di 50 MB.
+ Mantiene fino a due file di registro ruotati prima di eliminarli.
+ Invia SIGUSR2 il segnale ai demoni Slurm (`slurmctld`, `slurmd` e) dopo la rotazione. `slurmdbd`

## Elenco dei file di registro ruotati
<a name="sagemaker-hyperpod-slurm-log-rotation-log-files-list"></a>

I log di Slurm si trovano nella directory. `/var/log/slurm/` La rotazione dei log è abilitata per tutti i file corrispondenti. `/var/log/slurm/*.log` Quando si verifica una rotazione, i file ruotati hanno suffissi numerici (ad esempio). `slurmd.log.1` L'elenco seguente non è esaustivo ma mostra alcuni dei file di registro critici che ruotano automaticamente:
+ `/var/log/slurm/slurmctld.log`
+ `/var/log/slurm/slurmd.log`
+ `/var/log/slurm/slurmdb.log`
+ `/var/log/slurm/slurmrestd.log`

## Abilita o disabilita la rotazione dei log
<a name="sagemaker-hyperpod-slurm-log-rotation-enable-disable"></a>

È possibile controllare la funzionalità di rotazione dei log utilizzando il `enable_slurm_log_rotation` parametro nello `config.py` script degli script del ciclo di vita del cluster, come illustrato nell'esempio seguente:

```
class Config:
    # Set false if you want to disable log rotation of Slurm daemon logs
    enable_slurm_log_rotation = True  # Default value
```

Per disabilitare la rotazione dei log, imposta il parametro su`False`, come mostrato nell'esempio seguente:

```
enable_slurm_log_rotation = False
```

**Nota**  
Gli script del ciclo di vita vengono eseguiti su tutti i nodi Slurm (controller, login e nodi di calcolo) durante la creazione del cluster. Vengono eseguiti anche su nuovi nodi quando vengono aggiunti al cluster. L'aggiornamento delle configurazioni di rotazione dei log deve essere eseguito manualmente dopo la creazione del cluster. La configurazione della rotazione dei log è memorizzata in`/etc/logrotate.d/sagemaker-hyperpod-slurm`. Si consiglia di mantenere abilitata la rotazione dei log per evitare che i file di registro consumino troppo spazio su disco. Per disabilitare la rotazione dei log, elimina il `sagemaker-hyperpod-slurm` file o commentane il contenuto aggiungendolo `#` all'inizio di ogni riga del `sagemaker-hyperpod-slurm` file.

## Impostazioni predefinite di rotazione dei registri
<a name="sagemaker-hyperpod-slurm-log-rotation-default-settings"></a>

Le seguenti impostazioni vengono configurate automaticamente per ogni file di registro ruotato:


| Impostazione | Valore | Description | 
| --- | --- | --- | 
| rotate | 2 | Numero di file di registro ruotati da conservare | 
| size | 50 MB | Dimensione massima prima della rotazione | 
| copytruncate | abilitato | Copia e tronca il file di registro originale | 
| compress | disabled | I log ruotati non vengono compressi | 
| missingok | abilitato | Nessun errore se manca il file di registro | 
| notifempty | abilitato | Non ruota i file vuoti | 
| noolddir | abilitato | I file ruotati rimangono nella stessa directory | 

# Montaggio di Amazon FSx for Lustre e Amazon FSx for OpenZFS su un cluster HyperPod
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-setup-with-fsx"></a>

Per montare un file system condiviso Amazon FSx for Lustre sul tuo HyperPod cluster, configura quanto segue.

1. Utilizza il tuo Amazon VPC. 

   1. Affinché le istanze del HyperPod cluster comunichino all'interno del tuo VPC, assicurati di associarle [Configurazione SageMaker HyperPod con un Amazon VPC personalizzato](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-optional-vpc) al ruolo IAM per. SageMaker HyperPod 

   1. In `create_cluster.json`, includi le informazioni sul VPC seguenti.

      ```
      "VpcConfig": { 
          "SecurityGroupIds": [ "string" ],
          "Subnets": [ "string" ]
      }
      ```

      Per ulteriori suggerimenti sulla configurazione di Amazon VPC, consulta [Prerequisiti per l'utilizzo SageMaker HyperPod](sagemaker-hyperpod-prerequisites.md).

1. Per completare la configurazione di Slurm con Amazon FSx for Lustre, puoi utilizzare uno dei seguenti approcci. Puoi trovare le FSx informazioni di Amazon dalla console Amazon FSx for Lustre nel tuo account o eseguendo il seguente AWS CLI comando,`aws fsx describe-file-systems`.

   **Opzione A: configurazione basata su API (consigliata)**

   Specificate la FSx configurazione Amazon direttamente nel payload dell' CreateCluster API utilizzando `InstanceStorageConfigs` all'interno di ogni gruppo di istanze. Questo approccio supporta sia FSx Lustre che OpenZFS e consente FSx la configurazione. per-instance-group FSx 

   ```
   "InstanceStorageConfigs": [
       {
           "FsxLustreConfig": {
               "DnsName": "fs-12345678a90b01cde.fsx.us-west-2.amazonaws.com",
               "MountPath": "/fsx",
               "MountName": "1abcdefg"
           }
       }
   ]
   ```

    FSx Per OpenZFS, usa invece: `FsxOpenZfsConfig`

   ```
   "InstanceStorageConfigs": [
       {
           "FsxOpenZfsConfig": {
               "DnsName": "fs-12345678a90b01cde.fsx.us-west-2.amazonaws.com",
               "MountPath": "/fsx-openzfs"
           }
       }
   ]
   ```

   Per ulteriori dettagli, consulta [Guida introduttiva all' SageMaker HyperPod uso della AWS CLI](sagemaker-hyperpod-quickstart.md).

   **Opzione B: configurazione precedente**

   Specificare il nome Amazon FSx DNS e il nome di FSx montaggio Amazon `provisioning_parameters.json` come mostrato nella figura nella [Script del ciclo di vita di base forniti da HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.md) sezione.

   ```
   "fsx_dns_name": "fs-12345678a90b01cde.fsx.us-west-2.amazonaws.com",
   "fsx_mountname": "1abcdefg"
   ```

# Convalida dei file di configurazione JSON prima di creare un cluster Slurm su HyperPod
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-validate-json-files"></a>

Per convalidare i file di configurazione JSON prima di inviare una richiesta di creazione del cluster, utilizza lo script di convalida della configurazione [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/validate-config.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/validate-config.py). Questo script analizza e confronta il file JSON di configurazione del HyperPod cluster e il file JSON di configurazione Slurm e identifica eventuali errori di configurazione delle risorse tra i due file e anche tra le risorse Amazon EC2, Amazon VPC e Amazon. FSx Ad esempio, per convalidare i file `create_cluster.json` e `provisioning_parameters.json` della sezione [Script del ciclo di vita di base forniti da HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.md), esegui lo script di convalida come segue.

```
python3 validate-config.py --cluster-config create_cluster.json --provisioning-parameters provisioning_parameters.json
```

Di seguito è riportato un esempio di output di una convalida eseguita correttamente.

```
✔️  Validated instance group name worker-group-1 is correct ...

✔️  Validated subnet subnet-012345abcdef67890 ...
✔️  Validated security group sg-012345abcdef67890 ingress rules ...
✔️  Validated security group sg-012345abcdef67890 egress rules ...
✔️  Validated FSx Lustre DNS name fs-012345abcdef67890.fsx.us-east-1.amazonaws.com
✔️  Validated FSx Lustre mount name abcdefgh
✅ Cluster Validation succeeded
```

# Convalida del runtime prima di eseguire carichi di lavoro di produzione su un cluster Slurm HyperPod
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-validate-runtime"></a>

Per controllare il runtime prima di eseguire qualsiasi carico di lavoro di produzione su un cluster Slurm HyperPod, usa lo script di convalida del runtime. [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/hyperpod-precheck.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/hyperpod-precheck.py) Questo script verifica se il cluster Slurm ha tutti i pacchetti installati per l'esecuzione di Docker, se il cluster ha un file system montato correttamente FSx per Lustre e una directory utente che condivide il file system e se il demone Slurm è in esecuzione su tutti i nodi di calcolo.

Per eseguire lo script su più nodi contemporaneamente, utilizza `srun` come mostrato nel comando di esempio seguente per eseguire lo script su un cluster Slurm di 8 nodi.

```
# The following command runs on 8 nodes
srun -N 8 python3 hyperpod-precheck.py
```

**Nota**  
Per ulteriori informazioni sullo script di convalida, ad esempio sulle funzioni di convalida del runtime fornite dallo script e sulle linee guida per risolvere i problemi che non superano le convalide, consulta [Convalida del runtime prima di eseguire carichi](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod#35-runtime-validation-before-running-workloads) di lavoro nell'* GitHub archivio Awsome Distributed Training*.

# Sviluppo interattivo di script del ciclo di vita su un nodo del cluster HyperPod
<a name="sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-develop-lifecycle-scripts"></a>

Questa sezione spiega come sviluppare in modo interattivo script del ciclo di vita senza creare ed eliminare ripetutamente un cluster. HyperPod 

1. Crea un HyperPod cluster con gli script del ciclo di vita di base.

1. Accedi a un nodo del cluster.

1. Sviluppa uno script (`configure_xyz.sh`) modificandolo ed eseguendolo ripetutamente sul nodo.

   1. HyperPod esegue gli script del ciclo di vita come utente root, quindi si consiglia di eseguirli `configure_xyz.sh` come utente root durante lo sviluppo per assicurarsi che lo script venga testato nelle stesse condizioni durante l'esecuzione da. HyperPod

1. Integra lo script in `lifecycle_script.py` aggiungendo una riga di codice simile alla seguente.

   ```
   ExecuteBashScript("./utils/configure_xyz.sh").run()
   ```

1. Carica gli script del ciclo di vita aggiornati nel bucket S3 utilizzato all’inizio per caricare gli script del ciclo di vita di base.

1. Prova la versione integrata di `lifecycle_script.py` creando un nuovo cluster. HyperPod Puoi anche utilizzare la sostituzione manuale delle istanze per testare gli script del ciclo di vita aggiornati creando nuove istanze. Per istruzioni dettagliate, consulta Sostituire [manualmente](https://docs.aws.amazon.com//sagemaker/latest/dg/sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance.html#sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-replace) un nodo. Nota che solo i nodi di lavoro sono sostituibili.

# SageMaker HyperPod supporto per nodi multitesta
<a name="sagemaker-hyperpod-multihead-slurm"></a>

È possibile creare più nodi controller (head) in un singolo cluster SageMaker HyperPod Slurm, uno dei quali funge da nodo di controller principale e gli altri da nodi di controller di backup. Il nodo controller primario è responsabile del controllo dei nodi di calcolo (worker) e della gestione delle operazioni Slurm. I nodi controller di backup monitorano costantemente il nodo controller primario. Se il nodo controller primario non riesce o non risponde, uno dei nodi controller di backup lo sostituisce automaticamente diventando il nuovo nodo controller primario.

La configurazione di più nodi controller nei cluster SageMaker HyperPod Slurm offre diversi vantaggi chiave. Elimina il rischio legato al malfunzionamento di un singolo nodo controller fornendo nodi head del controller, consente il failover automatico sui nodi controller di backup con un ripristino più rapido e consente di gestire l’accounting dei database e la configurazione Slurm in modo indipendente.

## Concetti chiave
<a name="sagemaker-hyperpod-multihead-slurm-concepts"></a>

Di seguito vengono forniti dettagli sui concetti relativi al supporto di SageMaker HyperPod più nodi controller (principali) per i cluster Slurm.

**Nodi controller**

Un nodo controller è un’istanza Amazon EC2 all’interno di un cluster che esegue servizi Slurm critici per la gestione e il coordinamento delle operazioni del cluster. In particolare, ospita il [daemon del controller Slurm (slurmctld)](https://slurm.schedmd.com/slurmctld.html) e il [daemon del database Slurm (slurmdbd)](https://slurm.schedmd.com/slurmdbd.html). Un nodo controller è anche noto come nodo head.

**Nodo controller primario**

Un nodo controller primario è il nodo controller attivo e attualmente responsabile del controllo in un cluster Slurm. Viene considerato da Slurm come il nodo controller primario responsabile della gestione del cluster. Il nodo controller primario riceve i comandi dagli utenti e li esegue per controllare e allocare risorse sui nodi di calcolo per l’esecuzione dei processi.

**Nodo controller di backup**

Un nodo controller di backup è un nodo controller inattivo e in standby in un cluster Slurm. Viene considerato da Slurm come un nodo controller di backup che attualmente non gestisce il cluster. Il nodo controller di backup esegue il [daemon del controller Slurm (slurmctld)](https://slurm.schedmd.com/slurmctld.html) in modalità standby. Tutti i comandi del controller eseguiti sui nodi controller di backup verranno propagati al nodo controller primario per l’esecuzione. Il suo scopo principale è monitorare continuamente il nodo controller primario e assumersene le responsabilità in caso di errore o di mancata risposta.

**Nodo di calcolo**

Un nodo di calcolo è un’istanza Amazon EC2 all’interno di un cluster che ospita [il daemon worker Slurm (slurmd)](https://slurm.schedmd.com/slurmd.html). La funzione primaria del nodo di calcolo consiste nell’eseguire i processi assegnati dal [daemon del controller Slurm (slurmctld)](https://slurm.schedmd.com/slurmctld.html) in esecuzione sul nodo controller primario. Quando viene pianificato un processo, il nodo di calcolo riceve istruzioni dal [daemon del controller Slurm (slurmctld)](https://slurm.schedmd.com/slurmctld.html) per eseguire le attività e i calcoli necessari per tale processo all’interno del nodo stesso. Un calcolo è anche noto come nodo worker.

## Come funziona
<a name="sagemaker-hyperpod-multihead-slurm-how"></a>

Il diagramma seguente illustra come diversi AWS servizi interagiscono per supportare l'architettura dei nodi a più controller (principali) per i cluster Slurm. SageMaker HyperPod 

![\[SageMaker HyperPod diagramma di architettura dei nodi a più teste\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-multihead-architecture.png)


I AWS servizi che interagiscono per supportare l'architettura dei nodi con controller SageMaker HyperPod multipli (principali) includono quanto segue.


**AWS servizi che interagiscono per supportare l'architettura con SageMaker HyperPod più nodi di controller**  

| Servizio | Description | 
| --- | --- | 
| IAM (AWS Identity and Access Management) | Definisce due ruoli IAM per controllare le autorizzazioni di accesso: un ruolo per il gruppo di istanze del nodo di calcolo e l’altro per il gruppo di istanze del nodo controller. | 
| Amazon RDS per MariaDB | Archivia i dati di accounting per Slurm, che contengono i record dei processi e i dati di misurazione. | 
| Gestione dei segreti AWS | Archivia e gestisce le credenziali a cui può accedere Amazon FSx for Lustre. | 
| Amazon FSx per Lustre  | Archivia le configurazioni e lo stato di runtime di Slurm. | 
| Amazon VPC | Fornisce un ambiente di rete isolato in cui vengono distribuiti il HyperPod cluster e le relative risorse. | 
| Amazon SNS  | Invia notifiche agli amministratori in caso di modifiche dello stato (il controller Slurm è ON o OFF) relative al nodo controller primario (head). | 

Il HyperPod cluster stesso è costituito da nodi di controller (primari e di backup) e nodi di elaborazione. I nodi controller eseguono i componenti Slurm controller (SlurmCtld) e database (SlurmDBd), che gestiscono e monitorano il carico di lavoro tra i nodi di elaborazione.

I nodi del controller accedono alle configurazioni Slurm e allo stato di runtime archiviati nel file system Amazon FSx for Lustre. I dati di contabilità Slurm sono archiviati nel database Amazon RDS for MariaDB. Gestione dei segreti AWS fornisce un accesso sicuro alle credenziali del database per i nodi del controller.

In caso di modifica dello stato (il controller Slurm è `ON` o `OFF`) nei nodi controller Slurm, Amazon SNS invia notifiche all’amministratore per ulteriori azioni.

Questa architettura con più nodi controller elimina il singolo punto di errore di un singolo nodo controller (head), consente un ripristino rapido e automatico del failover e offre il controllo sulle configurazioni e il database di accounting di Slurm.

# Configurazione di più nodi controller per un cluster SageMaker HyperPod Slurm
<a name="sagemaker-hyperpod-multihead-slurm-setup"></a>

Questo argomento spiega come configurare più nodi controller (head) in un cluster SageMaker HyperPod Slurm utilizzando script del ciclo di vita. Prima di iniziare, esamina i prerequisiti elencati in [Prerequisiti per l'utilizzo SageMaker HyperPod](sagemaker-hyperpod-prerequisites.md) e impara a conoscere gli script del ciclo di vita in [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md). Le istruzioni in questo argomento utilizzano AWS CLI i comandi in ambiente Amazon Linux. Tieni presente che le variabili di ambiente utilizzate in questi comandi sono disponibili nella sessione corrente a meno che non vengano esplicitamente mantenute.

**Topics**
+ [Fornitura di risorse tramite stack CloudFormation](sagemaker-hyperpod-multihead-slurm-cfn.md)
+ [Creazione e collegamento di una policy IAM](sagemaker-hyperpod-multihead-slurm-iam.md)
+ [Preparazione e caricamento degli script del ciclo di vita](sagemaker-hyperpod-multihead-slurm-scripts.md)
+ [Creazione di un cluster SageMaker HyperPod](sagemaker-hyperpod-multihead-slurm-create.md)
+ [Note importanti](sagemaker-hyperpod-multihead-slurm-notes.md)
+ [Revisione dei riferimenti alle variabili di ambiente](sagemaker-hyperpod-multihead-slurm-variables-reference.md)

# Fornitura di risorse tramite stack CloudFormation
<a name="sagemaker-hyperpod-multihead-slurm-cfn"></a>

Per configurare più nodi controller in un cluster HyperPod Slurm, fornisci AWS le risorse tramite due CloudFormation stack: e. [Allocazione di risorse di base](#sagemaker-hyperpod-multihead-slurm-cfn-basic) [Allocazione di risorse aggiuntive per supportare più nodi controller](#sagemaker-hyperpod-multihead-slurm-cfn-multihead)

## Allocazione di risorse di base
<a name="sagemaker-hyperpod-multihead-slurm-cfn-basic"></a>

Segui questi passaggi per fornire risorse di base per il tuo cluster Amazon SageMaker HyperPod Slurm.

1. Scarica il file del modello [sagemaker-hyperpod.yaml](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/sagemaker-hyperpod.yaml) sul tuo computer. Questo file YAML è un CloudFormation modello che definisce le seguenti risorse da creare per il tuo cluster Slurm.
   + Un ruolo IAM di esecuzione per il gruppo di istanze del nodo di calcolo
   + Un bucket Amazon S3 per archiviare gli script del ciclo di vita
   + Sottoreti pubbliche e private (le sottoreti private hanno accesso a Internet tramite gateway NAT)
   +  Gateway/NAT Gateway Internet
   + Due gruppi di sicurezza Amazon EC2
   + Un FSx volume Amazon per archiviare i file di configurazione

1. Esegui il seguente comando CLI per creare uno CloudFormation stack denominato. `sagemaker-hyperpod` Definisci la zona di disponibilità (AZ) IDs per il tuo cluster in `PrimarySubnetAZ` and. `BackupSubnetAZ` Ad esempio, *use1-az4* è un ID AZ per una zona di disponibilità nella `us-east-1` regione. Per ulteriori informazioni, vedere [Zona di disponibilità IDs](https://docs.aws.amazon.com//ram/latest/userguide/working-with-az-ids.html) e[Configurazione di cluster su più cluster SageMaker HyperPod AZs](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-multiple-availability-zones).

   ```
   aws cloudformation deploy \
   --template-file /path_to_template/sagemaker-hyperpod.yaml \
   --stack-name sagemaker-hyperpod \
   --parameter-overrides PrimarySubnetAZ=use1-az4 BackupSubnetAZ=use1-az1 \
   --capabilities CAPABILITY_IAM
   ```

   Per ulteriori informazioni, consulta [deploy](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/deploy/) from the AWS Command Line Interface Reference. La creazione dello stack può richiedere alcuni minuti. Al termine, vedrai quanto segue nell’interfaccia a riga di comando.

   ```
   Waiting for changeset to be created..
   Waiting for stack create/update to complete
   Successfully created/updated stack - sagemaker-hyperpod
   ```

1. (Facoltativo) Verifica lo stack nella [console CloudFormation](https://console.aws.amazon.com/cloudformation/home).
   + Seleziona **Stack** dalla barra di navigazione a sinistra.
   + Nella pagina **Stack**, trova e scegli **sagemaker-hyperpod**.
   + Scegli le schede **Risorse** e **Output** per esaminare le risorse e gli output.

1. Crea variabili di ambiente dagli output dello stack (`sagemaker-hyperpod`). Utilizzerai i valori di queste variabili per [Allocazione di risorse aggiuntive per supportare più nodi controller](#sagemaker-hyperpod-multihead-slurm-cfn-multihead).

   ```
   source .env
   PRIMARY_SUBNET=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`PrimaryPrivateSubnet`].OutputValue' --output text)
   BACKUP_SUBNET=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`BackupPrivateSubnet`].OutputValue' --output text)
   EMAIL=$(bash -c 'read -p "INPUT YOUR SNSSubEmailAddress HERE: " && echo $REPLY')
   DB_USER_NAME=$(bash -c 'read -p "INPUT YOUR DB_USER_NAME HERE: " && echo $REPLY')
   SECURITY_GROUP=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`SecurityGroup`].OutputValue' --output text)
   ROOT_BUCKET_NAME=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`AmazonS3BucketName`].OutputValue' --output text)
   SLURM_FSX_DNS_NAME=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`FSxLustreFilesystemDNSname`].OutputValue' --output text)
   SLURM_FSX_MOUNT_NAME=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`FSxLustreFilesystemMountname`].OutputValue' --output text)
   COMPUTE_NODE_ROLE=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`AmazonSagemakerClusterExecutionRoleArn`].OutputValue' --output text)
   ```

   Quando vedi prompt che richiedono il tuo indirizzo e-mail e il nome utente del database, inserisci valori come i seguenti.

   ```
   INPUT YOUR SNSSubEmailAddress HERE: Email_address_to_receive_SNS_notifications
   INPUT YOUR DB_USER_NAME HERE: Database_user_name_you_define
   ```

   Per verificare i valori delle variabili, utilizza il comando `print $variable`.

   ```
   print $REGION
   us-east-1
   ```

## Allocazione di risorse aggiuntive per supportare più nodi controller
<a name="sagemaker-hyperpod-multihead-slurm-cfn-multihead"></a>

Segui questi passaggi per fornire risorse aggiuntive per il tuo cluster Amazon SageMaker HyperPod Slurm con più nodi controller.

1. Scarica il file modello [sagemaker-hyperpod-slurm-multi-headnode.yaml](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/sagemaker-hyperpod-slurm-multi-headnode.yaml) sul tuo computer. Questo secondo file YAML è un CloudFormation modello che definisce le risorse aggiuntive da creare per il supporto di più nodi di controller nel cluster Slurm.
   + Un ruolo IAM di esecuzione per il gruppo di istanze del nodo controller
   + Un’istanza Amazon RDS per MariaDB
   + Un argomento e l’abbonamento Amazon SNS
   + Gestione dei segreti AWS credenziali per Amazon RDS for MariaDB

1. Esegui il seguente comando CLI per creare uno CloudFormation stack denominato. `sagemaker-hyperpod-mh` Questo secondo stack utilizza il CloudFormation modello per creare AWS risorse aggiuntive per supportare l'architettura a più nodi di controller.

   ```
   aws cloudformation deploy \
   --template-file /path_to_template/slurm-multi-headnode.yaml \
   --stack-name sagemaker-hyperpod-mh \
   --parameter-overrides \
   SlurmDBSecurityGroupId=$SECURITY_GROUP \
   SlurmDBSubnetGroupId1=$PRIMARY_SUBNET \
   SlurmDBSubnetGroupId2=$BACKUP_SUBNET \
   SNSSubEmailAddress=$EMAIL \
   SlurmDBUsername=$DB_USER_NAME \
   --capabilities CAPABILITY_NAMED_IAM
   ```

   Per ulteriori informazioni, consulta [deploy](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/deploy/) from the AWS Command Line Interface Reference. La creazione dello stack può richiedere alcuni minuti. Al termine, vedrai quanto segue nell’interfaccia a riga di comando.

   ```
   Waiting for changeset to be created..
   Waiting for stack create/update to complete
   Successfully created/updated stack - sagemaker-hyperpod-mh
   ```

1. (Facoltativo) Verifica lo stack nella [console AWS Cloud Formation](https://console.aws.amazon.com/cloudformation/home).
   + Seleziona **Stack** dalla barra di navigazione a sinistra.
   + Nella pagina **Stack**, trova e scegli. **sagemaker-hyperpod-mh**
   + Scegli le schede **Risorse** e **Output** per esaminare le risorse e gli output.

1. Crea variabili di ambiente dagli output dello stack (`sagemaker-hyperpod-mh`). Utilizzerai i valori di queste variabili per aggiornare il file di configurazione (`provisioning_parameters.json`) in [Preparazione e caricamento degli script del ciclo di vita](sagemaker-hyperpod-multihead-slurm-scripts.md).

   ```
   source .env
   SLURM_DB_ENDPOINT_ADDRESS=$(aws --region us-east-1 cloudformation describe-stacks --stack-name $MULTI_HEAD_SLURM_STACK --query 'Stacks[0].Outputs[?OutputKey==`SlurmDBEndpointAddress`].OutputValue' --output text)
   SLURM_DB_SECRET_ARN=$(aws --region us-east-1 cloudformation describe-stacks --stack-name $MULTI_HEAD_SLURM_STACK --query 'Stacks[0].Outputs[?OutputKey==`SlurmDBSecretArn`].OutputValue' --output text)
   SLURM_EXECUTION_ROLE_ARN=$(aws --region us-east-1 cloudformation describe-stacks --stack-name $MULTI_HEAD_SLURM_STACK --query 'Stacks[0].Outputs[?OutputKey==`SlurmExecutionRoleArn`].OutputValue' --output text)
   SLURM_SNS_FAILOVER_TOPIC_ARN=$(aws --region us-east-1 cloudformation describe-stacks --stack-name $MULTI_HEAD_SLURM_STACK --query 'Stacks[0].Outputs[?OutputKey==`SlurmFailOverSNSTopicArn`].OutputValue' --output text)
   ```

# Creazione e collegamento di una policy IAM
<a name="sagemaker-hyperpod-multihead-slurm-iam"></a>

Questa sezione spiega come creare una policy IAM e collegarla al ruolo di esecuzione creato in [Allocazione di risorse aggiuntive per supportare più nodi controller](sagemaker-hyperpod-multihead-slurm-cfn.md#sagemaker-hyperpod-multihead-slurm-cfn-multihead).

1. Scarica l'[esempio di policy IAM sulla](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/1.AmazonSageMakerClustersExecutionRolePolicy.json) tua macchina dal GitHub repository.

1. Crea una policy IAM con l’esempio scaricato utilizzando il comando della CLI [create-policy](https://docs.aws.amazon.com//cli/latest/reference/iam/create-policy.html).

   ```
   aws --region us-east-1 iam create-policy \
       --policy-name AmazonSagemakerExecutionPolicy \
       --policy-document file://1.AmazonSageMakerClustersExecutionRolePolicy.json
   ```

   Esempio di output del comando.

   ```
   {
       "Policy": {
           "PolicyName": "AmazonSagemakerExecutionPolicy",
           "PolicyId": "ANPAXISIWY5UYZM7WJR4W",
           "Arn": "arn:aws:iam::111122223333:policy/AmazonSagemakerExecutionPolicy",
           "Path": "/",
           "DefaultVersionId": "v1",
           "AttachmentCount": 0,
           "PermissionsBoundaryUsageCount": 0,
           "IsAttachable": true,
           "CreateDate": "2025-01-22T20:01:21+00:00",
           "UpdateDate": "2025-01-22T20:01:21+00:00"
       }
   }
   ```

1. Allega la policy `AmazonSagemakerExecutionPolicy` al ruolo di esecuzione Slurm in cui hai creato[Allocazione di risorse aggiuntive per supportare più nodi controller](sagemaker-hyperpod-multihead-slurm-cfn.md#sagemaker-hyperpod-multihead-slurm-cfn-multihead), utilizzando il comando CLI [attach-role-policy](https://docs.aws.amazon.com//cli/latest/reference/iam/attach-role-policy.html).

   ```
   aws --region us-east-1 iam attach-role-policy \
       --role-name AmazonSagemakerExecutionRole \
       --policy-arn arn:aws:iam::111122223333:policy/AmazonSagemakerExecutionPolicy
   ```

   Il comando non produce output.

   (Facoltativo) Se utilizzi le variabili di ambiente, ecco i comandi di esempio.
   + Per ottenere il nome del ruolo e il nome della policy 

     ```
     POLICY=$(aws --region $REGION iam list-policies --query 'Policies[?PolicyName==AmazonSagemakerExecutionPolicy].Arn' --output text)
     ROLENAME=$(aws --region $REGION iam list-roles --query "Roles[?Arn=='${SLURM_EXECUTION_ROLE_ARN}'].RoleName" —output text)
     ```
   + Per collegare la policy

     ```
     aws  --region us-east-1 iam attach-role-policy \
          --role-name $ROLENAME --policy-arn $POLICY
     ```

Per ulteriori informazioni, consulta [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod).

# Preparazione e caricamento degli script del ciclo di vita
<a name="sagemaker-hyperpod-multihead-slurm-scripts"></a>

Dopo aver creato tutte le risorse richieste, dovrai configurare gli script del [ciclo](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts) di vita per il tuo cluster. SageMaker HyperPod Questi [script del ciclo](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts) di vita forniscono una [configurazione di base che puoi utilizzare per creare](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config) un cluster Slurm di base. HyperPod

## Preparazione degli script del ciclo di vita
<a name="sagemaker-hyperpod-multihead-slurm-prepare-scripts"></a>

Segui questa procedura per ottenere gli script del ciclo di vita.

1. Scarica gli [script del ciclo di vita](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts) dal repository sul tuo computer. GitHub 

1. Carica gli [script del ciclo di vita](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts) nel bucket Amazon S3 creato in [Allocazione di risorse di base](sagemaker-hyperpod-multihead-slurm-cfn.md#sagemaker-hyperpod-multihead-slurm-cfn-basic) utilizzando il comando della CLI [cp](https://docs.aws.amazon.com//cli/latest/reference/s3/cp.html).

   ```
   aws s3 cp --recursive LifeCycleScripts/base-config s3://${ROOT_BUCKET_NAME}/LifeCycleScripts/base-config
   ```

## Creazione di un file di configurazione
<a name="sagemaker-hyperpod-multihead-slurm-update-config-file"></a>

Segui questa procedura per creare il file di configurazione e caricarlo nello stesso bucket Amazon S3 in cui archivi gli script del ciclo di vita.

1. Crea un file di configurazione denominato `provisioning_parameters.json` con la configurazione seguente. Ricorda che `slurm_sns_arn` è opzionale. Se non fornito, non HyperPod configurerà le notifiche di Amazon SNS.

   ```
   cat <<EOF > /tmp/provisioning_parameters.json
   {
     "version": "1.0.0",
     "workload_manager": "slurm",
     "controller_group": "$CONTOLLER_IG_NAME",
     "login_group": "my-login-group",
     "worker_groups": [
       {
         "instance_group_name": "$COMPUTE_IG_NAME",
         "partition_name": "dev"
       }
     ],
     "fsx_dns_name": "$SLURM_FSX_DNS_NAME",
     "fsx_mountname": "$SLURM_FSX_MOUNT_NAME",
     "slurm_configurations": {
       "slurm_database_secret_arn": "$SLURM_DB_SECRET_ARN",
       "slurm_database_endpoint": "$SLURM_DB_ENDPOINT_ADDRESS",
       "slurm_shared_directory": "/fsx",
       "slurm_database_user": "$DB_USER_NAME",
       "slurm_sns_arn": "$SLURM_SNS_FAILOVER_TOPIC_ARN"
     }
   }
   EOF
   ```

1. Carica il file `provisioning_parameters.json` nello stesso bucket Amazon S3 in cui archivi gli script del ciclo di vita.

   ```
   aws s3 cp /tmp/provisioning_parameters.json s3://${ROOT_BUCKET_NAME}/LifeCycleScripts/base-config/provisioning_parameters.json
   ```
**Nota**  
Se utilizzi una configurazione basata su API, il `provisioning_parameters.json` file non è necessario. Con la configurazione basata su API, puoi definire i tipi di nodi Slurm, le partizioni e FSx il montaggio direttamente nel payload dell'API. CreateCluster [Per i dettagli, consulta Guida introduttiva all'utilizzo di. SageMaker HyperPod AWS CLI](smcluster-getting-started-slurm-cli.md)

## Verifica dei file nel bucket Amazon S3
<a name="sagemaker-hyperpod-multihead-slurm-verify-s3"></a>

Dopo aver caricato tutti gli script del ciclo di vita e il file `provisioning_parameters.json`, il bucket Amazon S3 dovrebbe avere il seguente aspetto.

![\[Immagine che mostra tutti gli script del ciclo di vita caricati nel bucket Amazon S3 nella console di Amazon Simple Storage Service.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-lifecycle-scripts-s3.png)


Per ulteriori informazioni, consulta [Inizia con gli script del ciclo di vita di base](https://docs.aws.amazon.com//sagemaker/latest/dg/sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.html) forniti da. HyperPod

# Creazione di un cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-multihead-slurm-create"></a>

Dopo aver configurato tutte le risorse richieste e caricato gli script nel bucket Amazon S3, puoi creare un cluster.

1. Per creare un cluster, esegui il [https://docs.aws.amazon.com//cli/latest/reference/sagemaker/create-cluster.html](https://docs.aws.amazon.com//cli/latest/reference/sagemaker/create-cluster.html) AWS CLI comando. Il completamento del processo può richiedere fino a 15 minuti.

   ```
   aws --region $REGION sagemaker create-cluster \
       --cluster-name $HP_CLUSTER_NAME \
       --vpc-config '{
           "SecurityGroupIds":["'$SECURITY_GROUP'"],
           "Subnets":["'$PRIMARY_SUBNET'", "'$BACKUP_SUBNET'"]
       }' \
       --instance-groups '[{                  
       "InstanceGroupName": "'$CONTOLLER_IG_NAME'",
       "InstanceType": "ml.t3.medium",
       "InstanceCount": 2,
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://'$BUCKET_NAME'",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "'$SLURM_EXECUTION_ROLE_ARN'",
       "ThreadsPerCore": 1
   },
   {
       "InstanceGroupName": "'$COMPUTE_IG_NAME'",          
       "InstanceType": "ml.c5.xlarge",
       "InstanceCount": 2,
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://'$BUCKET_NAME'",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "'$COMPUTE_NODE_ROLE'",
       "ThreadsPerCore": 1
   }]'
   ```

   Al termine, il comando restituisce l’ARN del cluster come mostrato di seguito.

   ```
   {
       "ClusterArn": "arn:aws:sagemaker:us-east-1:111122223333:cluster/cluster_id"
   }
   ```

1. (Facoltativo) Per verificare lo stato del cluster, puoi utilizzare la console SageMaker AI ([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)). Dalla barra di navigazione a sinistra, scegli **HyperPod Cluster**, quindi scegli **Gestione cluster**. Scegli il nome del cluster per aprire la relativa pagina dei dettagli. Se il cluster è stato creato correttamente, vedrai che lo stato del cluster è **InService**.  
![\[Immagine che mostra un cluster HyperPod Slurm con più nodi controller nella console Amazon SageMaker AI.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-lifecycle-multihead-cluster.png)

# Note importanti
<a name="sagemaker-hyperpod-multihead-slurm-notes"></a>

Questa sezione fornisce diverse note importanti che potrebbero esserti utili. 

1. Per eseguire la migrazione a un cluster Slurm multi-controller, completa queste fasi.

   1. Segui le istruzioni in [Fornitura di risorse tramite stack CloudFormation](sagemaker-hyperpod-multihead-slurm-cfn.md) per allocare tutte le risorse richieste.

   1. Segui le istruzioni in [Preparazione e caricamento degli script del ciclo di vita](sagemaker-hyperpod-multihead-slurm-scripts.md) per caricare gli script del ciclo di vita aggiornati. Quando aggiorni il file `provisioning_parameters.json`, sposta il gruppo di controller esistente nella sezione `worker_groups` e aggiungi un nuovo nome per il gruppo di controller nella sezione `controller_group`.

   1. Esegui la chiamata API [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) per creare un nuovo gruppo di controller e mantenere i gruppi di istanze di calcolo e il gruppo di controller originali.

1. Per ridurre verticalmente il numero di nodi controller, utilizza il comando della CLI [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html). Per ogni gruppo di istanze del controller, il numero minimo di nodi controller che possono essere ridotti verticalmente è 1. Ciò significa che non è possibile ridurre verticalmente a 0 il numero di nodi controller.
**Importante**  
Per i cluster creati prima del 24 gennaio 2025, è necessario aggiornare il software del cluster utilizzando l'[UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)API prima di eseguire il comando CLI [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html).

   Di seguito è riportato un comando della CLI di esempio per ridurre verticalmente il numero di nodi controller.

   ```
   aws sagemaker update-cluster \
       --cluster-name my_cluster \
       --instance-groups '[{                  
       "InstanceGroupName": "controller_ig_name",
       "InstanceType": "ml.t3.medium",
       "InstanceCount": 3,
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://amzn-s3-demo-bucket1",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "slurm_execution_role_arn",
       "ThreadsPerCore": 1
   },
   {
       "InstanceGroupName": "compute-ig_name",       
       "InstanceType": "ml.c5.xlarge",
       "InstanceCount": 2,
       "LifeCycleConfig": {
           "SourceS3Uri": "s3://amzn-s3-demo-bucket1",
           "OnCreate": "on_create.sh"
       },
       "ExecutionRole": "compute_node_role_arn",
       "ThreadsPerCore": 1
   }]'
   ```

1. Per eliminare in batch i nodi del controller, usa il comando [batch-delete-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/batch-delete-cluster-nodes.html)CLI. Per ogni gruppo di istanze del controller, è necessario mantenere almeno un nodo controller. Per eliminare in batch tutti i nodi controller non può essere utilizzata l’operazione API.
**Importante**  
Per i cluster creati prima del 24 gennaio 2025, è necessario aggiornare il software del cluster utilizzando l'[UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)API prima di eseguire il comando CLI [batch-delete-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/batch-delete-cluster-nodes.html).

   Di seguito è riportato un comando della CLI di esempio per eliminare in batch i nodi controller.

   ```
   aws sagemaker batch-delete-cluster-nodes --cluster-name my_cluster --node-ids instance_ids_to_delete
   ```

1. Per risolvere i problemi di creazione del cluster, controlla il messaggio di errore nella pagina dei dettagli del cluster nella tua console AI. SageMaker Puoi anche utilizzare CloudWatch i log per risolvere i problemi di creazione dei cluster. **Dalla CloudWatch console, scegli Gruppi di log.** Quindi, cerca `clusters` per visualizzare l’elenco dei gruppi di log relativi alla creazione del cluster.  
![\[Immagine che mostra i gruppi di log del SageMaker HyperPod cluster Amazon nella CloudWatch console.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-lifecycle-multihead-logs.png)

# Revisione dei riferimenti alle variabili di ambiente
<a name="sagemaker-hyperpod-multihead-slurm-variables-reference"></a>

Le seguenti variabili di ambiente sono definite e utilizzate nel tutorial di [Configurazione di più nodi controller per un cluster SageMaker HyperPod Slurm](sagemaker-hyperpod-multihead-slurm-setup.md). Queste variabili di ambiente sono disponibili solo nella sessione corrente a meno che non vengano esplicitamente mantenute. Sono definite utilizzando la sintassi `$variable_name`. Le variabili con key/value coppie rappresentano risorse AWS create, mentre le variabili senza chiavi sono definite dall'utente.


**Riferimenti alle variabili di ambiente**  

| Variabile | Description | 
| --- | --- | 
| \$1BACKUP\$1SUBNET |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1COMPUTE\$1IG\$1NAME |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1COMPUTE\$1NODE\$1ROLE |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1CONTOLLER\$1IG\$1NAME |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1DB\$1USER\$1NAME |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1EMAIL |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1PRIMARY\$1SUBNET |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1POLICY |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1REGION |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1ROOT\$1BUCKET\$1NAME |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SECURITY\$1GROUP |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SLURM\$1DB\$1ENDPOINT\$1ADDRESS |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SLURM\$1DB\$1SECRET\$1ARN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SLURM\$1EXECUTION\$1ROLE\$1ARN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SLURM\$1FSX\$1DNS\$1NAME |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SLURM\$1FSX\$1MOUNT\$1NAME |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 
| \$1SLURM\$1SNS\$1FAILOVER\$1TOPIC\$1ARN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-multihead-slurm-variables-reference.html)  | 

# Lavori su cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-run-jobs-slurm"></a>

I seguenti argomenti forniscono procedure ed esempi di accesso ai nodi di calcolo e di esecuzione di carichi di lavoro ML su cluster assegnati. SageMaker HyperPod A seconda di come è stato configurato l'ambiente sul HyperPod cluster, esistono molti modi per eseguire carichi di lavoro ML sui cluster. HyperPod Esempi di esecuzione di carichi di lavoro ML su HyperPod cluster sono disponibili anche nell'archivio Awsome [Distributed](https://github.com/aws-samples/awsome-distributed-training/) Training. GitHub I seguenti argomenti illustrano come accedere ai HyperPod cluster predisposti e come iniziare a eseguire esempi di carichi di lavoro ML.

**Suggerimento**  
[Per trovare esempi e soluzioni pratiche, consulta anche il workshop. SageMaker HyperPod](https://catalog.workshops.aws/sagemaker-hyperpod)

**Topics**
+ [Accesso ai nodi SageMaker HyperPod del cluster](sagemaker-hyperpod-run-jobs-slurm-access-nodes.md)
+ [Pianificazione di un job Slurm su un cluster SageMaker HyperPod](sagemaker-hyperpod-run-jobs-slurm-schedule-slurm-job.md)
+ [Esecuzione di contenitori Docker su un nodo di calcolo Slurm su HyperPod](sagemaker-hyperpod-run-jobs-slurm-docker.md)
+ [Esecuzione di carichi di lavoro di formazione distribuiti con Slurm on HyperPod](sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload.md)

# Accesso ai nodi SageMaker HyperPod del cluster
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes"></a>

È possibile accedere al **InService**cluster tramite AWS Systems Manager (SSM) eseguendo il AWS CLI comando `aws ssm start-session` con il nome host del SageMaker HyperPod cluster nel formato di`sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]`. È possibile recuperare l'ID del cluster, l'ID dell'istanza e il nome del gruppo di istanze dalla [SageMaker HyperPod console](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters) o eseguendo `describe-cluster` e `list-cluster-nodes` dai [AWS CLI comandi](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes) di. SageMaker HyperPod Ad esempio, se l’ID del cluster è `aa11bbbbb222`, il nome del nodo del cluster è `controller-group` e l’ID del nodo del cluster è `i-111222333444555aa`, il comando `start-session` di SSM dovrebbe essere il seguente.

**Nota**  
La concessione agli utenti dell'accesso ai nodi HyperPod del cluster consente loro di installare e utilizzare software gestito dagli utenti sui nodi. Assicurati di rispettare il principio delle autorizzazioni con privilegio minimo per gli utenti.  
Se non l'hai ancora configurato AWS Systems Manager, segui le istruzioni fornite all'indirizzo. [Configurazione AWS Systems Manager ed esecuzione come per il controllo degli accessi degli utenti del cluster](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm)

```
$ aws ssm start-session \
    --target sagemaker-cluster:aa11bbbbb222_controller-group-i-111222333444555aa \
    --region us-west-2
Starting session with SessionId: s0011223344aabbccdd
root@ip-111-22-333-444:/usr/bin#
```

Tieni presente che questa operazione esegue una connessione iniziale come utente root. Prima di eseguire i processi, passa all’utente `ubuntu` con il comando seguente.

```
root@ip-111-22-333-444:/usr/bin# sudo su - ubuntu
ubuntu@ip-111-22-333-444:/usr/bin#
```

Per le impostazioni avanzate per l'uso pratico dei HyperPod cluster, consulta i seguenti argomenti.

**Topics**
+ [Suggerimenti aggiuntivi per accedere ai SageMaker HyperPod nodi del cluster](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-tips)
+ [Configura un ambiente multiutente tramite lo spazio FSx condiviso di Amazon](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-fxs-shared-space)
+ [Configura un ambiente multiutente integrando HyperPod i cluster con Active Directory](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-active-directory)

## Suggerimenti aggiuntivi per accedere ai SageMaker HyperPod nodi del cluster
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-tips"></a>

**Utilizza lo `easy-ssh.sh` script fornito da HyperPod per semplificare il processo di connessione**

Per trasformare il processo precedente in un comando a riga singola, il HyperPod team fornisce [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/easy-ssh.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/easy-ssh.sh)lo script che recupera le informazioni sul cluster, le aggrega nel comando SSM e si connette al nodo di calcolo. Non è necessario cercare manualmente le informazioni richieste sul HyperPod cluster poiché questo script viene eseguito, `list-cluster-nodes` comanda `describe-cluster` e analizza le informazioni necessarie per completare il comando SSM. I comandi di esempio seguenti mostrano come eseguire lo script [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/easy-ssh.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/easy-ssh.sh). Se lo script viene eseguito correttamente, viene stabilita una connessione al cluster come utente root. Stampa anche un frammento di codice per configurare SSH aggiungendo il HyperPod cluster come host remoto tramite un proxy SSM. Configurando SSH, puoi connettere il tuo ambiente di sviluppo locale, ad esempio Visual Studio Code, con il cluster. HyperPod 

```
$ chmod +x easy-ssh.sh
$ ./easy-ssh.sh -c <node-group> <cluster-name>
Cluster id: <cluster_id>
Instance id: <instance_id>
Node Group: <node-group>
Add the following to your ~/.ssh/config to easily connect:

$ cat <<EOF >> ~/.ssh/config
Host <cluster-name>
  User ubuntu
  ProxyCommand sh -c "aws ssm start-session  --target sagemaker-cluster:<cluster_id>_<node-group>-<instance_id> --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
EOF

Add your ssh keypair and then you can do:

$ ssh <cluster-name>

aws ssm start-session --target sagemaker-cluster:<cluster_id>_<node-group>-<instance_id>

Starting session with SessionId: s0011223344aabbccdd
root@ip-111-22-333-444:/usr/bin#
```

Tieni presente che questa operazione esegue una connessione iniziale come utente root. Prima di eseguire i processi, passa all’utente `ubuntu` con il comando seguente.

```
root@ip-111-22-333-444:/usr/bin# sudo su - ubuntu
ubuntu@ip-111-22-333-444:/usr/bin#
```

**Configura per un facile accesso con SSH utilizzando il nodo di HyperPod calcolo come host remoto**

Per semplificare ulteriormente l'accesso al nodo di calcolo tramite SSH da un computer locale, lo `easy-ssh.sh` script genera un frammento di codice relativo alla configurazione del HyperPod cluster come host remoto, come mostrato nella sezione precedente. Lo snippet di codice viene generato automaticamente per aiutarti ad aggiungere direttamente lo script al file `~/.ssh/config` sul tuo dispositivo locale. La procedura seguente mostra come configurare un accesso semplificato tramite SSH tramite il proxy SSM, in modo che tu o gli utenti del cluster possiate `ssh <cluster-name>` collegarvi direttamente al nodo del cluster. HyperPod 

1. Sul dispositivo locale, aggiungi al file il nodo di HyperPod elaborazione con un nome utente come host remoto. `~/.ssh/config` Il comando seguente mostra come aggiungere il frammento di codice generato automaticamente dallo script `easy-ssh.sh` al file `~/.ssh/config`. Assicurati di copiarlo dall’output generato automaticamente dello script `easy-ssh.sh` che contiene le informazioni corrette sul cluster.

   ```
   $ cat <<EOF >> ~/.ssh/config
   Host <cluster-name>
     User ubuntu
     ProxyCommand sh -c "aws ssm start-session  --target sagemaker-cluster:<cluster_id>_<node-group>-<instance_id> --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
   EOF
   ```

1. Sul nodo del HyperPod cluster, aggiungi la chiave pubblica sul dispositivo locale al `~/.ssh/authorized_keys` file sul nodo del HyperPod cluster.

   1. Stampa il file della chiave pubblica sul computer locale.

      ```
      $ cat ~/.ssh/id_rsa.pub
      ```

      Questa operazione dovrebbe restituire la tua chiave. Copia l’output di questo comando. 

      (Facoltativo) Se non disponi di una chiave pubblica, creane una con il comando seguente.

      ```
      $ ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N ""
      ```

   1. Connettiti al nodo del cluster e passa all’utente per aggiungere la chiave. Il comando seguente è un esempio di accesso come utente `ubuntu`. Sostituisci `ubuntu` con il nome utente per il quale impostare l’accesso semplificato con SSH.

      ```
      $ ./easy-ssh.sh -c <node-group> <cluster-name>
      $ sudo su - ubuntu
      ubuntu@ip-111-22-333-444:/usr/bin#
      ```

   1. Apri il file `~/.ssh/authorized_keys` e aggiungi la chiave pubblica alla fine del file.

      ```
      ubuntu@ip-111-22-333-444:/usr/bin# vim ~/.ssh/authorized_keys
      ```

Al termine della configurazione, puoi connetterti al nodo del HyperPod cluster come utente eseguendo un comando SSH semplificato come segue.

```
$ ssh <cluster-name>
ubuntu@ip-111-22-333-444:/usr/bin#
```

Inoltre, puoi utilizzare l’host per lo sviluppo remoto da un IDE sul tuo dispositivo locale, ad esempio [Visual Studio Code Remote - SSH](https://code.visualstudio.com/docs/remote/ssh).

## Configura un ambiente multiutente tramite lo spazio FSx condiviso di Amazon
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-fxs-shared-space"></a>

Puoi utilizzare lo spazio FSx condiviso di Amazon per gestire un ambiente multiutente in un cluster Slurm su. SageMaker HyperPod Se hai configurato il tuo cluster Slurm con Amazon FSx durante la creazione del HyperPod cluster, questa è una buona opzione per configurare lo spazio di lavoro per gli utenti del cluster. Crea un nuovo utente e configura la directory home per l'utente sul file system FSx condiviso di Amazon.

**Suggerimento**  
Per consentire agli utenti di accedere al cluster con il proprio nome utente e le directory dedicate, devi anche associarli a ruoli o utenti IAM taggandoli come indicato nell’**opzione 2** della fase 5 della procedura **To turn on Run As support for Linux and macOS managed nodes** disponibile in [Turn on Run As support for Linux and macOS managed nodes](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-preferences-run-as.html) in AWS Systems Manager User Guide. Consulta anche [Configurazione AWS Systems Manager ed esecuzione come per il controllo degli accessi degli utenti del cluster](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm).

**Per configurare un ambiente multiutente durante la creazione di un cluster Slurm su SageMaker HyperPod**

Il team SageMaker HyperPod di assistenza fornisce uno script [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh)come parte degli esempi di script del ciclo di vita di base. 

1. Prepara un file di testo denominato `shared_users.txt` che abbia il seguente formato. La prima colonna è per i nomi utente, la seconda per gli utenti IDs unici e la terza per le directory degli utenti nello spazio FSx condiviso di Amazon.

   ```
   username1,uid1,/fsx/username1
   username2,uid2,/fsx/username2
   ...
   ```

1. Assicurati di caricare [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh)i file `shared_users.txt` and nel bucket S3 per gli script del ciclo di vita. HyperPod Durante la creazione del cluster oppure l’aggiornamento del cluster o del software del cluster, [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh) legge `shared_users.txt` e configura correttamente le directory degli utenti.

**Per creare nuovi utenti e aggiungerli a un cluster Slurm esistente in esecuzione su SageMaker HyperPod **

1. Sul nodo head, utilizza il comando seguente per salvare uno script che consente di creare un utente. Assicurati di eseguirlo con le autorizzazioni sudo.

   ```
   $ cat > create-user.sh << EOL
   #!/bin/bash
   
   set -x
   
   # Prompt user to get the new user name.
   read -p "Enter the new user name, i.e. 'sean': 
   " USER
   
   # create home directory as /fsx/<user>
   # Create the new user on the head node
   sudo useradd \$USER -m -d /fsx/\$USER --shell /bin/bash;
   user_id=\$(id -u \$USER)
   
   # add user to docker group
   sudo usermod -aG docker \${USER}
   
   # setup SSH Keypair
   sudo -u \$USER ssh-keygen -t rsa -q -f "/fsx/\$USER/.ssh/id_rsa" -N ""
   sudo -u \$USER cat /fsx/\$USER/.ssh/id_rsa.pub | sudo -u \$USER tee /fsx/\$USER/.ssh/authorized_keys
   
   # add user to compute nodes
   read -p "Number of compute nodes in your cluster, i.e. 8: 
   " NUM_NODES
   srun -N \$NUM_NODES sudo useradd -u \$user_id \$USER -d /fsx/\$USER --shell /bin/bash;
   
   # add them as a sudoer
   read -p "Do you want this user to be a sudoer? (y/N):
   " SUDO
   if [ "\$SUDO" = "y" ]; then
           sudo usermod -aG sudo \$USER
           sudo srun -N \$NUM_NODES sudo usermod -aG sudo \$USER
           echo -e "If you haven't already you'll need to run:\n\nsudo visudo /etc/sudoers\n\nChange the line:\n\n%sudo   ALL=(ALL:ALL) ALL\n\nTo\n\n%sudo   ALL=(ALL:ALL) NOPASSWD: ALL\n\nOn each node."
   fi
   EOL
   ```

1. Esegui lo script con il comando seguente. Ti verrà richiesto di aggiungere il nome di un utente e il numero di nodi di calcolo a cui desideri che l’utente abbia accesso.

   ```
   $ bash create-user.sh
   ```

1. Testa l’utente utilizzando i comandi seguenti. 

   ```
   $ sudo su - <user> && ssh $(srun hostname)
   ```

1. Aggiungi le informazioni sull’utente al file `shared_users.txt`, in modo che l’utente venga creato su qualsiasi nuovo nodo di calcolo o nuovo cluster.

## Configura un ambiente multiutente integrando HyperPod i cluster con Active Directory
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-active-directory"></a>

Nei casi d'uso pratici, HyperPod i cluster vengono in genere utilizzati da più utenti: ricercatori di machine learning (ML), ingegneri del software, data scientist e amministratori di cluster. Questi utenti modificano i propri file ed eseguono i processi senza influire sul lavoro degli altri. Per configurare un ambiente multiutente, utilizza il meccanismo di utenti e gruppi Linux per creare staticamente più utenti su ogni istanza con gli script del ciclo di vita. Lo svantaggio di questo approccio, tuttavia, è che è necessario duplicare le impostazioni di utenti e gruppi su più istanze del cluster per mantenere una configurazione coerente in tutte le istanze quando si apportano aggiornamenti come l’aggiunta, la modifica e la rimozione di utenti.

Per risolvere questo problema, è possibile utilizzare [Lightweight Directory Access Protocol (LDAP)](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) e [LDAP over TLS/SSL (LDAPS)](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) per l'integrazione con un servizio di directory come Directory Service [for Microsoft AWS Active](https://aws.amazon.com/directoryservice/) Directory. Per ulteriori informazioni sulla configurazione di Active Directory e di un ambiente multiutente in un HyperPod cluster, consulta il post sul blog [Integrare HyperPod i cluster con Active Directory](https://aws.amazon.com/blogs/machine-learning/integrate-hyperpod-clusters-with-active-directory-for-seamless-multi-user-login/) per un accesso multiutente senza interruzioni.

# Pianificazione di un job Slurm su un cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-run-jobs-slurm-schedule-slurm-job"></a>

Puoi avviare job di addestramento utilizzando i comandi standard `sbatch` o `srun` di Slurm. Ad esempio, per avviare un processo di formazione a 8 nodi, è possibile eseguire la formazione dei `srun -N 8 --exclusive train.sh` SageMaker HyperPod supporti in una serie di ambienti, tra cui`conda`, `venv``docker`, e`enroot`. È possibile configurare un ambiente ML eseguendo script del ciclo di vita sui cluster. SageMaker HyperPod Hai anche la possibilità di allegare un file system condiviso come Amazon FSx, che può essere utilizzato anche come ambiente virtuale.

L'esempio seguente mostra come eseguire un job per addestrare Llama-2 con la tecnica Fully Sharded Data Parallelism (FSDP) su un cluster SageMaker HyperPod con un file system condiviso Amazon. FSx [Puoi anche trovare altri esempi dal repository Awsome Distributed Training. GitHub ](https://github.com/aws-samples/awsome-distributed-training/)

**Suggerimento**  
Tutti gli SageMaker HyperPod esempi sono disponibili nella `3.test_cases` cartella del repository [Awsome Distributed Training](https://github.com/aws-samples/awsome-distributed-training/). GitHub 

1. Clona l'[ GitHub archivio Awsome Distributed Training](https://github.com/aws-samples/awsome-distributed-training/) e copia gli esempi di lavori di formazione sul tuo file system Amazon FSx . 

   ```
   $ TRAINING_DIR=/fsx/users/my-user/fsdp
   $ git clone https://github.com/aws-samples/awsome-distributed-training/
   ```

1. Eseguire lo script [https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/10.FSDP/0.create_conda_env.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/10.FSDP/0.create_conda_env.sh). Questo crea un `conda` ambiente sul tuo FSx file system Amazon. Verifica che il file system sia accessibile a tutti i nodi del cluster.

1. Crea l’ambiente virtuale Conda avviando un processo Slurm a nodo singolo come descritto di seguito.

   ```
   $ srun -N 1 /path_to/create_conda_env.sh
   ```

1. Dopo aver creato l’ambiente, puoi avviare un job di addestramento indicando il percorso dell’ambiente sul volume condiviso. Puoi avviare job di addestramento sia a nodo singolo che multinodo con la stessa configurazione. Per avviare un processo, crea uno script di avvio dei processi (chiamato anche script del punto di ingresso) come segue.

   ```
   #!/usr/bin/env bash
   set -ex
   
   ENV_PATH=/fsx/users/my_user/pytorch_env
   TORCHRUN=$ENV_PATH/bin/torchrun
   TRAINING_SCRIPT=/fsx/users/my_user/pt_train.py
   
   WORLD_SIZE_JOB=$SLURM_NTASKS
   RANK_NODE=$SLURM_NODEID
   PROC_PER_NODE=8
   MASTER_ADDR=(`scontrol show hostnames \$SLURM_JOB_NODELIST | head -n 1`)
   MASTER_PORT=$(expr 10000 + $(echo -n $SLURM_JOBID | tail -c 4))
   
   DIST_ARGS="--nproc_per_node=$PROC_PER_NODE \
              --nnodes=$WORLD_SIZE_JOB \
              --node_rank=$RANK_NODE \
              --master_addr=$MASTER_ADDR \
              --master_port=$MASTER_PORT \
             "
             
   $TORCHRUN $DIST_ARGS $TRAINING_SCRIPT
   ```
**Suggerimento**  
Se si desidera rendere il processo di formazione più resistente ai guasti hardware utilizzando la funzionalità di ripristino automatico di SageMaker HyperPod, è necessario impostare correttamente la variabile di ambiente `MASTER_ADDR` nello script entrypoint. Per ulteriori informazioni, consulta [Ripristino automatico dei nodi e ripristino automatico](sagemaker-hyperpod-resiliency-slurm-auto-resume.md).

   Questo tutorial presuppone che questo script sia salvato come `/fsx/users/my_user/train.sh`.

1. Con questo script nel volume condiviso in `/fsx/users/my_user/train.sh`, esegui il comando `srun` seguente per pianificare il processo Slurm.

   ```
   $ cd /fsx/users/my_user/
   $ srun -N 8 train.sh
   ```

# Esecuzione di contenitori Docker su un nodo di calcolo Slurm su HyperPod
<a name="sagemaker-hyperpod-run-jobs-slurm-docker"></a>

[https://github.com/NVIDIA/enroot](https://github.com/NVIDIA/enroot) Il pacchetto Enroot aiuta a convertire le immagini Docker in un runtime comprensibile da Slurm, mentre Pyxis consente di pianificare il runtime come processo Slurm tramite un comando `srun`, `srun --container-image=docker/image:tag`. 

**Suggerimento**  
I pacchetti Docker, Enroot e Pyxis devono essere installati durante la creazione del cluster come parte dell’esecuzione degli script del ciclo di vita come indicato in [Script del ciclo di vita di base forniti da HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.md). Utilizza gli [script del ciclo di vita di base](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config) forniti dal team di assistenza durante la creazione di un cluster. HyperPod HyperPod Questi script di base sono configurati per installare i pacchetti per impostazione predefinita. Nello script [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/config.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/config.py) è presente la classe `Config` con il parametro di tipo booleano per l’installazione dei pacchetti impostato su `True` (`enable_docker_enroot_pyxis=True`). Questo viene richiamato e analizzato nello script [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/lifecycle_script.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/lifecycle_script.py), che chiama gli script `install_docker.sh` e `install_enroot_pyxis.sh` dalla cartella [https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils). Le installazioni effettive dei pacchetti avvengono negli script di installazione. Inoltre, gli script di installazione identificano se sono in grado di rilevare i percorsi di NVMe archiviazione dalle istanze su cui vengono eseguiti e configurano i percorsi root per Docker ed Enroot. `/opt/dlami/nvme` Il volume root predefinito di ogni nuova istanza viene montato `/tmp` solo su un volume EBS da 100 GB, che si esaurisce se il carico di lavoro che intendi eseguire prevede l'addestramento di contenitori Docker di LLMs grandi dimensioni. Se utilizzi famiglie di istanze come P e G con NVMe archiviazione locale, devi assicurarti di utilizzare lo NVMe storage allegato a `/opt/dlami/nvme` e che gli script di installazione si occupino dei processi di configurazione.

**Per verificare se i percorsi root sono configurati correttamente**

Su un nodo di calcolo del tuo cluster Slurm SageMaker HyperPod, esegui i seguenti comandi per assicurarti che lo script del ciclo di vita funzioni correttamente e che il volume principale di ogni nodo sia impostato su. `/opt/dlami/nvme/*` I comandi seguenti mostrano esempi di come controllare il percorso di runtime di Enroot e del percorso root dei dati per 8 nodi di calcolo di un cluster Slurm.

```
$ srun -N 8 cat /etc/enroot/enroot.conf | grep "ENROOT_RUNTIME_PATH"
ENROOT_RUNTIME_PATH        /opt/dlami/nvme/tmp/enroot/user-$(id -u)
... // The same or similar lines repeat 7 times
```

```
$ srun -N 8 cat /etc/docker/daemon.json
{
    "data-root": "/opt/dlami/nvme/docker/data-root"
}
... // The same or similar lines repeat 7 times
```

Dopo aver verificato che i percorsi di runtime sono impostati correttamente su `/opt/dlami/nvme/*`, puoi iniziare a creare ed eseguire i container Docker con Enroot e Pyxis.

**Per testare Docker con Slurm**

1. Sul tuo nodo di calcolo, prova i comandi seguenti per verificare se Docker ed Enroot sono installati correttamente.

   ```
   $ docker --help
   $ enroot --help
   ```

1. Verifica se Pyxis ed Enroot sono installati correttamente eseguendo una delle immagini [NVIDIA CUDA Ubuntu](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/cuda).

   ```
   $ srun --container-image=nvidia/cuda:XX.Y.Z-base-ubuntuXX.YY nvidia-smi
   pyxis: importing docker image: nvidia/cuda:XX.Y.Z-base-ubuntuXX.YY
   pyxis: imported docker image: nvidia/cuda:XX.Y.Z-base-ubuntuXX.YY
   DAY MMM DD HH:MM:SS YYYY
   +-----------------------------------------------------------------------------+
   | NVIDIA-SMI 470.141.03   Driver Version: 470.141.03   CUDA Version: XX.YY    |
   |-------------------------------+----------------------+----------------------+
   | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
   | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
   |                               |                      |               MIG M. |
   |===============================+======================+======================|
   |   0  Tesla T4            Off  | 00000000:00:1E.0 Off |                    0 |
   | N/A   40C    P0    27W /  70W |      0MiB / 15109MiB |      0%      Default |
   |                               |                      |                  N/A |
   +-------------------------------+----------------------+----------------------+
   
   +-----------------------------------------------------------------------------+
   | Processes:                                                                  |
   |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
   |        ID   ID                                                   Usage      |
   |=============================================================================|
   |  No running processes found                                                 |
   +-----------------------------------------------------------------------------+
   ```

   Puoi verificarlo anche creando uno script ed eseguendo un comando `sbatch`, come descritto di seguito.

   ```
   $ cat <<EOF >> container-test.sh
   #!/bin/bash
   #SBATCH --container-image=nvidia/cuda:XX.Y.Z-base-ubuntuXX.YY
   nvidia-smi
   EOF
   
   $ sbatch container-test.sh
   pyxis: importing docker image: nvidia/cuda:XX.Y.Z-base-ubuntuXX.YY
   pyxis: imported docker image: nvidia/cuda:XX.Y.Z-base-ubuntuXX.YY
   DAY MMM DD HH:MM:SS YYYY
   +-----------------------------------------------------------------------------+
   | NVIDIA-SMI 470.141.03   Driver Version: 470.141.03   CUDA Version: XX.YY    |
   |-------------------------------+----------------------+----------------------+
   | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
   | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
   |                               |                      |               MIG M. |
   |===============================+======================+======================|
   |   0  Tesla T4            Off  | 00000000:00:1E.0 Off |                    0 |
   | N/A   40C    P0    27W /  70W |      0MiB / 15109MiB |      0%      Default |
   |                               |                      |                  N/A |
   +-------------------------------+----------------------+----------------------+
   
   +-----------------------------------------------------------------------------+
   | Processes:                                                                  |
   |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
   |        ID   ID                                                   Usage      |
   |=============================================================================|
   |  No running processes found                                                 |
   +-----------------------------------------------------------------------------+
   ```

**Per eseguire un processo Slurm di prova con Docker**

Dopo aver completato la configurazione di Slurm con Docker, puoi portare qualsiasi immagine Docker preconfigurata ed eseguirla utilizzando Slurm on. SageMaker HyperPod Di seguito è riportato un esempio di caso d'uso che illustra come eseguire un processo di formazione utilizzando Docker e Slurm on. SageMaker HyperPod Mostra un esempio di lavoro di addestramento parallelo al modello Llama 2 con la libreria SageMaker AI model parallelism (SMP).

1. Se desideri utilizzare una delle immagini ECR predefinite distribuite da SageMaker AI o DLC, assicurati di concedere al HyperPod cluster le autorizzazioni per estrarre le immagini ECR da. [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) Se utilizzi un’immagine Docker personalizzata o open source, puoi saltare questa fase. Aggiungi le autorizzazioni seguenti al [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod). In questo tutorial, utilizziamo l’[immagine Docker SMP](distributed-model-parallel-support-v2.md#distributed-model-parallel-supported-frameworks-v2) preconfezionata con la libreria SMP.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:BatchCheckLayerAvailability",
                   "ecr:BatchGetImage",
                   "ecr-public:*",
                   "ecr:GetDownloadUrlForLayer",
                   "ecr:GetAuthorizationToken",
                   "sts:*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Sul nodo di calcolo, clona il repository e vai alla cartella che fornisce gli script di esempio per l’addestramento con SMP.

   ```
   $ git clone https://github.com/aws-samples/awsome-distributed-training/
   $ cd awsome-distributed-training/3.test_cases/17.SM-modelparallelv2
   ```

1. In questo tutorial, esegui lo script di esempio [https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/17.SM-modelparallelv2/docker_build.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/17.SM-modelparallelv2/docker_build.sh) che estrae l’immagine Docker SMP, crea il container Docker e lo esegue come runtime Enroot. Puoi modificare lo script in base alle tue esigenze.

   ```
   $ cat docker_build.sh
   #!/usr/bin/env bash
   
   region=us-west-2
   dlc_account_id=658645717510
   aws ecr get-login-password --region $region | docker login --username AWS --password-stdin $dlc_account_id.dkr.ecr.$region.amazonaws.com
   
   docker build -t smpv2 .
   enroot import -o smpv2.sqsh  dockerd://smpv2:latest
   ```

   ```
   $ bash docker_build.sh
   ```

1. Crea uno script batch per avviare un job di addestramento utilizzando`sbatch`. In questo tutorial, lo script di esempio fornito [https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/17.SM-modelparallelv2/launch_training_enroot.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/17.SM-modelparallelv2/launch_training_enroot.sh) avvia un job di addestramento con parallelizzazione del modello Llama 2 da 70 miliardi di parametri con un set di dati sintetico su 8 nodi di calcolo. Un set di script di addestramento viene fornito a [https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/17.SM-modelparallelv2/scripts](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/17.SM-modelparallelv2/scripts) e `launch_training_enroot.sh` utilizza `train_external.py` come script del punto di ingresso.
**Importante**  
Per utilizzare un contenitore Docker SageMaker HyperPod, devi montare la `/var/log` directory dalla macchina host, che in questo caso è il nodo di HyperPod elaborazione, sulla directory del contenitore. `/var/log` Puoi configurarlo aggiungendo la seguente variabile per Enroot.  

   ```
   "${HYPERPOD_PATH:="/var/log/aws/clusters":"/var/log/aws/clusters"}"
   ```

   ```
   $ cat launch_training_enroot.sh
   #!/bin/bash
   
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier: MIT-0
   
   #SBATCH --nodes=8 # number of nodes to use, 2 p4d(e) = 16 A100 GPUs
   #SBATCH --job-name=smpv2_llama # name of your job
   #SBATCH --exclusive # job has exclusive use of the resource, no sharing
   #SBATCH --wait-all-nodes=1
   
   set -ex;
   
   ###########################
   ###### User Variables #####
   ###########################
   
   #########################
   model_type=llama_v2
   model_size=70b
   
   # Toggle this to use synthetic data
   use_synthetic_data=1
   
   
   # To run training on your own data  set Training/Test Data path  -> Change this to the tokenized dataset path in Fsx. Acceptable formats are huggingface (arrow) and Jsonlines.
   # Also change the use_synthetic_data to 0
   
   export TRAINING_DIR=/fsx/path_to_data
   export TEST_DIR=/fsx/path_to_data
   export CHECKPOINT_DIR=$(pwd)/checkpoints
   
   # Variables for Enroot
   : "${IMAGE:=$(pwd)/smpv2.sqsh}"
   : "${HYPERPOD_PATH:="/var/log/aws/clusters":"/var/log/aws/clusters"}" # This is needed for validating its hyperpod cluster
   : "${TRAIN_DATA_PATH:=$TRAINING_DIR:$TRAINING_DIR}"
   : "${TEST_DATA_PATH:=$TEST_DIR:$TEST_DIR}"
   : "${CHECKPOINT_PATH:=$CHECKPOINT_DIR:$CHECKPOINT_DIR}"   
   
   
   ###########################
   ## Environment Variables ##
   ###########################
   
   #export NCCL_SOCKET_IFNAME=en
   export NCCL_ASYNC_ERROR_HANDLING=1
   
   export NCCL_PROTO="simple"
   export NCCL_SOCKET_IFNAME="^lo,docker"
   export RDMAV_FORK_SAFE=1
   export FI_EFA_USE_DEVICE_RDMA=1
   export NCCL_DEBUG_SUBSYS=off
   export NCCL_DEBUG="INFO"
   export SM_NUM_GPUS=8
   export GPU_NUM_DEVICES=8
   export FI_EFA_SET_CUDA_SYNC_MEMOPS=0
   
   # async runtime error ...
   export CUDA_DEVICE_MAX_CONNECTIONS=1
   
   
   #########################
   ## Command and Options ##
   #########################
   
   if [ "$model_size" == "7b" ]; then
       HIDDEN_WIDTH=4096
       NUM_LAYERS=32
       NUM_HEADS=32
       LLAMA_INTERMEDIATE_SIZE=11008
       DEFAULT_SHARD_DEGREE=8
   # More Llama model size options
   elif [ "$model_size" == "70b" ]; then
       HIDDEN_WIDTH=8192
       NUM_LAYERS=80
       NUM_HEADS=64
       LLAMA_INTERMEDIATE_SIZE=28672
       # Reduce for better perf on p4de
       DEFAULT_SHARD_DEGREE=64
   fi
   
   
   if [ -z "$shard_degree" ]; then
       SHARD_DEGREE=$DEFAULT_SHARD_DEGREE
   else
       SHARD_DEGREE=$shard_degree
   fi
   
   if [ -z "$LLAMA_INTERMEDIATE_SIZE" ]; then
       LLAMA_ARGS=""
   else
       LLAMA_ARGS="--llama_intermediate_size $LLAMA_INTERMEDIATE_SIZE "
   fi
   
   
   if [ $use_synthetic_data == 1 ]; then
       echo "using synthetic data"
       declare -a ARGS=(
       --container-image $IMAGE
       --container-mounts $HYPERPOD_PATH,$CHECKPOINT_PATH
       )
   else
       echo "using real data...."
       declare -a ARGS=(
       --container-image $IMAGE
       --container-mounts $HYPERPOD_PATH,$TRAIN_DATA_PATH,$TEST_DATA_PATH,$CHECKPOINT_PATH
       )
   fi
   
   
   declare -a TORCHRUN_ARGS=(
       # change this to match the number of gpus per node:
       --nproc_per_node=8 \
       --nnodes=$SLURM_JOB_NUM_NODES \
       --rdzv_id=$SLURM_JOB_ID \
       --rdzv_backend=c10d \
       --rdzv_endpoint=$(hostname) \
   )
   
   srun -l "${ARGS[@]}" torchrun "${TORCHRUN_ARGS[@]}" /path_to/train_external.py \
               --train_batch_size 4 \
               --max_steps 100 \
               --hidden_width $HIDDEN_WIDTH \
               --num_layers $NUM_LAYERS \
               --num_heads $NUM_HEADS \
               ${LLAMA_ARGS} \
               --shard_degree $SHARD_DEGREE \
               --model_type $model_type \
               --profile_nsys 1 \
               --use_smp_implementation 1 \
               --max_context_width 4096 \
               --tensor_parallel_degree 1 \
               --use_synthetic_data $use_synthetic_data \
               --training_dir $TRAINING_DIR \
               --test_dir $TEST_DIR \
               --dataset_type hf \
               --checkpoint_dir $CHECKPOINT_DIR \
               --checkpoint_freq 100 \
   
   $ sbatch launch_training_enroot.sh
   ```

*Per trovare gli esempi di codice scaricabili, consulta [Esegui un processo di formazione parallelo ai modelli utilizzando la libreria di parallelismo dei modelli SageMaker AI, Docker ed Enroot con](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/17.SM-modelparallelv2#option-2----run-training-using-docker-and-enroot) Slurm nell'archivio Awsome Distributed Training. GitHub * Per ulteriori informazioni sulla formazione distribuita con un cluster Slurm su, passa all'argomento successivo all'indirizzo. SageMaker HyperPod [Esecuzione di carichi di lavoro di formazione distribuiti con Slurm on HyperPod](sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload.md)

# Esecuzione di carichi di lavoro di formazione distribuiti con Slurm on HyperPod
<a name="sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload"></a>

SageMaker HyperPod è specializzato per carichi di lavoro di formazione di modelli linguistici di grandi dimensioni (LLMs) e modelli di base (). FMs Questi carichi di lavoro richiedono spesso l’utilizzo di più tecniche di parallelizzazione e operazioni ottimizzate per l’infrastruttura e le risorse di ML. Utilizzando SageMaker HyperPod, puoi utilizzare i seguenti framework di formazione distribuiti SageMaker basati sull'intelligenza artificiale:
+ La [libreria SageMaker AI Distributed Data Parallelism (SMDDP)](data-parallel.md) che offre operazioni di comunicazione collettiva ottimizzate per. AWS
+ La [libreria di parallelismo dei modelli SageMaker AI (SMP)](model-parallel-v2.md) che implementa varie tecniche di parallelismo dei modelli.

**Topics**
+ [Utilizzo di SMDDP su un SageMaker HyperPod](#sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload-smddp)
+ [Utilizzo SageMaker HyperPod di SMP su un cluster](#sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload-smp)

## Utilizzo di SMDDP su un SageMaker HyperPod
<a name="sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload-smddp"></a>

La [libreria SMDDP](data-parallel.md) è una libreria di comunicazione collettiva che migliora le prestazioni di calcolo dell’addestramento parallelo di dati distribuiti. La libreria SMDDP funziona con i seguenti framework di addestramento distribuito open source:
+ [PyTorchdati distribuiti in parallelo (DDP)](https://pytorch.org/docs/stable/notes/ddp.html)
+ [PyTorch parallelismo dei dati completamente condiviso (FSDP)](https://pytorch.org/docs/stable/fsdp.html)
+ [DeepSpeed](https://github.com/microsoft/DeepSpeed)
+ [Megatron- DeepSpeed](https://github.com/microsoft/Megatron-DeepSpeed)

La libreria SMDDP affronta il sovraccarico di comunicazione delle principali operazioni di comunicazione collettiva offrendo quanto segue per. SageMaker HyperPod
+ La libreria offre offerte `AllGather` ottimizzate per. AWS`AllGather`è un'operazione chiave utilizzata nell'addestramento parallelo dei dati condivisi, una tecnica di parallelismo dei dati efficiente in termini di memoria offerta dalle librerie più diffuse. Queste includono la libreria SageMaker AI Model Parallelism (SMP), DeepSpeed Zero Redundancy Optimizer (Zero) e Fully Sharded Data Parallelism (FSDP). PyTorch 
+ La libreria esegue node-to-node comunicazioni ottimizzate utilizzando appieno l'infrastruttura di rete e la topologia dell'istanza AI ML. AWS SageMaker 

**Per eseguire job di addestramento di esempio con parallelizzazione dei dati**

Esplora gli esempi seguenti di addestramento distribuito che implementano tecniche di parallelizzazione dei dati utilizzando la libreria SMDDP.
+ [https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/12.SM-dataparallel-FSDP](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/12.SM-dataparallel-FSDP)
+ [https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/13.SM-dataparallel-deepspeed](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/13.SM-dataparallel-deepspeed)

**Per configurare un ambiente per l'utilizzo della libreria SMDDP su SageMaker HyperPod**

Di seguito sono riportati i requisiti dell'ambiente di formazione per l'utilizzo della libreria SMDDP su. SageMaker HyperPod
+ PyTorch v2.0.1 e versioni successive
+ CUDA v11.8 e versioni successive
+ `libstdc++` versione di runtime superiore a 3
+ Python v3.10.x e versioni successive
+ `ml.p4d.24xlarge` e `ml.p4de.24xlarge`, ovvero i tipi di istanze supportati dalla libreria SMDDP
+ `imdsv2` abilitato sull’host di addestramento

A seconda di come si desidera eseguire il job di addestramento distribuito, sono disponibili due opzioni per installare la libreria SMDDP:
+ Un’installazione diretta che utilizza il file binario SMDDP.
+ Utilizzo dell' SageMaker AI Deep Learning Containers (DLCs) preinstallato con la libreria SMDDP.

[Le immagini Docker preinstallate con la libreria SMDDP o i file binari SMDDP sono elencate URLs in Supported Frameworks nella documentazione della libreria SMDDP.](https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-data-parallel-support.html#distributed-data-parallel-supported-frameworks)

**Per installare la libreria SMDDP su DLAMI SageMaker HyperPod**
+ `pip install --no-cache-dir https://smdataparallel.s3.amazonaws.com/binary/pytorch/<pytorch-version>/cuXYZ/YYYY-MM-DD/smdistributed_dataparallel-X.Y.Z-cp310-cp310-linux_x86_64.whl`
**Nota**  
Se lavori in un ambiente Conda, assicurati di installare PyTorch using instead of. `conda install` `pip`  

  ```
  conda install pytorch==X.Y.Z  torchvision==X.Y.Z torchaudio==X.Y.Z pytorch-cuda=X.Y.Z -c pytorch -c nvidia
  ```

**Per utilizzare la libreria SMDDP su un container Docker**
+ La libreria SMDDP è preinstallata su SageMaker AI Deep Learning Containers (). DLCs Per trovare l'elenco dei framework SageMaker DLCs AI compatibili PyTorch con la libreria SMDDP, consulta [Supported Frameworks](https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-data-parallel-support.html#distributed-data-parallel-supported-frameworks) nella documentazione della libreria SMDDP. Puoi anche utilizzare il tuo container Docker su cui sono installate le dipendenze richieste per la libreria SMDDP. Per ulteriori informazioni sulla configurazione di un container Docker personalizzato per l’utilizzo della libreria SMDDP, consulta anche [Crea il tuo contenitore Docker con la libreria parallela di dati distribuiti SageMaker AI](data-parallel-bring-your-own-container.md).
**Importante**  
Per utilizzare la libreria SMDDP in un container Docker, monta la directory `/var/log` dal computer host a `/var/log` nel container. Per farlo, aggiungi l’opzione seguente durante l’esecuzione del container.  

  ```
  docker run <OTHER_OPTIONS> -v /var/log:/var/log ...
  ```

Per informazioni generali su come eseguire job di addestramento con parallelizzazione dei dati con SMDDP, consulta [Formazione distribuita con la libreria di parallelismo dei dati distribuiti SageMaker AI](data-parallel-modify-sdp.md).

## Utilizzo SageMaker HyperPod di SMP su un cluster
<a name="sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload-smp"></a>

La [libreria SageMaker AI model parallelism (SMP)](model-parallel-v2.md) offre varie tecniche di [parallelismo dei state-of-the-art modelli](model-parallel-core-features-v2.md), tra cui:
+ fully sharded data parallelism
+ parallelizzazione degli esperti
+ addestramento di precisione misto con/e tipi di dati FP16 BF16 FP8 
+ parallelizzazione tensoriale

La libreria SMP è anche compatibile con framework open source come PyTorch FSDP, NVIDIA Megatron e NVIDIA Transformer Engine.

**Per eseguire un esempio di carico di lavoro di addestramento con parallelizzazione del modello**

I team di assistenza SageMaker AI forniscono esempi di lavori di formazione che implementano il parallelismo dei modelli con la libreria SMP all'indirizzo. [https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/17.SM-modelparallelv2](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/17.SM-modelparallelv2)

# SageMaker HyperPod monitoraggio delle risorse del cluster
<a name="sagemaker-hyperpod-cluster-observability-slurm"></a>

[Per ottenere un'osservabilità completa nelle risorse del SageMaker HyperPod cluster e nei componenti software, integra il cluster con [Amazon Managed Service for Prometheus](https://docs.aws.amazon.com/prometheus/latest/userguide/what-is-Amazon-Managed-Service-Prometheus.html) e Amazon Managed Grafana.](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html) L'integrazione con Amazon Managed Service for Prometheus consente l'esportazione di metriche relative alle HyperPod risorse del cluster, fornendo informazioni sulle loro prestazioni, utilizzo e integrità. L’integrazione con Grafana gestito da Amazon consente la visualizzazione di queste metriche attraverso varie dashboard Grafana che offrono un’interfaccia intuitiva per il monitoraggio e l’analisi del comportamento del cluster. Sfruttando questi servizi, ottieni una visione centralizzata e unificata del HyperPod cluster, facilitando il monitoraggio proattivo, la risoluzione dei problemi e l'ottimizzazione dei carichi di lavoro di formazione distribuiti.

**Suggerimento**  
[Per trovare esempi e soluzioni pratiche, consulta anche il workshop. SageMaker HyperPod](https://catalog.workshops.aws/sagemaker-hyperpod)

![\[Una panoramica della configurazione SageMaker HyperPod con Amazon Managed Service for Prometheus e Amazon Managed Grafana.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod-observability-architecture.png)


Figura: questo diagramma di architettura mostra una panoramica della configurazione con SageMaker HyperPod Amazon Managed Service for Prometheus e Amazon Managed Grafana.

Passa ai seguenti argomenti per configurare l'osservabilità del cluster. SageMaker HyperPod 

**Topics**
+ [Prerequisiti per SageMaker HyperPod l'osservabilità dei cluster](sagemaker-hyperpod-cluster-observability-slurm-prerequisites.md)
+ [Installazione HyperPod dei pacchetti Metrics Exporter sul tuo cluster](sagemaker-hyperpod-cluster-observability-slurm-install-exporters.md)
+ [Convalida della configurazione di Prometheus sul nodo principale di un cluster HyperPod](sagemaker-hyperpod-cluster-observability-slurm-validate-prometheus-setup.md)
+ [Configurazione di uno spazio di lavoro Grafana gestito da Amazon](sagemaker-hyperpod-cluster-observability-slurm-managed-grafana-ws.md)
+ [Riferimento delle metriche esportate](sagemaker-hyperpod-cluster-observability-slurm-exported-metrics-reference.md)
+ [Metriche di Amazon SageMaker HyperPod Slurm](smcluster-slurm-metrics.md)

# Prerequisiti per SageMaker HyperPod l'osservabilità dei cluster
<a name="sagemaker-hyperpod-cluster-observability-slurm-prerequisites"></a>

Prima di procedere con la procedura descritta in [Installazione HyperPod dei pacchetti Metrics Exporter sul tuo cluster](sagemaker-hyperpod-cluster-observability-slurm-install-exporters.md), verifica che siano soddisfatti i seguenti prerequisiti.

## Abilita IAM Identity Center
<a name="sagemaker-hyperpod-cluster-observability-slurm-prerequisites-iam-id-center"></a>

Per abilitare l'osservabilità per il SageMaker HyperPod cluster, devi prima abilitare IAM Identity Center. Questo è un prerequisito per la distribuzione di uno CloudFormation stack che configuri l'area di lavoro Amazon Managed Grafana e Amazon Managed Service for Prometheus. Entrambi i servizi richiedono il Centro identità IAM anche per l’autenticazione e le autorizzazioni, per garantire un accesso sicuro agli utenti e la gestione dell’infrastruttura di monitoraggio.

Per una guida dettagliata sull’abilitazione del Centro identità IAM, consulta la sezione [Enabling IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html) nella guida *AWS IAM Identity Center User Guide*. 

Dopo aver abilitato correttamente il Centro identità IAM, configura un account utente che fungerà da utente amministratore nelle procedure di configurazione seguenti.

## Crea e CloudFormation distribuisci SageMaker HyperPod uno stack per l'osservabilità
<a name="sagemaker-hyperpod-cluster-observability-slurm-prerequisites-cloudformation-stack"></a>

Crea e distribuisci uno CloudFormation stack per l' SageMaker HyperPod osservabilità per monitorare i parametri del HyperPod cluster in tempo reale utilizzando Amazon Managed Service for Prometheus e Amazon Managed Grafana. Per implementare lo stack, tieni presente che devi abilitare prima il [Centro identità IAM](https://console.aws.amazon.com/singlesignon).

Usa lo CloudFormation script di esempio [https://github.com/aws-samples/awsome-distributed-training/blob/main/4.validation_and_observability/4.prometheus-grafana/cluster-observability.yaml](https://github.com/aws-samples/awsome-distributed-training/blob/main/4.validation_and_observability/4.prometheus-grafana/cluster-observability.yaml)che ti aiuta a configurare le sottoreti Amazon VPC, i file system FSx Amazon for Lustre, i bucket Amazon S3 e i ruoli IAM necessari per creare uno stack di osservabilità del cluster. HyperPod 

# Installazione HyperPod dei pacchetti Metrics Exporter sul tuo cluster
<a name="sagemaker-hyperpod-cluster-observability-slurm-install-exporters"></a>

Nella [configurazione di base, gli script del ciclo](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.md) di vita forniti dal SageMaker HyperPod team includono anche l'installazione di vari pacchetti Metric Exporter. Per attivare la fase di installazione, devi semplicemente impostare il parametro `enable_observability=True` nel file [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/config.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/config.py). Gli script del ciclo di vita sono progettati per il bootstrap del cluster con i seguenti pacchetti di esportazione di metriche open source.


|  |  |  | 
| --- |--- |--- |
| Nome | Nodo di destinazione per l’implementazione degli script | Descrizione dello strumento di esportazione | 
| [Strumento di esportazione Slurm per Prometheus](https://github.com/vpenso/prometheus-slurm-exporter) | Nodo head (controller) |  Esporta le metriche di accounting Slurm.  | 
|  [Esportazione di nodi Elastic Fabric Adapter (EFA)](https://github.com/aws-samples/awsome-distributed-training/tree/main/4.validation_and_observability/3.efa-node-exporter)  |  Nodo di calcolo  |  Esporta le metriche dai nodi del cluster e da EFA. Il pacchetto è un fork dello [strumento di esportazione di nodi Prometheus](https://github.com/prometheus/node_exporter).  | 
|  [Strumento di esportazione di NVIDIA Data Center GPU Management (DCGM)](https://github.com/NVIDIA/dcgm-exporter)  | Nodo di calcolo |  Esporta i parametri NVIDIA DCGM sullo stato e le prestazioni di NVIDIA. GPUs  | 

Con `enable_observability=True` nel file [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/config.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/config.py), nello script viene attivata la fase di installazione seguente [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/lifecycle_script.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/lifecycle_script.py). 

```
# Install metric exporting software and Prometheus for observability
if Config.enable_observability:
    if node_type == SlurmNodeType.COMPUTE_NODE:
        ExecuteBashScript("./utils/install_docker.sh").run()
        ExecuteBashScript("./utils/install_dcgm_exporter.sh").run()
        ExecuteBashScript("./utils/install_efa_node_exporter.sh").run()

    if node_type == SlurmNodeType.HEAD_NODE:
        wait_for_scontrol()
        ExecuteBashScript("./utils/install_docker.sh").run()
        ExecuteBashScript("./utils/install_slurm_exporter.sh").run()
        ExecuteBashScript("./utils/install_prometheus.sh").run()
```

Sui nodi di calcolo, lo script installa lo strumento di esportazione di nodi NVIDIA Data Center GPU Management (DCGM) e lo strumento di esportazione di nodi Elastic Fabric Adapter (EFA). L'esportatore DCGM è un esportatore per Prometheus che raccoglie metriche da GPUs NVIDIA, abilitando il monitoraggio dell'utilizzo, delle prestazioni e dello stato della GPU. Lo strumento di esportazione di nodi EFA, invece, raccoglie metriche relative all’interfaccia di rete EFA, essenziale per comunicazioni a bassa latenza e larghezza di banda elevata nei cluster HPC.

Sul nodo head, lo script installa lo strumento di esportazione Slurm per Prometheus e il [software open source Prometheus](https://prometheus.io/docs/introduction/overview/). Lo strumento di esportazione Slurm fornisce a Prometheus le metriche relative ai processi, alle partizioni e agli stati dei nodi Slurm.

Nota che gli script del ciclo di vita sono progettati per installare tutti i pacchetti di esportazione come container Docker, quindi il pacchetto Docker deve essere installato anche sui nodi head e di calcolo. *Gli script per questi componenti sono comodamente disponibili nella cartella del repository Awsome Distributed Training. [https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils) GitHub *

Dopo aver configurato correttamente il HyperPod cluster installato con i pacchetti di esportazione, passa all'argomento successivo per completare la configurazione di Amazon Managed Service for Prometheus e Amazon Managed Grafana.

# Convalida della configurazione di Prometheus sul nodo principale di un cluster HyperPod
<a name="sagemaker-hyperpod-cluster-observability-slurm-validate-prometheus-setup"></a>

Dopo aver configurato correttamente il HyperPod cluster installato con i pacchetti exporter, controlla se Prometheus è configurato correttamente sul nodo principale del cluster. HyperPod 

1. Connettiti al nodo head del cluster. Per istruzioni su come accedere a un nodo, consulta [Accesso ai nodi SageMaker HyperPod del cluster](sagemaker-hyperpod-run-jobs-slurm-access-nodes.md).

1. Utilizza il comando seguente per verificare che il file di configurazione e servizio di Prometheus creato dallo script del ciclo di vita `install_prometheus.sh` sia in esecuzione sul nodo controller. L’output dovrebbe mostrare lo stato Attivo **active (running)**.

   ```
   $ sudo systemctl status prometheus
   • prometheus service - Prometheus Exporter
   Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; preset:disabled)
   Active: active (running) since DAY YYYY-MM-DD HH:MM:SS UTC; Ss ago
   Main PID: 12345 (prometheus)
   Tasks: 7 (limit: 9281)
   Memory: 35M
   CPU: 234ms
   CGroup: /system.slice/prometheus.service
           -12345 /usr/bin/prometheus--config.file=/etc/prometheus/prometheus.yml
   ```

1. Convalida il file di configurazione di Prometheus come segue. L’output deve essere simile al seguente, con tre strumenti di esportazione configurati con gli indirizzi IP dei nodi di calcolo corretti.

   ```
   $ cat /etc/prometheus/prometheus.yml
   global:
     scrape_interval: 15s
     evaluation_interval: 15s
     scrape_timeout: 15s
   
   scrape_configs:
     - job_name: 'slurm_exporter'
       static_configs:
         - targets:
             - 'localhost:8080'
     - job_name: 'dcgm_exporter'
       static_configs:
         - targets:
             - '<ComputeNodeIP>:9400'
             - '<ComputeNodeIP>:9400'
     - job_name: 'efa_node_exporter'
       static_configs:
         - targets:
             - '<ComputeNodeIP>:9100'
             - '<ComputeNodeIP>:9100'
   
   remote_write:
     - url: <AMPReoteWriteURL>
       queue_config:
         max_samples_per_send: 1000
         max_shards: 200
         capacity: 2500
       sigv4:
         region: <Region>
   ```

1. Per verificare se Prometheus sta esportando correttamente le metriche Slurm, DCGM ed EFA, esegui questo comando `curl` per Prometheus sulla porta `:9090` sul nodo head.

   ```
   $ curl -s http://localhost:9090/metrics | grep -E 'slurm|dcgm|efa'
   ```

   Con le metriche esportate nello spazio di lavoro Servizio gestito da Amazon per Prometheus tramite la configurazione della scrittura remota di Prometheus dal nodo controller, puoi passare all’argomento successivo per configurare le dashboard di Grafana gestito da Amazon per visualizzare le metriche.

# Configurazione di uno spazio di lavoro Grafana gestito da Amazon
<a name="sagemaker-hyperpod-cluster-observability-slurm-managed-grafana-ws"></a>

Crea un nuovo spazio di lavoro Grafana gestito da Amazon o aggiornane uno esistente con Servizio gestito da Amazon per Prometheus come origine dati.

**Topics**
+ [Creazione di uno spazio di lavoro Grafana e impostazione del Servizio gestito da Amazon per Prometheus come origine dati](#sagemaker-hyperpod-cluster-observability-slurm-managed-grafana-ws-create)
+ [Apertura dello spazio di lavoro Grafana e completamento della configurazione dell’origine dati](#sagemaker-hyperpod-cluster-observability-slurm-managed-grafana-ws-connect-data-source)
+ [Importazione di dashboard Grafana open source](#sagemaker-hyperpod-cluster-observability-slurm-managed-grafana-ws-import-dashboards)

## Creazione di uno spazio di lavoro Grafana e impostazione del Servizio gestito da Amazon per Prometheus come origine dati
<a name="sagemaker-hyperpod-cluster-observability-slurm-managed-grafana-ws-create"></a>

Per visualizzare le metriche di Servizio gestito da Amazon per Prometheus, crea uno spazio di lavoro Grafana gestito da Amazon e configuralo per utilizzare il Servizio gestito da Amazon per Prometheus come origine dati.

1. Per creare uno spazio di lavoro Grafana, segui le istruzioni in [Creating a workspace](https://docs.aws.amazon.com/grafana/latest/userguide/AMG-create-workspace.html#creating-workspace) in *Amazon Managed Service for Prometheus User Guide*.

   1. Nella Fase 13, seleziona Servizio gestito da Amazon per Prometheus come origine dati.

   1. Nella Fase 17, puoi aggiungere l’utente amministratore e anche altri utenti nel tuo Centro identità IAM.

Per ulteriori informazioni, consulta le risorse seguenti.
+ [Set up Amazon Managed Grafana for use with Amazon Managed Service for Prometheus](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-amg.html) in *Amazon Managed Service for Prometheus User Guide*
+ [Usa la configurazione dell'origine AWS dati per aggiungere Amazon Managed Service for Prometheus come origine dati](https://docs.aws.amazon.com/grafana/latest/userguide/AMP-adding-AWS-config.html) *nella Amazon Managed Grafana User Guide*

## Apertura dello spazio di lavoro Grafana e completamento della configurazione dell’origine dati
<a name="sagemaker-hyperpod-cluster-observability-slurm-managed-grafana-ws-connect-data-source"></a>

Dopo aver creato o aggiornato correttamente uno spazio di lavoro Grafana gestito da Amazon, apri lo spazio di lavoro selezionando il relativo URL. Questo richiede di inserire un nome utente e la password dell’utente che hai configurato nel Centro identità IAM. Devi accedere con l’utente amministratore per completare la configurazione dello spazio di lavoro.

1. Nella **home page** dello spazio di lavoro, scegli **App**, **Origini dati AWS ** e **Origini dati**.

1. Nella pagina **Origini dati**, scegli la scheda **Origini dati**.

1. In **Servizio**, scegli Servizio gestito da Amazon per Prometheus.

1. Nella sezione **Sfoglia e fornisci fonti di dati**, scegli la AWS regione in cui hai effettuato il provisioning di uno spazio di lavoro Amazon Managed Service for Prometheus.

1. Dall’elenco delle origini dati nella Regione selezionata, scegli quella per Servizio gestito da Amazon per Prometheus. Assicurati di controllare l'ID della risorsa e l'alias della risorsa dell'area di lavoro Amazon Managed Service for Prometheus che hai configurato per lo stack di osservabilità. HyperPod 

## Importazione di dashboard Grafana open source
<a name="sagemaker-hyperpod-cluster-observability-slurm-managed-grafana-ws-import-dashboards"></a>

Dopo aver configurato correttamente il tuo spazio di lavoro Grafana gestito da Amazon con Servizio gestito da Amazon per Prometheus come origine dati, inizi a raccogliere metriche per Prometheus, quindi dovresti vedere le varie dashboard che mostrano grafici, informazioni e altro ancora. Il software open source Grafana offre diverse dashboard che puoi importare in Grafana gestito da Amazon.

**Per importare dashboard Grafana open source in Grafana gestito da Amazon**

1. Nella **home** page del tuo spazio di lavoro Grafana gestito da Amazon, scegli **Dashboard**.

1. Scegli il pulsante del menu a discesa con il testo dell’interfaccia utente **Nuovo** e seleziona **Importa**.

1. Incolla l’URL nella [dashboard di Slurm](https://grafana.com/grafana/dashboards/4323-slurm-dashboard/).

   ```
   https://grafana.com/grafana/dashboards/4323-slurm-dashboard/
   ```

1. Seleziona **Carica**.

1. Ripeti le fasi precedenti per importare le dashboard seguenti.

   1. [Dashboard completa per l’esportazione di nodi](https://grafana.com/grafana/dashboards/1860-node-exporter-full/)

      ```
      https://grafana.com/grafana/dashboards/1860-node-exporter-full/
      ```

   1. [Dashboard di esportazione NVIDIA DCGM](https://grafana.com/grafana/dashboards/12239-nvidia-dcgm-exporter-dashboard/)

      ```
      https://grafana.com/grafana/dashboards/12239-nvidia-dcgm-exporter-dashboard/
      ```

   1. [Dashboard delle metriche EFA](https://grafana.com/grafana/dashboards/20579-efa-metrics-dev/)

      ```
      https://grafana.com/grafana/dashboards/20579-efa-metrics-dev/
      ```

   1. [FSx per Lustre Metrics Dashboard](https://grafana.com/grafana/dashboards/20906-fsx-lustre/)

      ```
      https://grafana.com/grafana/dashboards/20906-fsx-lustre/
      ```

# Riferimento delle metriche esportate
<a name="sagemaker-hyperpod-cluster-observability-slurm-exported-metrics-reference"></a>

Le seguenti sezioni presentano elenchi completi di metriche esportate da SageMaker HyperPod Amazon Managed Service for Prometheus dopo la corretta configurazione dello stack per l'osservabilità. CloudFormation SageMaker HyperPod Puoi iniziare a monitorare le metriche visualizzate nelle dashboard di Grafana gestito da Amazon.

## Dashboard di esportazione Slurm
<a name="sagemaker-hyperpod-cluster-observability-slurm-exported-metrics-reference-slurm-exporter"></a>

Fornisce informazioni visualizzate sui cluster Slurm su. SageMaker HyperPod

**Tipi di metriche**
+ **Panoramica del cluster:** visualizzazione del numero totale di nodi, processi e relativi stati.
+ **Metriche dei processi:** visualizzazione del numero e dello stato dei processi nel tempo.
+ **Metriche dei nodi:** visualizzazione degli stati, dell’allocazione e delle risorse disponibili dei nodi.
+ **Metriche delle partizioni:** monitoraggio di metriche specifiche della partizione come l’utilizzo di CPU, memoria e GPU.
+ **Efficienza dei processi:** calcolo dell’efficienza dei processi in base alle risorse utilizzate.

**Elenco delle metriche**


| Nome parametro | Description | 
| --- | --- | 
| slurm\$1job\$1count | Numero totale di processi nel cluster Slurm | 
| slurm\$1job\$1state\$1count | Numero di processi in ogni stato (ad esempio, in esecuzione, in sospeso, completati) | 
| slurm\$1node\$1count  | Numero totale di nodi nel cluster Slurm | 
| slurm\$1node\$1state\$1count  | Numero di nodi in ogni stato (ad esempio, inattivo, allocato, misto) | 
| slurm\$1partition\$1node\$1count  | Numero di nodi in ogni partizione | 
| slurm\$1partition\$1job\$1count  | Numero di processi in ogni partizione | 
| slurm\$1partition\$1alloc\$1cpus  | Numero totale di elementi allocati in ogni partizione CPUs  | 
| slurm\$1partition\$1free\$1cpus  | Numero totale di elementi disponibili CPUs in ogni partizione | 
| slurm\$1partition\$1alloc\$1memory  | Memoria totale allocata in ogni partizione | 
| slurm\$1partition\$1free\$1memory  | Memoria totale disponibile in ogni partizione | 
| slurm\$1partition\$1alloc\$1gpus  | Totale allocato GPUs in ogni partizione | 
| slurm\$1partition\$1free\$1gpus  | Totale disponibile GPUs in ogni partizione | 

## Dashboard di esportazione di nodi
<a name="sagemaker-hyperpod-cluster-observability-slurm-exported-metrics-reference-node-exporter"></a>

Fornisce informazioni visualizzate sulle metriche di sistema raccolte dall'esportatore di nodi Prometheus dai [nodi del cluster](https://github.com/prometheus/node_exporter). HyperPod 

**Tipi di metriche**
+ **Panoramica del sistema:** visualizzazione delle medie di carico della CPU e dell’utilizzo della memoria.
+ **Metriche della memoria:** visualizzazione dell’utilizzo della memoria, tra cui memoria totale, memoria libera e spazio di swap.
+ **Utilizzo del disco:** monitoraggio dell’utilizzo e della disponibilità dello spazio su disco.
+ **Traffico di rete:** visualizzazione dei byte di rete ricevuti e trasmessi nel tempo.
+ **Metriche del file system:** analisi dell’utilizzo e della disponibilità del file system.
+ ** I/O Metriche del disco:** visualizzazione dell'attività di lettura e scrittura su disco.

**Elenco delle metriche**

[Per un elenco completo delle metriche esportate, consultate i repository [Node](https://github.com/prometheus/node_exporter?tab=readme-ov-file#enabled-by-default) exporter e procfs.](https://github.com/prometheus/procfs?tab=readme-ov-file) GitHub La tabella seguente mostra un sottoinsieme di metriche che fornisce informazioni approfondite sull’utilizzo delle risorse di sistema, come il carico della CPU, l’utilizzo della memoria, lo spazio su disco e l’attività di rete.


| Nome parametro | Description | 
| --- | --- | 
|  node\$1load1  | Carico medio ogni minuto | 
|  node\$1load5  | Carico medio ogni 5 minuti | 
|  node\$1load15  | Carico medio ogni 15 minuti | 
|  node\$1memory\$1MemTotal  | Memoria totale di sistema | 
|  node\$1memory\$1MemFree  | Memoria di sistema libera | 
|  node\$1memory\$1MemAvailable  | Memoria disponibile per l’allocazione dei processi | 
|  node\$1memory\$1Buffers  | Memoria utilizzata dal kernel per il buffering | 
|  node\$1memory\$1Cached  | Memoria utilizzata dal kernel per il caching dei dati del file system | 
|  node\$1memory\$1SwapTotal  | Spazio di swap totale disponibile | 
|  node\$1memory\$1SwapFree  | Spazio di swap libero | 
|  node\$1memory\$1SwapCached  | Memoria precedentemente sottoposta a swap, che viene reinserita ma resta in modalità swap | 
|  node\$1filesystem\$1avail\$1bytes  | Spazio disponibile su disco in byte | 
|  node\$1filesystem\$1size\$1bytes  | Spazio totale su disco in byte | 
|  node\$1filesystem\$1free\$1bytes  | Spazio libero su disco in byte | 
|  node\$1network\$1receive\$1bytes  | Byte di rete ricevuti | 
|  node\$1network\$1transmit\$1bytes  | Byte di rete trasmessi | 
|  node\$1disk\$1read\$1bytes  | Byte del disco letti | 
|  node\$1disk\$1written\$1bytes  | Byte del disco scritti | 

## Dashboard di esportazione NVIDIA DCGM
<a name="sagemaker-hyperpod-cluster-observability-slurm-exported-metrics-reference-nvidia-dcgm-exporter"></a>

Fornisce informazioni visive sulle metriche delle GPU NVIDIA raccolte dallo [strumento di esportazione NVIDIA DCGM](https://github.com/NVIDIA/dcgm-exporter).

**Tipi di metriche**
+ **Panoramica della GPU:** visualizzazione dell’utilizzo della GPU, delle temperature, del consumo energetico e della memoria. 
+ **Metriche di temperatura:** visualizzazione delle temperature della GPU nel tempo. 
+ **Consumo energetico:** monitoraggio dell’assorbimento energetico della GPU e delle tendenze del consumo energetico. 
+ **Utilizzo della memoria:** analisi dell’utilizzo della memoria della GPU, che include la memoria utilizzata, quella libera e quella totale. 
+ **Velocità della ventola:** visualizzazione delle velocità e delle variazioni delle ventole della GPU. 
+ **Errori ECC:** tracciamento degli errori ECC della memoria GPU e degli errori in sospeso.

**Elenco delle metriche**

La tabella seguente mostra un elenco di metriche che fornisce informazioni approfondite sull’integrità e sulle prestazioni della GPU NVIDIA, tra cui frequenze di clock, temperature, consumo energetico, utilizzo della memoria, velocità delle ventole e metriche di errore.


| Nome parametro | Description | 
| --- | --- | 
|  DCGM\$1FI\$1DEV\$1SM\$1CLOCK  | Frequenza di clock SM (in) MHz | 
|  DCGM\$1FI\$1DEV\$1MEM\$1CLOCK  | Frequenza di clock della memoria (in MHz) | 
|  DCGM\$1FI\$1DEV\$1MEMORY\$1TEMP  | Temperatura della memoria (in °C) | 
|  DCGM\$1FI\$1DEV\$1GPU\$1TEMP  | Temperatura della GPU (in °C) | 
|  DCGM\$1FI\$1DEV\$1POWER\$1USAGE  | Potenza assorbita (in W) | 
|  DCGM\$1FI\$1DEV\$1TOTAL\$1ENERGY\$1CONSUMPTION  | Consumo energetico totale dall’avvio (in mJ) | 
|  DCGM\$1FI\$1DEV\$1PCIE\$1REPLAY\$1COUNTER  | Numero totale di PCIe tentativi | 
|  DCGM\$1FI\$1DEV\$1MEM\$1COPY\$1UTIL  | Utilizzo della memoria (in %) | 
|  DCGM\$1FI\$1DEV\$1ENC\$1UTIL  | Utilizzo dell’encoder (in %) | 
|  DCGM\$1FI\$1DEV\$1DEC\$1UTIL  | Utilizzo del decoder (in %) | 
|  DCGM\$1FI\$1DEV\$1XID\$1ERRORS  | Valore dell’ultimo errore XID rilevato | 
|  DCGM\$1FI\$1DEV\$1FB\$1FREE  | Memoria libera del frame buffer (in MiB) | 
|  DCGM\$1FI\$1DEV\$1FB\$1USED  | Memoria utilizzata del frame buffer (in MiB) | 
|  DCGM\$1FI\$1DEV\$1NVLINK\$1BANDWIDTH\$1TOTAL  | Numero totale di contatori della NVLink larghezza di banda per tutte le corsie | 
|  DCGM\$1FI\$1DEV\$1VGPU\$1LICENSE\$1STATUS  | Stato della licenza vGPU | 
|  DCGM\$1FI\$1DEV\$1UNCORRECTABLE\$1REMAPPED\$1ROWS  | Numero di righe rimappate per errori non correggibili | 
|  DCGM\$1FI\$1DEV\$1CORRECTABLE\$1REMAPPED\$1ROWS  | Numero di righe rimappate per errori correggibili | 
|  DCGM\$1FI\$1DEV\$1ROW\$1REMAP\$1FAILURE  | Esito negativo della rimappatura delle righe | 

## Dashboard delle metriche EFA
<a name="sagemaker-hyperpod-cluster-observability-slurm-exported-metrics-reference-efa-exporter"></a>

Fornisce informazioni visive sulle metriche raccolte tramite lo [strumento di esportazione di nodi EFA](https://github.com/aws-samples/awsome-distributed-training/blob/main/4.validation_and_observability/3.efa-node-exporter/README.md) con [Amazon Elastic Fabric Adapter (EFA)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) installato nelle istanze P.

**Tipi di metriche**
+ **Metriche di errore EFA:** visualizzazione di errori quali quelli di allocazione, dei comandi e della mappa di memoria.
+ **Traffico di rete EFA:** monitoraggio di byte, pacchetti e richieste di processi ricevuti e trasmessi.
+ **Prestazioni RDMA EFA:** analisi delle operazioni di lettura e scrittura RDMA, inclusi i byte trasferiti e i tassi di errore.
+ **Durata delle porte EFA:** visualizzazione della durata delle porte EFA nel tempo.
+ **Pacchetti keep-alive EFA:** tracciamento del numero di pacchetti keep-alive ricevuti.

**Elenco delle metriche**

La tabella seguente mostra un elenco di metriche che fornisce informazioni approfondite su vari aspetti del funzionamento di EFA, tra cui errori, comandi completati, traffico di rete e utilizzo delle risorse.


| Nome parametro | Description | 
| --- | --- | 
|  node\$1amazonefa\$1info  | Dati non numerici provenienti da/sys/class/infiniband/, il valore è sempre 1. | 
|  node\$1amazonefa\$1lifespan  | Durata della porta | 
|  node\$1amazonefa\$1rdma\$1read\$1bytes  | Numero di byte letti con RDMA | 
|  node\$1amazonefa\$1rdma\$1read\$1resp\$1bytes  | Numero di byte di risposta letti con RDMA | 
|  node\$1amazonefa\$1rdma\$1read\$1wr\$1err  | Numero di errori di scrittura letti con RDMA | 
|  node\$1amazonefa\$1rdma\$1read\$1wrs  | Numero di scritture lette con RDMA | 
|  node\$1amazonefa\$1rdma\$1write\$1bytes  | Numero di byte scritti con RDMA | 
|  node\$1amazonefa\$1rdma\$1write\$1recv\$1bytes  | Numero di byte scritti e ricevuti con RDMA | 
|  node\$1amazonefa\$1rdma\$1write\$1wr\$1err  | Numero di byte scritti con errore RDMA | 
|  node\$1amazonefa\$1rdma\$1write\$1wrs  | Numero di byte di scritture scritti con RDMA | 
|  node\$1amazonefa\$1recv\$1bytes  | Numero di byte ricevuti | 
|  node\$1amazonefa\$1recv\$1wrs  | Numero di byte di scritture ricevuti | 
|  node\$1amazonefa\$1rx\$1bytes  | Numero di byte ricevuti | 
|  node\$1amazonefa\$1rx\$1drops  | Numero di pacchetti annullati | 
|  node\$1amazonefa\$1rx\$1pkts  | Numero di pacchetti ricevuti | 
|  node\$1amazonefa\$1send\$1bytes  | Numero di byte inviati | 
|  node\$1amazonefa\$1send\$1wrs  | Numero di scritture inviate | 
|  node\$1amazonefa\$1tx\$1bytes  | Numero di byte trasmessi | 
|  node\$1amazonefa\$1tx\$1pkts  | Numero di pacchetti trasmessi | 

## FSx per la dashboard delle metriche di Lustre
<a name="sagemaker-hyperpod-cluster-observability-slurm-exported-metrics-reference-fsx-exporter"></a>

[Fornisce informazioni visualizzate sulle [metriche del file system Amazon FSx for Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/monitoring-cloudwatch.html) raccolte da Amazon. CloudWatch](https://docs.aws.amazon.com/fsx/latest/LustreGuide/monitoring-cloudwatch.html)

**Nota**  
La dashboard Grafana FSx for Lustre utilizza Amazon CloudWatch come fonte di dati, che si differenzia dalle altre dashboard configurate per utilizzare Amazon Managed Service for Prometheus. Per garantire un monitoraggio e una visualizzazione accurati delle metriche relative al file system FSx for Lustre, configura la dashboard FSx for Lustre per utilizzare Amazon CloudWatch come fonte di dati, specificando lo stesso Regione AWS luogo in cui viene distribuito il file system FSx for Lustre.

**Tipi di metriche**
+ **DataReadBytes:** Il numero di byte per le operazioni di lettura del file system.
+ **DataWriteBytes:** il numero di byte per le operazioni di scrittura del file system.
+ **DataReadOperations:** Il numero di operazioni di lettura.
+ **DataWriteOperations:** Il numero di operazioni di scrittura.
+ **MetadataOperations:** Il numero di operazioni sui metadati.
+ **FreeDataStorageCapacity:** La quantità di capacità di archiviazione disponibile.

# Metriche di Amazon SageMaker HyperPod Slurm
<a name="smcluster-slurm-metrics"></a>

Amazon SageMaker HyperPod fornisce una serie di CloudWatch parametri Amazon che puoi utilizzare per monitorare lo stato e le prestazioni dei tuoi HyperPod cluster. Queste metriche vengono raccolte dal gestore del carico di lavoro Slurm in esecuzione sui tuoi HyperPod cluster e sono disponibili nel namespace. `/aws/sagemaker/Clusters` CloudWatch 

## Metriche a livello di cluster
<a name="smcluster-slurm-metrics-cluster"></a>

Le seguenti metriche a livello di cluster sono disponibili per. HyperPod Queste metriche utilizzano la `ClusterId` dimensione per identificare il cluster specifico. HyperPod 


| CloudWatch nome della metrica | Note | Nome della metrica di Amazon ECS Container Insights | 
| --- | --- | --- | 
| cluster\$1node\$1count | Numero totale di nodi nel cluster | cluster\$1node\$1count | 
| cluster\$1idle\$1node\$1count | Numero di nodi inattivi nel cluster | N/D | 
| cluster\$1failed\$1node\$1count | Numero di nodi non riusciti nel cluster | cluster\$1failed\$1node\$1count | 
| cluster\$1cpu\$1count | Numero totale di core CPU nel cluster | node\$1cpu\$1limit | 
| cluster\$1idle\$1cpu\$1count | Numero di core CPU inattivi nel cluster | N/D | 
| cluster\$1gpu\$1count | Totale GPUs nel cluster | node\$1gpu\$1limit | 
| cluster\$1idle\$1gpu\$1count | Numero di inattività GPUs nel cluster | N/D | 
| cluster\$1running\$1task\$1count | Numero di processi Slurm in esecuzione nel cluster | N/D | 
| cluster\$1pending\$1task\$1count | Numero di processi Slurm in sospeso nel cluster | N/D | 
| cluster\$1preempted\$1task\$1count | Numero di processi Slurm prerilasciati nel cluster | N/D | 
| cluster\$1avg\$1task\$1wait\$1time | Tempo di attesa medio per i processi Slurm nel cluster | N/D | 
| cluster\$1max\$1task\$1wait\$1time | Tempo di attesa massimo per i processi Slurm nel cluster | N/D | 

## Metriche a livello di istanza
<a name="smcluster-slurm-metrics-instance"></a>

Le seguenti metriche a livello di istanza sono disponibili per. HyperPod Queste metriche utilizzano la `ClusterId` dimensione anche per identificare il cluster specifico. HyperPod 


| CloudWatch nome della metrica | Note | Nome della metrica di Amazon ECS Container Insights | 
| --- | --- | --- | 
| node\$1gpu\$1utilization | Utilizzo medio della GPU in tutte le istanze | node\$1gpu\$1utilization | 
| node\$1gpu\$1memory\$1utilization | Utilizzo medio della memoria GPU in tutte le istanze | node\$1gpu\$1memory\$1utilization | 
| node\$1cpu\$1utilization | Utilizzo medio della CPU in tutte le istanze | node\$1cpu\$1utilization | 
| node\$1memory\$1utilization | Utilizzo medio della memoria in tutte le istanze | node\$1memory\$1utilization | 

# SageMaker HyperPod resilienza del cluster
<a name="sagemaker-hyperpod-resiliency-slurm"></a>

SageMaker HyperPod tramite l'orchestrazione Slurm fornisce le seguenti funzionalità di resilienza del cluster.

**Topics**
+ [Agente di monitoraggio della salute](sagemaker-hyperpod-resiliency-slurm-cluster-health-check.md)
+ [Ripristino automatico dei nodi e ripristino automatico](sagemaker-hyperpod-resiliency-slurm-auto-resume.md)
+ [Sostituisci o riavvia manualmente un nodo usando Slurm](sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance.md)

# Agente di monitoraggio della salute
<a name="sagemaker-hyperpod-resiliency-slurm-cluster-health-check"></a>

Questa sezione descrive l'insieme di controlli di integrità SageMaker HyperPod utilizzati per monitorare regolarmente lo stato delle istanze del cluster per individuare problemi relativi a dispositivi come acceleratori (core GPU e Trainium) e rete (EFA). SageMaker HyperPod Health-Monitoring Agent (HMA) monitora continuamente lo stato di salute di ogni istanza basata su GPU o Trainium. Quando rileva un errore dell’istanza o della GPU, l’agente contrassegna l’istanza come non integra.

SageMaker HyperPod HMA esegue gli stessi controlli di integrità per gli orchestratori EKS e Slurm. Per ulteriori informazioni su HMA, vedere. [Sistema di monitoraggio della salute](sagemaker-hyperpod-eks-resiliency-health-monitoring-agent.md)

# Ripristino automatico dei nodi e ripristino automatico
<a name="sagemaker-hyperpod-resiliency-slurm-auto-resume"></a>

**Nota**  
A partire dall'11 settembre 2025, HyperPod con Slurm orchestration ora supporta gli agenti di monitoraggio dello stato di salute. Esegui [UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)e aggiorna l'AMI alla versione più recente per utilizzare questa funzionalità.

Questa sezione parla delle due funzionalità SageMaker HyperPod di resilienza complementari di Amazon: il ripristino automatico dei nodi che sostituisce l'infrastruttura difettosa senza l'intervento manuale e la funzionalità di ripristino automatico che riavvia i lavori di formazione dall'ultimo checkpoint dopo i guasti hardware.

## Come funziona il ripristino automatico dei nodi
<a name="sagemaker-hyperpod-resiliency-slurm-auto-resume-how"></a>

Durante la creazione o l’aggiornamento del cluster, gli utenti amministratori del cluster possono selezionare l’opzione di ripristino del nodo (istanza) scegliendo tra `Automatic` (consigliato) e `None` a livello di cluster. Se impostato su`Automatic`, SageMaker HyperPod riavvia o sostituisce automaticamente i nodi difettosi. 

**Importante**  
Consigliamo di impostare l’opzione `Automatic`. Per impostazione predefinita, i cluster sono configurati con il ripristino automatico dei nodi.

Il ripristino automatico dei nodi viene eseguito quando vengono rilevati problemi dall’agente di monitoraggio dell’integrità, dai controlli dell’integrità di base e dai controlli dell’integrità approfonditi. Se è impostato `None`, l’agente di monitoraggio dell’integrità etichetta le istanze in cui viene rilevato un guasto, ma non avvia automaticamente alcuna azione di correzione o ripristino sui nodi interessati. Questa opzione non è consigliata.

## Esecuzione di un processo di formazione con la funzionalità di SageMaker HyperPod ripristino automatico di Amazon
<a name="sagemaker-hyperpod-resiliency-slurm-auto-resume-job"></a>

Questa sezione descrive come eseguire un processo di formazione con la funzionalità di SageMaker HyperPod ripristino automatico, che fornisce un'infrastruttura di resilienza zero-touch per ripristinare automaticamente un processo di formazione dall'ultimo checkpoint salvato in caso di guasto hardware.

Con la funzionalità di ripristino automatico, se un processo fallisce a causa di un guasto hardware o di problemi transitori tra un training e l'altro, la ripresa SageMaker HyperPod automatica avvia il flusso di lavoro di sostituzione dei nodi e riavvia il lavoro dopo la sostituzione dei nodi difettosi. I seguenti controlli hardware vengono eseguiti ogni volta che un processo fallisce durante l'utilizzo della ripresa automatica:


| Categoria | Nome dell’utilità | Compatibilità del tipo di istanza | Description | 
| --- | --- | --- | --- | 
| Accelerator | NVIDIA SMI | GPU | [L'utilità nvidia-smi](https://developer.nvidia.com/nvidia-system-management-interface) è una nota CLI per la gestione e il monitoraggio. GPUs Lo strumento integrato di controllo dell’integrità analizza l’output da nvidia-smi per determinare l’integrità dell’istanza. | 
| Accelerator | Neuron Sysfs | Trainium | Per le istanze basate su Trainium, l’integrità dei dispositivi Neuron viene determinato dalla lettura dei contatori di [Neuron Sysfs](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron-sysfs-user-guide.html) propagati direttamente dal driver Neuron. | 
| Rete | EFA | GPU e Trainium | Per facilitare la diagnostica dei dispositivi Elastic Fabric Adaptor (EFA), lo strumento di controllo dell’integrità di EFA esegue una serie di test di connettività utilizzando tutte le schede EFA disponibili all’interno dell’istanza. | 

**Nota**  
Quando le [Generic RESources (GRES)](https://slurm.schedmd.com/gres.html) sono collegate a un nodo Slurm, Slurm in genere non consente modifiche all’allocazione dei nodi, ad esempio la sostituzione dei nodi, e quindi non consente di riprendere un processo non riuscito. A meno che non sia esplicitamente vietato, la funzionalità di ripristino HyperPod automatico rimette automaticamente in coda qualsiasi lavoro difettoso associato ai nodi abilitati per GRES. Questa procedura prevede l’arresto del processo, il suo reinserimento nella coda dei processi e il suo riavvio dall’inizio.

**Utilizzo della funzionalità di SageMaker HyperPod ripristino automatico con Slurm**

Quando si utilizza il SageMaker HyperPod ripristino automatico con Slurm, è necessario eseguire il lavoro all'interno di un'allocazione esclusiva acquisita utilizzando o. `salloc` `sbatch` In ogni caso, devi modificare lo script del punto di ingresso per assicurarti che tutte le fasi della configurazione vengano eseguite in un unico comando `srun` quando riprendi il processo. Utilizzando lo script del punto di ingresso, è importante configurare l’ambiente sul nodo sostituito in modo che sia coerente con l’ambiente in cui era in esecuzione la fase del processo prima che venisse interrotta. La procedura seguente mostra come preparare uno script entrypoint per mantenere l'ambiente coerente ed eseguirlo come un singolo comando. `srun`

**Suggerimento**  
Se utilizzi `sbatch`, puoi semplificare lo script batch creando uno script separato per la configurazione dell’ambiente e l’uso di un singolo comando `srun`.

1. Crea uno script utilizzando l’esempio di codice seguente e salvalo come `train_auto_resume.sh`. Questo script implementa le configurazioni dell’ambiente di addestramento presupponendo che non sia stata precedentemente effettuata alcuna configurazione manuale sul nodo sostituito. Questo garantisce che l’ambiente sia indipendente dal nodo in modo che, quando un nodo viene sostituito, lo stesso ambiente venga allocato sul nodo prima di riprendere il processo.
**Nota**  
L’esempio di codice seguente mostra come rilevare l’elenco dei nodi Slurm associati al processo. Non utilizzare la variabile di `$SLURM_JOB_NODELIST` ambiente fornita da Slurm, poiché il suo valore potrebbe essere obsoleto dopo la ripresa SageMaker HyperPod automatica del lavoro. L’esempio di codice seguente mostra come definire una nuova variabile `NODE_LIST` per sostituire `SLURM_JOB_NODELIST` e quindi impostare le variabili `MASTER_NODE` e `MASTER_ADDR` al di fuori della variabile `NODE_LIST`.

   ```
   #!/bin/bash
   
   # Filename: train_auto_resume.sh
   # Sample containerized script to launch a training job with a single srun which can be auto-resumed.
   
   # Place your training environment setup here. 
   # Example: Install conda, docker, activate virtual env, etc.
   
   # Get the list of nodes for a given job
   NODE_LIST=$(scontrol show jobid=$SLURM_JOBID | \ # Show details of the SLURM job
               awk -F= '/NodeList=/{print $2}' | \  # Extract NodeList field
               grep -v Exc)                         # Exclude nodes marked as excluded
   
   # Determine the master node from the node list
   MASTER_NODE=$(scontrol show hostname $NODE_LIST | \ # Convert node list to hostnames
                 head -n 1)                            # Select the first hostname as master node
   
   # Get the master node address
   MASTER_ADDR=$(scontrol show node=$MASTER_NODE | \ # Show node information
                 awk -F= '/NodeAddr=/{print $2}' | \ # Extract NodeAddr
                 awk '{print $1}')                   # Print the first part of NodeAddr
   
   
   # Torchrun command to launch the training job
   torchrun_cmd="torchrun --nnodes=$SLURM_NNODES \
                          --nproc_per_node=1 \
                          --node_rank=$SLURM_NODE \
                          --master-addr=$MASTER_ADDR \
                          --master_port=1234 \
                          <your_training_script.py>"
   
   # Execute the torchrun command in the 'pytorch' Conda environment, 
   # streaming output live
   /opt/conda/bin/conda run --live-stream -n pytorch $torchrun_cmd
   ```
**Suggerimento**  
Puoi utilizzare lo script precedente per aggiungere altri comandi per l’installazione di eventuali dipendenze aggiuntive per il processo. Tuttavia, consigliamo di mantenere gli script di installazione delle dipendenze nel [set di script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.md) utilizzati durante la creazione del cluster. Se utilizzi un ambiente virtuale ospitato in una directory condivisa, puoi utilizzare questo script anche per attivare l’ambiente virtuale.

1. Avvia il processo con la SageMaker HyperPod ripresa automatica abilitata aggiungendo il flag `--auto-resume=1` per indicare che il `srun` comando deve essere riprovato automaticamente in caso di guasto hardware. 
**Nota**  
Se è stata impostata un’allocazione di risorse con `sbatch` o `salloc`, puoi eseguire più comandi `srun` all’interno dell’allocazione. In caso di errore, la funzionalità di SageMaker HyperPod ripristino automatico funziona solo nella [fase di lavoro](https://slurm.schedmd.com/job_launch.html#step_allocation) corrente del `srun` comando con il flag. `--auto-resume=1` In altre parole, l’attivazione della ripresa automatica in un comando `srun` non si applica agli altri comandi `srun` avviati all’interno di una sessione di allocazione delle risorse.

   Di seguito sono riportati esempi del comando `srun` con `auto-resume` abilitato.

   **Utilizzo di sbatch**

   Poiché la maggior parte della logica per la configurazione dell’ambiente è già presente in `train_auto_resume.sh`, lo script batch dovrebbe essere semplice e simile al codice di esempio seguente. Supponiamo che il seguente script batch venga salvato come `batch.sh`.

   ```
   #!/bin/bash
   #SBATCH --nodes 2
   #SBATCH --exclusive
   srun --auto-resume=1 train_auto_resume.sh
   ```

   Esegui lo script batch utilizzando il comando seguente.

   ```
   sbatch batch.sh
   ```

   **Utilizzo di salloc**

   Inizia acquisendo un’allocazione esclusiva ed esegui il comando `srun` con il flag `--auto-resume` e lo script del punto di ingresso.

   ```
   salloc -N 2 --exclusive
   srun --auto-resume=1 train_auto_resume.sh
   ```

## Come interagiscono il ripristino automatico dei nodi e il ripristino automatico
<a name="sagemaker-hyperpod-resiliency-slurm-auto-resume-node-recovery"></a>

Quando i sistemi di ripristino automatico dei nodi e di ripristino automatico sono attivi, seguono un approccio coordinato alla gestione dei guasti. Se l'HMA rileva un guasto hardware, il nodo viene contrassegnato per il drenaggio indipendentemente dallo stato a livello di processo. Con il ripristino automatico dei nodi abilitato, i nodi vengono sostituiti automaticamente una volta terminati tutti i processi in esecuzione nei nodi. In questo scenario, per i lavori con ripristino automatico abilitato, se nella fase è presente uno stato di uscita diverso da zero, viene attivata la ripresa automatica (i lavori riprendono una volta sostituiti i nodi). I lavori senza il ripristino automatico verranno semplicemente chiusi e richiederanno un nuovo invio manuale da parte degli amministratori o degli utenti.

**Nota**  
Se si utilizza la ripresa automatica, i nodi vengono sempre sostituiti (nessun riavvio) quando vengono rilevati guasti hardware.

# Sostituisci o riavvia manualmente un nodo usando Slurm
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance"></a>

Questa sezione spiega quando è necessario riavviare o sostituire manualmente un nodo, con istruzioni su come eseguire entrambe le operazioni.

## Quando riavviare o sostituire manualmente un nodo
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-when"></a>

La funzionalità di HyperPod ripristino automatico monitora se lo stato dei nodi Slurm diventa o. `fail` `down` Puoi controllare lo stato dei nodi Slurm eseguendo `sinfo`.

Se un nodo rimane bloccato o non risponde e il processo di ripristino automatico non lo ripristina, puoi avviare il ripristino manualmente. La scelta tra il riavvio e la sostituzione di un nodo dipende dalla natura del problema. Prendi in considerazione la possibilità di riavviare il sistema in caso di problemi temporanei o legati al software, come blocchi del sistema, perdite di memoria, problemi relativi ai driver della GPU, aggiornamenti del kernel o blocchi dei processi. Tuttavia, se si verificano problemi persistenti o legati all'hardware come guasti, errori di memoria o di rete GPUs, ripetuti errori nei controlli di integrità o nodi che non rispondono dopo più tentativi di riavvio, la sostituzione dei nodi è la soluzione più appropriata.

## Metodi per riavviare o sostituire manualmente i nodi
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-ways"></a>

SageMaker HyperPod offre due metodi per il ripristino manuale dei nodi. L'approccio preferito consiste nell'utilizzare SageMaker HyperPod Reboot and Replace APIs, che fornisce un processo di ripristino più rapido e trasparente che funziona con tutti gli orchestratori. In alternativa, è possibile utilizzare i comandi Slurm tradizionali come`scontrol update`, sebbene questo metodo legacy richieda l'accesso diretto al nodo controller di Slurm. Entrambi i metodi attivano gli stessi processi di ripristino. SageMaker HyperPod 

## Riavvia manualmente un nodo utilizzando l'API di riavvio
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-reboot-api"></a>

 È possibile utilizzare il **BatchRebootClusterNodes**per riavviare manualmente un nodo difettoso nel cluster. SageMaker HyperPod 

 Ecco un esempio di esecuzione dell'operazione di riavvio su due istanze di un cluster utilizzando: AWS Command Line Interface

```
 aws sagemaker batch-reboot-cluster-nodes \
                --cluster-name arn:aws:sagemaker:ap-northeast-1:123456789:cluster/test-cluster \
                --node-ids i-0123456789abcdef0 i-0fedcba9876543210
```

## Sostituisci manualmente un nodo utilizzando l'API di sostituzione
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-replace-api"></a>

 È possibile utilizzare il **BatchReplaceClusterNodes**per sostituire manualmente un nodo difettoso nel SageMaker HyperPod cluster.

 Ecco un esempio di esecuzione dell'operazione di sostituzione su due istanze di un cluster utilizzando: AWS Command Line Interface

```
 aws sagemaker batch-replace-cluster-nodes \
                --cluster-name arn:aws:sagemaker:ap-northeast-1:123456789:cluster/test-cluster \
                --node-ids i-0123456789abcdef0 i-0fedcba9876543210
```

## Riavviare manualmente un nodo utilizzando Slurm
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-reboot"></a>

Puoi anche usare i comandi scontrol Slurm per attivare il ripristino del nodo. Questi comandi interagiscono direttamente con il piano di controllo Slurm e richiamano gli stessi meccanismi di ripristino sottostanti. SageMaker HyperPod 

Nel comando seguente, sostituite <ip-ipv4>con il nome del nodo Slurm (nome host) dell'istanza difettosa che desiderate riavviare.

```
scontrol update node=<ip-ipv4> state=fail reason="Action:Reboot"
```

Questo contrassegna il nodo come FAIL per il motivo specificato. SageMaker HyperPod lo rileva e riavvia l'istanza. Evita di modificare lo stato del nodo o di riavviare il controller Slurm durante l'operazione.

## Sostituisci manualmente un nodo usando Slurm
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-replace"></a>

È possibile utilizzare il comando scontrol update come segue per sostituire un nodo.

Nel comando seguente, sostituisci `<ip-ipv4>` con il nome del nodo Slurm (nome host) dell'istanza difettosa che desideri sostituire.

```
scontrol update node=<ip-ipv4> state=fail reason="Action:Replace"
```

Dopo aver eseguito questo comando, il nodo entrerà `fail` nello stato, attenderà il completamento dei processi attualmente in esecuzione, verrà sostituito con un'istanza integra e verrà ripristinato con lo stesso nome host. Questo processo richiede tempo e dipende dalle istanze disponibili nella zona di disponibilità e dal tempo necessario per eseguire gli script del ciclo di vita. Durante i processi di aggiornamento e sostituzione, evita nuove modifiche manuali allo stato del nodo o il riavvio del controller Slurm, perché queste operazioni potrebbero comportare errori di sostituzione. Se il nodo non viene ripristinato o non torna allo stato `idle` dopo molto tempo, contatta il [Supporto AWS](https://console.aws.amazon.com/support/).

## Forza la modifica manuale di un nodo
<a name="sagemaker-hyperpod-resiliency-slurm-replace-faulty-instance-force"></a>

Se il nodo difettoso resta sempre bloccato in stato `fail`, l’ultima soluzione che potresti provare è forzare manualmente la modifica dello stato del nodo su `down`. Questa operazione richiede privilegi di amministratore (autorizzazioni sudo).

**avvertimento**  
Procedi con cautela prima di utilizzare il comando seguente, perché impone l’interruzione di tutti i processi che potrebbe comportare la perdita di tutto il lavoro non salvato.

```
scontrol update node=<ip-ipv4> state=down reason="Action:Replace"
```

# Provisioning continuo per operazioni avanzate del cluster con Slurm
<a name="sagemaker-hyperpod-scaling-slurm"></a>

 SageMaker HyperPod I cluster Amazon creati con l'orchestrazione Slurm ora supportano il provisioning continuo, una funzionalità che consente maggiore flessibilità ed efficienza durante l'esecuzione di carichi di lavoro su larga scala. AI/ML Il provisioning continuo consente di iniziare rapidamente l’addestramento, scalare senza problemi, eseguire la manutenzione senza interrompere le operazioni e avere una visibilità granulare sulle operazioni del cluster.

**Nota**  
Il provisioning continuo è disponibile come configurazione opzionale per i nuovi cluster creati con l'orchestrazione Slurm. HyperPod Al momento, i cluster esistenti che utilizzano il modello di scalabilità precedente non possono essere migrati al provisioning continuo.

## Come funziona
<a name="sagemaker-hyperpod-scaling-slurm-how"></a>

Il sistema di provisioning continuo introduce un'architettura dello stato desiderato che sostituisce il modello di scalabilità tradizionale. all-or-nothing Nel modello precedente, se non era possibile effettuare il provisioning completo di un gruppo di istanze, l'intera operazione di creazione o aggiornamento del cluster non funzionava e veniva ripristinata. Con il provisioning continuo, il sistema accetta una capacità parziale e continua a fornire le istanze rimanenti in modo asincrono.

Il sistema di provisioning continuo:
+ **Accetta la richiesta**: registra il numero di istanze di destinazione per ogni gruppo di istanze.
+ **Avvia il provisioning**: inizia a lanciare le istanze per tutti i gruppi di istanze in parallelo.
+ Effettua **innanzitutto il provisioning dei nodi prioritari**: il cluster passa a `InService` dopo che almeno un nodo controller (e un nodo di accesso, se viene specificato un gruppo di istanze di login) è stato eseguito correttamente.
+ Monitora l'**avanzamento**: monitora ogni tentativo di avvio dell'istanza e ne registra lo stato.
+ **Gestisce gli errori**: riprova automaticamente gli avvii non riusciti per i nodi di lavoro in modo asincrono.

Il provisioning continuo è disabilitato per impostazione predefinita. Per utilizzare questa funzionalità, impostala nella richiesta. `NodeProvisioningMode` `Continuous` `CreateCluster`

Con il provisioning continuo abilitato, puoi avviare più operazioni di dimensionamento contemporaneamente senza attendere il completamento delle operazioni precedenti. Ciò consente di scalare contemporaneamente diversi gruppi di istanze nello stesso cluster e di inviare più richieste di dimensionamento allo stesso gruppo di istanze.

## Provisioning basato sulla priorità
<a name="sagemaker-hyperpod-scaling-slurm-priority"></a>

I cluster Slurm richiedono che un nodo controller sia operativo prima che i nodi di lavoro possano registrare e accettare lavori. Il provisioning continuo gestisce questo problema automaticamente tramite il provisioning basato sulle priorità:

1. Il gruppo di istanze del controller viene fornito per primo.

1. Una volta che un nodo controller è integro, i nodi di accesso e i nodi di lavoro iniziano il provisioning in parallelo.

1. Il cluster passa alla fase in `InService` cui un nodo di controller è attivo e un nodo di accesso è attivo (se viene specificato un gruppo di istanze di login). Se non viene specificato alcun gruppo di istanze di login, la transizione del cluster avviene non `InService` appena viene effettuato il provisioning del nodo di controller.

1. I nodi di lavoro che non possono essere immediatamente forniti a causa di vincoli di capacità entrano in un ciclo di tentativi asincrono e vengono aggiunti automaticamente al cluster Slurm non appena diventano disponibili.

## Gestione degli errori del controller
<a name="sagemaker-hyperpod-scaling-slurm-controller-failure"></a>

Durante la creazione del cluster, se il nodo controller non riesce a eseguire il provisioning, il comportamento dipende dal fatto che l'errore sia riprovabile o meno.

**Errori rieseguibili (ad esempio, istanze non integre o errori** temporanei):
+ HyperPod sostituisce continuamente l'istanza e riprova il provisioning fino all'attivazione del controller.
+ I nodi di lavoro e di accesso che sono già stati forniti rimangono disponibili, ma il cluster non effettua la transizione `InService` finché il controller non è integro.

**Errori non ripetibili** (ad esempio, nessuna capacità disponibile per il tipo di istanza del controller o l'errore dello script del ciclo di vita):
+ Il cluster è contrassegnato come. `Failed`
+ Il motivo dell'errore viene notificato all'utente e deve intraprendere azioni correttive, ad esempio scegliere un tipo di istanza diverso, correggere gli script del ciclo di vita o riprovare in un'altra zona di disponibilità.

## Prerequisiti
<a name="sagemaker-hyperpod-scaling-slurm-prerequisites"></a>

Il provisioning continuo richiede che i parametri di provisioning di Slurm (tipi di nodi, nomi delle partizioni) siano forniti tramite il payload dell'API nel campo di ciascun gruppo di istanze. `SlurmConfig` I cluster che si basano sul `provisioning_parameters.json` file legacy in Amazon S3 non sono compatibili con il provisioning continuo.

**Nota**  
Le seguenti funzionalità non sono attualmente supportate con il provisioning continuo sui cluster Slurm: migrazione di cluster esistenti, configurazione a nodi multipli tramite topologia Slurm basata su API e. `SlurmConfigStrategy` Il provisioning `slurm.conf` continuo funziona esclusivamente in modalità di fusione per la gestione.

## Misurazione dell’utilizzo
<a name="sagemaker-hyperpod-scaling-slurm-metering"></a>

HyperPod i cluster con provisioning continuo utilizzano la misurazione a livello di istanza per fornire una fatturazione accurata che rifletta l'utilizzo effettivo delle risorse. Questo approccio di misurazione si differenzia dalla tradizionale fatturazione a livello di cluster in quanto tiene traccia di ogni istanza in modo indipendente.

**Fatturazione a livello di istanza**

Con il provisioning continuo, la fatturazione inizia e si arresta a livello della singola istanza anziché attendere le modifiche dello stato a livello di cluster. Questa funzionalità fornisce i seguenti vantaggi:
+ **Accuratezza di fatturazione**: la fatturazione inizia quando inizia l’esecuzione dello script del ciclo di vita. Se lo script del ciclo di vita fallisce, la fornitura dell'istanza verrà ritentata e all'utente verrà addebitata la durata del runtime dello script del ciclo di vita.
+ **Misurazione indipendente: il** ciclo di vita di fatturazione di ogni istanza viene gestito separatamente, evitando errori di fatturazione a cascata.
+ **Aggiornamenti di fatturazione in tempo reale**: la fatturazione inizia quando un'istanza inizia a eseguire lo script di configurazione del ciclo di vita e si interrompe quando l'istanza entra in uno stato di terminazione.

**Ciclo di vita della fatturazione**

Ogni istanza del HyperPod cluster segue questo ciclo di vita di fatturazione:
+ La **fatturazione ha inizio**: quando l'istanza viene avviata correttamente e inizia a eseguire lo script di configurazione del ciclo di vita.
+ **La fatturazione continua**: per tutta la durata operativa dell'istanza.
+ La **fatturazione si interrompe**: quando l'istanza entra in uno stato di terminazione, indipendentemente dal motivo della chiusura.

**Nota**  
La fatturazione non inizia in caso di errori di avvio delle istanze. Se l’avvio di un’istanza non riesce a causa di una capacità insufficiente o di altri problemi, non verrà addebitato alcun costo per il tentativo non riuscito. La fatturazione viene calcolata a livello di istanza e i costi sono aggregati e riportati nel nome della risorsa Amazon (ARN) del cluster.

## Creazione di un cluster con provisioning continuo abilitato
<a name="sagemaker-hyperpod-scaling-slurm-create"></a>

**Nota**  
Prepara uno script di configurazione del ciclo di vita e caricalo in un bucket Amazon S3 a cui può accedere il tuo ruolo di esecuzione. Per ulteriori informazioni, consulta [SageMaker HyperPod Operazioni del cluster Slurm](sagemaker-hyperpod-operate-slurm.md).

Prepara un file di richiesta `CreateCluster` API in formato JSON. Imposta `NodeProvisioningMode` `Continuous` e fornisci informazioni sulla topologia Slurm nel campo di ogni gruppo di istanze. `SlurmConfig`

```
// create_cluster.json
{
    "ClusterName": "my-training-cluster",
    "NodeProvisioningMode": "Continuous",
    "Orchestrator": {
        "Slurm": {}
    },
    "InstanceGroups": [
        {
            "InstanceGroupName": "controller-group",
            "InstanceType": "ml.m5.xlarge",
            "InstanceCount": 1,
            "LifeCycleConfig": {
                "SourceS3Uri": "s3://amzn-s3-demo-bucket/lifecycle-scripts/src/",
                "OnCreate": "on_create.sh"
            },
            "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster",
            "SlurmConfig": {
                "NodeType": "Controller"
            }
        },
        {
            "InstanceGroupName": "login-group",
            "InstanceType": "ml.m5.xlarge",
            "InstanceCount": 1,
            "LifeCycleConfig": {
                "SourceS3Uri": "s3://amzn-s3-demo-bucket/lifecycle-scripts/src/",
                "OnCreate": "on_create.sh"
            },
            "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster",
            "SlurmConfig": {
                "NodeType": "Login"
            }
        },
        {
            "InstanceGroupName": "worker-gpu-a",
            "InstanceType": "ml.p5.48xlarge",
            "InstanceCount": 16,
            "LifeCycleConfig": {
                "SourceS3Uri": "s3://amzn-s3-demo-bucket/lifecycle-scripts/src/",
                "OnCreate": "on_create.sh"
            },
            "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster",
            "SlurmConfig": {
                "NodeType": "Compute",
                "PartitionNames": ["gpu-training"]
            }
        }
    ],
    "VpcConfig": {
        "SecurityGroupIds": ["sg-12345678"],
        "Subnets": ["subnet-12345678"]
    }
}
```

Esegui il `create-cluster` comando per inviare la richiesta.

```
aws sagemaker create-cluster \
    --cli-input-json file://complete/path/to/create_cluster.json
```

Questo restituisce l'ARN del nuovo cluster.

```
{
    "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/abcde12345"
}
```

## Gestione della configurazione Slurm
<a name="sagemaker-hyperpod-scaling-slurm-config"></a>

Il provisioning continuo funziona esclusivamente in modalità di fusione per la gestione delle partizioni. `slurm.conf` In modalità merge, HyperPod applica le modifiche alla configurazione delle partizioni in modo additivo alle modifiche apportate. `slurm.conf` HyperPod aggiorna solo le sezioni relative alla partizione di `slurm.conf` (come le voci relative al nome della partizione e al nome del nodo); gli altri parametri di configurazione di Slurm non vengono modificati. Ciò significa che:
+ Le modifiche manuali di vengono mantenute. `slurm.conf`
+ Non è previsto il rilevamento automatico delle deviazioni o la risoluzione dei conflitti tra le modifiche apportate e HyperPod lo stato previsto.

Il `SlurmConfigStrategy` parametro (`Managed`,`Merge`,`Overwrite`) non è supportato con il provisioning continuo. Il passaggio di qualsiasi `SlurmConfigStrategy` valore genera un errore API.

# SageMaker HyperPod gestione dei cluster
<a name="sagemaker-hyperpod-cluster-management-slurm"></a>

Negli argomenti seguenti vengono illustrate la registrazione e la gestione dei cluster. SageMaker HyperPod 

## Registrazione degli eventi SageMaker HyperPod
<a name="sagemaker-hyperpod-cluster-management-slurm-logging-hyperpod-events"></a>

Tutti gli eventi e i log di SageMaker HyperPod vengono salvati su Amazon CloudWatch con il nome `/aws/sagemaker/Clusters/[ClusterName]/[ClusterID]` del gruppo di log. Ogni chiamata all’API `CreateCluster` crea un nuovo gruppo di log. L’elenco seguente contiene tutti i flussi di log disponibili raccolti in ogni gruppo di log.


|  |  | 
| --- |--- |
| Nome del gruppo di log | Nome del flusso di log | 
| /aws/sagemaker/Clusters/[ClusterName]/[ClusterID] | LifecycleConfig/[instance-group-name]/[instance-id] | 

## Registrazione a SageMaker HyperPod livello di istanza
<a name="sagemaker-hyperpod-cluster-management-slurm-logging-at-instance-level"></a>

È possibile accedere ai LifecycleScript log pubblicati CloudWatch durante la configurazione dell'istanza del cluster. Ogni istanza all’interno del cluster creato genera un flusso di log separato, distinguibile in base al formato `LifecycleConfig/[instance-group-name]/[instance-id]`. 

Tutti i log in cui vengono scritti `/var/log/provision/provisioning.log` vengono caricati nel flusso precedente CloudWatch . Sample LifecycleScripts at [https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config)reindirizza il loro terreno `stderr` verso `stdout` questa posizione. Se utilizzi script personalizzati, scrivi i log nella `/var/log/provision/provisioning.log` posizione in cui saranno disponibili. CloudWatch

**Marcatori di log degli script del ciclo di vita**

CloudWatch i log per gli script del ciclo di vita includono marcatori specifici che consentono di tenere traccia dell'avanzamento dell'esecuzione e identificare i problemi:


|  |  | 
| --- |--- |
| Marker | Descrizione | 
| START | Indicates the beginning of lifecycle script logs for the instance | 
| [SageMaker] Lifecycle scripts were provided, with S3 uri: [s3://bucket-name/] and entrypoint script: [script-name.sh] | Indicates the S3 location and entrypoint script that will be used | 
| [SageMaker] Downloading lifecycle scripts | Indicates scripts are being downloaded from the specified S3 location | 
| [SageMaker] Lifecycle scripts have been downloaded | Indicates scripts have been successfully downloaded from S3 | 
| [SageMaker] The lifecycle scripts succeeded | Indicates successful completion of all lifecycle scripts | 
| [SageMaker] The lifecycle scripts failed | Indicates failed execution of lifecycle scripts | 

Questi marcatori consentono di identificare rapidamente in quale fase del processo di esecuzione degli script del ciclo di vita si è verificato un problema. Durante la risoluzione dei problemi, esaminate le voci di registro per identificare dove il processo si è interrotto o non è riuscito.

**Messaggi di errore dello script del ciclo di vita**

Se lo script del ciclo di vita esiste ma fallisce durante l'esecuzione, riceverai un messaggio di errore che include il nome del gruppo di log e il nome del flusso di CloudWatch log. Nel caso in cui si verifichino errori dello script del ciclo di vita su più istanze, il messaggio di errore indicherà solo un'istanza fallita, ma il gruppo di log deve contenere flussi per tutte le istanze.

È possibile visualizzare il messaggio di errore eseguendo l'[DescribeCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html)API o visualizzando la pagina dei dettagli del cluster nella console. SageMaker Nella console, è disponibile il pulsante **Visualizza i registri degli script del ciclo** di vita che accede direttamente al flusso di log. CloudWatch Il messaggio di errore ha il seguente formato:

```
Instance [instance-id] failed to provision with the following error: "Lifecycle scripts did not run successfully. To view lifecycle script logs,
visit log group ‘/aws/sagemaker/Clusters/[cluster-name]/[cluster-id]' and log stream ‘LifecycleConfig/[instance-group-name]/[instance-id]’.
If you cannot find corresponding lifecycle script logs in CloudWatch, please make sure you follow one of the options here:
https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-faq-slurm.html#hyperpod-faqs-q1.” Note that multiple instances may be impacted.
```

## Applicazione di tag alle risorse
<a name="sagemaker-hyperpod-cluster-management-slurm-tagging"></a>

AWS Il sistema di etichettatura aiuta a gestire, identificare, organizzare, cercare e filtrare le risorse. SageMaker HyperPod supporta l'etichettatura, in modo da poter gestire i cluster come risorsa. AWS Durante la creazione o la modifica di un cluster esistente, puoi aggiungere o modificare i tag per il cluster. Per ulteriori informazioni generali sul tagging, consulta [Tagging delle risorse AWS](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html).

### Utilizzo dell'interfaccia utente della console SageMaker HyperPod
<a name="sagemaker-hyperpod-cluster-management-slurm-tagging-in-console"></a>

Quando [crei un nuovo cluster](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-create-cluster) o [modifichi un cluster](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-edit-clusters), puoi aggiungere, modificare o rimuovere tag.

### Usando il SageMaker HyperPod APIs
<a name="sagemaker-hyperpod-cluster-management-slurm-tagging-in-api-request"></a>

Quando scrivi un file di richiesta [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)o [UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)API in formato JSON, modifica la `Tags` sezione.

### Utilizzo dei comandi di AWS CLI tagging per l'IA SageMaker
<a name="sagemaker-hyperpod-cluster-management-slurm-tagging-using-cli"></a>

**Per taggare un cluster**

Utilizza [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/add-tags.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/add-tags.html) come segue.

```
aws sagemaker add-tags --resource-arn cluster_ARN --tags Key=string,Value=string
```

**Per rimuovere un tag da un cluster**

Utilizza [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-tags.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-tags.html) come segue.

```
aws sagemaker delete-tags --resource-arn cluster_ARN --tag-keys "tag_key"
```

**Per elencare i tag per una risorsa**

Utilizza [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-tags.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-tags.html) come segue.

```
aws sagemaker list-tags --resource-arn cluster_ARN
```

# SageMaker HyperPod FAQs
<a name="sagemaker-hyperpod-faq-slurm"></a>

Utilizza le seguenti domande frequenti per risolvere i problemi relativi all'utilizzo. SageMaker HyperPod

**Topics**
+ [Perché non riesco a trovare i gruppi di log del mio SageMaker HyperPod cluster in Amazon CloudWatch?](#hyperpod-faqs-q1)
+ [Quali configurazioni particolari HyperPod gestisce nei file di configurazione di Slurm come e? `slurm.conf` `gres.conf`](#hyperpod-faqs-q2)
+ [Come posso eseguire Docker sui nodi Slurm? HyperPod](#hyperpod-faqs-q3)
+ [Perché il mio lavoro di training parallelo fallisce quando utilizzo NVIDIA Collective Communications Library (NCCL) con Slurm on platform? SageMaker HyperPod](#hyperpod-faqs-q4)
+ [Come posso utilizzare l' NVMe archivio locale di istanze P per avviare contenitori Docker o Enroot con Slurm?](#hyperpod-faqs-q5)
+ [Come si configurano i gruppi di sicurezza EFA?](#hyperpod-faqs-q6)
+ [Come posso monitorare i nodi del mio cluster? HyperPod Sono state esportate CloudWatch delle metriche da? HyperPod](#hyperpod-faqs-q7)
+ [Posso aggiungere uno storage aggiuntivo ai HyperPod nodi del cluster? Le istanze del cluster hanno un archivio dell’istanza locale limitato.](#hyperpod-faqs-q8)
+ [Perché i miei nodi di calcolo mostrano lo stato “DOWN” o “DRAINED” dopo un riavvio?](#hyperpod-faqs-q9)
+ [Perché i miei nodi vengono continuamente svuotati a causa di problemi di memoria insufficiente (OOM)?](#hyperpod-faqs-q10)
+ [Come posso avere la certezza che le risorse siano pulite correttamente dopo il completamento dei processi?](#hyperpod-faqs-q11)

## Perché non riesco a trovare i gruppi di log del mio SageMaker HyperPod cluster in Amazon CloudWatch?
<a name="hyperpod-faqs-q1"></a>

Per impostazione predefinita, i log degli agenti e i registri di avvio delle istanze vengono inviati all'account della HyperPod piattaforma. CloudWatch Nel caso degli script del ciclo di vita degli utenti, i log di configurazione del ciclo di vita vengono inviati all'account dell'utente. CloudWatch

Se utilizzi gli [script del ciclo di vita di esempio](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.md) forniti dal team di HyperPod assistenza, puoi aspettarti di trovare i log di configurazione del ciclo di vita scritti su e non incontrerai questo problema. `/var/log/provision/provisioning.log`

Tuttavia, se utilizzi percorsi personalizzati per raccogliere i log dal provisioning del ciclo di vita e non riesci a trovare i gruppi di log che appaiono nel tuo account CloudWatch, ciò potrebbe essere dovuto a una mancata corrispondenza tra i percorsi dei file di registro specificati negli script del ciclo di vita e ciò che cerca l' CloudWatch agente in esecuzione sulle istanze del HyperPod cluster. In questo caso, significa che è necessario configurare correttamente gli script del ciclo di vita per inviare i log all' CloudWatch agente e configurare di conseguenza la configurazione dell' CloudWatch agente. Per risolvere il problema, scegli una delle seguenti opzioni.
+ **Opzione 1:** aggiorna gli script del ciclo di vita per scrivere i log su `/var/log/provision/provisioning.log`.
+ **Opzione 2:** aggiorna l' CloudWatch agente per cercare percorsi personalizzati per la registrazione del provisioning del ciclo di vita.

  1. Ogni istanza HyperPod del cluster contiene un file di configurazione CloudWatch dell'agente in formato JSON all'indirizzo. `/opt/aws/amazon-cloudwatch-agent/sagemaker_cwagent_config.json` Nel file di configurazione, trova il nome del campo `logs.logs_collected.files.collect_list.file_path`. Con l'impostazione predefinita di HyperPod, la coppia chiave-valore dovrebbe essere `"file_path": "/var/log/provision/provisioning.log"` quella documentata in. [Registrazione a SageMaker HyperPod livello di istanza](sagemaker-hyperpod-cluster-management-slurm.md#sagemaker-hyperpod-cluster-management-slurm-logging-at-instance-level) Il seguente frammento di codice mostra l'aspetto del file JSON con la configurazione predefinita. HyperPod 

     ```
     "logs": {
         "logs_collected": {
             "files": {
                 "collect_list": [
                     {
                         "file_path": "/var/log/provision/provisioning.log",
                         "log_group_name": "/aws/sagemaker/Clusters/[ClusterName]/[ClusterID]",
                         "log_stream_name": "LifecycleConfig/[InstanceGroupName]/{instance_id}",
                         "retention_in_days": -1
                     }
                 ]
             }
         },
         "force_flush_interval": 3
     }
     ```

  1. Sostituisci il valore del nome del campo `"file_path"` con il percorso personalizzato che utilizzi negli script del ciclo di vita. Ad esempio, se hai configurato gli script del ciclo di vita per la scrittura su `/var/log/custom-provision/custom-provisioning.log`, aggiorna il valore in modo che abbia la seguente corrispondenza.

     ```
     "file_path": "/var/log/custom-provision/custom-provisioning.log"
     ```

  1. Riavviare l' CloudWatch agente con il file di configurazione per completare l'applicazione del percorso personalizzato. Ad esempio, il CloudWatch comando seguente mostra come riavviare l' CloudWatch agente con il file di configurazione dell' CloudWatch agente del passaggio 1. Per ulteriori informazioni, vedere anche [Risoluzione dei problemi dell' CloudWatch agente](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/troubleshooting-CloudWatch-Agent.html).

     ```
     sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
         -a fetch-config -m ec2 -s -c \
         file:/opt/aws/amazon-cloudwatch-agent/sagemaker_cwagent_config.json
     ```

## Quali configurazioni particolari HyperPod gestisce nei file di configurazione di Slurm come e? `slurm.conf` `gres.conf`
<a name="hyperpod-faqs-q2"></a>

Quando si crea un cluster Slurm su HyperPod, l' HyperPod agente configura [https://slurm.schedmd.com/gres.conf.html](https://slurm.schedmd.com/gres.conf.html)i file [https://slurm.schedmd.com/slurm.conf.html](https://slurm.schedmd.com/slurm.conf.html)and `/opt/slurm/etc/` per gestire il cluster Slurm in base alla richiesta di creazione del cluster e agli script del ciclo di vita HyperPod . L'elenco seguente mostra quali parametri specifici l'agente gestisce e sovrascrive. HyperPod 

**Importante**  
Ti consigliamo vivamente di NON modificare questi parametri gestiti da HyperPod.
+ In [https://slurm.schedmd.com/slurm.conf.html](https://slurm.schedmd.com/slurm.conf.html), HyperPod imposta i seguenti parametri di base: `ClusterName``SlurmctldHost`,`PartitionName`, e`NodeName`.

  Inoltre, per abilitare la [Ripristino automatico dei nodi e ripristino automatico](sagemaker-hyperpod-resiliency-slurm-auto-resume.md) funzionalità, HyperPod richiede i `SchedulerParameters` parametri `TaskPlugin` e impostati come segue. Per impostazione predefinita, l' HyperPod agente imposta questi due parametri con i valori richiesti.

  ```
  TaskPlugin=task/none
  SchedulerParameters=permit_job_expansion
  ```
+ In [https://slurm.schedmd.com/gres.conf.html](https://slurm.schedmd.com/gres.conf.html), HyperPod gestisce `NodeName` i nodi GPU.

## Come posso eseguire Docker sui nodi Slurm? HyperPod
<a name="hyperpod-faqs-q3"></a>

Per aiutarti a eseguire Docker sui nodi Slurm in esecuzione HyperPod, il team di HyperPod assistenza fornisce script di configurazione che puoi includere come parte della configurazione del ciclo di vita per la creazione di cluster. Per ulteriori informazioni, consultare [Script del ciclo di vita di base forniti da HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.md) e [Esecuzione di contenitori Docker su un nodo di calcolo Slurm su HyperPod](sagemaker-hyperpod-run-jobs-slurm-docker.md).

## Perché il mio lavoro di training parallelo fallisce quando utilizzo NVIDIA Collective Communications Library (NCCL) con Slurm on platform? SageMaker HyperPod
<a name="hyperpod-faqs-q4"></a>

Per impostazione predefinita, il sistema operativo Linux imposta il flag `#RemoveIPC=yes`. I processi Slurm e mpirun che utilizzano NCCL generano risorse di comunicazione tra processi (IPC) nelle sessioni utente non root. Queste sessioni utente potrebbero disconnettersi durante il processo.

 Quando esegui processi con Slurm o mpirun, se `systemd` rileva che l’utente non è connesso, pulisce le risorse IPC. I processi Slurm e mpirun possono essere eseguiti senza che l’utente sia connesso, ma è necessario disabilitare la pulizia a livello di systemd e riconfigurarla a livello Slurm. Per ulteriori informazioni, consulta [Systemd nella documentazione NCCL](https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/troubleshooting.html#systemd). 

Completa la procedura seguente per disabilitare la pulizia a livello di systemd.

1. Imposta il flag `#RemoveIPC=no` nel file `/etc/systemd/logind.conf` se stai eseguendo job di addestramento che utilizzano Slurm e NCCL.

1.  Per impostazione predefinita, Slurm non pulisce le risorse condivise. Consigliamo di configurare uno script Epilog di Slurm per pulire le risorse condivise. Questa pulizia è utile se hai molte risorse condivise che vuoi eliminare dopo i job di addestramento. Di seguito è riportato un esempio di script.

   ```
   #!/bin/bash
   : <<'SUMMARY'
   Script: epilog.sh
   
   Use this script with caution, as it can potentially delete unnecessary resources and cause issues if you don't use it correctly.
   
   Note: You must save this script in a shared in a shared location that is accessible to all nodes in the cluster, such as /fsx volume.
   Workers must be able to access the script to run the script after jobs.
   
   SUMMARY
   
   # Define the log directory and create it if it doesn't exist
   LOG_DIR="/<PLACEHOLDER>/epilogue" #NOTE: Update PLACEHOLDER to be a shared value path, such as /fsx/epilogue.
   mkdir -p "$LOG_DIR"
   
   # Name the log file using the Slurm job name and job ID
   log_file="$LOG_DIR/epilogue-${SLURM_JOB_NAME}_${SLURM_JOB_ID}.log"
   
   logging() {
       echo "[$(date)] $1" | tee -a "$log_file"
   }
   
   # Slurm epilogue script to clean up IPC resources
   logging "Starting IPC cleanup for Job $SLURM_JOB_ID"
   
   # Clean up shared memory segments by username
   for seg in $(ipcs -m | awk -v owner="$SLURM_JOB_USER" '$3 == owner {print $2}'); do
       if ipcrm -m "$seg"; then
           logging "Removed shared memory segment $seg"
       else
           logging "Failed to remove shared memory segment $seg"
       fi
   done
   
   # Clean up semaphores by username
   for sem in $(ipcs -s | awk -v user="$SLURM_JOB_USER" '$3 == user {print $2}'); do
       if ipcrm -s "$sem"; then
           logging "Removed semaphore $sem"
       else
           logging "Failed to remove semaphore $sem"
       fi
   done
   
   # Clean up NCCL IPC
   NCCL_IPC_PATH="/dev/shm/nccl-*"
   for file in $NCCL_IPC_PATH; do
       if [ -e "$file" ]; then
           if rm "$file"; then
               logging "Removed NCCL IPC file $file"
           else
               logging "Failed to remove NCCL IPC file $file"
           fi
       fi
   done
   logging "IPC cleanup completed for Job $SLURM_JOB_ID"
   exit 0
   ```

   Per ulteriori informazioni sul parametro Epilog, consulta la [documentazione di Slurm](https://slurm.schedmd.com/slurm.conf.html#OPT_Epilog).

1. Nel file `slurm.conf` del nodo controller, aggiungi una riga che punti allo script Epilog che hai creato.

   ```
   Epilog="/path/to/epilog.sh"  #For example: /fsx/epilogue/epilog.sh
   ```

1. Utilizza i comandi seguenti per modificare le autorizzazioni dello script e renderlo eseguibile.

   ```
   chown slurm:slurm /path/to/epilog.sh
   chmod +x  /path/to/epilog.sh
   ```

1. Per applicare tutte le modifiche, esegui `scontrol reconfigure`.

## Come posso utilizzare l' NVMe archivio locale di istanze P per avviare contenitori Docker o Enroot con Slurm?
<a name="hyperpod-faqs-q5"></a>

Poiché il volume root predefinito del nodo principale di solito è limitato a un volume EBS da 100 GB, è necessario configurare Docker ed Enroot per utilizzare l'instance store locale. NVMe Per informazioni su come configurare NVMe store e utilizzarlo per l'avvio di contenitori Docker, consulta. [Esecuzione di contenitori Docker su un nodo di calcolo Slurm su HyperPod](sagemaker-hyperpod-run-jobs-slurm-docker.md)

## Come si configurano i gruppi di sicurezza EFA?
<a name="hyperpod-faqs-q6"></a>

Se desideri creare un HyperPod cluster con istanze abilitate per EFA, assicurati di configurare un gruppo di sicurezza per consentire tutto il traffico in entrata e in uscita da e verso il gruppo di sicurezza stesso. Per ulteriori informazioni, consulta [Step 1: Prepare an EFA-enabled security group](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security) in *Amazon EC2 User Guide*.

## Come posso monitorare i nodi del mio cluster? HyperPod Sono state esportate CloudWatch delle metriche da? HyperPod
<a name="hyperpod-faqs-q7"></a>

Per ottenere una maggiore visibilità sull'utilizzo delle risorse del HyperPod cluster, consigliamo di integrare il HyperPod cluster con Amazon Managed Grafana e Amazon Managed Service for Prometheus. Con varie dashboard Grafana open source e pacchetti di esportazione, puoi esportare e visualizzare le metriche relative alle risorse del cluster. HyperPod Per ulteriori informazioni sulla configurazione SageMaker HyperPod con Amazon Managed Grafana e Amazon Managed Service for Prometheus, consulta. [SageMaker HyperPod monitoraggio delle risorse del cluster](sagemaker-hyperpod-cluster-observability-slurm.md) Tieni presente che SageMaker HyperPod attualmente non supporta l'esportazione di metriche di sistema su Amazon. CloudWatch

## Posso aggiungere uno storage aggiuntivo ai HyperPod nodi del cluster? Le istanze del cluster hanno un archivio dell’istanza locale limitato.
<a name="hyperpod-faqs-q8"></a>

Se l’archiviazione delle istanze predefinita è insufficiente per il tuo carico di lavoro, puoi configurare spazio aggiuntivo per ogni istanza. A partire dal [rilascio del 20 giugno 2024,](sagemaker-hyperpod-release-notes.md#sagemaker-hyperpod-release-notes-20240620) puoi aggiungere un volume Amazon Elastic Block Store (EBS) aggiuntivo a ciascuna istanza del cluster. SageMaker HyperPod Tieni presente che questa funzionalità non può essere applicata a gruppi di istanze di SageMaker HyperPod cluster esistenti creati prima del 20 giugno 2024. Puoi utilizzare questa funzionalità applicando patch SageMaker HyperPod ai cluster esistenti creati prima del 20 giugno 2024 e aggiungendovi nuovi gruppi di istanze. Questa funzionalità è pienamente efficace per tutti i SageMaker HyperPod cluster creati dopo il 20 giugno 2024.

## Perché i miei nodi di calcolo mostrano lo stato “DOWN” o “DRAINED” dopo un riavvio?
<a name="hyperpod-faqs-q9"></a>

Questo caso si verifica in genere quando i nodi vengono riavviati con `sudo reboot` invece che con l’interfaccia di controllo di Slurm. Per riavviare correttamente i nodi, utilizza il comando Slurm `scontrol reboot nextstate=resume <list_of_nodes>`. Questo garantisce che Slurm mantenga un controllo adeguato sullo stato del nodo e riprenda il normale funzionamento dopo il riavvio.

Per le istanze GPU (come NVIDIA P5), questo può accadere anche se il nodo non riesce a completare il processo di avvio entro il limite di tempo predefinito di Slurm (60 secondi). Per risolvere questo problema, aumenta il parametro `TimeToResume` in `slurm.conf` fino a 300 secondi. In questo modo, le istanze GPU hanno abbastanza tempo per avviare e inizializzare i driver.

## Perché i miei nodi vengono continuamente svuotati a causa di problemi di memoria insufficiente (OOM)?
<a name="hyperpod-faqs-q10"></a>

I problemi di OOM si verificano quando i processi superano la capacità di memoria del nodo. Per evitare il problema, implementa `cgroups` per imporre limiti di memoria per ogni processo. Così facendo, eviti che un singolo processo influisca sull’intero nodo e migliori l’isolamento e la stabilità.

Configurazione di esempio in `slurm.conf`: 

```
TaskPlugin=task/cgroup
```

Configurazione di esempio in `cgroup.conf`:

```
CgroupAutomount=yes
ConstrainCores=yes
CgroupPlugin=autodetect
ConstrainDevices=yes
ConstrainRAMSpace=yes
ConstrainSwapSpace=yes
SignalChildrenProcesses=yes
MaxRAMPercent=99
MaxSwapPercent=80
MinRAMSpace=100
```

Per ulteriori informazioni, consulta [Control Group in Slurm](https://slurm.schedmd.com/cgroups.html), [Cgroup and PAM-based login control for Slurm compute nodes](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils/pam_adopt_cgroup_wheel.sh#L197) e [Configure Cgroups for Slurm](https://catalog.workshops.aws/sagemaker-hyperpod/en-US/07-tips-and-tricks/16-enable-cgroups).

## Come posso avere la certezza che le risorse siano pulite correttamente dopo il completamento dei processi?
<a name="hyperpod-faqs-q11"></a>

Implementa script Epilog per pulire automaticamente le risorse al completamento dei processi. Le risorse potrebbero non essere cancellate correttamente quando i processi si bloccano inaspettatamente, quando contengono bug che impediscono la normale pulizia o quando i buffer di memoria condivisa (inclusi quelli condivisi tra processi e driver GPU) rimangono allocati.

Gli script Epilog possono eseguire attività, ad esempio la cancellazione della memoria della GPU, la rimozione dei file temporanei e lo smontaggio dei file system. Questi script presentano delle limitazioni quando le risorse non sono allocate esclusivamente a un singolo processo. Per istruzioni dettagliate e script di esempio, consulta il secondo punto della domanda [Perché il mio lavoro di training parallelo fallisce quando utilizzo NVIDIA Collective Communications Library (NCCL) con Slurm on platform? SageMaker HyperPod](#hyperpod-faqs-q4). Per ulteriori informazioni, consulta [Enable Slurm epilog script](https://catalog.workshops.aws/sagemaker-hyperpod/en-US/07-tips-and-tricks/18-slurm-epilogue).

# Orchestrazione di SageMaker HyperPod cluster con Amazon EKS
<a name="sagemaker-hyperpod-eks"></a>

SageMaker HyperPod è un servizio SageMaker gestito dall'intelligenza artificiale che consente l'addestramento su larga scala di modelli di base su cluster di elaborazione resilienti e di lunga durata, che si integra con Amazon EKS per orchestrare le risorse di calcolo. HyperPod Puoi eseguire lavori di formazione ininterrotti per settimane o mesi su larga scala utilizzando i cluster Amazon EKS con funzionalità di HyperPod resilienza che verificano la presenza di vari guasti hardware e ripristinano automaticamente i nodi difettosi. 

Le funzionalità principali per gli utenti amministratori del cluster includono quanto segue.
+ Fornire cluster resilienti e collegarli a un piano di controllo HyperPod EKS
+ Abilitazione della gestione dinamica della capacità, come l’aggiunta di altri nodi, l’aggiornamento del software e l’eliminazione dei cluster
+ Abilitazione dell’accesso alle istanze del cluster direttamente tramite `kubectl` o SSM/SSH
+ Offre [funzionalità di resilienza](sagemaker-hyperpod-eks-resiliency.md), tra cui controlli sanitari di base, controlli sanitari approfonditi, un agente di monitoraggio dello stato di salute e supporto per la ripresa automatica del lavoro PyTorch 
+ [Integrazione con strumenti di osservabilità come Amazon [ CloudWatchContainer Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html), [Amazon Managed Service for Prometheus e Amazon Managed Grafana](https://docs.aws.amazon.com/prometheus/latest/userguide/what-is-Amazon-Managed-Service-Prometheus.html)](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html)

Per gli utenti di data scientist, il supporto EKS abilita quanto segue. HyperPod 
+ Esecuzione di carichi di lavoro containerizzati per la formazione dei modelli di base sul cluster HyperPod 
+ Esecuzione dell'inferenza sul cluster EKS, sfruttando l'integrazione tra ed EKS HyperPod 
+ Sfruttamento della funzionalità di ripresa automatica del lavoro per la formazione [ PyTorch Kubeflow](https://www.kubeflow.org/docs/components/training/user-guides/pytorch/) () PyTorchJob

**Nota**  
Amazon EKS consente l'orchestrazione gestita dall'utente di attività e infrastrutture tramite Amazon EKS SageMaker HyperPod Control Plane. Assicurati che l'accesso degli utenti al cluster tramite l'endpoint Kubernetes API Server segua il principio del privilegio minimo e che l'uscita di rete dal cluster sia protetta. HyperPod   
Per ulteriori informazioni sulla protezione dell’accesso al server API Amazon EKS, consulta [Control network access to cluster API server endpoint](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html).  
Per ulteriori informazioni sulla protezione dell'accesso alla rete su, consulta. HyperPod [Configurazione SageMaker HyperPod con un Amazon VPC personalizzato](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-optional-vpc)

L'architettura di alto livello del supporto di Amazon EKS HyperPod prevede una mappatura 1 a 1 tra un cluster EKS (piano di controllo) e un HyperPod cluster (nodi di lavoro) all'interno di un VPC, come mostrato nel diagramma seguente.

![\[EKS and HyperPod VPC architecture with control plane, cluster nodes, and Servizi AWS.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod-eks-diagram.png)


# Gestione dei SageMaker HyperPod cluster orchestrati da Amazon EKS
<a name="sagemaker-hyperpod-eks-operate"></a>

Questa sezione fornisce indicazioni sulla gestione SageMaker HyperPod tramite l'interfaccia utente della console SageMaker AI o AWS Command Line Interface (CLI). Spiega come eseguire varie attività correlate a SageMaker HyperPod, sia che preferiate un'interfaccia visiva o l'utilizzo dei comandi.

**Topics**
+ [Inizia a usare il supporto di Amazon EKS in SageMaker HyperPod](sagemaker-hyperpod-eks-prerequisites.md)
+ [Installazione di pacchetti sul cluster Amazon EKS con Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md)
+ [Configurazione del controllo degli accessi basato su ruoli Kubernetes](sagemaker-hyperpod-eks-setup-rbac.md)
+ [Amazon Machine Images personalizzate (AMIs) per SageMaker HyperPod cluster](hyperpod-custom-ami-support.md)
+ [Gestione dei cluster SageMaker HyperPod EKS tramite la console SageMaker](sagemaker-hyperpod-eks-operate-console-ui.md)
+ [Creazione di SageMaker HyperPod cluster utilizzando modelli CloudFormation](smcluster-getting-started-eks-console-create-cluster-cfn.md)
+ [Gestione dei cluster SageMaker HyperPod EKS utilizzando il AWS CLI](sagemaker-hyperpod-eks-operate-cli-command.md)
+ [HyperPod checkpoint gestito a più livelli](managed-tier-checkpointing.md)
+ [SageMaker HyperPod governance delle attività](sagemaker-hyperpod-eks-operate-console-ui-governance.md)
+ [Report sull'utilizzo per l'attribuzione dei costi in SageMaker HyperPod](sagemaker-hyperpod-usage-reporting.md)
+ [Configurazione dello storage per i SageMaker HyperPod cluster orchestrati da Amazon EKS](sagemaker-hyperpod-eks-setup-storage.md)
+ [Utilizzo del driver CSI Amazon EBS su SageMaker HyperPod cluster EKS](sagemaker-hyperpod-eks-ebs.md)
+ [Configurazione di etichette e colori Kubernetes personalizzati in Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-custom-labels-and-taints.md)

# Inizia a usare il supporto di Amazon EKS in SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-prerequisites"></a>

Oltre al modulo generale [Prerequisiti per l'utilizzo SageMaker HyperPod](sagemaker-hyperpod-prerequisites.md) SageMaker HyperPod, consulta i seguenti requisiti e considerazioni per l'orchestrazione SageMaker HyperPod dei cluster con Amazon EKS.

**Importante**  
Puoi configurare la configurazione delle risorse per la creazione di SageMaker HyperPod cluster utilizzando and. Console di gestione AWS CloudFormation Per ulteriori informazioni, consultare [Creazione di un SageMaker HyperPod cluster con l'orchestrazione di Amazon EKS](sagemaker-hyperpod-eks-operate-console-ui-create-cluster.md) e [Creazione di SageMaker HyperPod cluster utilizzando modelli CloudFormation](smcluster-getting-started-eks-console-create-cluster-cfn.md).

**Requisiti**

**Nota**  
Prima di creare un HyperPod cluster, è necessario un cluster Amazon EKS in esecuzione configurato con VPC e installato tramite Helm.
+ Se utilizzi la console SageMaker AI, puoi creare un cluster Amazon EKS all'interno della pagina della console del HyperPod cluster. Per ulteriori informazioni, consulta [Creazione di un SageMaker HyperPod cluster con l'orchestrazione di Amazon EKS](sagemaker-hyperpod-eks-operate-console-ui-create-cluster.md).
+ Se si utilizza la AWS CLI, è necessario creare un cluster Amazon EKS prima di creare un HyperPod cluster a cui associarsi. Per ulteriori informazioni, consulta [Create an Amazon EKS cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) in Amazon EKS User Guide.

Durante il provisioning del cluster Amazon EKS, considera quanto segue:

1. **Versioni di Kubernetes supportate**
   + SageMaker HyperPod supporta le versioni 1.28, 1.29, 1.30, 1.31, 1.32, 1.33 e 1.34 di Kubernetes.

1. **Modalità di autenticazione del cluster Amazon EKS**
   + La modalità di autenticazione di un cluster Amazon EKS supportata da SageMaker HyperPod sono `API` e`API_AND_CONFIG_MAP`.

1. **Reti**
   + SageMaker HyperPod richiede il plug-in Amazon VPC Container Network Interface (CNI) versione 1.18.3 o successiva.
**Nota**  
AWS Il [plug-in VPC CNI per Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s) è l'unico CNI supportato da. SageMaker HyperPod
   + Il [tipo di sottorete](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-types) nel VPC deve essere privato HyperPod per i cluster.

1. **Ruoli IAM**
   + Assicurati che i ruoli IAM necessari per HyperPod siano configurati come indicato nella sezione. [AWS Identity and Access Management per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md)

1. **Componenti aggiuntivi del cluster Amazon EKS**
   + Puoi continuare a utilizzare i vari componenti aggiuntivi forniti da Amazon EKS come [Kube-proxy](https://docs.aws.amazon.com/eks/latest/userguide/add-ons-kube-proxy.html), [CoredNS](https://docs.aws.amazon.com/eks/latest/userguide/add-ons-coredns.html), il plug-in [Amazon VPC Container Network Interface (CNI), l'identità GuardDuty del pod Amazon](https://docs.aws.amazon.com/eks/latest/userguide/add-ons-vpc-cni.html) EKS, l'agente, il driver Amazon Container Storage Interface (CSI), FSx il driver CSI Mountpoint per Amazon S3, l'agente Distro for e l'agente Observability. AWS OpenTelemetry CloudWatch

**Considerazioni sulla configurazione dei SageMaker HyperPod cluster con Amazon EKS**
+ Devi utilizzare ruoli IAM distinti a seconda del tipo di nodi. Per HyperPod i nodi, usa un ruolo basato su. [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) Per i nodi Amazon EKS, consulta il [ruolo IAM del nodo Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html).
+ Puoi effettuare il provisioning e montare volumi Amazon EBS aggiuntivi sui SageMaker HyperPod nodi utilizzando due approcci: utilizzare [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ClusterInstanceGroupSpecification.html#sagemaker-Type-ClusterInstanceGroupSpecification-InstanceStorageConfigs](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ClusterInstanceGroupSpecification.html#sagemaker-Type-ClusterInstanceGroupSpecification-InstanceStorageConfigs)per il provisioning di volumi a livello di cluster (disponibile durante la creazione o l'aggiornamento di gruppi di istanze) o utilizzare il driver Amazon Elastic Block Store (Amazon EBS) Container Storage Interface (CSI) per la gestione dinamica dei volumi a livello di pod. Con [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ClusterInstanceGroupSpecification.html#sagemaker-Type-ClusterInstanceGroupSpecification-InstanceStorageConfigs](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ClusterInstanceGroupSpecification.html#sagemaker-Type-ClusterInstanceGroupSpecification-InstanceStorageConfigs), imposta il [percorso locale](https://kubernetes.io/docs/concepts/storage/volumes/#local) `/opt/sagemaker` per montare correttamente i volumi sui tuoi pod Amazon EKS. Per informazioni su come distribuire il controller [Amazon EBS CSI](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html) sui HyperPod nodi, consulta. [Utilizzo del driver CSI Amazon EBS su SageMaker HyperPod cluster EKS](sagemaker-hyperpod-eks-ebs.md)
+ Se utilizzi etichette di tipo di istanza per definire i vincoli di pianificazione, assicurati di utilizzare i tipi di istanza AI ML con il prefisso. SageMaker `ml.` Ad esempio, per le istanze P5, utilizza `ml.p5.48xlarge` invece di `p5.48xlarge`.

**Considerazioni sulla configurazione della rete per i SageMaker HyperPod cluster con Amazon EKS**
+ Ogni istanza HyperPod del cluster supporta un'interfaccia di rete elastica (ENI). Per il numero massimo di pod per tipo di istanza, consulta la tabella seguente.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ Per impostazione predefinita, solo i pod con `hostNetwork = true` hanno accesso al servizio di metadati di istanza (IMDS) di Amazon EC2. Utilizza l'identità Amazon EKS Pod o i [ruoli IAM per gli account di servizio (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) per gestire l'accesso alle AWS credenziali per i pod.
+  HyperPod I cluster orchestrati da EKS supportano due modalità di indirizzamento IP, che consentono la configurazione con o IPv4 per i cluster IPv6 IPv6 Amazon EKS in ambienti VPC e sottorete IPv6 abilitati. Per ulteriori informazioni, consulta [Configurazione SageMaker HyperPod con un Amazon VPC personalizzato](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-optional-vpc).

**Considerazioni sull' HyperPod utilizzo delle funzionalità di resilienza del cluster**
+ La sostituzione automatica dei nodi non è supportata per le istanze CPU.
+ L'agente di HyperPod monitoraggio dello stato deve essere installato affinché il ripristino automatico del nodo funzioni. L’agente può essere installato con Helm. Per ulteriori informazioni, consulta [Installazione di pacchetti sul cluster Amazon EKS con Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md).
+ L'agente di controllo HyperPod approfondito e monitoraggio dello stato supporta istanze GPU e Trn.
+ SageMaker L'intelligenza artificiale applica la seguente macchia ai nodi quando sono sottoposti a controlli di integrità approfonditi:

  ```
  effect: NoSchedule
  key: sagemaker.amazonaws.com/node-health-status
  value: Unschedulable
  ```
**Nota**  
Non puoi aggiungere taint personalizzati ai nodi nei gruppi di istanze con `DeepHealthChecks` attivato.

 Una volta che il cluster Amazon EKS è in esecuzione, configura il cluster utilizzando il gestore di pacchetti Helm come indicato [Installazione di pacchetti sul cluster Amazon EKS con Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md) prima di creare il HyperPod cluster.

# Installazione di pacchetti sul cluster Amazon EKS con Helm
<a name="sagemaker-hyperpod-eks-install-packages-using-helm-chart"></a>

Prima di creare un SageMaker HyperPod cluster e collegarlo a un cluster Amazon EKS, è necessario installare i pacchetti utilizzando [Helm](https://helm.sh/), un gestore di pacchetti per Kubernetes. Helm è uno strumento open source che consente di configurare un processo di installazione per i cluster Kubernetes. Consente l'automazione e la semplificazione delle installazioni delle dipendenze e semplifica varie configurazioni necessarie per preparare il cluster Amazon EKS come orchestratore (piano di controllo) per un cluster. SageMaker HyperPod 

[Il team SageMaker HyperPod di assistenza fornisce un pacchetto Helm chart, che raggruppa dipendenze chiave come device/EFA plug-in, plug-in, Kubeflow Training Operator e configurazioni di autorizzazione associate.](https://www.kubeflow.org/docs/components/training/)

**Importante**  
Questa fase di installazione di Helm è obbligatoria. Se configuri il cluster Amazon EKS utilizzando [Console di gestione AWS](sagemaker-hyperpod-eks-operate-console-ui-create-cluster.md) o [CloudFormation](smcluster-getting-started-eks-console-create-cluster-cfn.md), puoi saltare questa fase perché l’installazione viene gestita automaticamente durante il processo di configurazione. Se configuri il cluster direttamente utilizzando APIs, utilizza il grafico Helm fornito per configurare il cluster Amazon EKS. La mancata configurazione del cluster Amazon EKS utilizzando il grafico Helm fornito potrebbe comportare il malfunzionamento del SageMaker HyperPod cluster o il completo fallimento del processo di creazione. Il nome del namespace `aws-hyperpod` non può essere modificato.

1. [Installa Helm](https://helm.sh/docs/intro/install/) sul computer locale.

1. Scarica i grafici Helm forniti da che SageMaker HyperPod si trovano `helm_chart/HyperPodHelmChart` nel repository [SageMaker HyperPod CLI](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart).

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

1. Aggiorna le dipendenze del grafico Helm, visualizza in anteprima le modifiche che verranno apportate al cluster Kubernetes e installa il grafico Helm.

   ```
   helm dependencies update HyperPodHelmChart
   ```

   ```
   helm install hyperpod-dependencies HyperPodHelmChart --namespace kube-system --dry-run
   ```

   ```
   helm install hyperpod-dependencies HyperPodHelmChart --namespace kube-system
   ```

In sintesi, l'installazione Helm configura vari componenti per il cluster Amazon EKS, tra cui la pianificazione e la coda dei processi (Kueue), la gestione dello storage, l'integrazione e Kubeflow. MLflow Inoltre, i grafici installano i seguenti componenti per l'integrazione con le funzionalità di resilienza del cluster, che sono componenti obbligatori. SageMaker HyperPod 
+ **Health monitoring agent**: installa l'agente di monitoraggio dello stato di salute fornito da. SageMaker HyperPod Questo è necessario se si desidera monitorare il HyperPod cluster. Gli agenti di monitoraggio dell’integrità sono forniti come immagini Docker secondo quanto descritto di seguito. Nei grafici Helm, l’immagine è preimpostata nel file `values.yaml` fornito. L'agente supporta istanze e Trainium-accelerator-based istanze basate su GPU (`trn1`,,). `trn1n` `inf2` Viene installato nel namespace `aws-hyperpod`. Per trovare l'URI supportato, consulta la sezione [Regioni supportate e il relativo ECR URIs ](https://github.com/aws/sagemaker-hyperpod-cli/blob/main/helm_chart/readme.md#6-notes) nell'archivio su. sagemaker-hyperpod-cli GitHub
+ **Controllo approfondito** dello stato: imposta a`ClusterRole`, a ServiceAccount (`deep-health-check-service-account`) nel `aws-hyperpod` namespace e `ClusterRoleBinding` a per abilitare la funzionalità di controllo SageMaker HyperPod approfondito dello stato. Per ulteriori informazioni sul file RBAC di Kubernetes per il controllo approfondito dello stato, consulta il file di configurazione nell'[https://github.com/aws/sagemaker-hyperpod-cli/blob/main/helm_chart/HyperPodHelmChart/charts/deep-health-check/templates/deep-health-check-rbac.yaml](https://github.com/aws/sagemaker-hyperpod-cli/blob/main/helm_chart/HyperPodHelmChart/charts/deep-health-check/templates/deep-health-check-rbac.yaml)archivio CLI. SageMaker HyperPod GitHub 
+ **`job-auto-restart`**- Questo imposta a`ClusterRole`, a ServiceAccount (`job-auto-restart`) nel `aws-hyperpod` namespace e a`ClusterRoleBinding`, per abilitare la funzionalità di riavvio automatico per i lavori di PyTorch formazione in. SageMaker HyperPod Per ulteriori informazioni sul file RBAC di Kubernetes`job-auto-restart`, consulta il file di configurazione nell'[https://github.com/aws/sagemaker-hyperpod-cli/blob/main/helm_chart/HyperPodHelmChart/charts/job-auto-restart/templates/job-auto-restart-rbac.yaml](https://github.com/aws/sagemaker-hyperpod-cli/blob/main/helm_chart/HyperPodHelmChart/charts/job-auto-restart/templates/job-auto-restart-rbac.yaml)archivio CLI. SageMaker HyperPod GitHub 
+ **Operatore MPI Kubeflow**: l’[operatore MPI](https://github.com/kubeflow/mpi-operator) è un operatore Kubernetes che utilizza l’interfaccia per il passaggio dei messaggi (MPI) sui cluster Kubernetes per semplificare l’esecuzione di carichi di lavoro distribuiti di machine learning (ML) e di calcolo ad alte prestazioni (HPC). Installa l’operatore MPI v0.5. Viene installato nel namespace `mpi-operator`.
+ **`nvidia-device-plugin`**— Si tratta di un plug-in per dispositivi Kubernetes che consente di esporre automaticamente NVIDIA GPUs per l'utilizzo da parte dei container del cluster Amazon EKS. Consente a Kubernetes di allocare e fornire l'accesso a quanto richiesto per quel contenitore. GPUs Richiesto quando si utilizza un tipo di istanza con GPU.
+ **`neuron-device-plugin`**: plugin per dispositivi Kubernetes che consente di esporre automaticamente i chip AWS Inferentia da utilizzare con i container del cluster Amazon EKS. Consente a Kubernetes di accedere e utilizzare i chip Inferentia sui nodi del cluster. AWS Richiesto quando si utilizza un tipo di istanza Neuron.
+ **`aws-efa-k8s-device-plugin`**— Si tratta di un plug-in per dispositivi Kubernetes che consente l'uso di AWS Elastic Fabric Adapter (EFA) sui cluster Amazon EKS. EFA è un dispositivo di rete che fornisce comunicazioni a bassa latenza e ad alto throughput tra le istanze di un cluster. Richiesto quando si utilizza un tipo di istanza supportato da EFA.

Per ulteriori informazioni sulla procedura di installazione utilizzando i grafici Helm forniti, consultate il [file README nell'archivio CLI SageMaker HyperPod ](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart).

# Configurazione del controllo degli accessi basato su ruoli Kubernetes
<a name="sagemaker-hyperpod-eks-setup-rbac"></a>

Gli utenti amministratori del cluster devono inoltre configurare il [controllo degli accessi basato sul ruolo (RBAC) di Kubernetes](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) per consentire agli utenti di data scientist di utilizzare la [SageMaker HyperPod CLI per eseguire carichi di lavoro su cluster orchestrati con Amazon EKS](https://github.com/aws/sagemaker-hyperpod-cli). HyperPod 

## Opzione 1: configurazione di RBAC con un grafico Helm
<a name="sagemaker-hyperpod-eks-setup-rbac-helm"></a>

Il team di assistenza fornisce una sottocartella Helm per la configurazione di RBAC. SageMaker HyperPod Per ulteriori informazioni, consulta [Installazione di pacchetti sul cluster Amazon EKS con Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md).

## Opzione 2: configurazione manuale di RBAC
<a name="sagemaker-hyperpod-eks-setup-rbac-manual"></a>

Crea `ClusterRole` e `ClusterRoleBinding` con privilegi minimi e `Role` e `RoleBinding` con autorizzazioni di mutazione.

**Per creare `ClusterRole` e `ClusterRoleBinding` per il ruolo IAM di Data Scientist**

Crea un file di configurazione a livello di cluster `cluster_level_config.yaml` come segue.

```
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: hyperpod-scientist-user-cluster-role
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["list"]
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: hyperpod-scientist-user-cluster-role-binding
subjects:
- kind: Group
  name: hyperpod-scientist-user-cluster-level
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: hyperpod-scientist-user-cluster-role # this must match the name of the Role or ClusterRole you wish to bind to
  apiGroup: rbac.authorization.k8s.io
```

Applica la configurazione al cluster EKS.

```
kubectl apply -f cluster_level_config.yaml
```

**Per creare un ruolo e nello spazio dei nomi RoleBinding **

Questo è l’operatore di addestramento del namespace monitorato per impostazione predefinita dai job di addestramento eseguiti e da Resiliency. La funzionalità di ripresa automatica del processo è supportata solo nel namespace `kubeflow` o nel namespace con prefisso `aws-hyperpod`. 

Crea un file di configurazione del ruolo `namespace_level_role.yaml` come segue. Questo esempio crea un ruolo nel namespace `kubeflow`.

```
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: kubeflow
  name: hyperpod-scientist-user-namespace-level-role
###
#  1) add/list/describe/delete pods
#  2) get/list/watch/create/patch/update/delete/describe kubeflow pytroch job
#  3) get pod log
###
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["create", "get"]
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["get", "list"]
- apiGroups: [""]
  resources: ["pods/log"]
  verbs: ["get", "list"]
- apiGroups: [""]
  resources: ["pods/exec"]
  verbs: ["get", "create"]
- apiGroups: ["kubeflow.org"]
  resources: ["pytorchjobs", "pytorchjobs/status"]
  verbs: ["get", "list", "create", "delete", "update", "describe"]
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["create", "update", "get", "list", "delete"]
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["create", "get", "list", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  namespace: kubeflow
  name: hyperpod-scientist-user-namespace-level-role-binding
subjects:
- kind: Group
  name: hyperpod-scientist-user-namespace-level
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: hyperpod-scientist-user-namespace-level-role # this must match the name of the Role or ClusterRole you wish to bind to
  apiGroup: rbac.authorization.k8s.io
```

Applica la configurazione al cluster EKS.

```
kubectl apply -f namespace_level_role.yaml
```

## Creazione di una voce di accesso per i gruppi Kubernetes
<a name="sagemaker-hyperpod-eks-setup-rbac-access-entry"></a>

Dopo aver configurato RBAC con una delle due opzioni precedenti, utilizza il comando di esempio seguente sostituendo le informazioni necessarie.

```
aws eks create-access-entry \
    --cluster-name <eks-cluster-name> \
    --principal-arn arn:aws:iam::<AWS_ACCOUNT_ID_SCIENTIST_USER>:role/ScientistUserRole \
    --kubernetes-groups '["hyperpod-scientist-user-namespace-level","hyperpod-scientist-user-cluster-level"]'
```

Per il parametro `principal-arn` è necessario utilizzare [Utenti IAM per Data Scientist](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-user).

# Amazon Machine Images personalizzate (AMIs) per SageMaker HyperPod cluster
<a name="hyperpod-custom-ami-support"></a>

Utilizzando Amazon Machine Images (AMIs) di base fornite e rese pubbliche da Amazon SageMaker HyperPod, puoi creare progetti personalizzati AMIs. Con un’AMI personalizzata, puoi creare ambienti specializzati per carichi di lavoro IA con stack software preconfigurati, personalizzazioni dei driver, dipendenze proprietarie e agenti di sicurezza. Questa funzionalità elimina la necessità di un complesso bootstrap post-avvio con script di configurazione del ciclo di vita.

Con custom AMIs, puoi standardizzare gli ambienti in diverse fasi, accelerare i tempi di avvio e avere il pieno controllo del tuo ambiente di runtime, sfruttando al contempo le funzionalità SageMaker HyperPod dell'infrastruttura e i vantaggi di scalabilità. Questo ti aiuta a mantenere il controllo sulla tua infrastruttura di intelligenza artificiale, pur continuando a beneficiare SageMaker HyperPod del runtime di base ottimizzato.

Puoi sfruttare le immagini di base SageMaker HyperPod ottimizzate per le prestazioni aggiungendo agenti di sicurezza, strumenti di conformità e librerie specializzate, preservando al contempo tutti i vantaggi della formazione distribuita. Grazie a questa funzionalità, non devi più scegliere come in passato tra l’ottimizzazione dell’infrastruttura e le policy di sicurezza organizzative.

L’esperienza AMI personalizzata si integra perfettamente con i flussi di lavoro di sicurezza aziendali consolidati. I team di sicurezza creano immagini rinforzate utilizzando le immagini pubbliche AMIs come base e i team SageMaker HyperPod della piattaforma di intelligenza artificiale possono specificarle personalizzate AMIs durante la creazione o l'aggiornamento dei cluster tramite. SageMaker HyperPod APIs APIs Convalidano la compatibilità delle immagini, gestiscono le autorizzazioni necessarie e mantengono la compatibilità con le versioni precedenti in modo che i flussi di lavoro esistenti continuino a funzionare. Le organizzazioni con protocolli di sicurezza rigorosi non devono più ricorrere all’alternativa più soggetta a errori che prevede l’installazione di agenti di sicurezza al runtime tramite script del ciclo di vita. Allineandosi alle pratiche di sicurezza aziendali anziché costringere le organizzazioni ad adattare i propri protocolli alle limitazioni, la soluzione personalizzata AMIs rimuove una barriera comune all' SageMaker HyperPodadozione per le organizzazioni attente alla sicurezza che eseguono carichi di lavoro di intelligenza artificiale critici.

Per le note di rilascio sugli aggiornamenti pubblici, vedere. AMIs [Rilasci di AMI pubbliche](sagemaker-hyperpod-release-public-ami.md) Per informazioni su come iniziare a creare un'AMI personalizzata e a utilizzarla nei HyperPod cluster, consulta i seguenti argomenti.

**Topics**
+ [Creazione di un’AMI personalizzata](hyperpod-custom-ami-how-to.md)
+ [Gestione dei cluster con funzionalità personalizzate AMIs](hyperpod-custom-ami-cluster-management.md)

# Creazione di un’AMI personalizzata
<a name="hyperpod-custom-ami-how-to"></a>

La pagina seguente spiega come creare un'Amazon Machine Image (AMI) personalizzata utilizzando Amazon SageMaker HyperPod base AMIs. Inizia selezionando un’AMI di base, quindi crea un’AMI personalizzata utilizzando uno dei diversi metodi disponibili per la creazione di nuove immagini, ad esempio la AWS CLI.

## Seleziona un AMI SageMaker HyperPod di base
<a name="hyperpod-custom-ami-select-base"></a>

È possibile selezionare un'AMI di SageMaker HyperPod base tramite uno dei seguenti metodi.

### AWS selezione della console
<a name="hyperpod-custom-ami-console-selection"></a>

È possibile selezionare public SageMaker HyperPod AMIs tramite la AWS console o utilizzando la chiamata `DescribeImages` API. SageMaker HyperPod AMIs sono pubblici e visibili in ogni Account AWS. Puoi trovarli nel catalogo AMI Amazon EC2 applicando un filtro per cercare quelli di AMIs proprietà pubblica di Amazon.

Per trovarli SageMaker HyperPod AMIs nella console:

1. Accedi alla console Amazon EC2.

1. Nel riquadro di navigazione a sinistra, scegliere **AMIs**.

1. Nell’elenco a discesa **Tipo di immagine**, seleziona **Immagini pubbliche**.

1. Nei filtri della barra di ricerca, imposta il filtro **Alias proprietario** su **amazon**.

1. Cerca il AMIs prefisso **HyperPodEKS** e seleziona l'AMI (preferibilmente più recente) adatto al tuo caso d'uso. Ad esempio, puoi scegliere un’AMI Kubernetes 1.31 o Kubernetes 1.30.

### Recupera l'ultimo ID AMI pubblico tramite il AWS CLI
<a name="hyperpod-custom-ami-cli-fetch"></a>

Se desideri utilizzare sempre l'AMI pubblica dell'ultima versione, è più efficiente utilizzare il parametro SageMaker HyperPod SSM pubblico che contiene il valore dell'ID AMI più recente rilasciato da SageMaker HyperPod.

L’esempio seguente spiega come recuperare l’ID dell’AMI più recente con la AWS CLI:

```
aws ssm get-parameter \
  --name "/aws/service/sagemaker-hyperpod/ami/x86_64/eks-1.31-amazon-linux-2/latest/ami-id" \
  --region us-east-1 \
  --query "Parameter.Value" \
  --output text
```

**Nota**  
Sostituisci il nome del parametro con la versione di Kubernetes desiderata. Ad esempio, per utilizzare Kubernetes 1.30, utilizza il parametro seguente: `/aws/service/hyperpod/ami/x86_64/eks-1.30-amazon-linux-2/latest/ami-id`.

## Creazione di un’AMI personalizzata
<a name="hyperpod-custom-ami-build"></a>

Dopo aver selezionato un'AMI SageMaker HyperPod pubblica, usala come AMI di base per creare la tua AMI personalizzata con uno dei seguenti metodi. Nota che questo non è un elenco esaustivo per la creazione AMIs. Puoi usare qualsiasi metodo di tua scelta per costruire AMIs. SageMaker HyperPod non ha alcuna raccomandazione specifica.
+ **AWS Console di gestione**: puoi avviare un'istanza Amazon EC2 utilizzando l' SageMaker HyperPod AMI, effettuare le personalizzazioni desiderate e quindi creare un'AMI da quell'istanza.
+ **AWS CLI**: puoi anche utilizzare il comando `aws ec2 create-image` per creare un’AMI da un’istanza Amazon EC2 esistente dopo aver eseguito la personalizzazione.
+ **HashiCorp Packer**: Packer è uno strumento open source HashiCorp che consente di creare immagini di macchine identiche per più piattaforme da un'unica configurazione di origine. Supporta AMIs la creazione e l' AWS elaborazione di immagini per altri provider di cloud e piattaforme di virtualizzazione.
+ **Image Builder**: EC2 Image Builder è un servizio AWS completamente gestito che semplifica l’automazione delle operazioni di creazione, manutenzione, convalida, condivisione e implementazione di immagini Linux o Windows Server. Per ulteriori informazioni, consulta la [Guida per l'utente di EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html).

### Crea un'AMI personalizzata con AWS KMS crittografia gestita dal cliente
<a name="hyperpod-custom-ami-build-kms"></a>

Le sezioni seguenti descrivono come creare un'AMI personalizzata con una AWS KMS chiave gestita dal cliente per crittografare i volumi HyperPod del cluster. Per ulteriori informazioni sulle chiavi gestite dai clienti HyperPod e sulla concessione delle autorizzazioni necessarie per le policy relative alle chiavi IAM e KMS, consulta. [AWS KMS key Crittografia gestita dal cliente per SageMaker HyperPod](smcluster-cmk.md) Se prevedi di utilizzare un'AMI personalizzata crittografata con una chiave gestita dal cliente, assicurati di crittografare anche il volume root Amazon EBS del HyperPod cluster con la stessa chiave.

#### AWS CLI esempio: creare una nuova AMI utilizzando EC2 Image Builder HyperPod e un'immagine di base
<a name="hyperpod-custom-ami-cli-example"></a>

L’esempio seguente illustra come creare un’AMI utilizzando Image Builder con crittografia AWS KMS :

```
aws imagebuilder create-image-recipe \
    name "hyperpod-custom-recipe" \
    version "1.0.0" \
    parent-image "<hyperpod-base-image-id>" \
    block-device-mappings DeviceName="/dev/xvda",Ebs={VolumeSize=100,VolumeType=gp3,Encrypted=true,KmsKeyId=arn:aws:kms:us-east-1:111122223333:key/key-id,DeleteOnTermination=true}
```

#### Console Amazon EC2: creazione di una nuova AMI da Amazon EC2
<a name="hyperpod-custom-ami-console-example"></a>

Per creare un’AMI da un’istanza Amazon EC2 con la console di Amazon EC2:

1. Fai clic con il pulsante destro del mouse sull’istanza Amazon EC2 personalizzata e scegli **Crea immagine**.

1. Nella sezione **Crittografia**, seleziona **Crittografa snapshot**.

1. Seleziona la chiave KMS dall’elenco a discesa. Ad esempio: `arn:aws:kms:us-east-2:111122223333:key/<your-kms-key-id>` oppure utilizza l’alias della chiave: `alias/<your-hyperpod-key>`.

#### AWS CLI esempio: creare una nuova AMI da un'istanza Amazon EC2
<a name="hyperpod-custom-ami-cli-create-image"></a>

Utilizza il comando `aws ec2 create-image` con la crittografia AWS KMS :

```
aws ec2 create-image \
    instance-id "<instance-id>" \
    name "MyCustomHyperPodAMI" \
    description "Custom HyperPod AMI" \
    block-device-mappings '[
        {
            "DeviceName": "/dev/xvda",
            "Ebs": {
                "Encrypted": true,
                "KmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id",
                "VolumeType": "gp2" 
            }
        }
    ]'
```

# Gestione dei cluster con funzionalità personalizzate AMIs
<a name="hyperpod-custom-ami-cluster-management"></a>

Dopo aver creato l'AMI personalizzata, puoi utilizzarla per creare o aggiornare un SageMaker HyperPod cluster Amazon. Puoi anche aumentare verticalmente o aggiungere gruppi di istanze che utilizzano la nuova AMI.

## Autorizzazioni necessarie per le operazioni del cluster
<a name="hyperpod-custom-ami-permissions"></a>

Aggiungi le seguenti autorizzazioni all'utente amministratore del cluster che gestisce e configura i SageMaker HyperPod cluster. Il seguente esempio di policy include il set minimo di autorizzazioni per gli amministratori dei cluster per eseguire il SageMaker HyperPod core APIs e gestire SageMaker HyperPod i cluster con AMI personalizzate.

Tieni presente che le autorizzazioni di condivisione degli snapshot con AMI e AMI EBS sono incluse tramite le autorizzazioni API `ModifyImageAttribute` e `ModifySnapshotAttribute` nell’ambito della policy seguente. Per definire l’ambito delle autorizzazioni di condivisione, procedi nel seguente modo:
+ Aggiungi tag per controllare le autorizzazioni di condivisione delle AMI nelle AMI e negli snapshot AMI. Ad esempio, puoi taggare l’AMI impostando `AllowSharing` come `true`.
+ Aggiungi la chiave di contesto nella policy per consentire la condivisione AMI solo per i AMIs tag con determinati tag.

La seguente politica è una politica ristretta per garantire che `true` siano consentiti solo i AMIs tag con `AllowSharing` as.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/your-execution-role-name"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreateCluster",
                "sagemaker:DeleteCluster",
                "sagemaker:DescribeCluster",
                "sagemaker:DescribeClusterNode",
                "sagemaker:ListClusterNodes",
                "sagemaker:ListClusters",
                "sagemaker:UpdateCluster",
                "sagemaker:UpdateClusterSoftware",
                "sagemaker:BatchDeleteClusterNodes",
                "eks:DescribeCluster",
                "eks:CreateAccessEntry",
                "eks:DescribeAccessEntry",
                "eks:DeleteAccessEntry",
                "eks:AssociateAccessPolicy",
                "iam:CreateServiceLinkedRole",
                "ec2:DescribeImages",
                "ec2:DescribeSnapshots"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:ModifyImageAttribute",
                "ec2:ModifySnapshotAttribute"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/AllowSharing": "true"
                }
            }
        }
    ]
}
```

------

**Importante**  
Se prevedi di utilizzare un’AMI personalizzata crittografata, assicurati che la tua chiave KMS soddisfi le autorizzazioni descritte in [AWS KMS key Crittografia gestita dal cliente per SageMaker HyperPod](smcluster-cmk.md). Inoltre, assicurati che la chiave KMS dell’AMI personalizzata venga utilizzata anche per crittografare il volume root Amazon EBS del cluster.

## Creazione di un cluster
<a name="hyperpod-custom-ami-api-create"></a>

Puoi specificare l’AMI personalizzata nel campo `ImageId` relativo all’operazione `CreateCluster`.

Gli esempi seguenti mostrano come creare un cluster con un'AMI personalizzata, con e senza una chiave gestita AWS KMS dal cliente per la crittografia dei volumi del cluster.

------
#### [ Standard example ]

L’esempio seguente mostra come creare un cluster con un’AMI personalizzata.

```
aws sagemaker create-cluster \
   --cluster-name <exampleClusterName> \
   --orchestrator 'Eks={ClusterArn='<eks_cluster_arn>'}' \
   --node-provisioning-mode Continuous \
   --instance-groups '{
   "InstanceGroupName": "<exampleGroupName>",
   "InstanceType": "ml.c5.2xlarge",
   "InstanceCount": 2,
   "LifeCycleConfig": {
      "SourceS3Uri": "<s3://amzn-s3-demo-bucket>",
      "OnCreate": "on_create_noop.sh"
   },
   "ImageId": "<your_custom_ami>",
   "ExecutionRole": "<arn:aws:iam::444455556666:role/Admin>",
   "ThreadsPerCore": 1,
   "InstanceStorageConfigs": [
   
        {
            "EbsVolumeConfig": {
                "VolumeSizeInGB": 200
            }
        }
   ]
}' --vpc-config '{
   "SecurityGroupIds": ["<security_group>"],
   "Subnets": ["<subnet>"]
}'
```

------
#### [ Customer managed key example ]

L'esempio seguente mostra come creare un cluster con un'AMI personalizzata specificando la propria chiave gestita AWS KMS dal cliente per crittografare i volumi Amazon EBS del cluster. È possibile specificare diverse chiavi gestite dal cliente per il volume root e il volume di archiviazione dell'istanza. Se non si utilizzano chiavi gestite dal cliente sul `InstanceStorageConfigs` campo, viene utilizzata una chiave KMS di AWS proprietà per crittografare i volumi. Se utilizzi chiavi diverse per il volume principale e per i volumi di storage delle istanze secondarie, imposta le policy delle chiavi KMS richieste su entrambe le chiavi.

```
aws sagemaker create-cluster \
   --cluster-name <exampleClusterName> \
   --orchestrator 'Eks={ClusterArn='<eks_cluster_arn>'}' \
   --node-provisioning-mode Continuous \
   --instance-groups '{
   "InstanceGroupName": "<exampleGroupName>",
   "InstanceType": "ml.c5.2xlarge",
   "InstanceCount": 2,
   "LifeCycleConfig": {
      "SourceS3Uri": "<s3://amzn-s3-demo-bucket>",
      "OnCreate": "on_create_noop.sh"
   },
   "ImageId": "<your_custom_ami>",
   "ExecutionRole": "<arn:aws:iam:us-east-1:444455556666:role/Admin>",
   "ThreadsPerCore": 1,
   "InstanceStorageConfigs": [
             # Root volume configuration
            {
                "EbsVolumeConfig": {
                    "RootVolume": True,
                    "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id"
                }
            },
            # Instance storage volume configuration
            {
                "EbsVolumeConfig": {
                    "VolumeSizeInGB": 100,
                    "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id"
                }
            }
   ]
}' --vpc-config '{
   "SecurityGroupIds": ["<security_group>"],
   "Subnets": ["<subnet>"]
}'
```

------

## Aggiornamento del software del cluster
<a name="hyperpod-custom-ami-api-update"></a>

Per aggiornare un gruppo di istanze esistente sul cluster con la tua AMI personalizzata, puoi utilizzare l’operazione `UpdateClusterSoftware` e specificare l’AMI personalizzata nel campo `ImageId`. Tieni presente che, a meno che non indichi il nome di un gruppo di istanze specifico nella richiesta, la nuova immagine viene applicata a tutti i gruppi di istanze del cluster.

L’esempio seguente mostra come aggiornare il software della piattaforma di un cluster con un’AMI personalizzata:

```
aws sagemaker update-cluster-software \
   --cluster-name <exampleClusterName> \
   --instance-groups <instanceGroupToUpdate> \
   --image-id <customAmiId>
```

## Aumento verticale di un gruppo di istanze
<a name="hyperpod-custom-ami-scale-up"></a>

Gli esempi seguenti mostrano come scalare un gruppo di istanze per un cluster utilizzando un'AMI personalizzata, con e senza l'utilizzo di una chiave gestita AWS KMS dal cliente per la crittografia.

------
#### [ Standard example ]

L’esempio seguente spiega come aumentare verticalmente un gruppo di istanze con un’AMI personalizzata.

```
aws sagemaker update-cluster \
    --cluster-name <exampleClusterName> --instance-groups '[{                  
    "InstanceGroupName": "<exampleGroupName>",
   "InstanceType": "ml.c5.2xlarge",
   "InstanceCount": 2,
   "LifeCycleConfig": {
      "SourceS3Uri": "<s3://amzn-s3-demo-bucket>",
      "OnCreate": "on_create_noop.sh"
   },
   "ExecutionRole": "<arn:aws:iam::444455556666:role/Admin>",
   "ThreadsPerCore": 1,
   "ImageId": "<your_custom_ami>"
}]'
```

------
#### [ Customer managed key example ]

L'esempio seguente mostra come aggiornare e scalare il cluster con un'AMI personalizzata specificando al contempo la propria chiave gestita AWS KMS dal cliente per crittografare i volumi Amazon EBS del cluster. È possibile specificare diverse chiavi gestite dal cliente per il volume root e il volume di storage dell'istanza. Se non si utilizzano chiavi gestite dal cliente sul `InstanceStorageConfigs` campo, viene utilizzata una chiave KMS di AWS proprietà per crittografare i volumi. Se utilizzi chiavi diverse per il volume principale e per i volumi di storage delle istanze secondarie, imposta le policy delle chiavi KMS richieste su entrambe le chiavi.

```
aws sagemaker update-cluster \
    --cluster-name <exampleClusterName> --instance-groups '[{                  
    "InstanceGroupName": "<exampleGroupName>",
   "InstanceType": "ml.c5.2xlarge",
   "InstanceCount": 2,
   "LifeCycleConfig": {
      "SourceS3Uri": "<s3://amzn-s3-demo-bucket>",
      "OnCreate": "on_create_noop.sh"
   },
   "ExecutionRole": "<arn:aws:iam::444455556666:role/Admin>",
   "ThreadsPerCore": 1,
   "ImageId": "<your_custom_ami>",
   "InstanceStorageConfigs": [
             # Root volume configuration
            {
                "EbsVolumeConfig": {
                    "RootVolume": True,
                    "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id"
                }
            },
            # Instance storage volume configuration
            {
                "EbsVolumeConfig": {
                    "VolumeSizeInGB": 100,
                    "VolumeKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/key-id"
                }
            }
   ]
}]'
```

------

## Aggiunta di un gruppo di istanze
<a name="hyperpod-custom-ami-add-instance-group"></a>

L’esempio seguente mostra come aggiungere un gruppo di istanze a un cluster utilizzando un’AMI personalizzata:

```
aws sagemaker update-cluster \
   --cluster-name "<exampleClusterName>" \
   --instance-groups '{
   "InstanceGroupName": "<exampleGroupName>",
   "InstanceType": "ml.c5.2xlarge",
   "InstanceCount": 2,
   "LifeCycleConfig": {
      "SourceS3Uri": "<s3://amzn-s3-demo-bucket>",
      "OnCreate": "on_create_noop.sh"
   },
   "ExecutionRole": "<arn:aws:iam::444455556666:role/Admin>",
   "ThreadsPerCore": 1,
   "ImageId": "<your_custom_ami>"
}' '{
   "InstanceGroupName": "<exampleGroupName2>",
   "InstanceType": "ml.c5.2xlarge",
   "InstanceCount": 1,
   "LifeCycleConfig": {
      "SourceS3Uri": "<s3://amzn-s3-demo-bucket>",
      "OnCreate": "on_create_noop.sh"
   },
   "ExecutionRole": "<arn:aws:iam::444455556666:role/Admin>",
   "ThreadsPerCore": 1,
   "ImageId": "<your_custom_ami>"
}'
```

# Gestione dei cluster SageMaker HyperPod EKS tramite la console SageMaker
<a name="sagemaker-hyperpod-eks-operate-console-ui"></a>

I seguenti argomenti forniscono indicazioni su come gestire SageMaker HyperPod nella console AI. SageMaker 

**Topics**
+ [Creazione di un SageMaker HyperPod cluster con l'orchestrazione di Amazon EKS](sagemaker-hyperpod-eks-operate-console-ui-create-cluster.md)
+ [Navigazione, visualizzazione e modifica dei cluster SageMaker HyperPod](sagemaker-hyperpod-eks-operate-console-ui-browse-view-edit.md)
+ [Eliminazione di un cluster SageMaker HyperPod](sagemaker-hyperpod-eks-operate-console-ui-delete-cluster.md)

# Creazione di un SageMaker HyperPod cluster con l'orchestrazione di Amazon EKS
<a name="sagemaker-hyperpod-eks-operate-console-ui-create-cluster"></a>

Il seguente tutorial dimostra come creare un nuovo SageMaker HyperPod cluster e configurarlo con l'orchestrazione di Amazon EKS tramite l'interfaccia utente della console SageMaker AI.

**Topics**
+ [Crea un cluster](#smcluster-getting-started-eks-console-create-cluster-page)
+ [Distribuire le risorse](#smcluster-getting-started-eks-console-create-cluster-deploy)

## Crea un cluster
<a name="smcluster-getting-started-eks-console-create-cluster-page"></a>

Per accedere alla pagina **SageMaker HyperPod Clusters** e scegliere l'orchestrazione di Amazon EKS, segui questi passaggi.

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

1. Scegli **HyperPod Clusters** nel riquadro di navigazione a sinistra, quindi **Cluster Management**.

1. Nella pagina **SageMaker HyperPod Cluster, scegli **Crea HyperPod ** cluster**. 

1. Nel menu a discesa **Crea HyperPod cluster**, scegli **Orchestrated by** Amazon EKS.

1. Nella pagina di creazione del cluster EKS, scegli l’opzione più adatta alle tue esigenze scegliendo tra le due disponibili.

   1. **Configurazione rapida**: per iniziare subito con le impostazioni predefinite, scegli **Configurazione rapida**. Con questa opzione, l' SageMaker intelligenza artificiale creerà nuove risorse come VPC, sottoreti, gruppi di sicurezza, bucket Amazon S3, ruolo IAM e FSx for Lustre nel processo di creazione del cluster.

   1. **Configurazione personalizzata**: per l’integrazione con le risorse AWS esistenti o per soddisfare requisiti di rete, sicurezza o archiviazione specifici, scegli **Configurazione personalizzata**. Con questa opzione, puoi scegliere di utilizzare le risorse esistenti o crearne di nuove e puoi personalizzare la configurazione in base alle tue esigenze.

## Configurazione rapida
<a name="smcluster-getting-started-eks-console-create-cluster-default"></a>

Nella sezione **Configurazione rapida**, segui questi passaggi per creare il tuo HyperPod cluster con l'orchestrazione di Amazon EKS.

### Impostazioni generali
<a name="smcluster-getting-started-eks-console-create-cluster-default-general"></a>

Specifica un nome per il nuovo cluster. Dopo la creazione del cluster, non è più possibile modificarne il nome.

### Gruppi di istanze
<a name="smcluster-getting-started-eks-console-create-cluster-default-instance-groups"></a>

Per aggiungere un gruppo di istanze, scegli **Aggiungi gruppo**. Ogni gruppo di istanze può essere configurato in modo diverso ed è possibile creare un cluster eterogeneo composto da più gruppi di istanze con vari tipi di istanze. Per implementare un cluster, devi aggiungere almeno un gruppo di istanze. Segui questa procedura per aggiungere un gruppo di istanze.

1. In **Tipo di gruppo di istanze**, scegli **Standard** o **Gruppo di istanze limitato (RIG)**. Di solito si sceglie **Standard** perché fornisce un ambiente di calcolo generico senza limitazioni di sicurezza aggiuntive. **Gruppo di istanze limitato (RIG)** è un ambiente specializzato per la personalizzazione di modelli di fondazione come Amazon Nova. Per ulteriori informazioni sulla configurazione di RIG per la personalizzazione del modello Amazon Nova, consulta la personalizzazione di Amazon Nova nella guida per SageMaker HyperPod l'utente di [Amazon Nova 1.0 o nella guida per l'utente](https://docs.aws.amazon.com//nova/latest/userguide/nova-hp.html) di [Amazon Nova 2.0](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp.html).

1. In **Nome**, specifica un nome per il gruppo di istanze.

1.  In **Capacità dell’istanza**, scegli la capacità on demand o un piano di addestramento per riservare le tue risorse di calcolo.

1. Per **Tipo di istanza**, scegli l’istanza per il gruppo di istanze.
**Importante**  
Assicurati di selezionare un tipo di istanza con quote sufficienti e un numero adeguato di indirizzi IP non assegnati per il tuo account. Per visualizzare o richiedere quote aggiuntive, consulta [SageMaker HyperPod quote](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas).

1. In **Quantità istanze**. specifica un numero intero che non sia maggiore della quota dell’istanza per l’utilizzo del cluster. Per questo tutorial, inserisci **1** per tutti e tre i gruppi.

1. In **Zona di disponibilità di destinazione**, scegli la zona di disponibilità in cui allocare le istanze. La zona di disponibilità deve corrispondere alla posizione della capacità di calcolo accelerata.

1. Per **Volume di archiviazione aggiuntivo per istanza (GB) (facoltativo)**, specifica un numero intero compreso tra 1 e 16.384 per impostare la dimensione di un volume Elastic Block Store (EBS) aggiuntivo in gigabyte (GB). Il volume EBS è collegato a ciascuna istanza del gruppo di istanze. Il percorso di montaggio predefinito per il volume EBS aggiuntivo è `/opt/sagemaker`. Dopo aver creato correttamente il cluster, è possibile accedere tramite SSH alle istanze del cluster (nodi) e verificare che il volume EBS sia montato correttamente eseguendo il comando `df -h`. Il collegamento di un volume EBS aggiuntivo fornisce un’archiviazione stabile, fuori istanza e con persistenza indipendente, come descritto nella sezione [Amazon EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html) in *Amazon Elastic Block Store User Guide*.

1. Per **Controlli approfonditi dell’integrità delle istanze**, scegli un’opzione. I controlli dell’integrità approfonditi monitorano l’integrità dell’istanza durante la creazione e dopo gli aggiornamenti software, ripristinando automaticamente le istanze difettose con riavvii o sostituzioni, se abilitati.

1. Se il tuo tipo di istanza supporta il partizionamento GPU con Multi-Instance GPU (MIG), puoi abilitare la configurazione delle partizioni GPU per il gruppo di istanze. Il partizionamento GPU consente di suddividerlo in partizioni più piccole e isolate per un migliore utilizzo delle risorse. GPUs Per ulteriori informazioni, consulta [Utilizzo delle partizioni GPU in Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md).

   1. Attiva **Usa la partizione GPU per abilitare il partizionamento GPU** per questo gruppo di istanze.

   1. Seleziona un **profilo di partizione GPU** tra le opzioni disponibili per il tipo di istanza. Ogni profilo definisce la configurazione delle slice GPU e l'allocazione della memoria.

1. Scegli **Aggiungi gruppo di istanze**.

### Impostazioni predefinite della configurazione rapida
<a name="smcluster-getting-started-eks-console-create-cluster-default-settings"></a>

Questa sezione elenca tutte le impostazioni predefinite per la creazione del cluster, incluse tutte le nuove AWS risorse che verranno create durante il processo di creazione del cluster. Verificare le impostazioni predefinite.

## Configurazione personalizzata
<a name="smcluster-getting-started-eks-console-create-cluster-custom"></a>

Nella sezione **Configurazione personalizzata**, segui questi passaggi per creare il tuo primo HyperPod cluster con l'orchestrazione di Amazon EKS.

### Impostazioni generali
<a name="smcluster-getting-started-eks-console-create-cluster-custom-general"></a>

Specifica un nome per il nuovo cluster. Dopo la creazione del cluster, non è più possibile modificarne il nome.

In **Ripristino dell’istanza**, scegli **Automatico *(consigliato)*** o **Nessuno**. 

### Rete
<a name="smcluster-getting-started-eks-console-create-cluster-custom-network"></a>

Configura le impostazioni di rete all'interno del cluster e in-and-out del cluster. Per l'orchestrazione del SageMaker HyperPod cluster con Amazon EKS, il VPC viene impostato automaticamente su quello configurato con il cluster EKS selezionato.

1. Per quanto riguarda il **VPC**, scegli il tuo VPC se ne hai già uno che consente all' SageMaker IA di accedere al tuo VPC. Per creare un nuovo VPC, segui le istruzioni in [Create a VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) in *Amazon Virtual Private Cloud User Guide*. Puoi lasciarlo su **Nessuno** per utilizzare il VPC SageMaker AI predefinito.

1. Per il **blocco VPC IPv4 CIDR**, inserisci l'IP iniziale del tuo VPC.

1. Per le **zone di disponibilità**, scegli le zone di disponibilità (AZ) in cui HyperPod verranno create le sottoreti per il tuo cluster. Scegli AZs quella che corrisponde alla posizione della tua capacità di elaborazione accelerata.

1. In **Gruppi di sicurezza**, scegli gruppi di sicurezza collegati al cluster Amazon EKS o il cui traffico in entrata è consentito dal gruppo di sicurezza associato al cluster Amazon EKS. Per creare nuovi gruppi di sicurezza, vai alla console di Amazon VPC.

### Orchestrazione
<a name="smcluster-getting-started-eks-console-create-cluster-custom-orchestration"></a>

Segui questa procedura per creare o selezionare un cluster Amazon EKS da utilizzare come orchestratore. 

1. In **Cluster EKS**, scegli di creare un nuovo cluster Amazon EKS o di utilizzarne uno esistente. 

   Se devi creare un nuovo cluster EKS, puoi farlo dalla sezione del cluster EKS senza dover aprire la console di Amazon EKS.
**Nota**  
La sottorete VPC scelta HyperPod deve essere privata.   
Dopo aver inviato una nuova richiesta di creazione di un cluster EKS, attendi che il cluster EKS diventi `Active`.

1. In **Versione Kubernetes**, scegli una versione dal menu a discesa. Per ulteriori informazioni sulle versioni di Kubernetes, consulta [Understand the Kubernetes version lifecycle on EKS](https://docs.aws.amazon.com//eks/latest/userguide/kubernetes-versions.html) in *Amazon EKS User Guide*.

1. In **Operatori**, scegli **Usa grafici e componenti aggiuntivi Helm predefiniti** o **Non installare operatori**. L’opzione predefinita è **Usa grafici e componenti aggiuntivi Helm predefiniti**, che verrà utilizzata per installare gli operatori sul cluster EKS. Per ulteriori informazioni sui grafici e sui componenti aggiuntivi di Helm predefiniti, consulta [https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart/HyperPodHelmChart](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart/HyperPodHelmChart)dal repository. GitHub Per ulteriori informazioni, consulta [Installazione di pacchetti sul cluster Amazon EKS con Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md).

1. In **Operatori abilitati**, visualizza l’elenco degli operatori abilitati. Per modificare gli operatori, deseleziona la casella in alto e scegli gli operatori da abilitare per il cluster EKS. 
**Nota**  
Per utilizzarlo HyperPod con EKS, è necessario installare i grafici Helm e i componenti aggiuntivi che abilitano gli operatori sul cluster EKS. Questi componenti configurano EKS come piano di controllo HyperPod e forniscono la configurazione necessaria per la gestione e l'orchestrazione del carico di lavoro.

### Gruppi di istanze
<a name="smcluster-getting-started-eks-console-create-cluster-custom-instance-groups"></a>

Per aggiungere un gruppo di istanze, scegli **Aggiungi gruppo**. Ogni gruppo di istanze può essere configurato in modo diverso ed è possibile creare un cluster eterogeneo composto da più gruppi di istanze con vari tipi di istanze. Per implementare un cluster, devi aggiungere almeno un gruppo di istanze. Segui questa procedura per aggiungere un gruppo di istanze.

1. In **Tipo di gruppo di istanze**, scegli **Standard** o **Gruppo di istanze limitato (RIG)**. Di solito si sceglie **Standard** perché fornisce un ambiente di calcolo generico senza limitazioni di sicurezza aggiuntive. **Gruppo di istanze limitato (RIG)** è un ambiente specializzato per la personalizzazione di modelli di fondazione come Amazon Nova. Per ulteriori informazioni sulla configurazione di RIG per la personalizzazione del modello Amazon Nova, consulta la personalizzazione di Amazon Nova nella guida per SageMaker HyperPod l'utente di [Amazon Nova 1.0 o nella guida per l'utente](https://docs.aws.amazon.com//nova/latest/userguide/nova-hp.html) di [Amazon Nova 2.0](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp.html).

1. In **Nome**, specifica un nome per il gruppo di istanze.

1.  In **Capacità dell’istanza**, scegli la capacità on demand o un piano di addestramento per riservare le tue risorse di calcolo.

1. Per **Tipo di istanza**, scegli l’istanza per il gruppo di istanze.
**Importante**  
Assicurati di selezionare un tipo di istanza con quote sufficienti e un numero adeguato di indirizzi IP non assegnati per il tuo account. Per visualizzare o richiedere quote aggiuntive, consulta [SageMaker HyperPod quote](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas).

1. In **Quantità istanze**. specifica un numero intero che non sia maggiore della quota dell’istanza per l’utilizzo del cluster. Per questo tutorial, inserisci **1** per tutti e tre i gruppi.

1. In **Zona di disponibilità di destinazione**, scegli la zona di disponibilità in cui allocare le istanze. La zona di disponibilità deve corrispondere alla posizione della capacità di calcolo accelerata.

1. Per **Volume di archiviazione aggiuntivo per istanza (GB) (facoltativo)**, specifica un numero intero compreso tra 1 e 16.384 per impostare la dimensione di un volume Elastic Block Store (EBS) aggiuntivo in gigabyte (GB). Il volume EBS è collegato a ciascuna istanza del gruppo di istanze. Il percorso di montaggio predefinito per il volume EBS aggiuntivo è `/opt/sagemaker`. Dopo aver creato correttamente il cluster, è possibile accedere tramite SSH alle istanze del cluster (nodi) e verificare che il volume EBS sia montato correttamente eseguendo il comando `df -h`. Il collegamento di un volume EBS aggiuntivo fornisce un’archiviazione stabile, fuori istanza e con persistenza indipendente, come descritto nella sezione [Amazon EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html) in *Amazon Elastic Block Store User Guide*.

1. Per **Controlli approfonditi dell’integrità delle istanze**, scegli un’opzione. I controlli dell’integrità approfonditi monitorano l’integrità dell’istanza durante la creazione e dopo gli aggiornamenti software, ripristinando automaticamente le istanze difettose con riavvii o sostituzioni, se abilitati. Per ulteriori informazioni, consulta [Controlli dell’integrità approfonditi](sagemaker-hyperpod-eks-resiliency-deep-health-checks.md)

1. Per **Usa la partizione GPU: facoltativo**, se il tipo di istanza supporta il partizionamento GPU con Multi-Instance GPU (MIG), puoi abilitare questa opzione per configurare il profilo di partizione GPU per il gruppo di istanze. Il partizionamento GPU consente di suddividerlo in partizioni più piccole e isolate per un migliore utilizzo delle risorse. GPUs Per ulteriori informazioni, consulta [Utilizzo delle partizioni GPU in Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md).

   1. Attiva **Usa la partizione GPU per abilitare il partizionamento GPU** per questo gruppo di istanze.

   1. Seleziona un **profilo di partizione GPU** tra le opzioni disponibili per il tipo di istanza. Ogni profilo definisce la configurazione delle slice GPU e l'allocazione della memoria.

1. Scegli **Aggiungi gruppo di istanze**.

### Script del ciclo di vita
<a name="smcluster-getting-started-eks-console-create-cluster-custom-lifecycle"></a>

Puoi scegliere di utilizzare gli script del ciclo di vita predefiniti o quelli personalizzati, che verranno archiviati nel tuo bucket Amazon S3. [Puoi visualizzare gli script del ciclo di vita predefiniti nell'archivio Awesome Distributed Training. GitHub ](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/7.sagemaker-hyperpod-eks/LifecycleScripts) Per ulteriori informazioni sugli script del ciclo di vita, consulta [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md).

1. In **Script del ciclo di vita**, scegli tra script del ciclo di vita predefiniti o personalizzati.

1. In **Bucket S3 per gli script del ciclo di vita**, scegli se creare un nuovo bucket o utilizzare un bucket esistente per archiviare gli script del ciclo di vita.

### Permissions
<a name="smcluster-getting-started-eks-console-create-cluster-custom-permissions"></a>

Scegli o crea un ruolo IAM che HyperPod consenta di eseguire e accedere alle AWS risorse necessarie per tuo conto. Per ulteriori informazioni, consulta [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod).

### Archiviazione
<a name="smcluster-getting-started-eks-console-create-cluster-custom-storage"></a>

Configura il file system FSx for Lustre da fornire sul HyperPod cluster.

1. Per **File system**, scegliete un file system FSx for Lustre esistente, FSx per crearne uno nuovo, oppure non installatene uno FSx per Lustre.

1. In **Throughput per unità di archiviazione**, scegli il throughput che sarà disponibile per ogni TiB di archiviazione allocata.

1. In **Capacità di archiviazione**, inserisci un valore di capacità in TB.

1. Per **Tipo di compressione dei dati**, scegliete di **LZ4**abilitare la compressione dei dati.

1. In **Versione Lustre**, visualizza il valore consigliato per i nuovi file system.

### Tag (facoltativo)
<a name="smcluster-getting-started-eks-console-create-cluster-tags"></a>

Per i **tag: *facoltativo***, aggiungi coppie di chiavi e valori al nuovo cluster e gestisci il cluster come AWS risorsa. Per ulteriori informazioni, consulta [Tagging delle risorse AWS](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html).

## Distribuire le risorse
<a name="smcluster-getting-started-eks-console-create-cluster-deploy"></a>

Dopo aver completato le configurazioni del cluster utilizzando **Configurazione rapida** o **Configurazione personalizzata**, scegli l’opzione seguente per avviare il provisioning delle risorse e la creazione del cluster.
+  **Invia**: l' SageMaker IA inizierà a fornire le risorse di configurazione predefinite e a creare il cluster. 
+ **Scarica i parametri del CloudFormation modello**: scaricherai il file JSON dei parametri di configurazione ed eseguirai il AWS CLI comando per distribuire lo CloudFormation stack per fornire le risorse di configurazione e creare il cluster. Se necessario, puoi modificare il file JSON dei parametri scaricato. Se scegli questa opzione, consulta [Creazione di SageMaker HyperPod cluster utilizzando modelli CloudFormation](smcluster-getting-started-eks-console-create-cluster-cfn.md) per ulteriori informazioni.

# Navigazione, visualizzazione e modifica dei cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-operate-console-ui-browse-view-edit"></a>

Utilizza le seguenti istruzioni per sfogliare, visualizzare e modificare SageMaker HyperPod i cluster orchestrati da Amazon EKS nella SageMaker console AI.

**Topics**
+ [Per sfogliare i tuoi cluster SageMaker HyperPod](#sagemaker-hyperpod-eks-operate-console-ui-browse-clusters)
+ [Per visualizzare i dettagli di ogni cluster SageMaker HyperPod](#sagemaker-hyperpod-eks-operate-console-ui-view-details-of-clusters)
+ [Per modificare un cluster SageMaker HyperPod](#sagemaker-hyperpod-eks-operate-console-ui-edit-clusters)

## Per sfogliare i tuoi cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-operate-console-ui-browse-clusters"></a>

In **Cluster** nella SageMaker HyperPod pagina della console SageMaker AI, tutti i cluster creati devono essere elencati nella sezione **Cluster**, che fornisce una visualizzazione riepilogativa dei cluster, del loro ARNs stato e dell'ora di creazione.

## Per visualizzare i dettagli di ogni cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-operate-console-ui-view-details-of-clusters"></a>

In **Clusters** nella SageMaker HyperPod pagina della console SageMaker AI, i nomi dei cluster vengono attivati come collegamenti. Scegli il link del nome del cluster per visualizzare i dettagli di ogni cluster.

## Per modificare un cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-operate-console-ui-edit-clusters"></a>

1. In **Cluster** nel riquadro principale della SageMaker HyperPod console, scegli il cluster che desideri aggiornare.

1. Seleziona il cluster e scegli **Modifica**.

1. Nella pagina **Modifica <your-cluster>**, puoi modificare le configurazioni dei gruppi di istanze esistenti, aggiungere altri gruppi di istanze, eliminare i gruppi di istanze e modificare i tag per il cluster. Dopo aver apportato le modifiche, scegli **Invia**. 

   1. Nella sezione **Configura gruppi di istanze**, puoi aggiungere altri gruppi di istanze scegliendo **Crea gruppo di istanze**.

   1. Nella sezione **Configura gruppi di istanze**, puoi scegliere **Modifica** per modificarne la configurazione o **Elimina** per rimuovere definitivamente il gruppo di istanze.
**Importante**  
Durante l’eliminazione di un gruppo di istanze, considera i seguenti punti:  
Il SageMaker HyperPod cluster deve sempre mantenere almeno un gruppo di istanze.
Assicurati che venga eseguito il backup di tutti i dati critici prima della rimozione.
Il processo di rimozione non può essere annullato.
**Nota**  
L’eliminazione di un gruppo di istanze comporterà la terminazione di tutte le risorse di calcolo associate a quel gruppo.

   1. Nella sezione **Tag**, puoi aggiornare i tag per il cluster.

# Eliminazione di un cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-operate-console-ui-delete-cluster"></a>

Utilizza le seguenti istruzioni per eliminare SageMaker HyperPod i cluster orchestrati da Amazon EKS nella SageMaker console AI.

1. In **Clusters** nel riquadro principale della SageMaker HyperPod console, scegli il cluster che desideri eliminare.

1. Seleziona il cluster e scegli **Elimina**.

1. Nella finestra pop-up per l’eliminazione del cluster, esamina attentamente le informazioni sul cluster per verificare che il cluster sia quello desiderato.

1. Dopo aver esaminato le informazioni sul cluster, scegli **Sì, elimina il cluster**.

1. Digita **delete** nel campo di testo per confermare l’eliminazione.

1. Scegli **Elimina** nell’angolo in basso a destra della finestra pop-up per completare l’invio della richiesta di eliminazione del cluster.

**Nota**  
Se l'eliminazione del cluster fallisce a causa delle politiche di governance delle SageMaker HyperPod attività allegate, dovrai farlo[Eliminazione delle policy](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete.md).

# Creazione di SageMaker HyperPod cluster utilizzando modelli CloudFormation
<a name="smcluster-getting-started-eks-console-create-cluster-cfn"></a>

È possibile creare SageMaker HyperPod cluster utilizzando i CloudFormation modelli per HyperPod. È necessario eseguire l'installazione AWS CLI per procedere.

**Topics**
+ [Configura le risorse nella console e distribuiscile utilizzando CloudFormation](#smcluster-getting-started-eks-console-create-cluster-deploy-console)
+ [Configura e distribuisci le risorse utilizzando CloudFormation](#smcluster-getting-started-eks-console-create-cluster-deploy-cfn)

## Configura le risorse nella console e distribuiscile utilizzando CloudFormation
<a name="smcluster-getting-started-eks-console-create-cluster-deploy-console"></a>

È possibile configurare le risorse utilizzando Console di gestione AWS e distribuire utilizzando i CloudFormation modelli.

Segui questa procedura.

1. *Invece di scegliere **Invia***, scegli **Scarica i parametri del CloudFormation modello** alla fine del tutorial in[Guida introduttiva all' SageMaker HyperPod utilizzo della console SageMaker AI](smcluster-getting-started-slurm-console.md). Il tutorial contiene importanti informazioni di configurazione, necessarie per creare correttamente il cluster.
**Importante**  
Se scegli **Invia**, non sarai in grado di implementare un cluster con lo stesso nome finché non elimini il cluster.

   Dopo aver scelto **Scarica i parametri del CloudFormation modello**, **la finestra Utilizzo del file di configurazione per creare il cluster tramite** la AWS CLI finestra apparirà sul lato destro della pagina.

1. Nella finestra **Utilizzo del file di configurazione per creare il cluster con la AWS CLI**, scegli **Scarica il file dei parametri di configurazione**. Il file verrà scaricato sul tuo computer. Puoi modificare il file JSON di configurazione in base alle tue esigenze o lasciarlo così com’è, se non sono necessarie modifiche.

1. In un terminale, vai alla posizione del file dei parametri `file://params.json`.

1. Esegui il AWS CLI comando [create-stack](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/create-stack.html) per distribuire lo CloudFormation stack che fornirà le risorse configurate e creerà il cluster. HyperPod

   ```
   aws cloudformation create-stack 
       --stack-name my-stack
       --template-url https://aws-sagemaker-hyperpod-cluster-setup.amazonaws.com/templates-slurm/main-stack-slurm-based-template.yaml
       --parameters file://params.json
       --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
   ```

1. [Per visualizzare lo stato del provisioning delle risorse, accedi alla console. CloudFormation ](https://console.aws.amazon.com/cloudformation)

   **Una volta completata la creazione del cluster, visualizza il nuovo cluster in Cluster nel riquadro principale della console.** SageMaker HyperPod Puoi anche controllarne lo stato nella colonna **Stato**.

1. Quando lo stato del cluster diventa `InService`, puoi iniziare ad accedere ai nodi del cluster. Per accedere ai nodi del cluster e iniziare a eseguire carichi di lavoro di ML, consulta [Lavori su cluster SageMaker HyperPod](sagemaker-hyperpod-run-jobs-slurm.md).

## Configura e distribuisci le risorse utilizzando CloudFormation
<a name="smcluster-getting-started-eks-console-create-cluster-deploy-cfn"></a>

È possibile configurare e distribuire risorse utilizzando i CloudFormation modelli per. SageMaker HyperPod

Segui questa procedura.

1. Scarica un CloudFormation modello per SageMaker HyperPod dal [sagemaker-hyperpod-cluster-setup](https://github.com/aws/sagemaker-hyperpod-cluster-setup) GitHub repository.

1. Esegui il AWS CLI comando [create-stack](https://docs.aws.amazon.com//cli/latest/reference/cloudformation/create-stack.html) per distribuire lo CloudFormation stack che fornirà le risorse configurate e creerà il cluster. HyperPod

   ```
   aws cloudformation create-stack 
       --stack-name my-stack
       --template-url URL_of_the_file_that_contains_the_template_body
       --parameters file://params.json
       --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
   ```

1. Per visualizzare lo stato del provisioning delle risorse, accedere alla console CloudFormation .

   Una volta completata la creazione del cluster, visualizza il nuovo cluster in **Clusters nel riquadro principale** della console. SageMaker HyperPod Puoi anche controllarne lo stato nella colonna **Stato**.

1. Quando lo stato del cluster diventa `InService`, puoi iniziare ad accedere ai nodi del cluster.

# Gestione dei cluster SageMaker HyperPod EKS utilizzando il AWS CLI
<a name="sagemaker-hyperpod-eks-operate-cli-command"></a>

I seguenti argomenti forniscono indicazioni sulla scrittura di file di richiesta SageMaker HyperPod API in formato JSON e sulla loro esecuzione utilizzando i comandi. AWS CLI 

**Topics**
+ [Creazione di un cluster SageMaker HyperPod](sagemaker-hyperpod-eks-operate-cli-command-create-cluster.md)
+ [Recupero dei dettagli del cluster SageMaker HyperPod](sagemaker-hyperpod-eks-operate-cli-command-cluster-details.md)
+ [Aggiornamento SageMaker HyperPod della configurazione del cluster](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md)
+ [Aggiornamento del software della SageMaker HyperPod piattaforma](sagemaker-hyperpod-eks-operate-cli-command-update-cluster-software.md)
+ [Accesso ai SageMaker HyperPod nodi del cluster](sagemaker-hyperpod-eks-operate-access-through-terminal.md)
+ [Ridimensionamento di un cluster SageMaker HyperPod](smcluster-scale-down.md)
+ [Eliminazione di un cluster SageMaker HyperPod](sagemaker-hyperpod-eks-operate-cli-command-delete-cluster.md)

# Creazione di un cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-operate-cli-command-create-cluster"></a>

Scopri come creare SageMaker HyperPod cluster orchestrati da Amazon EKS utilizzando. AWS CLI

1. Prima di creare un cluster: SageMaker HyperPod 

   1. Assicurati di disporre di un cluster Amazon EKS funzionante. Per istruzioni dettagliate su come configurare un cluster Amazon EKS, consulta [Create an Amazon EKS cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) in *Amazon EKS User Guide*.

   1. Installa il grafico Helm come indicato in [Installazione di pacchetti sul cluster Amazon EKS con Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md). Se crei un [ SageMaker HyperPod cluster Amazon Nova](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-hp-cluster.html), avrai bisogno di un grafico Helm separato.

1. Prepara uno script di configurazione del ciclo di vita e caricalo in un bucket Amazon S3, ad esempio `s3://amzn-s3-demo-bucket/Lifecycle-scripts/base-config/`.

   Per iniziare rapidamente, scarica lo script di esempio [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/7.sagemaker-hyperpod-eks/LifecycleScripts/base-config/on_create.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/7.sagemaker-hyperpod-eks/LifecycleScripts/base-config/on_create.sh)dal GitHub repository AWS Home Distributed Training e caricalo nel bucket S3. Puoi anche includere istruzioni di configurazione aggiuntive, una serie di script di configurazione o comandi da eseguire durante la fase di provisioning del HyperPod cluster.
**Importante**  
Se crei un [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) collegando solo la [https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-cluster.html) gestita, il tuo cluster ha accesso ai bucket Amazon S3 con il prefisso `sagemaker-` specifico.

   Se crei un gruppo di istanze limitato, non devi scaricare ed eseguire lo script del ciclo di vita. Devi eseguire `install_rig_dependencies.sh`, invece. 

   I prerequisiti per eseguire lo script `install_rig_dependencies.sh` includono:
   + AWS Node (CNI) e CoredNS devono essere entrambi abilitati. Si tratta di componenti aggiuntivi EKS standard che non sono gestiti dall' SageMaker HyperPod Helm standard, ma possono essere facilmente abilitati nella console EKS alla voce Componenti aggiuntivi.
   +  Il grafico SageMaker HyperPod Helm standard deve essere installato prima di eseguire questo script.

   Lo script `install_rig_dependencies.sh` esegue queste operazioni. 
   + `aws-node` (CNI): nuovo DaemonSet `rig-aws-node` creato; applicate patch al `aws-node` esistente per evitare nodi RIG.
   + `coredns`: Convertito in Daemonset per supportare l'uso di Multi-Rig e RIGs prevenire il sovraccarico.
   + training-operators: aggiornato con le tolleranze di taint dei worker RIG e con nodeAffinity che favorisce le istanze non RIG.
   + Elastic Fabric Adapter (EFA): aggiornato per tollerare il taint dei worker RIG e utilizzare immagini dei container corrette per ogni Regione.

1. Prepara un file di richiesta [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)API in formato JSON. Per `ExecutionRole`, fornisci l’ARN del ruolo IAM che hai creato con la policy gestita `AmazonSageMakerClusterInstanceRolePolicy` nella sezione [Ruolo IAM per SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod).
**Nota**  
Assicurati che il SageMaker HyperPod cluster sia distribuito all'interno dello stesso Virtual Private Cloud (VPC) del cluster Amazon EKS. Le sottoreti e i gruppi di sicurezza specificati nella configurazione del SageMaker HyperPod cluster devono consentire la connettività di rete e la comunicazione con l'endpoint del server API del cluster Amazon EKS.

   ```
   // create_cluster.json
   {
       "ClusterName": "string",
       "InstanceGroups": [{
           "InstanceGroupName": "string",
           "InstanceType": "string",
           "InstanceCount": number,
           "LifeCycleConfig": {
               "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/",
               "OnCreate": "on_create.sh"
           },
           "ExecutionRole": "string",
           "ThreadsPerCore": number,
           "OnStartDeepHealthChecks": [
               "InstanceStress", "InstanceConnectivity"
           ]
       }],
       "RestrictedInstanceGroups": [ 
         { 
            "EnvironmentConfig": { 
               "FSxLustreConfig": { 
                  "PerUnitStorageThroughput": number,
                  "SizeInGiB": number
               }
            },
            "ExecutionRole": "string",
            "InstanceCount": number,
            "InstanceGroupName": "string",
            "InstanceStorageConfigs": [ 
               { ... }
            ],
            "InstanceType": "string",
            "OnStartDeepHealthChecks": [ "string" ],
            "OverrideVpcConfig": { 
               "SecurityGroupIds": [ "string" ],
               "Subnets": [ "string" ]
            },
            "ScheduledUpdateConfig": { 
               "DeploymentConfig": { 
                  "AutoRollbackConfiguration": [ 
                     { 
                        "AlarmName": "string"
                     }
                  ],
                  "RollingUpdatePolicy": { 
                     "MaximumBatchSize": { 
                        "Type": "string",
                        "Value": number
                     },
                     "RollbackMaximumBatchSize": { 
                        "Type": "string",
                        "Value": number
                     }
                  },
                  "WaitIntervalInSeconds": number
               },
               "ScheduleExpression": "string"
            },
            "ThreadsPerCore": number,
            "TrainingPlanArn": "string"
         }
      ],
       "VpcConfig": {
           "SecurityGroupIds": ["string"],
           "Subnets": ["string"]
       },
       "Tags": [{
           "Key": "string",
           "Value": "string"
       }],
       "Orchestrator": {
           "Eks": {
               "ClusterArn": "string",
               "KubernetesConfig": {
                   "Labels": {
                       "nvidia.com/mig.config": "all-3g.40gb"
                   }
               }
           }
       },
       "NodeRecovery": "Automatic"
   }
   ```

   Tieni presente quanto segue durante la configurazione per creare un nuovo SageMaker HyperPod cluster associato a un cluster EKS.
   + Puoi configurare fino a 20 gruppi di istanze nel parametro `InstanceGroups`.
   + Per `Orchestator.Eks.ClusterArn`, specifica l’ARN del cluster EKS da utilizzare come orchestratore.
   + Per `OnStartDeepHealthChecks`, aggiungi `InstanceStress` e `InstanceConnectivity` per abilitare [Controlli dell’integrità approfonditi](sagemaker-hyperpod-eks-resiliency-deep-health-checks.md).
   + Per`NodeRecovery`, specificare di `Automatic` abilitare il ripristino automatico dei nodi. SageMaker HyperPod sostituisce o riavvia le istanze (nodi) quando l'agente di monitoraggio dello stato rileva problemi.
   + Per il `Tags` parametro, è possibile aggiungere tag personalizzati per la gestione del SageMaker HyperPod cluster come risorsa. AWS Puoi aggiungere tag al cluster con la stessa procedura utilizzata per altri servizi AWS che supportano il tagging. Per ulteriori informazioni generali sul tagging delle risorse AWS , consulta [Tagging AWS Resources User Guide](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html).
   + Per il parametro `VpcConfig`, specifica le informazioni del VPC utilizzato nel cluster EKS. Le sottoreti devono essere private.
   + In alternativa`Orchestrator.Eks.KubernetesConfig.Labels`, puoi specificare le etichette Kubernetes da applicare ai nodi. Per abilitare il partizionamento della GPU con Multi-Instance GPU (MIG), aggiungi l'etichetta con il profilo MIG desiderato. `nvidia.com/mig.config` Ad esempio, `"nvidia.com/mig.config": "all-3g.40gb"` configura tutto con il profilo di partizione 3g.40gb. GPUs Per ulteriori informazioni sul partizionamento della GPU e sui profili disponibili, vedere. [Utilizzo delle partizioni GPU in Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md)

1. Utilizza il comando [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html) come segue.
**Importante**  
Quando esegui il comando `create-cluster` con il parametro `--cli-input-json`, devi includere il prefisso `file://` prima del percorso completo del file JSON. Questo prefisso è necessario per garantire che AWS CLI riconosca l'input come percorso di file. L’omissione del prefisso `file://` genera un errore di analisi del parametro.

   ```
   aws sagemaker create-cluster \
       --cli-input-json file://complete/path/to/create_cluster.json
   ```

   Questo dovrebbe restituire l’ARN del nuovo cluster.
**Importante**  
Per rimuovere un gruppo di istanze limitato (RIG), puoi utilizzare l’operazione [update-cluster](https://docs.aws.amazon.com//cli/latest/reference/ecs/update-cluster.html). Quando un RIG viene ridimensionato a 0, il file system FSx for Lustre non verrà eliminato. Per rimuovere completamente il file system FSx for Lustre, è necessario rimuovere completamente il RIG.   
La rimozione di un RIG non eliminerà gli artefatti archiviati nel bucket Amazon S3 gestito dal servizio. Tuttavia, è necessario assicurarsi che tutti gli artefatti nel file system FSx for Lustre siano completamente sincronizzati con Amazon S3 prima della rimozione. Ti consigliamo di attendere almeno 30 minuti dopo il completamento del processo per garantire la sincronizzazione completa di tutti gli artefatti dal file system FSx for Lustre al bucket Amazon S3 gestito dal servizio.
**Importante**  
Quando si utilizza una On-Demand Capacity Reservation (ODCR) onboarding, è necessario mappare il gruppo di istanze allo stesso ID della zona di disponibilità (ID AZ) dell'ODCR impostando una sottorete nell'ID AZ corrispondente. `OverrideVpcConfig`  
CRITICO: verifica la `OverrideVpcConfig` configurazione prima dell'implementazione per evitare di incorrere in addebiti duplicati sia per ODCR che per On-Demand Capacity.

# Recupero dei dettagli del cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-operate-cli-command-cluster-details"></a>

Scopri come recuperare i dettagli SageMaker HyperPod del cluster utilizzando. AWS CLI

## Descrizione di un cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-describe-cluster"></a>

Esegui [describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster.html) per verificare lo stato del cluster. Puoi specificare il nome o l’ARN del cluster.

```
aws sagemaker describe-cluster --cluster-name your-hyperpod-cluster
```

Quando lo stato del cluster diventa **InService**, procedi con la fase successiva. Utilizzando questa API, puoi anche recuperare i messaggi di errore dall'esecuzione di altre operazioni HyperPod API.

## Elenco dei dettagli dei nodi del cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-list-cluster-nodes"></a>

Esegui [list-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-cluster-nodes.html)per controllare le informazioni chiave dei nodi del cluster.

```
aws sagemaker list-cluster-nodes --cluster-name your-hyperpod-cluster
```

Questo restituisce una risposta e `InstanceId` è ciò che ti serve per l’accesso (con `aws ssm`).

## Descrizione dei dettagli di un nodo del cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-describe-cluster-node"></a>

Esegui [describe-cluster-node](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster-node.html)per recuperare i dettagli di un nodo del cluster. È possibile ottenere l'ID del nodo del cluster dall' list-cluster-nodesoutput. Puoi specificare il nome o l’ARN del cluster.

```
aws sagemaker describe-cluster-node \
    --cluster-name your-hyperpod-cluster \
    --node-id i-111222333444555aa
```

## Elenco dei cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-list-clusters"></a>

Esegui [list-clusters](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-clusters.html) per elencare tutti i cluster del tuo account.

```
aws sagemaker list-clusters
```

Puoi anche aggiungere ulteriori flag per filtrare l’elenco dei cluster. Per ulteriori informazioni su cosa viene eseguito questo comando a basso livello e sui flag aggiuntivi per il filtraggio, consulta il riferimento all'[ListClusters](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusters.html)API.

# Aggiornamento SageMaker HyperPod della configurazione del cluster
<a name="sagemaker-hyperpod-eks-operate-cli-command-update-cluster"></a>

Esegui [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) per aggiornare la configurazione di un cluster.

**Nota**  
Considerazioni importanti:  
Non è possibile modificare le informazioni sul cluster EKS a cui il HyperPod cluster è associato dopo la creazione del cluster. 
Se sul cluster sono in esecuzione controlli dell’integrità approfonditi, questa API non funzionerà come previsto. Potrebbe essere visualizzato un messaggio di errore che indica che sono in corso controlli dell’integrità approfonditi. Per aggiornare il cluster, è necessario attendere il completamento dei controlli dell’integrità approfonditi.

1. Crea un file di richiesta API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html) in formato JSON. Assicurati di specificare correttamente il nome del cluster e il nome del gruppo di istanze da aggiornare. Per ogni gruppo di istanze, puoi modificare il tipo di istanza, il numero di istanze, lo script del punto di ingresso della configurazione del ciclo di vita e il percorso dello script.
**Nota**  
È possibile utilizzarle `UpdateCluster` per ridimensionare o rimuovere interi gruppi di istanze dal SageMaker HyperPod cluster. Per ulteriori istruzioni su come ridurre verticalmente o eliminare i gruppi di istanze, consulta [Ridimensionamento di un cluster SageMaker HyperPod](smcluster-scale-down.md).

   1. Per `ClusterName`, specifica il nome del cluster da aggiornare.

   1. Per `InstanceGroupName`

      1. Per aggiornare un gruppo di istanze esistente, specifica il nome del gruppo di istanze da aggiornare.

      1. Per aggiungere un nuovo gruppo di istanze, specifica un nuovo nome non presente nel cluster.

   1. Per `InstanceType`

      1. Per aggiornare un gruppo di istanze esistente, è necessario che il tipo di istanza specificato all’inizio corrisponda al gruppo.

      1. Per aggiungere un nuovo gruppo di istanze, specifica il tipo di istanza con cui configurare il gruppo.

   1. Per `InstanceCount`

      1. Per aggiornare un gruppo di istanze esistente, specifica un numero intero corrispondente al numero di istanze desiderato. Puoi fornire un valore più alto o più basso (fino a 0) per aumentare o ridurre verticalmente il gruppo di istanze.

      1. Per aggiungere un nuovo gruppo di istanze, specifica un numero intero maggiore o uguale a 1. 

   1. In `LifeCycleConfig`, puoi modificare entrambi i valori `SourceS3Uri` e `OnCreate` secondo le tue preferenze per aggiornare il gruppo di istanze.

   1. Per `ExecutionRole`

      1. Per aggiornare un gruppo di istanze esistente, continua a utilizzare lo stesso ruolo IAM collegato durante la creazione del cluster.

      1. Per aggiungere un nuovo gruppo di istanze, specifica un ruolo IAM da collegare.

   1. Per `ThreadsPerCore`

      1. Per aggiornare un gruppo di istanze esistente, continua a utilizzare lo stesso valore specificato durante la creazione del cluster.

      1. Per aggiungere un nuovo gruppo di istanze, puoi scegliere qualsiasi valore tra le opzioni consentite dal tipo di istanza. Per ulteriori informazioni, cerca il tipo di istanza e consulta la colonna **Thread validi per core** nella tabella di riferimento in [CPU cores and threads per CPU core per instance type](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html) in *Amazon EC2 User Guide*.

   1. Per `OnStartDeepHealthChecks`, aggiungi `InstanceStress` e `InstanceConnectivity` per abilitare [Controlli dell’integrità approfonditi](sagemaker-hyperpod-eks-resiliency-deep-health-checks.md).

   1. Per`NodeRecovery`, specifica `Automatic` di abilitare il ripristino automatico dei nodi. SageMaker HyperPod sostituisce o riavvia le istanze (nodi) quando l'agente di monitoraggio dello stato rileva problemi.

   Puoi utilizzare il frammento di codice seguente, che corrisponde a un modello di file di richiesta JSON. Per ulteriori informazioni sulla sintassi della richiesta e sui parametri di questa API, consulta il riferimento all'API. [UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)

   ```
   // update_cluster.json
   {
       // Required
       "ClusterName": "name-of-cluster-to-update",
       // Required
       "InstanceGroups": [{
           "InstanceGroupName": "string",
           "InstanceType": "string",
           "InstanceCount": number,
           "LifeCycleConfig": {
               "SourceS3Uri": "string",
               "OnCreate": "string"
           },
           "ExecutionRole": "string",
           "ThreadsPerCore": number,
           "OnStartDeepHealthChecks": [
               "InstanceStress", "InstanceConnectivity"
           ]
       }],
       "NodeRecovery": "Automatic"
   }
   ```

1. Esegui il comando `update-cluster` per inviare la richiesta. 

   ```
   aws sagemaker update-cluster \
       --cli-input-json file://complete/path/to/update_cluster.json
   ```

# Aggiornamento del software della SageMaker HyperPod piattaforma
<a name="sagemaker-hyperpod-eks-operate-cli-command-update-cluster-software"></a>

Quando crei il SageMaker HyperPod cluster, SageMaker HyperPod seleziona un'Amazon Machine Image (AMI) corrispondente alla versione Kubernetes del cluster Amazon EKS.

Esegui [update-cluster-software](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster-software.html)per aggiornare i cluster esistenti con software e patch di sicurezza fornite dal servizio. SageMaker HyperPod Per `--cluster-name`, specifica il nome o l’ARN del cluster da aggiornare.

**Importante**  
Quando questa API viene chiamata, SageMaker HyperPod non scarica o ridistribuisce i job (Pod) in esecuzione sui nodi. Controlla la presenza di processi in esecuzione sui nodi prima di chiamare questa API.
Il processo di applicazione delle patch sostituisce il volume root con l’AMI aggiornata, il che significa che i dati precedenti archiviati nel volume root dell’istanza andranno persi. Assicurati di eseguire il backup dei dati dal volume root dell'istanza su Amazon S3 o Amazon FSx for Lustre.
Tutti i nodi del cluster sono soggetti a tempi di inattività (i nodi appaiono come `<NotReady>` nell’output di`kubectl get node`) durante l’applicazione delle patch. Ti consigliamo di terminare tutti i carichi di lavoro prima di applicare le patch e di riprenderli al termine dell’applicazione delle patch.   
Se la patch di sicurezza non riesce, è possibile recuperare i messaggi di errore eseguendo l’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html) come indicato in [Descrizione di un cluster](sagemaker-hyperpod-eks-operate-cli-command-cluster-details.md#sagemaker-hyperpod-eks-operate-cli-command-describe-cluster).

```
aws sagemaker update-cluster-software --cluster-name your-hyperpod-cluster
```

 Quando chiami l'`UpdateClusterSoftware`API, SageMaker HyperPod aggiorna la versione Kubernetes dei nodi selezionando la più recente in [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) base alla versione Kubernetes del tuo cluster Amazon EKS. Quindi, esegue gli script del ciclo di vita nel bucket Amazon S3 che hai specificato durante la creazione o l’aggiornamento del cluster. 

Puoi verificare la versione kubelet di un nodo con il comando `kubectl describe node`.

La versione Kubernetes dei nodi del SageMaker HyperPod cluster non si aggiorna automaticamente quando aggiorni la versione del cluster Amazon EKS. Dopo aver aggiornato la versione Kubernetes per il tuo cluster Amazon EKS, devi utilizzare l'`UpdateClusterSoftware`API per aggiornare i nodi del SageMaker HyperPod cluster alla stessa versione di Kubernetes.

 Si consiglia di aggiornare il SageMaker HyperPod cluster dopo aver aggiornato i nodi Amazon EKS ed evitare di avere più di una differenza di versione tra la versione del cluster Amazon EKS e la versione dei nodi del SageMaker HyperPod cluster.

Il team SageMaker HyperPod di assistenza lancia regolarmente nuovi strumenti [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) per migliorare la sicurezza e l'esperienza degli utenti. Ti consigliamo di continuare ad aggiornare sempre alla versione più recente di SageMaker HyperPod DLAMI. Per i futuri aggiornamenti SageMaker HyperPod DLAMI per le patch di sicurezza, segui con. [Note di SageMaker HyperPod rilascio di Amazon](sagemaker-hyperpod-release-notes.md)

**Nota**  
Puoi eseguire questa API solo in modo programmatico. La funzionalità di patching non è implementata nell'interfaccia utente della SageMaker HyperPod console.

# Accesso ai SageMaker HyperPod nodi del cluster
<a name="sagemaker-hyperpod-eks-operate-access-through-terminal"></a>

È possibile accedere direttamente ai nodi di un SageMaker HyperPod cluster in servizio utilizzando i AWS CLI comandi for AWS Systems Manager (SSM). Esegui `aws ssm start-session` con il nome host del nodo in formato `sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]`. È possibile recuperare l'ID del cluster, l'ID dell'istanza e il nome del gruppo di istanze dalla [SageMaker HyperPod console](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters) o eseguendo `describe-cluster` e `list-cluster-nodes` dai [AWS CLI comandi](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes) di. SageMaker HyperPod Ad esempio, se l’ID del cluster è `aa11bbbbb222`, il nome del nodo del cluster è `controller-group` e l’ID del nodo del cluster è `i-111222333444555aa`, il comando `start-session` di SSM dovrebbe essere il seguente.

**Nota**  
Se non hai ancora effettuato la configurazione AWS Systems Manager, segui le istruzioni fornite all'indirizzo[Configurazione AWS Systems Manager ed esecuzione come per il controllo degli accessi degli utenti del cluster](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm).

```
$ aws ssm start-session \
    --target sagemaker-cluster:aa11bbbbb222_controller-group-i-111222333444555aa \
    --region us-west-2
Starting session with SessionId: s0011223344aabbccdd
root@ip-111-22-333-444:/usr/bin#
```

# Ridimensionamento di un cluster SageMaker HyperPod
<a name="smcluster-scale-down"></a>

Puoi ridurre il numero di istanze in esecuzione sul tuo SageMaker HyperPod cluster Amazon. Potresti voler ridurre verticalmente un cluster per vari motivi, ad esempio per limitare l’utilizzo delle risorse o ottimizzare i costi.

La pagina seguente descrive i due approcci principali per la riduzione verticale:
+ **Riduzione verticale a livello di gruppo di istanze:** questo approccio utilizza l’API `UpdateCluster`, che consente di:
  + Ridurre verticalmente il numero di istanze per gruppi di istanze specifici in modo indipendente. SageMaker L'intelligenza artificiale gestisce la terminazione dei nodi in modo da raggiungere i nuovi conteggi di istanze target che hai impostato per ciascun gruppo. Per informazioni, consulta [Riduzione verticale di un gruppo di istanze](#smcluster-scale-down-updatecluster).
  + Elimina completamente i gruppi di istanze dal cluster. Per informazioni, consulta [Eliminazione di gruppi di istanze](#smcluster-remove-instancegroup).
+ **Riduzione verticale a livello di istanza:** questo approccio utilizza l’API `BatchDeleteClusterNodes`, che consente di specificare i singoli nodi da terminare. Per informazioni, consulta [Riduzione verticale a livello di istanza](#smcluster-scale-down-batchdelete).

**Nota**  
Quando si esegue la riduzione verticale a livello di istanza con `BatchDeleteCusterNodes`, puoi terminare solo un massimo di 99 istanze alla volta. `UpdateCluster` supporta la terminazione di qualsiasi numero di istanze.

## Considerazioni importanti
<a name="smcluster-scale-down-considerations"></a>
+ Quando si riduce verticalmente un cluster, è necessario assicurarsi che le risorse rimanenti siano sufficienti per gestire il carico di lavoro e che qualsiasi operazione necessaria di migrazione o ribilanciamento dei dati sia gestita correttamente per evitare interruzioni. 
+ Assicurati di eseguire il backup dei dati su Amazon S3 o su un file system FSx for Lustre prima di richiamare l'API su un gruppo di nodi di lavoro. Questo aiuta a prevenire qualsiasi potenziale perdita di dati dal volume root dell’istanza. Per ulteriori informazioni sui backup, consulta [Utilizza lo script di backup fornito da SageMaker HyperPod](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup).
+ Per richiamare questa API su un cluster esistente, devi prima applicare una patch al cluster eseguendo l'API. [ UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html) Per ulteriori informazioni sull’applicazione delle patch in un cluster, consulta [Aggiorna il software della SageMaker HyperPod piattaforma di un cluster](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software).
+ La misurazione/fatturazione per le istanze on demand verrà interrotta automaticamente dopo la riduzione verticale. Per interrompere la misurazione delle istanze riservate ridotte, contatta il team del tuo AWS account per ricevere assistenza.
+ Puoi utilizzare la capacità rilasciata dalle istanze riservate ridimensionate per scalare un altro cluster. SageMaker HyperPod 

## Riduzione verticale a livello di gruppo di istanze
<a name="smcluster-scale-down-or-delete"></a>

L'[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)operazione consente di apportare modifiche alla configurazione del SageMaker HyperPod cluster, ad esempio ridurre il numero di istanze di un gruppo di istanze o rimuovere interi gruppi di istanze. Questa opzione può essere utile per adattare le risorse allocate al cluster in base alle variazioni del carico di lavoro, ottimizzare i costi o modificare il tipo di istanza di un gruppo di istanze.

### Riduzione verticale di un gruppo di istanze
<a name="smcluster-scale-down-updatecluster"></a>

Utilizza questo approccio quando hai un gruppo di istanze inattivo, che può quindi essere ridotto verticalmente in modo sicuro terminando una qualsiasi delle sue istanze. Quando invii una `UpdateCluster` richiesta di ridimensionamento, sceglie HyperPod casualmente le istanze da terminare e le ridimensiona fino al numero di nodi specificato per il gruppo di istanze.

**Nota**  
Quando riduci verticalmente a 0 il numero di istanze in un gruppo di istanze, tutte le istanze all’interno del gruppo verranno terminate. Tuttavia, il gruppo di istanze stesso continuerà a esistere come parte del cluster. SageMaker HyperPod Puoi aumentare di nuovo verticalmente il gruppo di istanze in un secondo momento, utilizzando la stessa configurazione del gruppo di istanze.   
In alternativa, puoi scegliere di rimuovere un gruppo di istanze in modo permanente. Per ulteriori informazioni, consulta [Eliminazione di gruppi di istanze](#smcluster-remove-instancegroup).

**Per ridurre verticalmente con `UpdateCluster`**

1. Segui la procedura descritta in [Aggiornamento SageMaker HyperPod della configurazione del cluster](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md). Quando raggiungi il passaggio **1.d** in cui specifichi il **InstanceCount**campo, inserisci un numero inferiore al numero corrente di istanze per ridimensionare il cluster.

1. Esegui il AWS CLI comando [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) per inviare la richiesta.

Di seguito è riportato un esempio di un oggetto JSON `UpdateCluster`: Supponiamo che il gruppo di istanze abbia attualmente due istanze in esecuzione. Se imposti il **InstanceCount**campo su 1, come mostrato nell'esempio, seleziona HyperPod casualmente una delle istanze e la termina.

```
{
  "ClusterName": "name-of-cluster-to-update",
  "InstanceGroups": [
    {
      "InstanceGroupName": "training-instances",
      "InstanceType": "instance-type",
      "InstanceCount": 1,
      "LifeCycleConfig": {
        "SourceS3Uri": "s3://amzn-s3-demo-bucket/training-script.py",
        "OnCreate": "s3://amzn-s3-demo-bucket/setup-script.sh"
      },
      "ExecutionRole": "arn:aws:iam::123456789012:role/SageMakerRole",
      "ThreadsPerCore": number-of-threads,
      "OnStartDeepHealthChecks": [
        "InstanceStress",
        "InstanceConnectivity"
      ]
    }
  ],
  "NodeRecovery": "Automatic"
}
```

### Eliminazione di gruppi di istanze
<a name="smcluster-remove-instancegroup"></a>

È possibile utilizzare l'[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)operazione per rimuovere interi gruppi di istanze dal SageMaker HyperPod cluster quando non sono più necessari. Questa operazione va oltre la semplice riduzione verticale, poiché consente di eliminare completamente gruppi di istanze specifici dalla configurazione del cluster. 

**Nota**  
Quando rimuovi un gruppo di istanze:  
Tutte le istanze all’interno del gruppo di destinazione vengono terminate.
L’intera configurazione del gruppo viene eliminata dal cluster.
Tutti i carichi di lavoro in esecuzione sul gruppo di istanze vengono arrestati.

**Per eliminare gruppi di istanze con `UpdateCluster`**

1. Quando segui la procedura descritta in [Aggiornamento SageMaker HyperPod della configurazione del cluster](sagemaker-hyperpod-eks-operate-cli-command-update-cluster.md):

   1. Imposta il parametro `InstanceGroupsToDelete` facoltativo nel JSON `UpdateCluster` e passa l’elenco separato da virgole dei nomi dei gruppi di istanze da eliminare.

   1.  Quando indichi l’elenco `InstanceGroups`, assicurati che le specifiche dei gruppi di istanze che stai rimuovendo non siano più elencate in `InstanceGroups`.

1. Esegui il AWS CLI comando [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) per inviare la richiesta.

**Importante**  
Il SageMaker HyperPod cluster deve sempre mantenere almeno un gruppo di istanze.
Assicurati che venga eseguito il backup di tutti i dati critici prima della rimozione.
Il processo di rimozione non può essere annullato.

Di seguito è riportato un esempio di un oggetto JSON `UpdateCluster`: Consideriamo il caso di un cluster con tre gruppi di istanze: *training*, *prototype-training* e *inference-serving*. Vuoi eliminare il gruppo *prototype-training*.

```
{
  "ClusterName": "name-of-cluster-to-update",
  "InstanceGroups": [
    {
      "InstanceGroupName": "training",
      "InstanceType": "instance-type",
      "InstanceCount": ,
      "LifeCycleConfig": {
        "SourceS3Uri": "s3://amzn-s3-demo-bucket/training-script.py",
        "OnCreate": "s3://amzn-s3-demo-bucket/setup-script.sh"
      },
      "ExecutionRole": "arn:aws:iam::123456789012:role/SageMakerRole",
      "ThreadsPerCore": number-of-threads,
      "OnStartDeepHealthChecks": [
        "InstanceStress",
        "InstanceConnectivity"
      ]
    },
    {
      "InstanceGroupName": "inference-serving",
      "InstanceType": "instance-type",
      "InstanceCount": 2,
      [...]
    },
  ],
  "InstanceGroupsToDelete": [ "prototype-training" ],
  "NodeRecovery": "Automatic"
}
```

## Riduzione verticale a livello di istanza
<a name="smcluster-scale-down-batchdelete"></a>

L'`BatchDeleteClusterNodes`operazione consente di ridimensionare un SageMaker HyperPod cluster specificando i singoli nodi che si desidera terminare. `BatchDeleteClusterNodes`fornisce un controllo più granulare per la rimozione mirata dei nodi e l'ottimizzazione del cluster. Ad esempio, è possibile utilizzare `BatchDeleteClusterNodes` per eliminare nodi mirati per la manutenzione, gli aggiornamenti in sequenza o il ribilanciamento geografico delle risorse.

**Richiesta e risposta API**

Quando invii una `BatchDeleteClusterNodes` richiesta, SageMaker HyperPod elimina i nodi in base alla loro istanza. IDs L'API accetta una richiesta con il nome del cluster e un elenco di nodi IDs da eliminare. 

La risposta include due sezioni: 
+  `Failed`: un elenco di errori di tipo `[ BatchDeleteClusterNodesError ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BatchDeleteClusterNodesError.html)`, uno per ogni ID di istanza.
+  `Successful`: L'elenco delle istanze è IDs stato terminato con successo. 

**Convalida e gestione degli errori**

L’API esegue varie convalide, ad esempio:
+ Verifica del formato dell’ID del nodo (prefisso `i-` e struttura dell’ID dell’istanza Amazon EC2). 
+ Verifica della lunghezza dell'elenco dei nodi, con un limite di 99 o meno nodi IDs in una singola `BatchDeleteClusterNodes` richiesta.
+ Garantire che sia presente un SageMaker HyperPod cluster valido con il nome del cluster di input e che non siano in corso operazioni a livello di cluster (aggiornamento, aggiornamento del sistema, applicazione di patch o eliminazione).
+ Gestione dei casi in cui le istanze non vengono trovate, hanno uno stato non valido o sono in uso.

**Codici di risposta API**
+  L’API restituisce un codice di stato `200` per le richieste riuscite (ad esempio, la convalida di tutti i nodi di input è riuscita) o parzialmente riuscite (ad esempio, la convalida di alcuni nodi di input non è riuscita). 
+  Se tutte queste convalide non riescono (ad esempio, la convalida di tutti i nodi di input non riesce), l’API restituirà una risposta Richiesta non valida `400` con i messaggi e i codici di errore appropriati. 

**Esempio**

Di seguito è riportato un esempio di **riduzione verticale di un cluster a livello di istanza** con la AWS CLI:

```
aws sagemaker batch-delete-cluster-nodes --cluster-name "cluster-name" --node-ids '["i-111112222233333", "i-111112222233333"]'
```

# Eliminazione di un cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-operate-cli-command-delete-cluster"></a>

Esegui [delete-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-cluster.html) per eliminare un cluster. Puoi specificare il nome o l’ARN del cluster.

```
aws sagemaker delete-cluster --cluster-name your-hyperpod-cluster
```

Questa API pulisce solo le SageMaker HyperPod risorse e non elimina alcuna risorsa del cluster EKS associato. Ciò include il cluster Amazon EKS, le identità EKS Pod, FSx i volumi Amazon e i componenti aggiuntivi EKS. Comprende anche la configurazione iniziale aggiunta al cluster EKS. Per pulire tutte le risorse, ricorda di pulire separatamente anche le risorse EKS. 

Assicurati di eliminare prima le SageMaker HyperPod risorse, seguite dalle risorse EKS. Eseguire l’eliminazione in ordine inverso può comportare la persistenza delle risorse.

**Importante**  
Quando questa API viene chiamata, SageMaker HyperPod non scarica o ridistribuisce i job (Pods) in esecuzione sui nodi. Controlla la presenza di processi in esecuzione sui nodi prima di chiamare questa API.

# HyperPod checkpoint gestito a più livelli
<a name="managed-tier-checkpointing"></a>

Questa sezione spiega come funziona il checkpoint gestito su più livelli e i vantaggi che offre per la formazione su modelli su larga scala.

Il checkpointing SageMaker HyperPod gestito su più livelli di Amazon ti aiuta ad addestrare modelli di intelligenza artificiale generativa su larga scala in modo più efficiente. Utilizzano più livelli di archiviazione, inclusa la memoria CPU del cluster. Questo approccio riduce i tempi di recupero e minimizza le perdite durante l’avanzamento dell’addestramento. Inoltre, sfrutta le risorse di memoria sottoutilizzate nell’infrastruttura di addestramento.

Il checkpoint gestito su più livelli consente di salvare i checkpoint con una frequenza più elevata nella memoria. Vengono archiviati periodicamente in uno spazio di archiviazione durevole. In questo modo si mantengono sia le prestazioni che l’affidabilità durante il processo di addestramento.

Questa guida spiega come impostare, configurare e utilizzare il checkpoint gestito su più livelli con PyTorch framework sui cluster Amazon EKS. HyperPod 

## Come funziona il checkpoint gestito su più livelli
<a name="managed-tier-checkpointing-works"></a>

Il checkpoint gestito su più livelli utilizza un approccio di storage a più livelli. La memoria CPU funge da livello primario per archiviare i checkpoint del modello. I livelli secondari includono opzioni di archiviazione persistente come Amazon S3.

Quando salvi un checkpoint, il sistema lo archivia in uno spazio della memoria allocato nei nodi del cluster. I dati vengono replicati automaticamente su nodi di calcolo adiacenti per una maggiore affidabilità. Questa strategia di replica garantisce la protezione in caso di guasto di uno o più nodi, fornendo al contempo un accesso rapido per le operazioni di ripristino.

Il sistema inoltre salva periodicamente i checkpoint nell’archiviazione persistente in base alla configurazione dell’utente. Questa operazione garantisce una durata a lungo termine dei progressi dell’addestramento.

I componenti principali includono:
+ **Sistema di gestione della memoria**: un daemon di gestione della memoria che fornisce memoria disaggregata come servizio per l’archiviazione dei checkpoint
+ **HyperPod Libreria Python**: si interfaccia con lo storage disaggregato APIs e fornisce utilità per il salvataggio, il caricamento e la gestione dei checkpoint su più livelli
+ **Replica dei checkpoint**: replica automaticamente i checkpoint in più nodi per garantire la tolleranza ai guasti

Il sistema si integra perfettamente con i cicli di formazione tramite semplici chiamate API. PyTorch Richiede modifiche minime al codice esistente.

## Vantaggi
<a name="managed-tier-checkpointing-benefits"></a>

Il checkpoint gestito su più livelli offre diversi vantaggi per la formazione su modelli su larga scala:
+ **Migliore usabilità**: gestisce il salvataggio, la replica, la persistenza e il ripristino dei checkpoint
+ **Operazioni di checkpoint più rapide**: l’archiviazione basata sulla memoria offre tempi di salvataggio e caricamento più rapidi rispetto ai checkpoint basati su disco, con una conseguente accelerazione del ripristino
+ **Tolleranza ai guasti**: la replica automatica dei checkpoint tra i nodi protegge dai guasti dei nodi hardware
+ **Modifiche minime al codice**: l’integrazione semplice delle API richiede solo piccole modifiche agli script di addestramento esistenti
+ **Miglior throughput di addestramento**: un sovraccarico ridotto sui checkpoint significa più tempo dedicato all’addestramento vero e proprio

**Topics**
+ [Come funziona il checkpoint gestito su più livelli](#managed-tier-checkpointing-works)
+ [Vantaggi](#managed-tier-checkpointing-benefits)
+ [Imposta un checkpoint gestito su più livelli](managed-tier-checkpointing-setup.md)
+ [Rimozione del checkpoint gestito a più livelli](managed-tier-checkpointing-remove.md)
+ [Considerazioni sulla sicurezza per il checkpoint gestito su più livelli](managed-tier-security-considerations.md)

# Imposta un checkpoint gestito su più livelli
<a name="managed-tier-checkpointing-setup"></a>

Questa sezione contiene il processo di configurazione per il checkpoint gestito a più livelli per Amazon. SageMaker HyperPod Scoprirai come abilitare la funzionalità nel cluster e implementare i checkpoint nel codice di addestramento.

**Topics**
+ [Prerequisiti](#managed-tier-checkpointing-setup-prerequisites)
+ [Passaggio 1: abilita il checkpoint gestito su più livelli per il tuo cluster](#managed-tier-checkpointing-setup-step-enable-for-cluster)
+ [Fase 2. Installa la libreria Python nell’immagine di addestramento](#managed-tier-checkpointing-setup-step-install-library)
+ [Fase 3: salva i checkpoint nel ciclo di allenamento](#managed-tier-checkpointing-setup-step-save-checkpoint-in-loop)
+ [Fase 4: Caricare i checkpoint per il ripristino](#managed-tier-checkpointing-setup-step-load-checkpoint)
+ [Convalida le tue operazioni di checkpoint gestite su più livelli](#managed-tier-checkpointing-setup-validation)

## Prerequisiti
<a name="managed-tier-checkpointing-setup-prerequisites"></a>

Prima di configurare il checkpoint gestito a più livelli, assicurati di avere:
+ Un HyperPod cluster Amazon EKS con sufficiente memoria CPU disponibile per l'allocazione dei checkpoint
+ PyTorch carichi di lavoro di formazione e lavori DCP (entrambi supportati)
+ Autorizzazioni IAM appropriate per la gestione dei cluster, tra cui:
  + Autorizzazioni di scrittura di Amazon CloudWatch e Amazon S3 per il pod di formazione per leggere/scrivere checkpoint e inviare metriche
  + Queste autorizzazioni possono essere configurate dalla [configurazione EKS OIDC](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)

## Passaggio 1: abilita il checkpoint gestito su più livelli per il tuo cluster
<a name="managed-tier-checkpointing-setup-step-enable-for-cluster"></a>

**Importante**  
È necessario attivare l'utilizzo del checkpoint gestito su più livelli.

Abilita il checkpoint gestito su più livelli tramite HyperPod APIs durante la creazione o l'aggiornamento del cluster. Il servizio installa automaticamente il sistema di gestione della memoria quando specifichi il parametro `TieredStorageConfig`.

Per i nuovi cluster, puoi usare. [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html) AWS CLI

```
aws sagemaker create-cluster \
    --cluster-name cluster-name \
    --orchestrator "Eks={ClusterArn=eks-cluster-arn}" \
    --instance-groups '{
        "InstanceGroupName": "instance-group-name",
        "InstanceType": "instance-type",
        "InstanceCount": instance-count,
        "LifeCycleConfig": {
            "SourceS3Uri": "s3-path-to-lifecycle-scripts",
            "OnCreate": "lifecycle-script-name"
        },
        "ExecutionRole": "instance-group-iam-role",
        "ThreadsPerCore": threads-per-core,
        "InstanceStorageConfigs": [
            { "EbsVolumeConfig": {"VolumeSizeInGB": volume-size} }
        ]
    }' \
    --vpc-config '{
        "SecurityGroupIds": ["security-group-ids"],
        "Subnets": ["subnets"]
    }' \
    --tiered-storage-config '{
        "Mode": "Enable"
    }'
```

Il parametro `InstanceMemoryAllocationPercentage` specifica il valore `percentage` (int) della memoria del cluster da allocare per i checkpoint. L’intervallo è compreso tra 20 e 100.

## Fase 2. Installa la libreria Python nell’immagine di addestramento
<a name="managed-tier-checkpointing-setup-step-install-library"></a>

Installa la [libreria Amazon SageMaker checkpointing](https://pypi.org/project/amzn-sagemaker-checkpointing/) e le sue dipendenze nella tua immagine di formazione aggiungendola al tuo Dockerfile:

```
# Add this line to your training image Dockerfile
RUN pip install amzn-sagemaker-checkpointing s3torchconnector tenacity torch boto3 s3torchconnector
```

## Fase 3: salva i checkpoint nel ciclo di allenamento
<a name="managed-tier-checkpointing-setup-step-save-checkpoint-in-loop"></a>

Nel ciclo di allenamento, puoi salvare i checkpoint in modo asincrono utilizzando DCP. PyTorch Di seguito è riportato un esempio su come eseguire questa operazione.

```
import torch
import torch.distributed as dist
from torch.distributed.checkpoint import async_save, load
from amzn_sagemaker_checkpointing.checkpointing.filesystem.filesystem import (
    SageMakerTieredStorageWriter,
    SageMakerTieredStorageReader
)

# Initialize distributed training
dist.init_process_group(backend="nccl")

# Configure checkpointing
checkpoint_config = SageMakerCheckpointConfig(
    # Unique ID for your training job 
    # Allowed characters in ID include: alphanumeric, hyphens, and underscores
    namespace=os.environ.get('TRAINING_JOB_NAME', f'job-{int(time.time())}'),

    # Number of distributed processes/available GPUs
    world_size=dist.get_world_size(),

    # S3 storage location, required for SageMakerTieredStorageReader for read fallbacks
    # Required for SageMakerTieredStorageWriter when save_to_s3 is True
    s3_tier_base_path="s3://my-bucket/checkpoints"
)

# Your model and optimizer
model = MyModel()
optimizer = torch.optim.AdamW(model.parameters())

# Training loop
future = None
in_memory_ckpt_freq = 10
s3_ckpt_freq = 50

for training_step in range(1000):
    # ... training code ...
    
    # Save checkpoint
    if (training_step % in_memory_ckpt_freq == 0 or 
        training_step % s3_ckpt_freq == 0):
        # Create state dictionary
        state_dict = {
            "model": model.state_dict(),
            "optimizer": optimizer.state_dict(),
            "step": training_step,
            "epoch": epoch
        }
        
        # Create storage writer for current step
        checkpoint_config.save_to_s3 = training_step % s3_ckpt_freq == 0
        storage_writer = SageMakerTieredStorageWriter(
            checkpoint_config=checkpoint_config,
            step=training_step
        )

        # wait for previous checkpoint to get completed
        if future is not None:
            exc = future.exception()
            if exc:
                print(f"Failure in saving previous checkpoint:{str(exc)}")
                # Handle failures as required
            else:
                result = future.result()
                # Process results from save, if required
        
        # Async save checkpoint using PyTorch DCP
        future = async_save(state_dict=state_dict, storage_writer=storage_writer)
        
        # Continue training while checkpoint saves in background
```

## Fase 4: Caricare i checkpoint per il ripristino
<a name="managed-tier-checkpointing-setup-step-load-checkpoint"></a>

Di seguito è riportato un esempio sul caricamento di un checkpoint.

```
# Create state dictionary template
state_dict = {
    "model": model.state_dict(),
    "optimizer": optimizer.state_dict(),
    "step": 0,
    "epoch": 0
}

# Load latest checkpoint
storage_reader = SageMakerTieredStorageReader(checkpoint_config=checkpoint_config)
load(state_dict, storage_reader=storage_reader)

# Load specific checkpoint step
storage_reader = SageMakerTieredStorageReader(
    checkpoint_config=checkpoint_config, 
    step=500 # Or don't pass step if you have to load the latest available step.
)
try:
    load(state_dict, storage_reader=storage_reader)
except BaseException as e:
    print(f"Checkpoint load failed: {str(e)}")
    # Add additional exception handling
```

## Convalida le tue operazioni di checkpoint gestite su più livelli
<a name="managed-tier-checkpointing-setup-validation"></a>

È possibile convalidare le operazioni di checkpoint gestite su più livelli con i log.

**Registrazione di log personalizzata (facoltativo)**

Puoi integrare i log dei checkpoint con altri log passando un logger personalizzato alla libreria. Ad esempio, puoi aggiungere un logger personalizzato al codice di addestramento in modo che tutti i log della libreria vengano raccolti anche nel logger di addestramento.

**Registrazione avanzata di log dei servizi (facoltativo)**

Per migliorare il debug e la visibilità del servizio, puoi montare il percorso del log dei checkpoint `/var/log/sagemaker_checkpointing` dall’interno del pod a un percorso `/var/logs/sagemaker_checkpointing` sull’host. Questa operazione garantisce che solo i log specifici della libreria vengano raccolti separatamente. Il team di assistenza può quindi avere una maggiore visibilità per il debug e il supporto.

# Rimozione del checkpoint gestito a più livelli
<a name="managed-tier-checkpointing-remove"></a>

Questa sezione spiega come disabilitare il checkpoint gestito su più livelli quando non è più necessario.

Per disabilitare il checkpoint gestito su più livelli, utilizza per aggiornare la configurazione del [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html) AWS CLI cluster:

```
aws sagemaker update-cluster \
    --cluster-name cluster-name \
    --tiered-storage-config '{ "Mode": "Disable" }'
```

Questo rimuove il daemon di gestione della memoria dal cluster. Il daemon è implementato come Kubernetes standard e segue la gestione standard del ciclo di vita di Kubernetes DaemonSet .

# Considerazioni sulla sicurezza per il checkpoint gestito su più livelli
<a name="managed-tier-security-considerations"></a>

Questa sezione tratta importanti considerazioni sulla sicurezza quando si utilizza il checkpoint gestito su più livelli. Include l’utilizzo del modulo pickle di Python, la crittografia Amazon S3 e la sicurezza degli endpoint di rete.

**Utilizzo del modulo pickle di Python**

Il checkpoint gestito a più livelli utilizza il modulo pickle di Python per deserializzare i dati dei checkpoint archiviati in Amazon S3. Questa implementazione ha importanti implicazioni in termini di sicurezza:
+ **Limite di fiducia esteso: quando si utilizza il checkpoint gestito su più livelli con Amazon S3, il bucket Amazon S3 entra a far parte del limite** di fiducia del cluster.
+ **Rischio di esecuzione del codice**: il modulo pickle di Python può eseguire codice arbitrario durante la deserializzazione. Se un utente non autorizzato ottiene l'accesso in scrittura al tuo bucket Amazon S3 di checkpoint, potrebbe creare dati di pickle dannosi che vengono eseguiti quando caricati tramite un checkpoint gestito a più livelli.

**Best practice per l’archiviazione Amazon S3**

Quando si utilizza il checkpoint gestito su più livelli con lo storage Amazon S3:
+ **Limita l’accesso ai bucket Amazon S3**: assicurati che solo gli utenti e i ruoli autorizzati associati al tuo cluster di addestramento abbiano accesso al bucket Amazon S3 utilizzato per i checkpoint.
+ **Implementa le policy di bucket**: configura le policy di bucket appropriate per impedire accessi o modifiche non autorizzati.
+ **Convalida dei modelli di accesso**: implementa la registrazione per convalidare i modelli di accesso ai bucket Amazon S3 del checkpoint.
+ **Convalida i nomi dei bucket**: presta attenzione quando scegli i nomi dei bucket per evitare potenziali manomissioni.

**Endpoint di rete**

Il checkpoint gestito su più livelli abilita gli endpoint di rete su ciascuno dei nodi di elaborazione sulle seguenti porte: 9200/TCP, 9209/UDP, 9210/UDP, 9219/UDP, 9220/UDP, 9229/UDP, 9230/UDP, 9239/UDP, 9240/UDP. Queste porte sono necessarie per il funzionamento del servizio di checkpoint e il mantenimento della sincronizzazione dei dati.

Per impostazione SageMaker predefinita, la configurazione di rete limita l'accesso a questi endpoint per motivi di sicurezza. Consigliamo di mantenere queste limitazioni predefinite.

Quando configuri le impostazioni di rete per i nodi e il VPC, AWS segui le best practice VPCs per i gruppi di sicurezza e. ACLs Per ulteriori informazioni, consulta gli argomenti seguenti:
+ [ SageMaker HyperPod Prerequisiti Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-prerequisites.html#sagemaker-hyperpod-prerequisites-optional-vpcCluster)
+ [Best practice sulla sicurezza del VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-best-practices.html)

# SageMaker HyperPod governance delle attività
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance"></a>

SageMaker HyperPod la governance delle 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. Questa funzionalità offre agli amministratori la possibilità di impostare:
+ Livelli di priorità per varie attività
+ Allocazione delle risorse di calcolo per ogni team
+ In che modo ogni team presta e prende in prestito risorse di calcolo inattive
+ Se un team rende prerilasciabili le proprie attività

HyperPod la governance delle attività fornisce anche l'osservabilità del cluster Amazon EKS, offrendo visibilità in tempo reale sulla capacità del cluster. Questo include la disponibilità e l’utilizzo delle risorse di calcolo, l’allocazione e l’utilizzo del team e le informazioni sull’esecuzione delle attività e sui tempi di attesa, per consentirti di prendere decisioni informate e gestire in modo proattivo le risorse. 

Le seguenti sezioni spiegano come configurare, comprendere i concetti chiave e utilizzare la governance delle HyperPod attività per i cluster Amazon EKS.

**Topics**
+ [Configurazione per la governance SageMaker HyperPod delle attività](sagemaker-hyperpod-eks-operate-console-ui-governance-setup.md)
+ [Pannello di controllo](sagemaker-hyperpod-eks-operate-console-ui-governance-metrics.md)
+ [Processi](sagemaker-hyperpod-eks-operate-console-ui-governance-tasks.md)
+ [Policy](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md)
+ [Esempi di comandi di governance delle HyperPod AWS CLI attività](sagemaker-hyperpod-eks-operate-console-ui-governance-cli.md)
+ [Risoluzione dei problemi](sagemaker-hyperpod-eks-operate-console-ui-governance-troubleshoot.md)
+ [Documento di attribuzione per la governance delle SageMaker HyperPod attività di Amazon](sagemaker-hyperpod-eks-operate-console-ui-governance-attributions.md)

# Configurazione per la governance SageMaker HyperPod delle attività
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-setup"></a>

La sezione seguente fornisce informazioni su come configurare Amazon CloudWatch Observability EKS e i componenti aggiuntivi per la governance delle SageMaker HyperPod attività.

Assicurati di disporre della politica di autorizzazione minima per gli amministratori dei HyperPod cluster con Amazon EKS, in[Utenti IAM per l’amministratore del cluster](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-admin). Ciò include le autorizzazioni per eseguire il SageMaker HyperPod core APIs e gestire i SageMaker HyperPod cluster all'interno di te Account AWS, eseguendo le attività in cui ti trovi. [Gestione dei SageMaker HyperPod cluster orchestrati da Amazon EKS](sagemaker-hyperpod-eks-operate.md) 

**Topics**
+ [Configurazione della dashboard](sagemaker-hyperpod-eks-operate-console-ui-governance-setup-dashboard.md)
+ [Configurazione della governance delle attività](sagemaker-hyperpod-eks-operate-console-ui-governance-setup-task-governance.md)

# Configurazione della dashboard
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-setup-dashboard"></a>

Utilizza le seguenti informazioni per configurare il componente aggiuntivo Amazon SageMaker HyperPod Amazon CloudWatch Observability EKS. Questo ti offre una dashboard visiva dettagliata che fornisce una panoramica delle metriche relative all’hardware del cluster EKS, all’allocazione dei team e alle attività.

In caso di problemi di configurazione, consulta [Risoluzione dei problemi](sagemaker-hyperpod-eks-operate-console-ui-governance-troubleshoot.md) per la risoluzione dei problemi noti.

**Topics**
+ [HyperPod Prerequisiti del componente aggiuntivo Amazon CloudWatch Observability EKS](#hp-eks-dashboard-prerequisites)
+ [HyperPod Configurazione del componente aggiuntivo Amazon CloudWatch Observability EKS](#hp-eks-dashboard-setup)

## HyperPod Prerequisiti del componente aggiuntivo Amazon CloudWatch Observability EKS
<a name="hp-eks-dashboard-prerequisites"></a>

La sezione seguente include i prerequisiti necessari per installare il componente aggiuntivo Amazon EKS Observability.
+ Assicurati di disporre della politica di autorizzazione minima per gli amministratori del HyperPod cluster, in. [Utenti IAM per l’amministratore del cluster](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-admin)
+ Collega una policy `CloudWatchAgentServerPolicy` IAM ai nodi worker. A questo scopo, immetti il comando seguente. Sostituisci `my-worker-node-role` con il ruolo IAM utilizzato dai nodi worker Kubernetes.

  ```
  aws iam attach-role-policy \
  --role-name my-worker-node-role \
  --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
  ```

## HyperPod Configurazione del componente aggiuntivo Amazon CloudWatch Observability EKS
<a name="hp-eks-dashboard-setup"></a>

Utilizza le seguenti opzioni per configurare il componente aggiuntivo Amazon SageMaker HyperPod Amazon CloudWatch Observability EKS.

------
#### [ Setup using the SageMaker AI console ]

Le seguenti autorizzazioni sono necessarie per configurare e visualizzare la dashboard di governance delle attività. HyperPod Questa sezione espande le autorizzazioni elencate in [Utenti IAM per l’amministratore del cluster](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-admin). 

Per gestire la governance delle attività, utilizza la policy di esempio:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:ListClusters",
                "sagemaker:DescribeCluster",
                "sagemaker:ListComputeQuotas",
                "sagemaker:CreateComputeQuota",
                "sagemaker:UpdateComputeQuota",
                "sagemaker:DescribeComputeQuota",
                "sagemaker:DeleteComputeQuota",
                "sagemaker:ListClusterSchedulerConfigs",
                "sagemaker:DescribeClusterSchedulerConfig",
                "sagemaker:CreateClusterSchedulerConfig",
                "sagemaker:UpdateClusterSchedulerConfig",
                "sagemaker:DeleteClusterSchedulerConfig",
                "eks:ListAddons",
                "eks:CreateAddon",
                "eks:DescribeAddon",
                "eks:DescribeCluster",
                "eks:DescribeAccessEntry",
                "eks:ListAssociatedAccessPolicies",
                "eks:AssociateAccessPolicy",
                "eks:DisassociateAccessPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Per concedere le autorizzazioni per gestire Amazon CloudWatch Observability Amazon EKS e visualizzare la dashboard del HyperPod cluster tramite la console SageMaker AI, utilizza la politica di esempio seguente:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:ListAddons",
                "eks:CreateAddon",
                "eks:UpdateAddon",
                "eks:DescribeAddon",
                "eks:DescribeAddonVersions",
                "sagemaker:DescribeCluster",
                "sagemaker:DescribeClusterNode",
                "sagemaker:ListClusterNodes",
                "sagemaker:ListClusters",
                "sagemaker:ListComputeQuotas",
                "sagemaker:DescribeComputeQuota",
                "sagemaker:ListClusterSchedulerConfigs",
                "sagemaker:DescribeClusterSchedulerConfig",
                "eks:DescribeCluster",
                "cloudwatch:GetMetricData",
                "eks:AccessKubernetesApi"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Passa alla scheda **Dashboard** nella SageMaker HyperPod console per installare Amazon CloudWatch Observability EKS. Per garantire che le metriche relative alla governance delle attività siano incluse nella **Dashboard**, abilita la casella di controllo delle metriche Kueue. L'abilitazione delle metriche Kueue abilita i costi di Metrics, una volta CloudWatch **raggiunto** il limite del livello gratuito. Per ulteriori informazioni, consulta **Metrics** in [Amazon CloudWatch Pricing](https://aws.amazon.com/cloudwatch/pricing/).

------
#### [ Setup using the EKS AWS CLI ]

Utilizza il seguente AWS CLI comando EKS per installare il componente aggiuntivo:

```
aws eks create-addon --cluster-name cluster-name 
--addon-name amazon-cloudwatch-observability 
--configuration-values "configuration json"
```

Di seguito è riportato un JSON di esempio con i valori di configurazione:

```
{
    "agent": {
        "config": {
            "logs": {
                "metrics_collected": {
                    "kubernetes": {
                        "kueue_container_insights": true,
                        "enhanced_container_insights": true
                    },
                    "application_signals": { }
                }
            },
            "traces": {
                "traces_collected": {
                    "application_signals": { }
                }
            }
        },
    },
}
```

------
#### [ Setup using the EKS Console UI ]

1. Passa alla [console EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Scegli il cluster.

1. Scegli **Componenti aggiuntivi**.

1. Trova il componente aggiuntivo **Amazon CloudWatch Observability** e installalo. Installa la versione 2.4.0 o superiore per il componente aggiuntivo. 

1. Includi i valori di configurazione JSON seguenti:

   ```
   {
       "agent": {
           "config": {
               "logs": {
                   "metrics_collected": {
                       "kubernetes": {
                           "kueue_container_insights": true,
                           "enhanced_container_insights": true
                       },
                       "application_signals": { }
                   },
               },
               "traces": {
                   "traces_collected": {
                       "application_signals": { }
                   }
               }
           },
       },
   }
   ```

------

**Una volta installato correttamente il componente aggiuntivo EKS Observability, puoi visualizzare le metriche del cluster EKS nella scheda Dashboard della console. HyperPod **

# Configurazione della governance delle attività
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-setup-task-governance"></a>

Questa sezione include informazioni su come configurare il componente aggiuntivo Amazon SageMaker HyperPod task governance EKS. Questo include la concessione di autorizzazioni che consentono di impostare l’assegnazione di priorità alle attività, l’allocazione di risorse di calcolo per i team, le modalità di condivisione delle risorse di calcolo inattive e la prelazione delle attività per i team.

In caso di problemi di configurazione, consulta [Risoluzione dei problemi](sagemaker-hyperpod-eks-operate-console-ui-governance-troubleshoot.md) per la risoluzione dei problemi noti.

**Topics**
+ [Impostazioni Kueue](#hp-eks-task-governance-kueue-settings)
+ [HyperPod Prerequisiti per la governance delle attività](#hp-eks-task-governance-prerequisites)
+ [HyperPod configurazione della governance delle attività](#hp-eks-task-governance-setup)

## Impostazioni Kueue
<a name="hp-eks-task-governance-kueue-settings"></a>

HyperPod Il componente aggiuntivo Task Governance EKS installa [Kueue](https://github.com/kubernetes-sigs/kueue/tree/main/apis/kueue) per i tuoi cluster EKS. HyperPod Kueue è un sistema nativo di Kubernetes che gestisce le quote e il loro consumo da parte dei processi. 


| Versione aggiuntiva EKS Task Governance HyperPod  | Versione di Kueue installata nell’ambito di questo componente aggiuntivo | 
| --- | --- | 
|  v1.1.3  |  v0.12.0  | 

**Nota**  
Kueue v.012.0 e versioni successive non sono inclusi nell' kueue-rbac-proxyinstallazione. Potrebbero essere state installate versioni precedenti. kueue-rbac-proxy Ad esempio, se utilizzi Kueue v0.8.1, potresti avere la v0.18.1. kueue-rbac-proxy

HyperPod la governance delle attività sfrutta la gestione delle code, della pianificazione e delle quote di lavoro native di Kueue per Kubernetes e viene installata con il componente aggiuntivo Task Governance EKS. HyperPod Una volta installato, HyperPod crea e modifica risorse Kubernetes gestite SageMaker dall'intelligenza artificiale come,,, e. `KueueManagerConfig` `ClusterQueues` `LocalQueues` `WorkloadPriorityClasses` `ResourceFlavors` `ValidatingAdmissionPolicies` Sebbene gli amministratori di Kubernetes abbiano la flessibilità necessaria per modificare lo stato di queste risorse, è possibile che qualsiasi modifica apportata a una risorsa gestita dall' SageMaker IA possa essere aggiornata e sovrascritta dal servizio.

Le seguenti informazioni descrivono le impostazioni di configurazione utilizzate dal componente aggiuntivo Task Governance per configurare Kueue. HyperPod 

```
  apiVersion: config.kueue.x-k8s.io/v1beta1
    kind: Configuration
    health:
      healthProbeBindAddress: :8081
    metrics:
      bindAddress: :8443
      enableClusterQueueResources: true
    webhook:
      port: 9443
    manageJobsWithoutQueueName: false
    leaderElection:
      leaderElect: true
      resourceName: c1f6bfd2.kueue.x-k8s.io
    controller:
      groupKindConcurrency:
        Job.batch: 5
        Pod: 5
        Workload.kueue.x-k8s.io: 5
        LocalQueue.kueue.x-k8s.io: 1
        ClusterQueue.kueue.x-k8s.io: 1
        ResourceFlavor.kueue.x-k8s.io: 1
    clientConnection:
      qps: 50
      burst: 100
    integrations:
      frameworks:
      - "batch/job"
      - "kubeflow.org/mpijob"
      - "ray.io/rayjob"
      - "ray.io/raycluster"
      - "jobset.x-k8s.io/jobset"
      - "kubeflow.org/mxjob"
      - "kubeflow.org/paddlejob"
      - "kubeflow.org/pytorchjob"
      - "kubeflow.org/tfjob"
      - "kubeflow.org/xgboostjob"
      - "pod"
      - "deployment"
      - "statefulset"
      - "leaderworkerset.x-k8s.io/leaderworkerset"
      podOptions:
        namespaceSelector:
          matchExpressions:
            - key: kubernetes.io/metadata.name
              operator: NotIn
              values: [ kube-system, kueue-system ]
    fairSharing:
      enable: true
      preemptionStrategies: [LessThanOrEqualToFinalShare, LessThanInitialShare]
    resources:
      excludeResourcePrefixes: []
```

Per ulteriori informazioni su ogni voce di configurazione, consulta [Configurazione](https://kueue.sigs.k8s.io/docs/reference/kueue-config.v1beta1/#Configuration) nella documentazione di Kueue.

## HyperPod Prerequisiti per la governance delle attività
<a name="hp-eks-task-governance-prerequisites"></a>
+ Assicurati di disporre della politica di autorizzazione minima per gli amministratori HyperPod del cluster, in. [Utenti IAM per l’amministratore del cluster](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-admin) Ciò include le autorizzazioni per eseguire il SageMaker HyperPod core APIs, gestire SageMaker HyperPod i cluster al suo interno ed eseguire Account AWS le attività in. [Gestione dei SageMaker HyperPod cluster orchestrati da Amazon EKS](sagemaker-hyperpod-eks-operate.md) 
+ La versione di Kubernetes dovrà essere >= 1.30. Per istruzioni, consulta [Update existing clusters to the new Kubernetes version](https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html).
+ Se hai già installato Kueue nei cluster, disinstalla Kueue prima di installare il componente aggiuntivo EKS.
+ Un HyperPod nodo deve già esistere nel cluster EKS prima di installare il componente aggiuntivo per la governance delle HyperPod attività. 

## HyperPod configurazione della governance delle attività
<a name="hp-eks-task-governance-setup"></a>

Di seguito vengono fornite informazioni su come impostare la governance delle HyperPod attività.

------
#### [ Setup using the SageMaker AI console ]

Di seguito vengono fornite informazioni su come configurare la governance delle HyperPod attività utilizzando la SageMaker HyperPod console.

Hai già tutte le seguenti autorizzazioni allegate se hai già concesso le autorizzazioni per gestire Amazon CloudWatch Observability EKS e visualizzare il dashboard del HyperPod cluster tramite la console SageMaker AI in. [HyperPod Configurazione del componente aggiuntivo Amazon CloudWatch Observability EKS](sagemaker-hyperpod-eks-operate-console-ui-governance-setup-dashboard.md#hp-eks-dashboard-setup) Se non l'hai configurata, utilizza la politica di esempio riportata di seguito per concedere le autorizzazioni per gestire il componente aggiuntivo HyperPod Task Governance e visualizzare la dashboard del HyperPod cluster tramite la console AI. SageMaker 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:ListAddons",
                "eks:CreateAddon",
                "eks:UpdateAddon",
                "eks:DescribeAddon",
                "eks:DescribeAddonVersions",
                "sagemaker:DescribeCluster",
                "sagemaker:DescribeClusterNode",
                "sagemaker:ListClusterNodes",
                "sagemaker:ListClusters",
                "eks:DescribeCluster",
                "eks:AccessKubernetesApi"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Vai alla scheda **Dashboard** nella SageMaker HyperPod console per installare il componente aggiuntivo Amazon SageMaker HyperPod Task Governance. 

------
#### [ Setup using the Amazon EKS AWS CLI ]

Utilizza il AWS CLI comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/create-addon.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/create-addon.html)EKS di esempio per configurare l'API Amazon EKS di HyperPod task governance e l'interfaccia utente della console utilizzando AWS CLI:

```
aws eks create-addon --region region --cluster-name cluster-name --addon-name amazon-sagemaker-hyperpod-taskgovernance
```

------

Puoi visualizzare la scheda **Policies** nella console HyperPod SageMaker AI se l'installazione è andata a buon fine. È inoltre possibile utilizzare il seguente AWS CLI comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/describe-addon.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/describe-addon.html)EKS di esempio per verificare lo stato. 

```
aws eks describe-addon --region region --cluster-name cluster-name --addon-name amazon-sagemaker-hyperpod-taskgovernance
```

# Pannello di controllo
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-metrics"></a>

Amazon SageMaker HyperPod Task Governance offre una panoramica completa dei parametri di utilizzo dei cluster Amazon EKS, inclusi i parametri relativi all'hardware, al team e alle attività. Di seguito vengono fornite informazioni sulla dashboard del cluster HyperPod EKS.

La dashboard offre una visione completa delle metriche di utilizzo del cluster, incluse le metriche relative all’hardware, al team e alle attività. È necessario installare il componente aggiuntivo EKS per visualizzare la dashboard. Per ulteriori informazioni, consulta [Configurazione della dashboard](sagemaker-hyperpod-eks-operate-console-ui-governance-setup-dashboard.md).

Nella [console Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/), in **HyperPod Clusters**, puoi accedere alla HyperPod console e visualizzare l'elenco dei HyperPod cluster nella tua regione. Scegli il cluster e vai alla scheda **Dashboard**. La dashboard contiene le seguenti metriche. Puoi scaricare i dati per una sezione scegliendo la voce **Esporta** corrispondente.

**Utilizzo**

Fornisce lo stato del cluster EKS point-in-time e metriche basate sulle tendenze per le risorse di elaborazione critiche. Per impostazione predefinita, vengono visualizzati **tutti i gruppi di istanze**. Utilizza il menu a discesa per filtrare i gruppi di istanze. Le metriche incluse in questa sezione sono:
+ Numero di istanze totali, in esecuzione e con ripristino in sospeso. Il numero di istanze con ripristino in sospeso si riferisce al numero di istanze attendono di essere sottoposte a ripristino.
+ GPUs, memoria GPU, memoria v e v. CPUs CPUs 
+ Utilizzo della GPU, utilizzo della memoria GPU, utilizzo della vCPU e utilizzo della memoria vCPU.
+ Un grafico interattivo dell’utilizzo di GPU e vCPU. 

**Team**

Fornisce informazioni sulla gestione delle risorse specifica del team. Questo include:
+ Allocazione di istanze e GPU.
+ Tassi di utilizzo della GPU.
+ Statistiche sulla GPU prese in prestito.
+ Stato dell’attività (in esecuzione o in sospeso).
+ Un grafico a barre che confronta l’utilizzo della GPU e l’allocazione delle risorse di calcolo tra i team.
+ Informazioni dettagliate su GPU e vCPU del team. Per impostazione predefinita, le informazioni visualizzate includono **Tutti i team**. Puoi filtrare per team e istanza scegliendo i menu a discesa. Nel grafico interattivo puoi filtrare per ora.

**Attività**

**Nota**  
Per visualizzare le attività del cluster HyperPod EKS nella dashboard:  
Configura Kubernetes Role-Based Access Control (RBAC) per gli utenti di data scientist nello spazio dei HyperPod nomi designato per autorizzare l'esecuzione delle attività su cluster orchestrati da Amazon EKS. I namespace adottano il formato `hyperpod-ns-team-name`. Per stabilire le autorizzazioni RBAC, consulta le [istruzioni per la creazione dei ruoli del team](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart#5-create-team-role).
Verifica che il tuo processo sia venga inviato con il namespace e le etichette delle classi di priorità appropriati. Per un esempio completo, consulta [Invia un lavoro alla coda e allo SageMaker spazio dei nomi gestiti dall'intelligenza artificiale](sagemaker-hyperpod-eks-operate-console-ui-governance-cli.md#hp-eks-cli-start-job).

Fornisce informazioni sulle metriche relative alle attività. Questo include il numero di attività in esecuzione, in sospeso e prerilasciate, oltre alle statistiche sui tempi di esecuzione e attesa. Per impostazione predefinita, le informazioni visualizzate includono **Tutti i team**. Puoi filtrare per team selezionando il menu a discesa. Nel grafico interattivo puoi filtrare per ora.

# Processi
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-tasks"></a>

Di seguito vengono fornite informazioni sulle attività del cluster Amazon SageMaker HyperPod EKS. Le attività sono operazioni o processi che vengono inviati al cluster. Queste possono essere operazioni di machine learning, come addestramento, esecuzione di esperimenti o inferenza. L’elenco dei dettagli delle attività visualizzabili include lo stato, la durata di esecuzione e la quantità di calcolo utilizzata per ogni attività. 

Nella [console Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/), in **HyperPod Clusters**, puoi accedere alla HyperPod console e visualizzare l'elenco dei HyperPod cluster nella tua regione. Scegli il tuo cluster e vai alla scheda **Attività**.

Per rendere visibile a tutti la scheda **Attività**, e non solo all’amministratore, l’amministratore deve [aggiungere una voce di accesso al cluster EKS per il ruolo IAM](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html). 

**Nota**  
Per visualizzare le attività del cluster HyperPod EKS nella dashboard:  
Configura Kubernetes Role-Based Access Control (RBAC) per gli utenti di data scientist nello spazio dei HyperPod nomi designato per autorizzare l'esecuzione delle attività su cluster orchestrati da Amazon EKS. I namespace adottano il formato `hyperpod-ns-team-name`. Per stabilire le autorizzazioni RBAC, consulta le [istruzioni per la creazione dei ruoli del team](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart#5-create-team-role).
Verifica che il tuo processo sia venga inviato con il namespace e le etichette delle classi di priorità appropriati. Per un esempio completo, consulta [Invia un lavoro alla coda e allo SageMaker spazio dei nomi gestiti dall'intelligenza artificiale](sagemaker-hyperpod-eks-operate-console-ui-governance-cli.md#hp-eks-cli-start-job).

Per i cluster EKS, TensorFlow vengono mostrate le attività kubeflow (PyTorch, MPI,). Per impostazione predefinita, PyTorch vengono visualizzate le attività. Puoi filtrare per PyTorch TensorFlow attività MPI scegliendo il menu a discesa o utilizzando il campo di ricerca. Le informazioni mostrate per ogni attività includono il nome dell’attività, lo stato, il namespace, la classe di priorità e l’ora di creazione. 

# Utilizzo della pianificazione basata sulla topologia nella governance delle attività di Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-tasks-scheduling"></a>

La pianificazione basata sulla topologia in SageMaker HyperPod Amazon Task Governance ottimizza l'efficienza di formazione dei carichi di lavoro di machine learning distribuiti posizionando pod basati sulla topologia di rete fisica delle istanze Amazon EC2. Considerando la struttura gerarchica dell' AWS infrastruttura, tra cui zone di disponibilità, blocchi di rete e rack fisici, la pianificazione basata sulla topologia garantisce che i pod che richiedono comunicazioni frequenti siano pianificati in prossimità per ridurre al minimo la latenza di rete. Questo posizionamento intelligente è particolarmente utile per i lavori di formazione sull'apprendimento automatico su larga scala che implicano una pod-to-pod comunicazione intensiva, con conseguente riduzione dei tempi di formazione e un utilizzo più efficiente delle risorse in tutto il cluster.

**Nota**  
Per utilizzare la pianificazione basata sulla topologia, assicurati che la tua versione di HyperPod task governance sia la v1.2.2-eksbuild.1 o successiva.

La pianificazione basata sulla topologia supporta i tipi di istanze seguenti:
+ ml.p3dn.24xlarge
+ ml.p4d.24xlarge
+ ml.p4de.24xlarge
+ ml.p5.48xlarge
+ ml.p5e.48xlarge
+ ml.p5en.48xlarge
+ ml.p6e-gb200.36xlarge
+ ml.trn1.2xlarge
+ ml.trn1.32xlarge
+ ml.trn1n.32xlarge
+ ml.trn2.48xlarge
+ ml.trn2u.48xlarge

La pianificazione basata sulla topologia si integra con i HyperPod flussi di lavoro esistenti fornendo al contempo preferenze di topologia flessibili tramite i file Kubectl YAML e la CLI. HyperPod HyperPod la governance delle attività configura automaticamente i nodi del cluster con etichette di topologia e funziona con le politiche di governance delle HyperPod attività e i meccanismi di prestito delle risorse, garantendo che la pianificazione basata sulla topologia non interrompa i processi operativi correnti. Grazie al supporto integrato per le specifiche di topologia preferite e richieste, puoi eseguire il fine-tuning del posizionamento dei carichi di lavoro in base a specifici requisiti delle prestazioni, mantenendo al contempo la flessibilità necessaria per tornare alla pianificazione standard se i vincoli della topologia non possono essere soddisfatti.

Sfruttando le etichette con riconoscimento della topologia HyperPod, è possibile potenziare i carichi di lavoro di machine learning di tali dispositivi mediante un posizionamento intelligente dei pod che tiene conto dell'infrastruttura fisica di rete. HyperPod la governance delle attività ottimizza automaticamente la pianificazione dei pod in base alla topologia gerarchica del data center, il che si traduce direttamente in una riduzione della latenza di rete e in migliori prestazioni di formazione per le attività di machine learning distribuite. La consapevolezza della topologia è particolarmente utile per carichi di lavoro di machine learning su larga scala, perché riduce al minimo il sovraccarico di comunicazione avvicinando strategicamente i pod correlati all’interno della gerarchia di rete. Il risultato è una latenza della rete di comunicazione ottimizzata tra i pod, un utilizzo più efficiente delle risorse e migliori prestazioni complessive per le AI/ML applicazioni a elaborazione intensiva, il tutto senza la necessità di gestire manualmente configurazioni di topologia di rete complesse.

Di seguito sono riportate le etichette per i livelli di rete topologici disponibili in cui Task Governance può pianificare i pod: HyperPod 
+ topology.k8s.aws/ -1 network-node-layer
+ network-node-layertopologia.k8s.aws/ -2
+ network-node-layertopologia.k8s.aws/ -3
+ topology.k8s.aws/ultraserver-id

Per utilizzare la pianificazione basata sulla topologia, includi le etichette seguenti nel tuo file YAML:
+ kueue.x-k8s.io/ podset-required-topology - indica che questo lavoro deve avere i pod richiesti e che tutti i pod nei nodi devono essere programmati all'interno dello stesso livello di topologia.
+ kueue.x-k8s.io/ podset-preferred-topology - indica che questo job deve avere i pod, ma che la pianificazione dei pod all'interno dello stesso livello di topologia è preferibile ma non obbligatoria. HyperPod task governance proverà a pianificare i pod all'interno di un livello prima di provare il livello di topologia successivo.

Se le risorse non condividono la stessa etichetta di topologia, il processo viene sospeso. Il processo viene inserito in lista d’attesa. Quando Kueue rileva una quantità di risorse sufficiente, accetta ed esegue processo.

L’esempio seguente illustra come utilizzare le etichette nei file YAML:

```
apiVersion: batch/v1
kind: Job
metadata:
  name: test-tas-job
  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:
  parallelism: 10
  completions: 10
  suspend: true
  template:
    metadata:
      labels:
        kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue
      annotations:
        kueue.x-k8s.io/podset-required-topology: "topology.k8s.aws/network-node-layer-3"
        or
        kueue.x-k8s.io/podset-preferred-topology: "topology.k8s.aws/network-node-layer-3"
    spec:
      nodeSelector:
        topology.k8s.aws/network-node-layer-3: TOPOLOGY_LABEL_VALUE
      containers:
        - name: dummy-job
          image: gcr.io/k8s-staging-perf-tests/sleep:v0.1.0
          args: ["3600s"]
          resources:
            requests:
              cpu: "100"
      restartPolicy: Never
```

La tabella seguente spiega i nuovi parametri che puoi utilizzare nel file YAML kubectl.


| Parametro | Description | 
| --- | --- | 
| kueue.x-k8s.io/queue-name | Il nome della coda da utilizzare per eseguire il processo. Il formato di queue-name deve essere hyperpod-ns-team-name-localqueue. | 
| kueue.x-k8s.io/priority-class | Consente di specificare una priorità per la pianificazione dei pod. Questa specifica è facoltativa. | 
| annotations | Contiene l’annotazione della topologia collegata al processo. Le topologie disponibili sono kueue.x-k8s.io/ e podset-required-topologykueue.x-k8s.io/. podset-preferred-topology Puoi utilizzare un’annotazione o nodeSelector, ma non entrambi contemporaneamente. | 
| nodeSelector | Specifica il livello di rete che rappresenta il livello di posizionamento delle istanze Amazon EC2. Utilizza questo campo o un’annotazione, ma non entrambi contemporaneamente. Nel file YAML, puoi anche utilizzare il parametro nodeSelector per scegliere il livello esatto per i tuoi pod. Per ottenere il valore della tua etichetta, usa l'operazione API. [ DescribeInstanceTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTopology.html) | 

Puoi anche utilizzare la HyperPod CLI per eseguire il tuo lavoro e utilizzare la pianificazione basata sulla topologia. Per ulteriori informazioni sulla HyperPod CLI, vedere. [SageMaker HyperPod Comandi CLI](sagemaker-hyperpod-eks-hyperpod-cli-reference.md)

```
hyp create hyp-pytorch-job \                                            
  --version 1.1 \
  --job-name sample-pytorch-job \
  --image 123456789012.dkr.ecr.us-west-2.amazonaws.com/ptjob:latest \
  --pull-policy "Always" \
  --tasks-per-node 1 \
  --max-retry 1 \
  --priority high-priority \
  --namespace hyperpod-ns-team-name \
  --queue-name hyperpod-ns-team-name-localqueue \
  --preferred-topology-label topology.k8s.aws/network-node-layer-1
```

Di seguito è riportato un esempio di file di configurazione che è possibile utilizzare per eseguire un file PytorchJob con etichette di topologia. Se desideri eseguire processi MPI e TensorFlow, il file è sostanzialmente uguale. Se invece desiderate eseguire questi lavori, ricordatevi di modificare il file di configurazione di conseguenza, ad esempio utilizzando l'immagine corretta anziché PyTorchJob. Se stai eseguendo un PyTorchJob, puoi assegnare topologie diverse ai nodi master e worker. PyTorchJob ha sempre un nodo master, quindi ti consigliamo di utilizzare invece la topologia per supportare i worker pod.

```
apiVersion: kubeflow.org/v1
kind: PyTorchJob
metadata:
  annotations: {}
  labels:
    kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue
  name: tas-test-pytorch-job
  namespace: hyperpod-ns-team-name
spec:
  pytorchReplicaSpecs:
    Master:
      replicas: 1
      restartPolicy: OnFailure
      template:
        metadata:
          labels:
            kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue
        spec:
          containers:
          - command:
            - python3
            - /opt/pytorch-mnist/mnist.py
            - --epochs=1
            image: docker.io/kubeflowkatib/pytorch-mnist:v1beta1-45c5727
            imagePullPolicy: Always
            name: pytorch
    Worker:
      replicas: 10
      restartPolicy: OnFailure
      template:
        metadata:
          # annotations:
            # kueue.x-k8s.io/podset-required-topology: "topology.k8s.aws/network-node-layer-3"
          labels:
            kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue
        spec:
          containers:
          - command:
            - python3
            - /opt/pytorch-mnist/mnist.py
            - --epochs=1
            image: docker.io/kubeflowkatib/pytorch-mnist:v1beta1-45c5727
            imagePullPolicy: Always
            name: pytorch
            resources:
              limits:
                cpu: 1
              requests:
                memory: 200Mi
                cpu: 1
          #nodeSelector:
          #  topology.k8s.aws/network-node-layer-3: xxxxxxxxxxx
```

Per visualizzare le topologie per il tuo cluster, utilizza l'[ DescribeInstanceTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTopology.html)operazione API. Per impostazione predefinita, le topologie sono nascoste in Console di gestione AWS e Amazon SageMaker Studio. Segui questa procedura per visualizzarle nell’interfaccia che stai utilizzando.

**SageMaker Studio**

1. In SageMaker Studio, accedi al tuo cluster.

1. Nella visualizzazione Attività, scegli il menu delle opzioni nella colonna Nome, quindi scegli **Gestisci colonne**.

1. Seleziona **Topologia richiesta** e **Vincolo di topologia** per aggiungere le colonne per visualizzare le informazioni sulla topologia nell’elenco dei pod Kubernetes.

**Console di gestione AWS**

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

1. In **HyperPod Cluster**, scegli **Cluster management**.

1. Scegli la scheda **Attività**, quindi scegli l’icona a forma di ingranaggio.

1. Negli attributi dell’istanza, attiva **Topologia richiesta** e **Vincolo di topologia**.

1. Scegli **Conferma** per visualizzare le informazioni sulla topologia nella tabella.

# Policy
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies"></a>

La governance delle SageMaker HyperPod attività di Amazon semplifica l'allocazione delle risorse del cluster Amazon EKS e l'assegnazione delle priorità alle attività. Di seguito vengono fornite informazioni sulle HyperPod politiche dei cluster EKS. Per informazioni su come configurare la governance delle attività, consulta [Configurazione della governance delle attività](sagemaker-hyperpod-eks-operate-console-ui-governance-setup-task-governance.md).

Le policy sono suddivise in **Priorità delle risorse di calcolo** e **Allocazione delle risorse di calcolo** I concetti delle policy seguenti vengono organizzati nel contesto di tali policy.

La **priorità delle risorse di calcolo**, o policy del cluster, determina in che modo le risorse di calcolo inattive vengono presa in prestito e in che modo i team assegnano priorità alle attività.
+ **Allocazione delle risorse di calcolo inattive** definisce in che modo le risorse di calcolo inattive vengono allocate tra i team. In altre parole, definisce in che modo le risorse di calcolo inutilizzate possono essere prese in prestito dai team. Quando selezioni **Allocazione delle risorse di calcolo inattive**, puoi scegliere tra:
  + **Primo arrivato, primo servito**: se applicata, questa opzione non assegna priorità ai team e ogni attività in arrivo ha la stessa probabilità di ottenere risorse oltre la quota stabilita. Alle attività viene assegnata una priorità in base all’ordine di invio. Ciò significa che un utente potrebbe utilizzare il 100% delle risorse di calcolo inattive se le richiede per primo.
  + **Condivisione equa**: quando viene applicata, i team prendono in prestito risorse di calcolo inattive in base al **Peso di condivisione equa** loro assegnato. Questi pesi sono definiti in **Allocazione delle risorse di calcolo**. Per ulteriori informazioni su come utilizzare questa opzione, consulta [Esempi di condivisione di risorse di calcolo inattive](#hp-eks-task-governance-policies-examples).
+ La **prioritizzazione delle attività** definisce il modo in cui le attività vengono messe in coda non appena il calcolo diventa disponibile. Quando scegli una **prioritizzazione delle attività**, puoi scegliere tra:
  + **Primo arrivato, primo servito**: se viene applicata questa opzione, le attività vengono messe in coda nell’ordine in cui sono state richieste.
  + **Classificazione delle attività**: se viene applicata questa opzione, le attività vengono messe in coda nell’ordine definito dalla loro priorità. Se scegli questa opzione, devi aggiungere le classi di priorità e i pesi in base ai quali viene assegnata la priorità. Le attività della stessa classe di priorità vengono eseguite in base al principio “primo arrivato, primo servito”. Se l’opzione è abilitata in Allocazione delle risorse di calcolo, le attività con priorità più bassa vengono sostituite dalle attività con priorità più alta all’interno del team.

    Quando i Data Scientist inviano i processi al cluster, utilizzano il nome della classe di priorità nel file YAML. La classe di priorità è nel formato `priority-class-name-priority`. Per vedere un esempio, consulta [Invia un lavoro alla coda e allo SageMaker spazio dei nomi gestiti dall'intelligenza artificiale](sagemaker-hyperpod-eks-operate-console-ui-governance-cli.md#hp-eks-cli-start-job).
  + **Classi di priorità**: queste classi stabiliscono una priorità relativa per le attività quando prendono in prestito quote di capacità. Quando un’attività viene eseguita utilizzando una quota presa in prestito, può essere interrotta da un’altra attività con priorità più elevata, se la capacità disponibile per l’attività in entrata è terminata. Se **Prelazione** è abilitato in **Allocazione delle risorse di calcolo**, un’attività con priorità più elevata può anche interrompere altre attività all’interno del proprio team.
+ La **condivisione delle risorse non allocate** consente ai team di prendere in prestito risorse di elaborazione che non sono assegnate a nessun team tramite la quota di elaborazione. Se abilitata, la capacità del cluster non allocata diventa disponibile per i team che possono prenderla in prestito automaticamente. Per ulteriori informazioni, consulta [Come funziona la condivisione delle risorse non allocate](#sagemaker-hyperpod-eks-operate-console-ui-governance-policies-idle-resource-sharing-how-it-works).

L’**Allocazione delle risorse di calcolo**, o quota di calcolo, definisce l’allocazione delle risorse di calcolo di un team e il peso (o il livello di priorità) assegnato a un team per un’allocazione equa delle risorse di calcolo inattive. 
+ **Nome del team**: il nome del team. Viene creato un **Namespace** corrispondente, di tipo `hyperpod-ns-team-name`. 
+ **Membri**: i membri del namespace del team. Dovrai configurare un controllo degli accessi basato sui ruoli (RBAC) Kubernetes per gli utenti di data scientist che desideri far parte di questo team, per eseguire attività su cluster orchestrati con Amazon EKS. HyperPod Per configurare un RBAC Kubernetes, utilizza le istruzioni in [create team role](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart#5-create-team-role).
+ **Peso di condivisione equa**: si tratta del livello di priorità assegnato al team quando viene applicata la **Condivisione equa** per l’opzione **Allocazione delle risorse di calcolo inattive**. La priorità più alta ha un peso di 100, mentre quella più bassa è 0. Un peso maggiore consente a un team di accedere più rapidamente alle risorse inutilizzate all’interno della capacità condivisa. Un peso zero indica la priorità più bassa, che significa che il team sarà sempre in svantaggio rispetto agli altri team. 

  Il peso di condivisione equa offre un margine di vantaggio al team quando compete con altri team per le risorse disponibili. L’ammissione dà priorità alla pianificazione delle attività svolte dai team con i pesi più alti e il minor numero di risorse prese in prestito. Ad esempio, se il Team A ha un peso di 10 e il Team B ha un peso di 5, il Team A avrebbe un accesso prioritario alle risorse inutilizzate, perché ha processi pianificati prima del Team B.
+ **Prelazione delle attività**: le risorse di calcolo vengono prese da un’attività in base alla priorità. Per impostazione predefinita, il team che presta le risorse di calcolo inattive avrà la prelazione rispetto alle attività degli altri team. 
+ **Prestare e prendere in prestito**: definisce in che modo il team presta le risorse di calcolo inattive e specifica se il team può prendere in prestito risorse da altri team.
  + Limite di **prestito basato sulla percentuale: il limite** di elaborazione inattiva che un team può prendere in prestito, espresso come percentuale della quota garantita. Un team può prendere in prestito fino al 10.000% delle risorse di calcolo allocate. Il valore fornito qui viene interpretato come percentuale. Ad esempio, un valore pari a 500 verrà interpretato come 500%. Questa percentuale si applica in modo uniforme a tutti i tipi di risorse (CPU, GPU, memoria) e ai tipi di istanze inclusi nella quota del team.
  + **Limite assoluto di prestito**: il limite di elaborazione inattiva che un team può prendere in prestito, definito come valori assoluti delle risorse per tipo di istanza. Ciò fornisce un controllo granulare sul comportamento di prestito per tipi di istanze specifici. È necessario specificare i limiti assoluti utilizzando lo stesso schema di **Compute Quota, incluso il conteggio** delle istanze, gli acceleratori, la vCPU, la memoria o le partizioni di accelerazione. Puoi specificare limiti assoluti per uno o più tipi di istanze nella quota del tuo team.

Per informazioni su come vengono utilizzati i concetti come le classi di priorità e i namespace, consulta [Esempi di comandi di governance delle HyperPod AWS CLI attività](sagemaker-hyperpod-eks-operate-console-ui-governance-cli.md).

## Esempi di condivisione di risorse di calcolo inattive
<a name="hp-eks-task-governance-policies-examples"></a>

La quota totale riservata non deve superare la capacità disponibile del cluster per quella risorsa, al fine di garantire una corretta gestione delle quote. Ad esempio, se un cluster comprende 20 istanze `ml.c5.2xlarge`, la quota cumulativa assegnata ai team dovrebbe rimanere inferiore a 20. 

Se le policy **Allocazione delle risorse di calcolo** per i team consentono **Presta e prendi in prestito** o **Presta**, la capacità inattiva viene condivisa tra questi team. Ad esempio, il Team A e il Team B hanno abilitato **Presta e prendi in prestito**. Il Team A ha una quota pari a 6, ma utilizza solo 2 risorse per i processi, mentre il Team B ha una quota pari a 5 e utilizza 4 risorse. Un processo inviato al Team B richiede 4 risorse, quindi il Team B prenderà in prestito 3 risorse dal Team A. 

Se la policy **Allocazione delle risorse di calcolo** di un team è impostata su **Non prestare**, il team non potrà prendere in prestito alcuna capacità aggiuntiva oltre alle proprie allocazioni.

## Come funziona la condivisione delle risorse non allocate
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-idle-resource-sharing-how-it-works"></a>

La condivisione delle risorse non allocate gestisce automaticamente il pool di risorse che non sono allocate a nessuna quota di elaborazione nel cluster. Ciò significa che monitora HyperPod continuamente lo stato del cluster e si aggiorna automaticamente alla configurazione corretta nel tempo.

**Configurazione iniziale**
+ Quando l'impostazione è impostata su `Enabled` in your ClusterSchedulerConfig (`IdleResourceSharing`per impostazione predefinita`Disabled`), la governance delle HyperPod attività inizia a monitorare il cluster e calcola le risorse inattive disponibili sottraendo le quote del team dalla capacità totale dei nodi.
+ La condivisione non allocata delle risorse viene creata per rappresentare il pool di risorse che ClusterQueues possono essere prese in prestito.
+ Quando si abilita per la prima volta la condivisione di risorse non allocate, la configurazione dell'infrastruttura richiede diversi minuti. È possibile monitorare i progressi tramite policy `Status` e in. `DetailedStatus` ClusterSchedulerConfig

**Riconciliazione in corso**
+ HyperPod la governance delle attività monitora continuamente le modifiche, come l'aggiunta o la rimozione di nodi e gli aggiornamenti delle quote delle code dei cluster.
+  Quando si verificano modifiche, la condivisione delle risorse non allocate ricalcola la quota e gli aggiornamenti. ClusterQueues La riconciliazione viene in genere completata in pochi secondi. 

**Monitoraggio**

 Puoi verificare che la condivisione delle risorse non allocate sia completamente configurata controllando la condivisione delle risorse non allocate: ClusterQueues 

```
kubectl get clusterqueue | grep hyperpod-ns-idle-resource-sharing
```

Quando vedi ClusterQueues con nomi come`hyperpod-ns-idle-resource-sharing-cq-1`, la condivisione delle risorse non allocate è attiva. Tieni presente che ClusterQueues possono esistere più condivisioni di risorse non allocate a seconda del numero di tipi di risorse presenti nel cluster. 

## Idoneità dei nodi per la condivisione di risorse non allocate
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-idle-resource-sharing-node-eligibility"></a>

La condivisione delle risorse non allocate include solo i nodi che soddisfano i seguenti requisiti:

1. **Stato Node Ready**
   + I nodi devono essere in `Ready` stato per poter contribuire al pool di risorse non allocate.
   + I nodi in stato non pronto `NotReady` o in altri stati non pronti sono esclusi dai calcoli della capacità.
   + Quando un nodo diventa`Ready`, viene automaticamente incluso nel ciclo di riconciliazione successivo.

1. **Stato programmabile del nodo**
   + I nodi con `spec.unschedulable: true` sono esclusi dalla condivisione di risorse non allocate.
   + Quando un nodo torna a essere programmabile, viene automaticamente incluso nel ciclo di riconciliazione successivo.

1. **Configurazione MIG (solo nodi GPU)**
   + Per i nodi GPU con partizionamento MIG (Multi-Instance GPU), l'`nvidia.com/mig.config.state`etichetta deve indicare che il nodo contribuisce con i profili MIG alla condivisione `success` di risorse non allocate.
   + Questi nodi verranno riprovati automaticamente una volta completata correttamente la configurazione MIG.

1. **Tipi di istanze supportati**
   + L'istanza deve essere un tipo di SageMaker HyperPod istanza supportato.
   + Vedi l'elenco dei tipi di istanza supportati nel SageMaker HyperPod cluster.

**Topics**
+ [Esempi di condivisione di risorse di calcolo inattive](#hp-eks-task-governance-policies-examples)
+ [Come funziona la condivisione delle risorse non allocate](#sagemaker-hyperpod-eks-operate-console-ui-governance-policies-idle-resource-sharing-how-it-works)
+ [Idoneità dei nodi per la condivisione di risorse non allocate](#sagemaker-hyperpod-eks-operate-console-ui-governance-policies-idle-resource-sharing-node-eligibility)
+ [Creazione di policy](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-create.md)
+ [Modifica delle policy](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-edit.md)
+ [Eliminazione delle policy](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete.md)
+ [Allocazione della quota di elaborazione nella governance delle attività di Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-compute-allocation.md)

# Creazione di policy
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-create"></a>

Puoi creare le configurazioni **Policy del cluster** e **Allocazione delle risorse di calcolo** nella scheda **Policy**. Di seguito vengono fornite istruzioni su come creare le configurazioni seguenti.
+ Crea la tua **Policy del cluster** per aggiornare il modo in cui viene assegnata la priorità alle attività e vengono allocate le risorse di calcolo inattive.
+ Crea un’**Allocazione delle risorse di calcolo** per creare una nuova policy di allocazione delle risorse di calcolo per un team.
**Nota**  
Quando crei un'**allocazione Compute**, dovrai configurare un controllo degli accessi basato sui ruoli (RBAC) Kubernetes per gli utenti di data scientist nel namespace corrispondente per eseguire attività su cluster orchestrati con Amazon EKS. HyperPod I namespace adottano il formato `hyperpod-ns-team-name`. Per configurare un RBAC Kubernetes, utilizza le istruzioni in [create team role](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart#5-create-team-role).

Per informazioni sui concetti della [Policy](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md) politica dei cluster EKS per la governance dei task, consulta. HyperPod 

**Creare politiche di governance delle HyperPod attività**

Questa procedura presuppone che tu abbia già creato un cluster Amazon EKS configurato con HyperPod. Se non l’hai ancora fatto, consulta [Creazione di un SageMaker HyperPod cluster con l'orchestrazione di Amazon EKS](sagemaker-hyperpod-eks-operate-console-ui-create-cluster.md).

1. Passa alla [console Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/).

1. Nel riquadro di navigazione a sinistra, in **HyperPodClusters**, scegli **Cluster Management**.

1. Scegli il tuo cluster Amazon EKS elencato tra **SageMaker HyperPodi cluster.**

1. Scegliere la scheda **Policy**.

1. Per creare la **Policy del cluster**:

   1. Scegli **Modifica** per aggiornare il modo in cui viene assegnata la priorità alle attività e vengono allocate le risorse di calcolo inattive.

   1. Dopo avere apportato le modifiche, scegli **Invia**.

1. Per creare un’**Allocazione delle risorse di calcolo**:

1. 

   1. Scegli l’opzione **Crea** corrispondente. Viene visualizzata la pagina per creare un’allocazione delle risorse di calcolo.

   1. Dopo avere apportato le modifiche, scegli **Invia**.

# Modifica delle policy
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-edit"></a>

Puoi modificare le configurazioni **Policy del cluster** e **Allocazione delle risorse di calcolo** nella scheda **Policy**. Di seguito vengono fornite istruzioni su come modificare le configurazioni seguenti.
+ Modifica **Policy del cluster** per aggiornare il modo in cui viene assegnata la priorità alle attività e vengono allocate le risorse di calcolo inattive.
+ Modifica **Allocazione delle risorse di calcolo** per creare una nuova policy di allocazione delle risorse di calcolo per un team.
**Nota**  
Quando crei un'**allocazione Compute**, dovrai configurare un controllo degli accessi basato sui ruoli (RBAC) Kubernetes per gli utenti di data scientist nel namespace corrispondente per eseguire attività su cluster orchestrati con Amazon EKS. HyperPod I namespace adottano il formato `hyperpod-ns-team-name`. Per configurare un RBAC Kubernetes, utilizza le istruzioni in [create team role](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart#5-create-team-role).

Per ulteriori informazioni sui concetti della politica dei cluster EKS per la governance dei task, consulta. HyperPod [Policy](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md)

**Modifica le politiche di governance delle HyperPod attività**

Questa procedura presuppone che tu abbia già creato un cluster Amazon EKS configurato con HyperPod. Se non l’hai ancora fatto, consulta [Creazione di un SageMaker HyperPod cluster con l'orchestrazione di Amazon EKS](sagemaker-hyperpod-eks-operate-console-ui-create-cluster.md).

1. Passa alla [console Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/).

1. Nel riquadro di navigazione a sinistra, in **HyperPodClusters**, scegli **Cluster Management**.

1. Scegli il tuo cluster Amazon EKS elencato tra **SageMaker HyperPodi cluster.**

1. Scegliere la scheda **Policy**.

1. Per modificare la **Policy del cluster**:

   1. Scegli **Modifica** per aggiornare il modo in cui viene assegnata la priorità alle attività e vengono allocate le risorse di calcolo inattive.

   1. Dopo avere apportato le modifiche, scegli **Invia**.

1. Per modificare **Allocazione delle risorse di calcolo**:

1. 

   1. Scegli la configurazione da modificare in **Allocazione delle risorse di calcolo**. Si apre la pagina dei dettagli di configurazione.

   1. Se desideri modificare queste configurazioni, scegli **Modifica**.

   1. Dopo avere apportato le modifiche, scegli **Invia**.

# Eliminazione delle policy
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete"></a>

Puoi eliminare le configurazioni **della policy del cluster** e **dell'allocazione di Compute** utilizzando la console SageMaker AI o. AWS CLI La pagina seguente fornisce istruzioni su come eliminare le politiche e le configurazioni di governance delle SageMaker HyperPod attività.

Per ulteriori informazioni sui concetti della politica del cluster EKS sulla governance delle HyperPod attività, vedere[Policy](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md).

**Nota**  
In caso di problemi con la visualizzazione o l’eliminazione delle policy di governance delle attività, potrebbe essere necessario aggiornare il set minimo di autorizzazioni dell’amministratore del cluster. Consulta la scheda **Amazon EKS** nella sezione [Utenti IAM per l’amministratore del cluster](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-admin). Per ulteriori informazioni, consulta [Eliminazione dei cluster](sagemaker-hyperpod-eks-operate-console-ui-governance-troubleshoot.md#hp-eks-troubleshoot-delete-policies).

## Eliminare le politiche di governance delle HyperPod attività (console)
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete-console"></a>

Quanto segue utilizza la console SageMaker AI per eliminare le politiche di governance delle HyperPod attività.

**Nota**  
Non è possibile eliminare la **politica del cluster** (`ClusterSchedulerConfig`) utilizzando la console SageMaker AI. Per informazioni su come eseguire questa operazione utilizzando il AWS CLI, consulta[Elimina le politiche di governance delle HyperPod attività ()AWS CLI](#sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete-cli).

**Per eliminare le policy di governance delle attività (console)**

1. Passa alla [console Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker/).

1. Nel riquadro di navigazione a sinistra, in **HyperPodClusters**, scegli **Cluster Management**.

1. Scegli il tuo cluster Amazon EKS elencato tra **SageMaker HyperPodi cluster.**

1. Scegliere la scheda **Policy**.

1. Per eliminare l’**allocazione delle risorse di calcolo** (`ComputeQuota`):

   1. Nella sezione **Allocazione delle risorse di calcolo**, seleziona la configurazione da eliminare.

   1. Dal menu a discesa **Azioni**, seleziona **Elimina**.

   1. Segui le istruzioni nell’interfaccia utente per completare l’attività.

## Elimina le politiche di governance delle HyperPod attività ()AWS CLI
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete-cli"></a>

Quanto segue utilizza AWS CLI per eliminare le politiche di governance delle HyperPod attività.

**Nota**  
In caso di problemi con l'utilizzo dei seguenti comandi, potrebbe essere necessario aggiornare il file AWS CLI. Per ulteriori informazioni, consulta [Installazione o aggiornamento alla versione più recente della AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

**Per eliminare le policy di governance delle attività (AWS CLI)**

Imposta innanzitutto le variabili per i AWS CLI comandi seguenti.

```
REGION=aws-region
```

1. Ottieni le *cluster-arn* informazioni associate alle politiche che desideri eliminare. Puoi usare il seguente AWS CLI comando per elencare i cluster presenti nel tuo Regione AWS.

   ```
   aws sagemaker list-clusters \
       --region ${REGION}
   ```

1. Per eliminare le allocazioni delle risorse di calcolo (`ComputeQuota`):

   1. Elenca tutte le quote di calcolo associate al cluster. HyperPod 

      ```
      aws sagemaker list-compute-quotas \
          --cluster-arn cluster-arn \
          --region ${REGION}
      ```

   1. Per ogni `compute-quota-id` che desideri eliminare, utilizza il comando seguente per eliminare la quota di calcolo.

      ```
      aws sagemaker delete-compute-quota \
          --compute-quota-id compute-quota-id \
          --region ${REGION}
      ```

1. Per eliminare le policy del cluster (`ClusterSchedulerConfig`):

   1. Elenca tutte le politiche del cluster associate al HyperPod cluster.

      ```
      aws sagemaker list-cluster-scheduler-configs \
          --cluster-arn cluster-arn \
          --region ${REGION}
      ```

   1. Per ogni `cluster-scheduler-config-id` che desideri eliminare, utilizza il comando seguente per eliminare la quota di calcolo.

      ```
      aws sagemaker delete-cluster-scheduler-config 
          --cluster-scheduler-config-id scheduler-config-id \
          --region ${REGION}
      ```

# Allocazione della quota di elaborazione nella governance delle attività di Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-compute-allocation"></a>

Gli amministratori del cluster possono decidere le modalità di utilizzo delle risorse di calcolo acquistate dall’organizzazione. In questo modo si riducono gli sprechi e le risorse inattive. Puoi allocare una quota di calcolo in modo tale che i team possano prendere in prestito le risorse inutilizzate gli uni dagli altri. L'allocazione delle quote di calcolo nella governance delle HyperPod attività consente agli amministratori di allocare le risorse a livello di istanza e a un livello di risorse più granulare. Questa funzionalità offre una gestione flessibile ed efficiente delle risorse per i team, consentendo un controllo granulare sulle singole risorse di calcolo, invece di richiedere l’allocazione di intere istanze. L’allocazione a livello granulare elimina le inefficienze della tradizionale allocazione a livello di istanza. Grazie a questo approccio, puoi ottimizzare l’utilizzo delle risorse e ridurre le risorse di calcolo inattive.

L’allocazione delle quote di calcolo supporta tre tipi di allocazione delle risorse: acceleratori, vCPU e memoria. Gli acceleratori sono componenti delle istanze a calcolo accelerato che eseguono funzioni, ad esempio calcoli di numeri in virgola mobile, elaborazione grafica o corrispondenza di modelli di dati. Gli acceleratori includono acceleratori Trainium e nuclei GPUs neuronali. Per la condivisione di GPU tra più team, team diversi possono ricevere allocazioni della GPU specifiche dallo stesso tipo di istanza, massimizzando l’utilizzo dell’hardware dell’acceleratore. Per i carichi di lavoro a uso intensivo di memoria che richiedono RAM aggiuntiva per la preelaborazione dei dati o gli scenari di memorizzazione nella cache dei modelli, è possibile allocare una quota di memoria superiore al rapporto predefinito. GPU-to-memory Per le attività di pre-elaborazione che richiedono ingenti risorse di CPU, oltre all’addestramento della GPU, puoi allocare risorse della CPU indipendenti.

Una volta fornito un valore, la governance delle HyperPod attività calcola il rapporto utilizzando la formula «**risorsa allocata» divisa per la quantità totale di risorse disponibili nell'istanza**. HyperPod la governance delle attività utilizza quindi questo rapporto per applicare le allocazioni predefinite ad altre risorse, ma è possibile sovrascrivere queste impostazioni predefinite e personalizzarle in base al caso d'uso. Di seguito sono riportati alcuni scenari di esempio di come la governance delle HyperPod attività alloca le risorse in base ai valori dell'utente:
+ **Specificato solo l'acceleratore**: la governance delle HyperPod attività applica il rapporto predefinito a vCPU e memoria in base ai valori dell'acceleratore.
+ È stata **specificata solo la vCPU**: la governance delle HyperPod attività calcola il rapporto e lo applica alla memoria. Gli acceleratori sono impostati su 0.
+ **Specificata solo la memoria**: la HyperPod task governance calcola il rapporto e lo applica alla vCPU perché l'elaborazione è necessaria per eseguire carichi di lavoro specificati dalla memoria. Gli acceleratori sono impostati su 0.

Per controllare a livello di codice l'allocazione delle quote, è possibile utilizzare l'oggetto e specificare le allocazioni in numeri interi. [ ComputeQuotaResourceConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ComputeQuotaResourceConfig.html)

```
{
    "ComputeQuotaConfig": {
        "ComputeQuotaResources": [{
            "InstanceType": "ml.g5.24xlarge",
            "Accelerators": "16",
            "vCpu": "200.0",
            "MemoryInGiB": "2.0"
        }]
    }
}
```

Per visualizzare tutte le allocazioni allocate, incluse quelle predefinite, utilizza l'operazione. [ DescribeComputeQuota](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeComputeQuota.html) Per aggiornare le allocazioni, utilizzare l'operazione. [ UpdateComputeQuota](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateComputeQuota.html)

Puoi anche utilizzare la HyperPod CLI per allocare quote di calcolo. Per ulteriori informazioni sulla HyperPod CLI, vedere. [Esecuzione di processi su SageMaker HyperPod cluster orchestrati da Amazon EKS](sagemaker-hyperpod-eks-run-jobs.md) L'esempio seguente dimostra come impostare le quote di calcolo utilizzando la CLI. HyperPod 

```
hyp create hyp-pytorch-job --version 1.1 --job-name sample-job \
--image 123456789012.dkr.ecr.us-west-2.amazonaws.com/ptjob:latest \
--pull-policy "Always" \
--tasks-per-node 1 \
--max-retry 1 \
--priority high-priority \
--namespace hyperpod-ns-team-name \
--queue-name hyperpod-ns-team-name-localqueue \
--instance-type sample-instance-type \
--accelerators 1 \
--vcpu 3 \
--memory 1 \
--accelerators-limit 1 \
--vcpu-limit 4 \
--memory-limit 2
```

Per allocare le quote utilizzando la console, segui questi passaggi. AWS 

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

1. In HyperPod Cluster, scegli **Cluster management**.

1. In **Allocazioni delle risorse di calcolo**, scegli **Crea**.

1. Se non sono ancora presenti istanze, scegli **Aggiungi allocazione** per aggiungere un’istanza.

1. In **Allocazioni**, scegli di allocare in base alle istanze o alle singole risorse. Se allochi per singole risorse, l' SageMaker IA assegna automaticamente le allocazioni ad altre risorse in base al rapporto che hai scelto. Per sostituire questa allocazione delle risorse di calcolo basata sul rapporto, utilizza l’interruttore corrispondente.

1. Ripeti le fasi 4 e 5 per configurare istanze aggiuntive.

Dopo aver assegnato la quota di elaborazione, puoi inviare lavori tramite la CLI o HyperPod . `kubectl` HyperPodpianifica in modo efficiente i carichi di lavoro in base alla quota disponibile. 

# Allocazione della quota di partizione GPU
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-compute-allocation-gpu-partitions"></a>

È possibile estendere l'allocazione delle quote di elaborazione per supportare il partizionamento della GPU, abilitando una condivisione dettagliata delle risorse a livello di partizione GPU. Quando il partizionamento GPU è abilitato su Support nel cluster, ogni GPU fisica può essere partizionata GPUs in più unità isolate con allocazioni multiprocessore definite di elaborazione, memoria e streaming. GPUs Per ulteriori informazioni sul partizionamento della GPU, vedere. [Utilizzo delle partizioni GPU in Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md) Puoi assegnare partizioni GPU specifiche ai team, consentendo a più team di condividere una singola GPU mantenendo l'isolamento a livello di hardware e prestazioni prevedibili.

Ad esempio, un'istanza ml.p5.48xlarge con 8 H100 GPUs può essere partizionata in partizioni GPU ed è possibile allocare singole partizioni a team diversi in base ai requisiti delle rispettive attività. Quando si specificano le allocazioni delle partizioni GPU, la HyperPod task governance calcola le quote proporzionali di vCPU e memoria in base alla partizione GPU, in modo simile all'allocazione a livello di GPU. Questo approccio massimizza l'utilizzo della GPU eliminando la capacità inattiva e abilitando la condivisione delle risorse a costi contenuti tra più attività simultanee sulla stessa GPU fisica.

## Creazione di quote di calcolo
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-compute-allocation-gpu-partitions-creating"></a>

```
aws sagemaker create-compute-quota \
  --name "fractional-gpu-quota" \
  --compute-quota-config '{
    "ComputeQuotaResources": [
      {
        "InstanceType": "ml.p4d.24xlarge",
        "AcceleratorPartition": {
            "Count": 4,
            "Type": "mig-1g.5gb"
        }
      }
    ],
    "ResourceSharingConfig": { 
      "Strategy": "LendAndBorrow", 
      "BorrowLimit": 100 
    }
  }'
```

## Verifica delle risorse relative alle quote
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-policies-compute-allocation-gpu-partitions-verifying"></a>

```
# Check ClusterQueue
kubectl get clusterqueues
kubectl describe clusterqueue QUEUE_NAME

# Check ResourceFlavors
kubectl get resourceflavor
kubectl describe resourceflavor FLAVOR_NAME
```

# Esempi di comandi di governance delle HyperPod AWS CLI attività
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-cli"></a>

È possibile utilizzare HyperPod con EKS tramite Kubectl o tramite CLI personalizzata HyperPod. È possibile utilizzare questi comandi tramite Studio o. AWS CLI Di seguito vengono forniti esempi di governance delle SageMaker HyperPod attività su come visualizzare i dettagli del cluster utilizzando i HyperPod AWS CLI comandi. Per ulteriori informazioni, incluse le modalità di installazione, consulta il repository [HyperPod Github della CLI](https://github.com/aws/sagemaker-hyperpod-cli).

**Topics**
+ [Informazioni sulla quota del dispositivo dell’acceleratore del cluster](#hp-eks-cli-get-clusters)
+ [Invia un lavoro alla coda e allo SageMaker spazio dei nomi gestiti dall'intelligenza artificiale](#hp-eks-cli-start-job)
+ [Elenco dei processi](#hp-eks-cli-list-jobs)
+ [Informazioni dettagliate su un processo](#hp-eks-cli-get-job)
+ [Sospensione e ripresa dei processi](#hp-eks-cli-patch-job)
+ [Debug dei processi](#hp-eks-cli-other)

## Informazioni sulla quota del dispositivo dell’acceleratore del cluster
<a name="hp-eks-cli-get-clusters"></a>

Il comando di esempio seguente recupera le informazioni sulla quota del dispositivo dell’acceleratore del cluster.

```
hyperpod get-clusters -n hyperpod-ns-test-team
```

Il namespace in questo esempio, `hyperpod-ns-test-team`, viene creato in Kubernetes in base al nome del team, `test-team`, fornito durante l’allocazione delle risorse di calcolo Per ulteriori informazioni, consulta [Modifica delle policy](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-edit.md).

Risposta di esempio:

```
[
    {
        "Cluster": "hyperpod-eks-test-cluster-id",
        "InstanceType": "ml.g5.xlarge",
        "TotalNodes": 2,
        "AcceleratorDevicesAvailable": 1,
        "NodeHealthStatus=Schedulable": 2,
        "DeepHealthCheckStatus=Passed": "N/A",
        "Namespaces": {
            "hyperpod-ns-test-team": {
                "TotalAcceleratorDevices": 1,
                "AvailableAcceleratorDevices": 1
            }
        }
    }
]
```

## Invia un lavoro alla coda e allo SageMaker spazio dei nomi gestiti dall'intelligenza artificiale
<a name="hp-eks-cli-start-job"></a>

Il comando di esempio seguente invia un lavoro al cluster. HyperPod Se hai accesso a un solo team, in questo caso ti HyperPod AWS CLI assegnerà automaticamente la coda. Se invece vengono rilevate più code, verranno visualizzate tutte le possibili opzioni selezionabili.

```
hyperpod start-job --job-name hyperpod-cli-test --job-kind kubeflow/PyTorchJob --image docker.io/kubeflowkatib/pytorch-mnist-cpu:v1beta1-bc09cfd --entry-script /opt/pytorch-mnist/mnist.py --pull-policy IfNotPresent --instance-type ml.g5.xlarge --node-count 1 --tasks-per-node 1 --results-dir ./result --priority training-priority
```

Le classi di priorità sono definite in **Policy del cluster**, che specifica il modo in cui viene assegnata la priorità alle attività e vengono allocate le risorse di calcolo inattive. Quando un Data Scientist invia un processo, utilizza uno dei nomi delle classi di priorità con il formato `priority-class-name-priority`. In questo esempio, `training-priority` si riferisce alla classe di priorità denominata “addestramento”. Per ulteriori informazioni sui concetti della policy, consulta [Policy](sagemaker-hyperpod-eks-operate-console-ui-governance-policies.md).

Se non viene specificata una classe di priorità, il processo viene considerato a bassa priorità, con un valore di classificazione delle attività pari a 0. 

Se viene specificata una classe di priorità, che però non corrisponde a una delle classi di priorità definite in **Policy del cluster**, l’invio non riesce e viene visualizzato un messaggio di errore che riporta il set definito di classi di priorità.

Puoi inviare il processo anche tramite un file di configurazione YAML con il comando seguente: 

```
hyperpod start-job --config-file ./yaml-configuration-file-name.yaml
```

Di seguito è riportato un esempio di file di configurazione YAML che equivale all’operazione di invio di un processo, come discusso in precedenza.

```
defaults:
  - override hydra/job_logging: stdout
hydra:
  run:
    dir: .
  output_subdir: null
training_cfg:
  entry_script: /opt/pytorch-mnist/mnist.py
  script_args: []
  run:
    name: hyperpod-cli-test
    nodes: 1
    ntasks_per_node: 1
cluster:
  cluster_type: k8s
  instance_type: ml.g5.xlarge
  custom_labels:
    kueue.x-k8s.io/priority-class: training-priority
  cluster_config:
    label_selector:
      required:
        sagemaker.amazonaws.com/node-health-status:
          - Schedulable
      preferred:
        sagemaker.amazonaws.com/deep-health-check-status:
          - Passed
      weights:
        - 100
    pullPolicy: IfNotPresent
base_results_dir: ./result
container: docker.io/kubeflowkatib/pytorch-mnist-cpu:v1beta1-bc09cfd
env_vars:
  NCCL_DEBUG: INFO
```

In alternativa, puoi inviare un processo con `kubectl` per garantire che l’attività venga visualizzata nella scheda **Dashboard**. Il seguente è un comando kubectl di esempio.

```
kubectl apply -f ./yaml-configuration-file-name.yaml
```

Quando invii il processo, includi il nome della coda e le etichette della classe di priorità. Ad esempio, con il nome della coda `hyperpod-ns-team-name-localqueue` e la classe di priorità `priority-class-name-priority`, devi includere le seguenti etichette:
+ `kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue` 
+ `kueue.x-k8s.io/priority-class: priority-class-name-priority`

Il frammento di configurazione YAML seguente mostra come aggiungere etichette al file di configurazione originale per garantire che l’attività venga visualizzata nella scheda **Dashboard**:

```
metadata:
    name: job-name
    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-name-priority
```

## Elenco dei processi
<a name="hp-eks-cli-list-jobs"></a>

Il comando seguente elenca i processi e i relativi dettagli.

```
hyperpod list-jobs
```

Risposta di esempio:

```
{
    "jobs": [
        {
            "Name": "hyperpod-cli-test",
            "Namespace": "hyperpod-ns-test-team",
            "CreationTime": "2024-11-18T21:21:15Z",
            "Priority": "training",
            "State": "Succeeded"
        }
    ]
}
```

## Informazioni dettagliate su un processo
<a name="hp-eks-cli-get-job"></a>

Il comando seguente fornisce i dettagli di un processo. Se non viene specificato alcun namespace, HyperPod AWS CLI recupererà uno spazio dei nomi gestito dall' SageMaker IA a cui hai accesso.

```
hyperpod get-job --job-name hyperpod-cli-test
```

Risposta di esempio:

```
{
    "Name": "hyperpod-cli-test",
    "Namespace": "hyperpod-ns-test-team",
    "Label": {
        "app": "hyperpod-cli-test",
        "app.kubernetes.io/managed-by": "Helm",
        "kueue.x-k8s.io/priority-class": "training"
    },
    "CreationTimestamp": "2024-11-18T21:21:15Z",
    "Status": {
        "completionTime": "2024-11-18T21:25:24Z",
        "conditions": [
            {
                "lastTransitionTime": "2024-11-18T21:21:15Z",
                "lastUpdateTime": "2024-11-18T21:21:15Z",
                "message": "PyTorchJob hyperpod-cli-test is created.",
                "reason": "PyTorchJobCreated",
                "status": "True",
                "type": "Created"
            },
            {
                "lastTransitionTime": "2024-11-18T21:21:17Z",
                "lastUpdateTime": "2024-11-18T21:21:17Z",
                "message": "PyTorchJob hyperpod-ns-test-team/hyperpod-cli-test is running.",
                "reason": "PyTorchJobRunning",
                "status": "False",
                "type": "Running"
            },
            {
                "lastTransitionTime": "2024-11-18T21:25:24Z",
                "lastUpdateTime": "2024-11-18T21:25:24Z",
                "message": "PyTorchJob hyperpod-ns-test-team/hyperpod-cli-test successfully completed.",
                "reason": "PyTorchJobSucceeded",
                "status": "True",
                "type": "Succeeded"
            }
        ],
            "replicaStatuses": {
                "Worker": {
                    "selector": "training.kubeflow.org/job-name=hyperpod-cli-test,training.kubeflow.org/operator-name=pytorchjob-controller,training.kubeflow.org/replica-type=worker",
                    "succeeded": 1
                }
            },
        "startTime": "2024-11-18T21:21:15Z"
    },
    "ConsoleURL": "https://us-west-2.console.aws.amazon.com/sagemaker/home?region=us-west-2#/cluster-management/hyperpod-eks-test-cluster-id“
}
```

## Sospensione e ripresa dei processi
<a name="hp-eks-cli-patch-job"></a>

Se si desidera rimuovere alcuni lavori inviati dallo scheduler, HyperPod AWS CLI fornisce il `suspend` comando per rimuovere temporaneamente il lavoro dall'orchestrazione. Il processo sospeso non sarà più pianificato a meno che non venga ripreso manualmente con il comando `unsuspend`.

Per sospendere temporaneamente un processo:

```
hyperpod patch-job suspend --job-name hyperpod-cli-test
```

Per aggiungere nuovamente un processo alla coda:

```
hyperpod patch-job unsuspend --job-name hyperpod-cli-test
```

## Debug dei processi
<a name="hp-eks-cli-other"></a>

Fornisce HyperPod AWS CLI anche altri comandi per il debug dei problemi di invio dei lavori. Ad esempio `list-pods` e `get-logs` nel repository HyperPod AWS CLI Github.

# Risoluzione dei problemi
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-troubleshoot"></a>

La pagina seguente contiene soluzioni note per la risoluzione dei problemi dei cluster EKS. HyperPod

**Topics**
+ [Scheda Pannello di controllo](#hp-eks-troubleshoot-dashboard)
+ [Scheda Attività](#hp-eks-troubleshoot-tasks)
+ [Policy](#hp-eks-troubleshoot-policies)
+ [Eliminazione dei cluster](#hp-eks-troubleshoot-delete-policies)
+ [Condivisione di risorse non allocate](#hp-eks-troubleshoot-unallocated-resource-sharing)

## Scheda Pannello di controllo
<a name="hp-eks-troubleshoot-dashboard"></a>

**Installazione non riuscita del componente aggiuntivo EKS**

Per installare correttamente il componente aggiuntivo EKS, è necessaria una versione di Kubernets >= 1.30. Per l’aggiornamento, consulta [Update Kubernetes version](https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html).

Per installare correttamente il componente aggiuntivo EKS, tutti i nodi devono essere in stato **Pronto** e tutti i pod devono essere in stato **In esecuzione**. 

Per verificare lo stato dei nodi, utilizza il [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-cluster-nodes.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-cluster-nodes.html) AWS CLI comando o accedi al cluster EKS nella [console EKS](https://console.aws.amazon.com/eks/home#/clusters) e visualizza lo stato dei nodi. Risolvi il problema per ogni nodo o contatta il tuo amministratore. Se lo stato del nodo è **Sconosciuto**, elimina il nodo. Una volta che tutti gli stati dei nodi sono **pronti**, riprova a installare il componente aggiuntivo EKS HyperPod dalla console [Amazon SageMaker ](https://console.aws.amazon.com/sagemaker/) AI.

Per controllare lo stato dei pod, utilizza il comando della [CLI di Kubernetes](https://kubernetes.io/docs/reference/kubectl/) `kubectl get pods -n cloudwatch-agent` o accedi al cluster EKS nella [console EKS](https://console.aws.amazon.com/eks/home#/clusters) e visualizza lo stato dei pod con il namespace `cloudwatch-agent`. Risolvi il problema dei pod o contatta il tuo amministratore. Una volta che tutti gli stati del pod sono **in esecuzione**, riprova a installare il componente aggiuntivo EKS HyperPod dalla console [Amazon SageMaker ](https://console.aws.amazon.com/sagemaker/) AI.

Per ulteriori informazioni sulla risoluzione dei problemi, consulta [Risoluzione dei problemi del componente aggiuntivo Amazon CloudWatch Observability EKS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Observability-EKS-addon.html#Container-Insights-setup-EKS-addon-troubleshoot).

## Scheda Attività
<a name="hp-eks-troubleshoot-tasks"></a>

Se viene visualizzato il messaggio di errore relativo alla **mancata configurazione della Definizione di risorse personalizzate (CRD) nel cluster**, assegna le policy `EKSAdminViewPolicy` e `ClusterAccessRole` al ruolo di esecuzione del dominio. 
+ Per informazioni su come ottenere il ruolo di esecuzione, consulta [Acquisizione del ruolo di esecuzione](sagemaker-roles.md#sagemaker-roles-get-execution-role).
+ Per informazioni su come collegare le policy a un utente o a un gruppo IAM, consulta [Adding and removing IAM identity permissions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).

## Policy
<a name="hp-eks-troubleshoot-policies"></a>

Di seguito sono elencate le soluzioni agli errori relativi alle politiche che utilizzano la console HyperPod APIs or.
+ Se la policy è in stato `CreateFailed` o `CreateRollbackFailed`, devi eliminare la policy non riuscita e crearne una nuova.
+ Se la policy è in stato `UpdateFailed`, prova a eseguire di nuovo l’aggiornamento con lo stesso ARN della policy.
+ Se la policy è in stato `UpdateRollbackFailed`, devi eliminare la policy non riuscita e crearne una nuova.
+ Se la policy è in stato `DeleteFailed` o `DeleteRollbackFailed`, prova a eliminarla di nuovo con lo stesso ARN della policy.
  + Se hai riscontrato un errore durante il tentativo di eliminare la **prioritizzazione di Compute**, o la policy del cluster, utilizzando la HyperPod console, prova a eliminarlo `cluster-scheduler-config` utilizzando l'API. Per verificare lo stato della risorsa, vai alla pagina dei dettagli di un’allocazione delle risorse di calcolo.

Per visualizzare maggiori dettagli sull’errore, utilizza l’API describe.

## Eliminazione dei cluster
<a name="hp-eks-troubleshoot-delete-policies"></a>

Di seguito sono elencate le soluzioni note per gli errori relativi all’eliminazione dei cluster.
+ Se l'eliminazione del cluster fallisce a causa delle politiche di governance delle SageMaker HyperPod attività allegate, dovrai farlo. [Eliminazione delle policy](sagemaker-hyperpod-eks-operate-console-ui-governance-policies-delete.md)
+ Se l’eliminazione del cluster non riesce perché mancano le autorizzazioni seguenti, devi aggiornare il set minimo di autorizzazioni dell’amministratore del cluster. Consulta la scheda **Amazon EKS** nella sezione [Utenti IAM per l’amministratore del cluster](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-admin).
  + `sagemaker:ListComputeQuotas`
  + `sagemaker:ListClusterSchedulerConfig`
  + `sagemaker:DeleteComputeQuota`
  + `sagemaker:DeleteClusterSchedulerConfig`

## Condivisione di risorse non allocate
<a name="hp-eks-troubleshoot-unallocated-resource-sharing"></a>

Se la capacità del pool di risorse non allocate è inferiore al previsto:

1. **Verifica lo stato di disponibilità del nodo**

   ```
   kubectl get nodes
   ```

   Verifica che tutti i nodi mostrino `Ready` lo stato nella colonna STATUS.

1. **Controlla lo stato di pianificazione del nodo**

   ```
   kubectl get nodes -o custom-columns=NAME:.metadata.name,UNSCHEDULABLE:.spec.unschedulable
   ```

   Verifica che i nodi mostrino `<none>` o `false` (no`true`).

1. **Elenca la condivisione di risorse non allocate: ClusterQueues**

   ```
   kubectl get clusterqueue | grep hyperpod-ns-idle-resource-sharing
   ```

   Questo mostra tutte le condivisioni di risorse non allocate. ClusterQueues Se non ClusterQueues vengono visualizzati, controlla la ClusterSchedulerConfig politica `FailureReason` sottostante per vedere se ci sono messaggi di errore per continuare il debug.

1. **Verifica la quota di condivisione delle risorse non allocate:**

   ```
   kubectl describe clusterqueue hyperpod-ns-idle-resource-sharing-<index>
   ```

   Controlla la `spec.resourceGroups[].flavors[].resources` sezione per vedere la quota assegnata per ogni tipo di risorsa.

    ClusterQueues Può esistere una condivisione multipla di risorse non allocate a seconda del numero di tipologie di risorse presenti nel cluster. 

1. **Verifica lo stato della configurazione MIG (nodi GPU):**

   ```
   kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.nvidia\.com/mig\.config\.state}{"\n"}{end}'
   ```

   Verifica che i nodi abilitati a MIG mostrino lo stato. `success`

# Documento di attribuzione per la governance delle SageMaker HyperPod attività di Amazon
<a name="sagemaker-hyperpod-eks-operate-console-ui-governance-attributions"></a>

Di seguito puoi scoprire le attribuzioni e le licenze di terze parti per il materiale utilizzato nella SageMaker HyperPod task governance di Amazon.

**Topics**
+ [[base-files](https://packages.debian.org/bookworm/base-files)](#hp-eks-task-governance-attributions-base-files)
+ [[netbase](https://packages.debian.org/source/stable/netbase)](#hp-eks-task-governance-attributions-netbase)
+ [[golang-lru](https://github.com/hashicorp/golang-lru)](#hp-eks-task-governance-attributions-golang-lru)

## [base-files](https://packages.debian.org/bookworm/base-files)
<a name="hp-eks-task-governance-attributions-base-files"></a>

```
This is the Debian prepackaged version of the Debian Base System
Miscellaneous files. These files were written by Ian Murdock
<imurdock@debian.org> and Bruce Perens <bruce@pixar.com>.

This package was first put together by Bruce Perens <Bruce@Pixar.com>,
from his own sources.

The GNU Public Licenses in /usr/share/common-licenses were taken from
ftp.gnu.org and are copyrighted by the Free Software Foundation, Inc.

The Artistic License in /usr/share/common-licenses is the one coming
from Perl and its SPDX name is "Artistic License 1.0 (Perl)".


Copyright © 1995-2011 Software in the Public Interest.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL'.
```

## [netbase](https://packages.debian.org/source/stable/netbase)
<a name="hp-eks-task-governance-attributions-netbase"></a>

```
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Comment:
 This package was created by Peter Tobias tobias@et-inf.fho-emden.de on
 Wed, 24 Aug 1994 21:33:28 +0200 and maintained by Anthony Towns
 <ajt@debian.org> until 2001.
 It is currently maintained by Marco d'Itri <md@linux.it>.

Files: *
Copyright:
 Copyright © 1994-1998 Peter Tobias
 Copyright © 1998-2001 Anthony Towns
 Copyright © 2002-2022 Marco d'Itri
License: GPL-2
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License, version 2, as
 published by the Free Software Foundation.
 .
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 .
 You should have received a copy of the GNU General Public License along
 with this program; if not, write to the Free Software Foundation,
 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 .
 On Debian systems, the complete text of the GNU General Public License
 version 2 can be found in '/usr/share/common-licenses/GPL-2'.
```

## [golang-lru](https://github.com/hashicorp/golang-lru)
<a name="hp-eks-task-governance-attributions-golang-lru"></a>

```
Copyright © 2014 HashiCorp, Inc.

Mozilla Public License, version 2.0

1. Definitions

1.1. "Contributor"

     means each individual or legal entity that creates, contributes to the
     creation of, or owns Covered Software.

1.2. "Contributor Version"

     means the combination of the Contributions of others (if any) used by a
     Contributor and that particular Contributor's Contribution.

1.3. "Contribution"

     means Covered Software of a particular Contributor.

1.4. "Covered Software"

     means Source Code Form to which the initial Contributor has attached the
     notice in Exhibit A, the Executable Form of such Source Code Form, and
     Modifications of such Source Code Form, in each case including portions
     thereof.

1.5. "Incompatible With Secondary Licenses"
     means

     a. that the initial Contributor has attached the notice described in
        Exhibit B to the Covered Software; or

     b. that the Covered Software was made available under the terms of
        version 1.1 or earlier of the License, but not also under the terms of
        a Secondary License.

1.6. "Executable Form"

     means any form of the work other than Source Code Form.

1.7. "Larger Work"

     means a work that combines Covered Software with other material, in a
     separate file or files, that is not Covered Software.

1.8. "License"

     means this document.

1.9. "Licensable"

     means having the right to grant, to the maximum extent possible, whether
     at the time of the initial grant or subsequently, any and all of the
     rights conveyed by this License.

1.10. "Modifications"

     means any of the following:

     a. any file in Source Code Form that results from an addition to,
        deletion from, or modification of the contents of Covered Software; or

     b. any new file in Source Code Form that contains any Covered Software.

1.11. "Patent Claims" of a Contributor

      means any patent claim(s), including without limitation, method,
      process, and apparatus claims, in any patent Licensable by such
      Contributor that would be infringed, but for the grant of the License,
      by the making, using, selling, offering for sale, having made, import,
      or transfer of either its Contributions or its Contributor Version.

1.12. "Secondary License"

      means either the GNU General Public License, Version 2.0, the GNU Lesser
      General Public License, Version 2.1, the GNU Affero General Public
      License, Version 3.0, or any later versions of those licenses.

1.13. "Source Code Form"

      means the form of the work preferred for making modifications.

1.14. "You" (or "Your")

      means an individual or a legal entity exercising rights under this
      License. For legal entities, "You" includes any entity that controls, is
      controlled by, or is under common control with You. For purposes of this
      definition, "control" means (a) the power, direct or indirect, to cause
      the direction or management of such entity, whether by contract or
      otherwise, or (b) ownership of more than fifty percent (50%) of the
      outstanding shares or beneficial ownership of such entity.


2. License Grants and Conditions

2.1. Grants

     Each Contributor hereby grants You a world-wide, royalty-free,
     non-exclusive license:

     a. under intellectual property rights (other than patent or trademark)
        Licensable by such Contributor to use, reproduce, make available,
        modify, display, perform, distribute, and otherwise exploit its
        Contributions, either on an unmodified basis, with Modifications, or
        as part of a Larger Work; and

     b. under Patent Claims of such Contributor to make, use, sell, offer for
        sale, have made, import, and otherwise transfer either its
        Contributions or its Contributor Version.

2.2. Effective Date

     The licenses granted in Section 2.1 with respect to any Contribution
     become effective for each Contribution on the date the Contributor first
     distributes such Contribution.

2.3. Limitations on Grant Scope

     The licenses granted in this Section 2 are the only rights granted under
     this License. No additional rights or licenses will be implied from the
     distribution or licensing of Covered Software under this License.
     Notwithstanding Section 2.1(b) above, no patent license is granted by a
     Contributor:

     a. for any code that a Contributor has removed from Covered Software; or

     b. for infringements caused by: (i) Your and any other third party's
        modifications of Covered Software, or (ii) the combination of its
        Contributions with other software (except as part of its Contributor
        Version); or

     c. under Patent Claims infringed by Covered Software in the absence of
        its Contributions.

     This License does not grant any rights in the trademarks, service marks,
     or logos of any Contributor (except as may be necessary to comply with
     the notice requirements in Section 3.4).

2.4. Subsequent Licenses

     No Contributor makes additional grants as a result of Your choice to
     distribute the Covered Software under a subsequent version of this
     License (see Section 10.2) or under the terms of a Secondary License (if
     permitted under the terms of Section 3.3).

2.5. Representation

     Each Contributor represents that the Contributor believes its
     Contributions are its original creation(s) or it has sufficient rights to
     grant the rights to its Contributions conveyed by this License.

2.6. Fair Use

     This License is not intended to limit any rights You have under
     applicable copyright doctrines of fair use, fair dealing, or other
     equivalents.

2.7. Conditions

     Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
     Section 2.1.


3. Responsibilities

3.1. Distribution of Source Form

     All distribution of Covered Software in Source Code Form, including any
     Modifications that You create or to which You contribute, must be under
     the terms of this License. You must inform recipients that the Source
     Code Form of the Covered Software is governed by the terms of this
     License, and how they can obtain a copy of this License. You may not
     attempt to alter or restrict the recipients' rights in the Source Code
     Form.

3.2. Distribution of Executable Form

     If You distribute Covered Software in Executable Form then:

     a. such Covered Software must also be made available in Source Code Form,
        as described in Section 3.1, and You must inform recipients of the
        Executable Form how they can obtain a copy of such Source Code Form by
        reasonable means in a timely manner, at a charge no more than the cost
        of distribution to the recipient; and

     b. You may distribute such Executable Form under the terms of this
        License, or sublicense it under different terms, provided that the
        license for the Executable Form does not attempt to limit or alter the
        recipients' rights in the Source Code Form under this License.

3.3. Distribution of a Larger Work

     You may create and distribute a Larger Work under terms of Your choice,
     provided that You also comply with the requirements of this License for
     the Covered Software. If the Larger Work is a combination of Covered
     Software with a work governed by one or more Secondary Licenses, and the
     Covered Software is not Incompatible With Secondary Licenses, this
     License permits You to additionally distribute such Covered Software
     under the terms of such Secondary License(s), so that the recipient of
     the Larger Work may, at their option, further distribute the Covered
     Software under the terms of either this License or such Secondary
     License(s).

3.4. Notices

     You may not remove or alter the substance of any license notices
     (including copyright notices, patent notices, disclaimers of warranty, or
     limitations of liability) contained within the Source Code Form of the
     Covered Software, except that You may alter any license notices to the
     extent required to remedy known factual inaccuracies.

3.5. Application of Additional Terms

     You may choose to offer, and to charge a fee for, warranty, support,
     indemnity or liability obligations to one or more recipients of Covered
     Software. However, You may do so only on Your own behalf, and not on
     behalf of any Contributor. You must make it absolutely clear that any
     such warranty, support, indemnity, or liability obligation is offered by
     You alone, and You hereby agree to indemnify every Contributor for any
     liability incurred by such Contributor as a result of warranty, support,
     indemnity or liability terms You offer. You may include additional
     disclaimers of warranty and limitations of liability specific to any
     jurisdiction.

4. Inability to Comply Due to Statute or Regulation

   If it is impossible for You to comply with any of the terms of this License
   with respect to some or all of the Covered Software due to statute,
   judicial order, or regulation then You must: (a) comply with the terms of
   this License to the maximum extent possible; and (b) describe the
   limitations and the code they affect. Such description must be placed in a
   text file included with all distributions of the Covered Software under
   this License. Except to the extent prohibited by statute or regulation,
   such description must be sufficiently detailed for a recipient of ordinary
   skill to be able to understand it.

5. Termination

5.1. The rights granted under this License will terminate automatically if You
     fail to comply with any of its terms. However, if You become compliant,
     then the rights granted under this License from a particular Contributor
     are reinstated (a) provisionally, unless and until such Contributor
     explicitly and finally terminates Your grants, and (b) on an ongoing
     basis, if such Contributor fails to notify You of the non-compliance by
     some reasonable means prior to 60 days after You have come back into
     compliance. Moreover, Your grants from a particular Contributor are
     reinstated on an ongoing basis if such Contributor notifies You of the
     non-compliance by some reasonable means, this is the first time You have
     received notice of non-compliance with this License from such
     Contributor, and You become compliant prior to 30 days after Your receipt
     of the notice.

5.2. If You initiate litigation against any entity by asserting a patent
     infringement claim (excluding declaratory judgment actions,
     counter-claims, and cross-claims) alleging that a Contributor Version
     directly or indirectly infringes any patent, then the rights granted to
     You by any and all Contributors for the Covered Software under Section
     2.1 of this License shall terminate.

5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
     license agreements (excluding distributors and resellers) which have been
     validly granted by You or Your distributors under this License prior to
     termination shall survive termination.

6. Disclaimer of Warranty

   Covered Software is provided under this License on an "as is" basis,
   without warranty of any kind, either expressed, implied, or statutory,
   including, without limitation, warranties that the Covered Software is free
   of defects, merchantable, fit for a particular purpose or non-infringing.
   The entire risk as to the quality and performance of the Covered Software
   is with You. Should any Covered Software prove defective in any respect,
   You (not any Contributor) assume the cost of any necessary servicing,
   repair, or correction. This disclaimer of warranty constitutes an essential
   part of this License. No use of  any Covered Software is authorized under
   this License except under this disclaimer.

7. Limitation of Liability

   Under no circumstances and under no legal theory, whether tort (including
   negligence), contract, or otherwise, shall any Contributor, or anyone who
   distributes Covered Software as permitted above, be liable to You for any
   direct, indirect, special, incidental, or consequential damages of any
   character including, without limitation, damages for lost profits, loss of
   goodwill, work stoppage, computer failure or malfunction, or any and all
   other commercial damages or losses, even if such party shall have been
   informed of the possibility of such damages. This limitation of liability
   shall not apply to liability for death or personal injury resulting from
   such party's negligence to the extent applicable law prohibits such
   limitation. Some jurisdictions do not allow the exclusion or limitation of
   incidental or consequential damages, so this exclusion and limitation may
   not apply to You.

8. Litigation

   Any litigation relating to this License may be brought only in the courts
   of a jurisdiction where the defendant maintains its principal place of
   business and such litigation shall be governed by laws of that
   jurisdiction, without reference to its conflict-of-law provisions. Nothing
   in this Section shall prevent a party's ability to bring cross-claims or
   counter-claims.

9. Miscellaneous

   This License represents the complete agreement concerning the subject
   matter hereof. If any provision of this License is held to be
   unenforceable, such provision shall be reformed only to the extent
   necessary to make it enforceable. Any law or regulation which provides that
   the language of a contract shall be construed against the drafter shall not
   be used to construe this License against a Contributor.


10. Versions of the License

10.1. New Versions

      Mozilla Foundation is the license steward. Except as provided in Section
      10.3, no one other than the license steward has the right to modify or
      publish new versions of this License. Each version will be given a
      distinguishing version number.

10.2. Effect of New Versions

      You may distribute the Covered Software under the terms of the version
      of the License under which You originally received the Covered Software,
      or under the terms of any subsequent version published by the license
      steward.

10.3. Modified Versions

      If you create software not governed by this License, and you want to
      create a new license for such software, you may create and use a
      modified version of this License if you rename the license and remove
      any references to the name of the license steward (except to note that
      such modified license differs from this License).

10.4. Distributing Source Code Form that is Incompatible With Secondary
      Licenses If You choose to distribute Source Code Form that is
      Incompatible With Secondary Licenses under the terms of this version of
      the License, the notice described in Exhibit B of this License must be
      attached.

Exhibit A - Source Code Form License Notice

      This Source Code Form is subject to the
      terms of the Mozilla Public License, v.
      2.0. If a copy of the MPL was not
      distributed with this file, You can
      obtain one at
      http://mozilla.org/MPL/2.0/.

If it is not possible or desirable to put the notice in a particular file,
then You may include the notice in a location (such as a LICENSE file in a
relevant directory) where a recipient would be likely to look for such a
notice.

You may add additional accurate notices of copyright ownership.

Exhibit B - "Incompatible With Secondary Licenses" Notice

      This Source Code Form is "Incompatible
      With Secondary Licenses", as defined by
      the Mozilla Public License, v. 2.0.
```

# Report sull'utilizzo per l'attribuzione dei costi in SageMaker HyperPod
<a name="sagemaker-hyperpod-usage-reporting"></a>

Il reporting sull'utilizzo nei cluster SageMaker HyperPod orchestrati da EKS offre una visibilità granulare sul consumo delle risorse di elaborazione. Questa funzionalità consente alle organizzazioni di implementare un’attribuzione trasparente dei costi, allocando i costi dei cluster a team, progetti o reparti in base al loro utilizzo effettivo. [Grazie al monitoraggio di parametri come le GPU/CPU ore e l'utilizzo di Neuron Core, rilevati *sia negli aggregati a livello di team che nelle suddivisioni specifiche delle attività, la reportistica sull'utilizzo integra la funzionalità Task Governance di Task Governance, garantendo un'equa distribuzione dei* costi in cluster multi-tenant condivisi mediante: HyperPod](sagemaker-hyperpod-eks-operate-console-ui-governance.md)
+ Eliminazione delle ipotesi nell’allocazione dei costi
+ Collegamento diretto delle spese al consumo misurabile delle risorse
+ Applicazione della responsabilità basata sull’utilizzo in ambienti di infrastruttura condivisi

## Prerequisiti
<a name="sagemaker-hyperpod-usage-reporting-prerequisites"></a>

Per visualizzare questa funzionalità:
+ Hai bisogno di:
  + Un **SageMaker HyperPod ambiente** attivo con un cluster orchestrato da EKS in esecuzione.
  + (Consigliato vivamente) **Governance delle attività configurata** con quote di calcolo e regole di priorità. Per istruzioni sulla configurazione, consulta [Configurazione della governance delle attività](sagemaker-hyperpod-eks-operate-console-ui-governance-setup.md).
+ Acquisire familiarità con questi concetti fondamentali:
  + **Quota di calcolo allocata**: risorse riservate a un team in base a quote predefinite nelle sue policy di governance delle attività. Si tratta della *capacità garantita* per i carichi di lavoro del team.
  + **Risorse di calcolo prese in prestito:** risorse inattive nel pool del cluster condiviso che i team possono utilizzare temporaneamente *in aggiunta alla loro quota assegnata*. Le risorse di calcolo prese in prestito vengono assegnate dinamicamente in base alle regole di priorità definite nelle policy di governance delle attività e alla disponibilità delle risorse inutilizzate.
  + **Utilizzo del calcolo:** la misurazione delle risorse (GPU, CPU, ore di core Neuron) consumate da un team, definite come:
    + **Utilizzo allocato**: utilizzo compreso nella quota del team.
    + **Utilizzo preso in prestito**: utilizzo eccedente la quota, preso dal pool condiviso.
  + **Attribuzione dei costi:** il processo di allocazione dei costi del cluster ai team in base all’*utilizzo effettivo delle risorse di calcolo*, che include sia le risorse comprese nella quota predefinita che le risorse prese temporaneamente dal pool del cluster condiviso in aggiunta alla quota allocata.

## Tipi di report
<a name="sagemaker-hyperpod-usage-reporting-report-types"></a>

HyperPodi report sull'utilizzo forniscono una granularità operativa variabile:
+ **I report di riepilogo** *forniscono una visibilità a livello aziendale sull'utilizzo delle risorse di calcolo, aggregando le ore GPU/CPU/Neuron Core totali per team (namespace) e distinguendo tra *utilizzo regolare* (risorse provenienti dalla quota allocata del team) ed elaborazione presa in prestito (capacità di sovraccarico da pool condivisi).*
+ I **report dettagliati** offrono suddivisioni a livello di attività per ogni team, tenendo traccia delle ore di calcolo esatte dedicate all’esecuzione di attività specifiche, tra cui attività prerilasciate, modelli di utilizzo orari e allocazioni specifiche per il namespace.

**Importante**  
HyperPod i report sull'utilizzo tengono traccia dell'utilizzo dell'elaborazione in *tutti i namespace Kubernetes* in un cluster, inclusi quelli gestiti da Task Governance, i namespace predefiniti e i namespace creati **al di fuori di Task Governance** (ad esempio, tramite chiamate API Kubernetes dirette o strumenti esterni). Questo monitoraggio a livello di infrastruttura garantisce una responsabilità completa basata sull’utilizzo e previene le incoerenze nell’attribuzione dei costi per i cluster condivisi, indipendentemente dal modo in cui vengono gestiti i namespace.

## Formati e intervallo di tempo dei report
<a name="sagemaker-hyperpod-usage-reporting-formats"></a>

Utilizzando lo script Python fornito in [Generazione di report](sagemaker-hyperpod-usage-reporting-generate.md), gli amministratori possono generare report di utilizzo on demand in formato CSV o PDF, selezionando intervalli di tempo che vanno da snapshot giornalieri a finestre cronologiche di 180 giorni (6 mesi).

**Nota**  
Quando configuri l’infrastruttura per la creazione di report, puoi configurare la finestra cronologica in modo che vada oltre il valore massimo predefinito di 180 giorni. Per ulteriori informazioni sulla configurazione del periodo di [conservazione dei CloudFormation dati](https://github.com/awslabs/sagemaker-hyperpod-usage-report/blob/main/README.md#install-usage-report-infrastructure-using-cloudformation), consulta Installare l'infrastruttura dei report di utilizzo utilizzando. 

## Casi d’uso illustrativi
<a name="sagemaker-hyperpod-usage-reporting-use-cases"></a>

Questa funzionalità affronta scenari critici in AI/ML ambienti multi-tenant come:

1. **Allocazione dei costi per i cluster condivisi**: un amministratore gestisce un HyperPod cluster condiviso da 20 team che addestrano modelli di intelligenza artificiale generativa. Utilizzando un *report di riepilogo sull’utilizzo*, analizza l’utilizzo giornaliero della GPU per 180 giorni e rileva che il Team A ha consumato 200 ore di GPU per un tipo di istanza specifico, 170 dalla sua quota allocata e 30 dalle risorse di calcolo prese in prestito. L’amministratore fattura il Team A in base all’utilizzo rilevato.

1. **Audit e risoluzione delle controversie**: un team finanziario mette in dubbio l’accuratezza dell’attribuzione dei costi, menzionando la presenza di incongruenze. L’amministratore può esportare un *report dettagliato a livello di attività* per verificare le discrepanze. Incrociando i timestamp, i tipi di istanze e i processi prerilasciati all’interno del namespace del team, il report riconcilia in modo trasparente i dati di utilizzo contestati.

# Dettagli dei report e suddivisione dei dati
<a name="sagemaker-hyperpod-usage-reporting-content"></a>

SageMaker HyperPodi report sull'utilizzo forniscono due obiettivi distinti per l'analisi del consumo di risorse di calcolo: report di **riepilogo per l'allocazione dei costi e report** **dettagliati** per il controllo granulare. I report di riepilogo aggregano l’utilizzo a livello di cluster per team o namespace, evidenziando le tendenze nel confronto tra risorse di calcolo allocate e risorse di calcolo prese in prestito in tutte le risorse GPU, CPU e core Neuron. I report dettagliati analizzano le singole attività, esponendo metriche come le finestre di esecuzione, lo stato delle attività e l’utilizzo delle classi di priorità. In questa sezione, analizziamo la struttura di questi report, ne comprendiamo le metriche chiave e mostriamo come amministratori e team finanziari possono incrociare le tendenze nei riepiloghi con i dati a livello di attività per convalidare l’accuratezza dell’attribuzione dei costi, risolvere le discrepanze e ottimizzare l’infrastruttura condivisa.

## Intestazioni di report comuni
<a name="sagemaker-hyperpod-usage-reporting-content-headers"></a>

Sia i report di riepilogo che quelli dettagliati includono i metadati seguenti per contestualizzare i dati di utilizzo:
+ **ClusterName: il nome del cluster** Hyperpod orchestrato da EKS in cui sono state consumate le risorse.
+ **Tipo:** la categoria del report (`Summary Utilization Report` o `Detailed Utilization Report`).
+ **Data di generazione:** la data di creazione del report, ad esempio `2025-04-18`.
+ **Intervallo di date (UTC):** il periodo di tempo coperto, ad esempio `2025-04-16 to 2025-04-18`.
+ **Periodi di dati mancanti:** interruzioni nella raccolta dei dati dovute a tempi di inattività del cluster o a problemi di monitoraggio, ad esempio `2025-04-16 00:00:00 to 2025-04-19 00:00:00`.

## Report di riepilogo
<a name="sagemaker-hyperpod-usage-reporting-content-summary"></a>

I report di riepilogo forniscono una panoramica generale quotidiana del consumo di risorse di calcolo tra team/namespace e tra tipi di istanze, distinguendo tra l’utilizzo di risorse allocate (quota riservata) e quello di risorse prese in prestito (in prestito dal pool). Questi report sono ideali per la generazione di fatture, le dichiarazioni di attribuzione dei costi o la previsione della capacità.

*Esempio: un report di riepilogo può mostrare che il Team A ha utilizzato 200 ore di GPU, di cui 170 provengono dalla sua quota allocata e 30 sono prese in prestito.*

Ecco una suddivisione strutturata delle colonne chiave di un report di riepilogo:
+ **Data:** la data dell’utilizzo riportato (ad esempio `2025-04-18`).
+ **Namespace:** il namespace Kubernetes associato al team (ad esempio `hyperpod-ns-ml-team`).
+ **Squadra:** The team/department Owning (ad es.). `ml-team`
+ **Tipo di istanza:** l’istanza di calcolo utilizzata (ad esempio ml.g5.4xlarge).
+ **Total/Allocated/BorrowedUtilizzo (ore):** suddivisione dell'utilizzo di GPU, CPU o Neuron Core per categoria.

  Dove:
  + **Utilizzo totale = utilizzo allocato \$1 utilizzo preso in prestito**
  + L’**utilizzo allocato** è il numero di ore effettive di GPU, CPU o core Neuron utilizzate da un team, con un limite massimo del 100% della quota allocata.
  + L’**utilizzo preso in prestito** è il numero di ore effettive di GPU, CPU o core Neuron utilizzate da un team *oltre la quota allocata*, prese dal pool del cluster condiviso in base alle regole di priorità della governance delle attività e alla disponibilità delle risorse.

Esempio: 72 ore di GPU totali (48 allocate, 24 prese in prestito).

**Nota**  
Viene visualizzato solo l’utilizzo totale per i namespace non gestiti dalla governance delle attività.

## Report dettagliati
<a name="sagemaker-hyperpod-usage-reporting-content-detailed"></a>

I report dettagliati forniscono una visibilità a livello forense sull’utilizzo del calcolo, suddividendo il consumo delle risorse per attività ed esponendo metriche granulari come le finestre di esecuzione delle attività, lo stato (ad esempio, l’esito positivo o negativo) e l’utilizzo delle classi di priorità. Questi report sono ideali per la convalida delle discrepanze di fatturazione o per garantire la conformità alle policy di governance.

Ecco una suddivisione strutturata delle colonne chiave di un report dettagliato:
+ **Data:** la data dell’utilizzo riportato (ad esempio `2025-04-18`).
+ **Inizio/fine del periodo:** la finestra di esecuzione esatta (UTC) dell’attività (ad esempio `19:54:34`).
+ **Namespace:** il namespace Kubernetes associato al team (ad esempio `hyperpod-ns-ml-team`).
+ **Squadra:** The Owning (ad team/department es.). `ml-team`
+ **Attività:** l’identificatore del processo/pod (ad esempio `pytorchjob-ml-pytorch-job-2p5zt-db686`).
+ **Istanza:** l’istanza di calcolo utilizzata (ad esempio `ml.g5.4xlarge`).
+ **Stato:** risultato dell’attività (riuscita, non riuscita, prerilasciata).
+ **Utilizzo totale:** consumo totale (ore e numero di istanze) di risorse di GPU, CPU o core Neuron.
+ **Classe di priorità:** il livello di priorità assegnato (ad esempio, training-priority).

# Generazione di report
<a name="sagemaker-hyperpod-usage-reporting-generate"></a>

Questa guida fornisce step-by-step istruzioni per configurare e gestire i report sull'utilizzo per i SageMaker HyperPod cluster. Segui queste procedure per implementare l’infrastruttura, generare report personalizzati e rimuovere le risorse non più necessarie.

## Configurazione dei report di utilizzo
<a name="sagemaker-hyperpod-usage-reporting-install"></a>

**Nota**  
Prima di configurare l'infrastruttura dei report SageMaker HyperPod sull'utilizzo nel SageMaker HyperPod cluster, assicurati di aver soddisfatto tutti i prerequisiti descritti in questo documento. [https://github.com/awslabs/sagemaker-hyperpod-usage-report/blob/main/README.md#prerequisites](https://github.com/awslabs/sagemaker-hyperpod-usage-report/blob/main/README.md#prerequisites)

La reportistica sull'utilizzo richiede HyperPod :
+ Distribuzione delle AWS risorse SageMaker HyperPod dei report sull'utilizzo utilizzando uno CloudFormation stack
+ Installazione del rapporto di SageMaker HyperPod utilizzo dell'operatore Kubernetes tramite un grafico Helm

[Puoi trovare istruzioni di installazione complete nell'archivio dei report di utilizzo. SageMaker HyperPod GitHub ](https://github.com/awslabs/sagemaker-hyperpod-usage-report/blob/main/README.md) In particolare, segui la procedura nella sezione di [configurazione](https://github.com/awslabs/sagemaker-hyperpod-usage-report/blob/main/README.md#set-up-usage-reporting).

## Generazione di report di utilizzo on demand
<a name="sagemaker-hyperpod-usage-reporting-use"></a>

Una volta installati l'infrastruttura di reporting sull'utilizzo e l'operatore Kubernetes, i dati di lavoro per il SageMaker HyperPod cluster vengono automaticamente raccolti e archiviati nel bucket S3 configurato durante la configurazione. L’operatore acquisisce continuamente metriche di utilizzo dettagliate in background, creando file di dati non elaborati nella directory `raw` del bucket S3 indicato.

Per generare un rapporto sull'utilizzo su richiesta, puoi utilizzare `run.py` lo script fornito nell'[ GitHub archivio dei report di utilizzo per estrarre ed esportare le SageMaker HyperPod metriche di utilizzo](https://github.com/awslabs/sagemaker-hyperpod-usage-report/blob/main/README.md). In particolare, puoi trovare lo script e le istruzioni complete per la generazione di un report nella sezione sulla [generazione di report](https://github.com/awslabs/sagemaker-hyperpod-usage-report/blob/main/README.md#generate-reports).

Lo script consente di:
+ Specificare intervalli di date personalizzati per la generazione dei report
+ Scegliere tra i tipi di report dettagliati e di riepilogo
+ Esportare i report in formato CSV o PDF
+ Indirizzare i report a una specifica posizione S3

## Pulizia delle risorse per la creazione di report di utilizzo
<a name="sagemaker-hyperpod-usage-reporting-cleanup"></a>

Quando non ti serve più l'infrastruttura di reporting SageMaker HyperPod sull'utilizzo, segui i passaggi descritti in [Clean Up Resources](https://github.com/awslabs/sagemaker-hyperpod-usage-report/blob/main/README.md#clean-up-resources) per ripulire l'operatore e le risorse di Kubernetes (in AWS quest'ordine). La corretta eliminazione delle risorse aiuta a evitare costi inutili.

# Configurazione dello storage per i SageMaker HyperPod cluster orchestrati da Amazon EKS
<a name="sagemaker-hyperpod-eks-setup-storage"></a>

L'amministratore del cluster deve configurare lo storage per consentire agli utenti di data scientist di gestire i dati di input e output e archiviare i checkpoint durante la formazione sui cluster. SageMaker HyperPod 

**Gestione di set di dati di grandi dimensioni (dati di input/output)**
+ **Accesso e gestione dei dati**: i Data Scientist spesso lavorano con set di dati di grandi dimensioni necessari per addestrare i modelli di machine learning. La specificazione dei parametri di archiviazione nell’invio del lavoro consente loro di definire dove si trovano questi set di dati (ad esempio, i bucket Amazon S3 o i volumi persistenti in Kubernetes) e come accedervi durante l’esecuzione del processo.
+ **Ottimizzazione delle prestazioni**: l’efficienza dell’accesso ai dati di input può influire in modo significativo sulle prestazioni del job di addestramento. Ottimizzando i parametri di archiviazione, i data scientist possono garantire che i dati vengano letti e scritti in modo efficiente, riducendo i colli di bottiglia. I/O 

**Archiviazione dei checkpoint**
+ **Checkpoint durante l’addestramento**: durante i job di addestramento di lunga durata, è prassi comune salvare dei checkpoint, ovvero degli stati intermedi del modello. Questo consente ai Data Scientist di riprendere l’addestramento da un punto specifico in caso di guasto, anziché ricominciare da zero.
+ **Recupero e sperimentazione dei dati**: specificando la posizione di archiviazione per i checkpoint, i Data Scientist possono garantire che questi checkpoint siano archiviati in modo sicuro, possibilmente in un sistema di archiviazione distribuito che offre ridondanza e alta disponibilità. Questo è fondamentale per il ripristino dopo le interruzioni e per condurre esperimenti sulle diverse strategie di addestramento.

**Suggerimento**  
Per un'esperienza pratica e linee guida su come configurare lo storage per SageMaker HyperPod cluster orchestrato con Amazon EKS, consulta le seguenti sezioni del workshop [Amazon EKS Support](https://catalog.us-east-1.prod.workshops.aws/workshops/2433d39e-ccfe-4c00-9d3d-9917b729258e) in corso. SageMaker HyperPod   
[Configura Amazon FSx for Lustre su SageMaker HyperPod](https://catalog.us-east-1.prod.workshops.aws/workshops/2433d39e-ccfe-4c00-9d3d-9917b729258e/en-US/01-cluster/06-fsx-for-lustre)
[Configurare un punto di montaggio per Amazon S3 [utilizzando Mountpoint](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mountpoint.html) per Amazon](https://catalog.us-east-1.prod.workshops.aws/workshops/2433d39e-ccfe-4c00-9d3d-9917b729258e/en-US/01-cluster/09-s3-mountpoint) S3

# Utilizzo del driver CSI Amazon EBS su SageMaker HyperPod cluster EKS
<a name="sagemaker-hyperpod-eks-ebs"></a>

SageMaker HyperPod supporta il driver Amazon Elastic Block Store (Amazon EBS) Container Storage Interface (CSI), che gestisce il ciclo di vita dei volumi Amazon EBS come storage per i volumi Kubernetes che crei. Con il driver Amazon EBS CSI, puoi creare, collegare e gestire i volumi Amazon EBS per i carichi di lavoro di machine learning in esecuzione su cluster SageMaker HyperPod con orchestrazione Amazon EKS.

**Topics**
+ [Funzionalità chiave di archiviazione](#sagemaker-hyperpod-eks-ebs-features)
+ [Casi d’uso](#sagemaker-hyperpod-eks-ebs-use)
+ [Configurazione del driver CSI Amazon EBS sui SageMaker HyperPod cluster EKS](#sagemaker-hyperpod-eks-ebs-setup)
+ [Usando il APIs](#sagemaker-hyperpod-eks-ebs-setup-apis)

## Funzionalità chiave di archiviazione
<a name="sagemaker-hyperpod-eks-ebs-features"></a>

Il driver CSI di Amazon EBS SageMaker HyperPod supporta le seguenti funzionalità di storage.
+ Provisioning statico: associa i volumi Amazon EBS precreati ai [volumi persistenti Kubernetes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) da utilizzare nei pod.
+ Provisioning dinamico: crea automaticamente i volumi Amazon EBS e i volumi persistenti associati da [https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims). I parametri possono essere passati tramite [https://kubernetes.io/docs/concepts/storage/storage-classes/](https://kubernetes.io/docs/concepts/storage/storage-classes/) per un controllo granulare sulla creazione dei volumi.
+ Ridimensionamento dei volumi: espande i volumi esistenti aggiornando le specifiche delle dimensioni in [https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) senza arrestare l’esecuzione dei carichi di lavoro. Questa opzione potrebbe essere essenziale per gestire repository di modelli in crescita o adattarsi a nodi più grandi senza interrompere il servizio.
+ Istantanee di volume: crea point-in-time istantanee di volumi per il backup, il ripristino e il controllo delle versioni dei dati.
+ Volumi a blocchi: fornisce l’accesso ai dispositivi a blocchi non elaborati per applicazioni ad alte prestazioni che richiedono l’accesso diretto all’archiviazione.
+ Modifica del volume: modifica le proprietà del volume, ad esempio il tipo, le operazioni di input o output al secondo (IOPS) o il throughput utilizzando le [classi di attributi del volume](https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/).

Per ulteriori informazioni sul driver CSI di Amazon EBS, consulta [Use Kubernetes volume storage with Amazon EBS](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html) in *Amazon EKS User Guide*.

Per ulteriori informazioni sull’archiviazione nei pod del cluster, consulta [Storage](https://kubernetes.io/docs/concepts/storage/) nella *documentazione di Kubernetes*.

## Casi d’uso
<a name="sagemaker-hyperpod-eks-ebs-use"></a>

L'integrazione dei driver CSI di Amazon EBS consente diversi casi d'uso chiave per carichi di lavoro di formazione e inferenza su cluster EKS. SageMaker HyperPod 

**Carichi di lavoro di addestramento**
+ Archiviazione di set di dati: alloca volumi per set di dati di addestramento che persistono anche dopo il riavvio del pod.
+ Archiviazione dei checkpoint: salva i checkpoint del modello e i risultati intermedi dell’addestramento.
+ Artefatti condivisi: accedi a set di dati comuni e ad artefatti dei modelli in più job di addestramento.

**Carichi di lavoro di inferenza**
+ Archiviazione dei modelli: alloca dinamicamente volumi di dimensione appropriata in base ai requisiti del modello.
+ Caching dei container: crea un’archiviazione temporanea per migliorare le prestazioni di inferenza.
+ Registrazione di log degli eventi: archivia i risultati di inferenza e i log con archiviazione persistente.

## Configurazione del driver CSI Amazon EBS sui SageMaker HyperPod cluster EKS
<a name="sagemaker-hyperpod-eks-ebs-setup"></a>

Il driver Amazon Elastic Block Store (Amazon EBS) Container Storage Interface (CSI) consente di effettuare il provisioning e gestire dinamicamente i volumi Amazon EBS per i carichi di lavoro containerizzati in esecuzione su cluster con orchestrazione EKS. SageMaker HyperPod Questa sezione descrive l’installazione e la configurazione del driver CSI di Amazon EBS per abilitare l’archiviazione persistente per i carichi di lavoro di machine learning.

### Prerequisiti
<a name="sagemaker-hyperpod-eks-ebs-setup-prerequisite"></a>

Prima di iniziare, esegui queste attività:
+ [Installa e configura AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)
+ [Crea un SageMaker 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)
+ Installazione del driver CSI di Amazon EBS versione [v1.47.0](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/CHANGELOG.md#v1470)

### Autorizzazioni aggiuntive
<a name="sagemaker-hyperpod-eks-ebs-setup-permissions"></a>

Per configurare il componente aggiuntivo del driver CSI di Amazon EBS, segui le istruzioni in [Use Kubernetes volume storage with Amazon EBS](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html) in *Amazon EKS User Guide*. Devi anche aggiungere le autorizzazioni seguenti al ruolo IAM utilizzato per eseguire il componente aggiuntivo del driver. Tieni presente che questo è il ruolo IAM specificato nella configurazione dell'account di servizio per il driver aggiuntivo, non il ruolo di esecuzione del HyperPod cluster.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Effect": "Allow",
            "Action":
            [
                "sagemaker:AttachClusterNodeVolume",
                "sagemaker:DetachClusterNodeVolume"
            ],
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster-name"
        }
    ]
}
```

------

## Usando il APIs
<a name="sagemaker-hyperpod-eks-ebs-setup-apis"></a>

In alternativa, puoi utilizzare le operazioni [AttachClusterNodeVolume](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AttachClusterNodeVolume.html)e [DetachClusterNodeVolume](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DetachClusterNodeVolume.html)API per collegare e scollegare i volumi Amazon EBS alle istanze del cluster SageMaker HyperPod EKS.

**I requisiti chiave per il loro utilizzo APIs includono quanto segue.**
+ Sia il volume Amazon EBS che il cluster SageMaker HyperPod EKS devono essere di proprietà dello stesso Account AWS.
+ Il principale che esegue la chiamata necessita di autorizzazioni minime specifiche per eseguire correttamente l’operazione di collegamento o scollegamento. Per ulteriori informazioni su queste autorizzazioni, consulta le sezioni seguenti.
+ Dopo aver collegato un volume al HyperPod nodo, segui le istruzioni in [Accesso ai nodi del SageMaker HyperPod cluster](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-access-through-terminal.html) per accedere al nodo del cluster e [Rendere disponibile un volume da utilizzare per](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-using-volumes.html) montare il volume collegato.

### Autorizzazioni necessarie per `sagemaker:AttachClusterNodeVolume`
<a name="sagemaker-hyperpod-eks-ebs-setup-apis-attach"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Effect": "Allow",
            "Action":
            [
                "sagemaker:AttachClusterNodeVolume"
            ],
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster-name"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "ec2:AttachVolume",
                "ec2:DescribeVolumes"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:volume/*"
        }
    ]
}
```

------

### Autorizzazioni necessarie per `sagemaker:DetachClusterNodeVolume`
<a name="sagemaker-hyperpod-eks-ebs-setup-apis-detach"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Effect": "Allow",
            "Action":
            [
                "sagemaker:DetachClusterNodeVolume"
            ],
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "eks:DescribeCluster"
            ],
            "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster-name"
        },
        {
            "Effect": "Allow",
            "Action":
            [
                "ec2:DetachVolume",
                "ec2:DescribeVolumes"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:volume/*"
        }
    ]
}
```

------

### Autorizzazioni richieste per le chiavi AWS KMS
<a name="sagemaker-hyperpod-eks-ebs-setup-apis-kms"></a>

Aggiungi le seguenti AWS KMS autorizzazioni solo se utilizzi chiavi KMS gestite dal cliente per crittografare i volumi Amazon EBS collegati ai nodi del cluster. HyperPod Queste autorizzazioni non sono necessarie se utilizzi chiavi KMS gestite da AWS(l’opzione di crittografia predefinita).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "key-default-1",
    "Statement":
    [
        {
            "Effect": "Allow",
            "Principal":
            {
                "AWS": "arn:aws:iam::111122223333:role/caller-role"
            },
            "Action": "kms:DescribeKey",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Principal":
            {
                "AWS": "arn:aws:iam::111122223333:role/caller-role"
            },
            "Action": "kms:CreateGrant",
            "Resource": "*",
            "Condition":
            {
                "StringEquals":
                {
                    "kms:CallerAccount": "111122223333",
                    "kms:ViaService": "ec2.us-east-1.amazonaws.com"
                },
                "ForAnyValue:StringEquals":
                {
                    "kms:EncryptionContextKeys": "aws:ebs:id"
                },
                "Bool":
                {
                    "kms:GrantIsForAWSResource": true
                },
                "ForAllValues:StringEquals":
                {
                    "kms:GrantOperations":
                    [
                        "Decrypt"
                    ]
                }
            }
        }
    ]
}
```

------

**Nota**  
Queste AWS KMS autorizzazioni non sono necessarie `sagemaker:DetachClusterNodeVolume` quando si scollega un volume Cluster Auto Volume Attachment (CAVA) crittografato con chiavi KMS gestite dal cliente.

# Configurazione di etichette e colori Kubernetes personalizzati in Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints"></a>

 SageMaker HyperPod I cluster Amazon con orchestrator Amazon Elastic Kubernetes Service (Amazon EKS) supportano etichette e taint Kubernetes personalizzati per i nodi all'interno dei gruppi di istanze. Le etichette e i taint sono meccanismi di pianificazione e organizzazione fondamentali in Kubernetes che offrono un controllo preciso sul posizionamento dei pod e sull'utilizzo delle risorse.

Le etichette sono coppie chiave-valore che possono essere allegate agli oggetti Kubernetes e consentono di organizzare e selezionare le risorse in base agli attributi. I taint, che funzionano insieme alle tolleranze, sono proprietà specifiche dei nodi che influenzano la pianificazione dei pod respingendo i pod che non hanno tolleranze corrispondenti. Insieme, questi meccanismi consentono di isolare i carichi di lavoro, assegnarli in base alle specifiche hardware e garantire un utilizzo ottimale delle risorse.

## Casi di utilizzo comune
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-use-cases"></a>

Di seguito sono riportati gli scenari più comuni in cui etichette e colorazioni personalizzate sono vantaggiose:
+ **Prevenzione dei pod di sistema su istanze costose: applica dei trucchi alle istanze** GPU per evitare che i pod di sistema e altri carichi di lavoro non critici consumino costose risorse di elaborazione
+ **Integrazione con gli strumenti esistenti: applica etichette che corrispondono ai modelli di infrastruttura e** alle configurazioni di affinità dei nodi stabiliti dall'organizzazione

## Configurazione di etichette e colorazioni
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-configure"></a>

Puoi configurare etichette e taint Kubernetes personalizzati a livello di gruppo di istanze utilizzando il parametro nella configurazione del `KubernetesConfig` cluster. Le etichette e i taint vengono applicati a tutti i nodi del gruppo di istanze e persistono per tutto il ciclo di vita del cluster.

Il `KubernetesConfig` parametro è dichiarativo, il che significa che si specifica lo stato completo desiderato di etichette e taint per un gruppo di istanze. SageMaker HyperPod quindi riconcilia lo stato effettivo dei nodi in modo che corrisponda allo stato desiderato.
+ **Aggiungere etichette o tinte**: includi le nuove etichette o tinte `KubernetesConfig` insieme a quelle esistenti che desideri conservare
+ **Aggiornamento di etichette o tinte**: modifica i valori delle `KubernetesConfig` etichette o delle tinte che desideri modificare e includi tutte le altre che desideri conservare
+ **Rimozione di etichette o tinte**: ometti le etichette o le sfumature che desideri rimuovere`KubernetesConfig`, mantenendo solo quelle che desideri conservare

### Creazione di un cluster con etichette e tinte
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-create"></a>

Quando crei un nuovo SageMaker HyperPod cluster, includi il `KubernetesConfig` parametro nella configurazione del gruppo di istanze. L'esempio seguente mostra come creare un cluster con etichette e tinte personalizzate:

```
{
    "ClusterName": "my-cluster",
    "InstanceGroups": [{
        "InstanceGroupName": "worker-group-1",
        "InstanceType": "ml.p4d.24xlarge",
        "InstanceCount": 4,
        "LifeCycleConfig": {
            "SourceS3Uri": "s3://my-bucket/lifecycle-config.sh",
            "OnCreate": "on-create.sh"
        },
        "ExecutionRole": "arn:aws:iam::123456789012:role/HyperPodExecutionRole",
        "ThreadsPerCore": 1,
        "KubernetesConfig": { 
            "Labels": {
                "env": "prod",
                "team": "ml-training",
                "gpu-type": "a100"
            },
            "Taints": [{
                "key": "gpu",
                "value": "true",
                "effect": "NoSchedule"
            },
            {
                "key": "dedicated",
                "value": "ml-workloads",
                "effect": "NoExecute"
            }]
        }
    }],
    "VpcConfig": {
        "SecurityGroupIds": ["sg-0123456789abcdef0"],
        "Subnets": ["subnet-0123456789abcdef0", "subnet-0123456789abcdef1"]
    },
    "Orchestrator": {
        "Eks": {
            "ClusterArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-eks-cluster"
        }
    }
}
```

In questo esempio:
+ **Etichette**: vengono applicate tre etichette personalizzate:`env=prod`,`team=ml-training`, e `gpu-type=a100`
+ **Taints**: due taint sono configurati per impedire la pianificazione indesiderata dei pod

### Aggiornamento di etichette e segni distintivi su un cluster esistente
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-update"></a>

È possibile modificare etichette e caratteri su un cluster esistente utilizzando l'`UpdateCluster`API. L'esempio seguente mostra come aggiornare il gruppo `KubernetesConfig` for an instance:

```
{
    "ClusterName": "my-cluster",
    "InstanceGroups": [{
        "InstanceGroupName": "worker-group-1",
        "KubernetesConfig": { 
            "Labels": {
                "env": "prod",
                "team": "ml-training",
                "gpu-type": "a100",
                "cost-center": "ml-ops"
            },
            "Taints": [{
                "key": "gpu",
                "value": "true",
                "effect": "NoSchedule"
            }]
        }
    }]
}
```

Quando aggiorni etichette e tinte, SageMaker HyperPod applica le modifiche a tutti i nodi del gruppo di istanze. Il servizio gestisce la transizione dallo stato corrente a quello desiderato, che è possibile monitorare utilizzando l'`DescribeCluster`API.

## Monitoraggio dell'etichetta e dell'applicazione di contaminazione
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-monitor"></a>

SageMaker HyperPod consente APIs di monitorare lo stato delle etichette e dei coloranti man mano che vengono applicati ai nodi del cluster.

### Verifica dello stato a livello di cluster
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-describe-cluster"></a>

Utilizza l'`DescribeCluster`API per visualizzare lo stato attuale e desiderato delle etichette e dei coloranti a livello di gruppo di istanze. L'esempio seguente mostra la struttura della risposta:

```
{
    "ClusterName": "my-cluster",
    "ClusterStatus": "InService",
    "InstanceGroups": [{
        "InstanceGroupName": "worker-group-1",
        "InstanceType": "ml.p4d.24xlarge",
        "CurrentInstanceCount": 4,
        "TargetInstanceCount": 4,
        "KubernetesConfig": {
            "CurrentLabels": {
                "env": "prod",
                "team": "ml-training",
                "gpu-type": "a100"
            },
            "DesiredLabels": {
                "env": "prod",
                "team": "ml-training",
                "gpu-type": "a100"
            },
            "CurrentTaints": [{
                "key": "gpu",
                "value": "true",
                "effect": "NoSchedule"
            }],
            "DesiredTaints": [{
                "key": "gpu",
                "value": "true",
                "effect": "NoSchedule"
            }]
        }
    }]
}
```

In caso di `CurrentLabels` `CurrentTaints` corrispondenza `DesiredLabels``DesiredTaints`, a tutti i nodi del gruppo di istanze viene applicata la configurazione specificata. Se differiscono, il cluster sta ancora applicando le modifiche.

### Verifica dello stato dei singoli nodi
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-describe-node"></a>

Per i dettagli a livello di nodo, usa l'`DescribeClusterNode`API per controllare l'etichetta e la configurazione del colore dei singoli nodi. L'esempio seguente mostra la struttura della risposta:

```
{
    "NodeDetails": { 
        "InstanceId": "i-0123456789abcdef0",
        "InstanceGroupName": "worker-group-1",
        "InstanceType": "ml.p4d.24xlarge",
        "InstanceStatus": {
            "Status": "Running",
            "Message": "Node is healthy"
        },
        "LifeCycleConfig": {
            "SourceS3Uri": "s3://my-bucket/lifecycle-config.sh",
            "OnCreate": "on-create.sh"
        },
        "LaunchTime": 1699564800.0,
        "KubernetesConfig": {
            "CurrentLabels": {
                "env": "prod",
                "team": "ml-training",
                "gpu-type": "a100"
            },
            "DesiredLabels": {
                "env": "prod",
                "team": "ml-training",
                "gpu-type": "a100"
            },
            "CurrentTaints": [{
                "key": "gpu",
                "value": "true",
                "effect": "NoSchedule"
            }],
            "DesiredTaints": [{
                "key": "gpu",
                "value": "true",
                "effect": "NoSchedule"
            }]
        }
    }
}
```

Il monitoraggio a livello di nodo è utile per la risoluzione dei problemi quando etichette o contaminazioni non si applicano correttamente a nodi specifici o quando è necessario verificare la configurazione di una particolare istanza.

## Prefissi riservati
<a name="sagemaker-hyperpod-eks-custom-labels-and-taints-reserved-prefixes"></a>

Alcuni prefissi sono riservati all'uso del sistema e non devono essere utilizzati per etichette o colorazioni personalizzate. I seguenti prefissi sono riservati:
+ `kubernetes.io/`- Riservato ai componenti principali di Kubernetes
+ `k8s.io/`- Riservato ai componenti principali di Kubernetes
+ `sagemaker.amazonaws.com/`- Riservato per SageMaker HyperPod
+ `eks.amazonaws.com/`- Riservato ad Amazon EKS
+ `k8s.aws/`- Riservato ad Amazon EKS
+ `karpenter.sh/`- Riservato alla scalabilità automatica di Karpenter

Le etichette e le macchie con questi prefissi sono gestite dai componenti del sistema e non devono essere sovrascritte con valori personalizzati.

# Formazione senza checkpointless in Amazon SageMaker HyperPod
<a name="sagemaker-eks-checkpointless"></a>

La formazione Checkpointless su Amazon SageMaker HyperPod consente un ripristino più rapido dai guasti dell'infrastruttura di formazione. La seguente documentazione ti aiuta a iniziare con la formazione senza checkpoint e la messa a punto per i modelli supportati. NeMo

La formazione Checkpointless ha i seguenti prerequisiti:
+ [Inizia a usare il supporto di Amazon EKS in SageMaker HyperPod](sagemaker-hyperpod-eks-prerequisites.md)
+ [Installazione dell’operatore di addestramento](sagemaker-eks-operator-install.md). È necessario installare la versione 1.2.0 o successiva.

 Checkpointless training on SageMaker HyperPod si basa sulla Guida per l'utente di [ NeMo NVIDIA](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemotoolkit/core/exp_manager.html#experiment-manager) Framework. Puoi eseguire corsi di formazione senza checkpointless con ricette precreate. SageMaker HyperPod Se le conosci NeMo, il processo di utilizzo delle ricette di formazione senza checkpoint è simile. Con piccole modifiche, puoi iniziare ad addestrare un modello utilizzando funzionalità di allenamento senza checkpoint che ti consentono di recuperare rapidamente dagli errori di allenamento.

Le seguenti HyperPod ricette sono preconfigurate con ottimizzazioni dell'allenamento senza checkpoint. Puoi specificare i percorsi dei dati come parte della ricetta e utilizzare lo script di avvio associato per eseguire la formazione (consulta la guida rapida di avvio di seguito):


| Modello | Metodo | Dimensione | Nodi | Istanza | Accelerator | Recipe | Script | Tutorial | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| GPT OSS | Esempio completo di finetune | 120 g | 16 | p5.48xlarge | GPU H100 | [collegamento](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/fine-tuning/gpt_oss/checkpointless_gpt_oss_120b_full_fine_tuning.yaml) | [collegamento](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.sh) | [collegamento](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-finetune.html) | 
| GPT BOSS | Esempio di LoRa | 120 b | 2 | p5.48xlarge | GPU H100 | [collegamento](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/fine-tuning/gpt_oss/checkpointless_gpt_oss_120b_lora.yaml) | [collegamento](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.sh) | [collegamento](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-peft.html) | 
| Lama 3 | Esempio di pre-allenamento | 70 b | 16 | p5.48xlarge | GPU H100 | [collegamento](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/training/llama/checkpointless_llama3_70b_pretrain.yaml) | [collegamento](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh) | [collegamento](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-pretraining-llama3.html) | 
| Lama 3 | Esempio di Lora | 70 b | 2 | p5.48xlarge | GPU H100 | [collegamento](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/fine-tuning/llama/checkpointless_llama3_70b_lora.yaml) | [collegamento](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/launcher_scripts/llama/run_checkpointless_llama3_70b_lora.sh) | [collegamento](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-peft-llama.html) | 

La seguente guida rapida fornisce tutorial per l'utilizzo di ricette di formazione senza checkpoint:

**Esempi introduttivi**
+ [Tutorial - Ottimizzazione completa di Amazon SageMaker HyperPod Checkpointless GPT OSS 120b](sagemaker-eks-checkpointless-recipes-finetune.md)
+ [Tutorial - Amazon SageMaker HyperPod Checkpointless Left-LoRa GPT OSS 120b](sagemaker-eks-checkpointless-recipes-peft.md)
+ [Tutorial - Amazon SageMaker HyperPod Checkpointless Pretraining Llama 3 70b](sagemaker-eks-checkpointless-recipes-pretraining-llama3.md)
+ [Tutorial - Amazon SageMaker HyperPod Checkpointless Left-Lora Llama 3 70b](sagemaker-eks-checkpointless-recipes-peft-llama.md)

Se desideri pre-addestrare o perfezionare i modelli personalizzati, consulta. [Tutorial - Amazon SageMaker HyperPod Checkpointless, preaddestramento o messa a punto di modelli personalizzati](sagemaker-eks-checkpointless-recipes-custom.md)

Per ulteriori informazioni sull'integrazione di componenti di formazione specifici senza checkpoint,. [HyperPod funzionalità di formazione senza checkpointless](sagemaker-eks-checkpointless-features.md)

# Tutorial di formazione SageMaker HyperPod senza checkpoint su Amazon
<a name="sagemaker-eks-checkpointless-recipes"></a>

[ HyperPod Le ricette di formazione checkpointless](https://github.com/aws/sagemaker-hyperpod-checkpointless-training) sono configurazioni di lavoro predefinite con funzionalità di formazione senza checkpointless abilitate. L'utilizzo di queste ricette semplifica l'avvio di corsi di formazione senza checkpoint. HyperPod

**Topics**
+ [Tutorial - Ottimizzazione completa di Amazon SageMaker HyperPod Checkpointless GPT OSS 120b](sagemaker-eks-checkpointless-recipes-finetune.md)
+ [Tutorial - Amazon SageMaker HyperPod Checkpointless Left-LoRa GPT OSS 120b](sagemaker-eks-checkpointless-recipes-peft.md)
+ [Tutorial - Amazon SageMaker HyperPod Checkpointless Pretraining Llama 3 70b](sagemaker-eks-checkpointless-recipes-pretraining-llama3.md)
+ [Tutorial - Amazon SageMaker HyperPod Checkpointless Left-Lora Llama 3 70b](sagemaker-eks-checkpointless-recipes-peft-llama.md)
+ [Tutorial - Amazon SageMaker HyperPod Checkpointless, preaddestramento o messa a punto di modelli personalizzati](sagemaker-eks-checkpointless-recipes-custom.md)

# Tutorial - Ottimizzazione completa di Amazon SageMaker HyperPod Checkpointless GPT OSS 120b
<a name="sagemaker-eks-checkpointless-recipes-finetune"></a>

La seguente sequenza di passaggi è necessaria per eseguire ricette di formazione senza checkpoint. HyperPod

## Prerequisiti
<a name="sagemaker-eks-checkpointless-recipes-finetune-prereqs"></a>

Prima di iniziare a configurare l’ambiente, assicurati di avere:
+ [Supporto Amazon EKS abilitato in Amazon SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [Configura l'operatore HyperPod di formazione (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ Una posizione di archiviazione condivisa. Può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.
+ I dati in uno dei seguenti formati:
  + JSON
  + JSONGZ (JSON compresso)
  + ARROW
+ [Scegli una ricetta di formazione supportata senza checkpoint per Llama 70B o GPT-OSS 120B dalla fonte.](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)
+ [Scaricate i pesi del modello Hugging](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) [Face e convertiteli nel formato supportato da Nemo.](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ Configurare l’ambiente

## Configurazione dell'ambiente Kubernetes
<a name="sagemaker-eks-checkpointless-finetune-recipes-kubernetes"></a>

Per configurare l'ambiente Kubernetes, procedi come segue:

1. Configura l’ambiente virtuale. Assicurati che la tua versione di Python sia maggiore o uguale a 3.10 e inferiore a 3.14.

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [Configura kubectl ed eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [Installa Helm](https://helm.sh/docs/intro/install/)

1. Connettiti al cluster Kubernetes.

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. Installa le dipendenze utilizzando uno dei metodi seguenti:

   1. Metodo 1: metodo SageMaker HyperPod delle ricette:

      ```
      # install SageMaker HyperPod Recipes.
      git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
      cd sagemaker-hyperpod-recipes
      pip3 install -r requirements.txt
      ```

   1. Metodo 2: kubectl con metodo job yaml predefinito

      ```
      # install SageMaker HyperPod checkpointless training.
      git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git
      cd sagemaker-hyperpod-checkpointless-training
      ```

Ora puoi lanciare la ricetta di allenamento senza checkpointless usando il programma di avvio -style o usando kubectl. NeMo

## Avvia i lavori di formazione con il programma di avvio delle ricette
<a name="sagemaker-eks-checkpointless-recipes-finetune-launcher"></a>

Puoi utilizzare le SageMaker HyperPod ricette di Amazon per inviare il tuo lavoro di formazione. L'utilizzo delle ricette comporta l'aggiornamento di k8s.yaml, config.yaml e l'esecuzione dello script di avvio.

1. Aggiornamento di `launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.sh`

   your\$1container: Un contenitore di Deep Learning. Per trovare la versione più recente del contenitore di formazione checkpointless, consulta le note sulla versione di [checkpointless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) training.

   ```
   #!/bin/bash
   
   SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"}
   TRAIN_DIR="${TRAIN_DIR}"
   VAL_DIR="${VAL_DIR}"
   EXP_DIR="${EXP_DIR}"
   LOG_DIR="${LOG_DIR}"
   CONTAINER_MOUNT="/data"
   CONTAINER="${CONTAINER}"
   MODEL_NAME_OR_PATH="${MODEL_NAME_OR_PATH}"
   
   HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
       recipes=fine-tuning/gpt_oss/checkpointless_gpt_oss_120b_full_fine_tuning \
       recipes.dataset.dataset_path="${TRAIN_DIR}" \
       recipes.exp_manager.exp_dir="${EXP_DIR}" \
       recipes.log_dir="${LOG_DIR}" \
       recipes.resume.restore_config.path="${MODEL_NAME_OR_PATH}" \
       base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
       git.use_default=false \
       cluster=k8s \
       cluster_type=k8s \
       container="${CONTAINER}" \
       +cluster.hostNetwork=true \
       +cluster.persistent_volume_claims.0.claimName=fsx-claim \
       +cluster.persistent_volume_claims.0.mountPath="${CONTAINER_MOUNT}" \
       +recipes.dataset.val_dataset_path="${VAL_DIR}" \
       ++recipes.callbacks.3.test_fault_config.fault_prob_between_lock=1 \
   ```

1. Avvio del job di addestramento

   ```
   bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.sh
   ```

Dopo aver inviato il job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

```
kubectl get pods

NAME                             READY   STATUS             RESTARTS        AGE
gpt-oss-120b-worker-0             0/1    running               0            36s
```

Se lo STATUS è in sospeso o ContainerCreating, esegui il comando seguente per ottenere maggiori dettagli

```
kubectl describe pod <name of pod>
```

Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.

```
kubectl logs <name of pod>
```

`STATUS` diventa `COMPLETED` quando esegui `kubectl get pods`.

## Avvia il processo di formazione con kubectl con yaml predefinito
<a name="sagemaker-eks-checkpointless-recipes-finetune-kubectl"></a>

Un'altra opzione è avviare la formazione tramite kubectl con un job predefinito yaml.

1. aggiorna examples/gpt\$1oss/launch/full \$1finetune\$1gpt\$1oss\$1120b\$1checkpointless\$1p5.yaml
   + immagine: Un contenitore di Deep Learning. Per trovare la versione più recente del contenitore di formazione checkpointless, consulta le note sulla versione di [checkpointless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) training.
   + [resume.restore\$1config.path=: il percorso per scaricare i pesi dei modelli preaddestrati in formato Nemo nella fase Prerequisiti.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-finetune.html#sagemaker-eks-checkpointless-recipes-finetune-prereqs) <path\$1to\$1pretrained\$1weights>
   + dataset.dataset\$1path=<path\$1to\$1dataset>: il percorso del set di dati archiviato nella memoria condivisa

1. Invia il lavoro usando kubectl con full\$1finetune\$1gpt\$1oss\$1120b\$1checkpointless\$1p5.yaml

   ```
   kubectl apply -f examples/gpt_oss/launch/full_finetune_gpt_oss_120b_checkpointless_p5.yaml
   ```

Dopo aver inviato il job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

```
kubectl get pods

NAME                             READY   STATUS             RESTARTS        AGE
gpt-oss-120b-worker-0             0/1    running               0            36s
```

Se lo STATUS è in sospeso o, esegui il seguente comando per ottenere maggiori dettagli ContainerCreating

```
kubectl describe pod <name of pod>
```

Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.

```
kubectl logs <name of pod>
```

Lo STATUS diventerà Completato quando esegui kubectl get pods

# Tutorial - Amazon SageMaker HyperPod Checkpointless Left-LoRa GPT OSS 120b
<a name="sagemaker-eks-checkpointless-recipes-peft"></a>

La seguente sequenza di passaggi è necessaria per eseguire ricette di formazione senza checkpoint. HyperPod

## Prerequisiti
<a name="sagemaker-eks-checkpointless-recipes-peft-prereqs"></a>

Prima di iniziare a configurare l’ambiente, assicurati di avere:
+ [Supporto Amazon EKS abilitato in Amazon SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [Configura l'operatore HyperPod di formazione (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ Una posizione di archiviazione condivisa. Può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.
+ I dati in uno dei seguenti formati:
  + JSON
  + JSONGZ (JSON compresso)
  + ARROW
+ [Scegli una ricetta di formazione supportata senza checkpoint per Llama 70B o GPT-OSS 120B dalla fonte.](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)
+ [Scaricate i pesi del modello Hugging](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) [Face e convertiteli nel formato supportato da Nemo.](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ Configurare l’ambiente

## Configurazione dell'ambiente Kubernetes
<a name="sagemaker-eks-checkpointless-recipes-peft-kubernetes"></a>

Per configurare l'ambiente Kubernetes, procedi come segue:

1. Configura l’ambiente virtuale. Assicurati di usare Python maggiore o uguale a 3.10 e < 3.14.

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [Configura kubectl ed eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [Installa Helm](https://helm.sh/docs/intro/install/)

1. Connettiti al cluster Kubernetes.

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. Installa le dipendenze utilizzando uno dei metodi seguenti:
   + SageMaker HyperPod metodo delle ricette:

     ```
     # install SageMaker HyperPod Recipes.
     git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
     cd sagemaker-hyperpod-recipes
     pip3 install -r requirements.txt
     ```
   + kubectl con metodo job yaml predefinito

     ```
     # install SageMaker HyperPod checkpointless training.
     git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git
     cd sagemaker-hyperpod-checkpointless-training
     ```

Ora puoi lanciare la ricetta di allenamento senza checkpointless usando il programma di avvio -style o usando kubectl. NeMo

## Avvio del job di addestramento con l’utilità di avvio delle ricette
<a name="sagemaker-eks-checkpointless-recipes-peft-recipes-launcher"></a>

In alternativa, puoi utilizzare le SageMaker HyperPod ricette per inviare il tuo lavoro di formazione. L'uso delle ricette comporta l'aggiornamento di k8s.yaml, config.yaml e l'esecuzione dello script di avvio.

1. Aggiornamento di `launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.sh`

   your\$1contrainer: un contenitore di Deep Learning. [Per trovare la versione più recente del contenitore di formazione checkpointless, consulta le note sulla versione di checkpointless training.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)

   ```
   #!/bin/bash
   SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"}
   TRAIN_DIR="${TRAIN_DIR}"
   VAL_DIR="${VAL_DIR}"
   EXP_DIR="${EXP_DIR}"
   LOG_DIR="${LOG_DIR}"
   CONTAINER_MOUNT="/data"
   CONTAINER="${CONTAINER}"
   MODEL_NAME_OR_PATH="${MODEL_NAME_OR_PATH}"
   
   HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
       recipes=fine-tuning/gpt_oss/checkpointless_gpt_oss_120b_lora \
       recipes.dataset.dataset_path="${TRAIN_DIR}" \
       recipes.exp_manager.exp_dir="${EXP_DIR}" \
       recipes.log_dir="${LOG_DIR}" \
       recipes.resume.restore_config.path="${MODEL_NAME_OR_PATH}" \
       base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
       git.use_default=false \
       cluster=k8s \
       cluster_type=k8s \
       container="${CONTAINER}" \
       +cluster.hostNetwork=true \
       +cluster.persistent_volume_claims.0.claimName=fsx-claim \
       +cluster.persistent_volume_claims.0.mountPath="${CONTAINER_MOUNT}" \
       +recipes.dataset.val_dataset_path="${VAL_DIR}" \
       ++recipes.callbacks.3.test_fault_config.fault_prob_between_lock=1 \
   ```

1. Avvio del job di addestramento

   ```
   bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.sh
   ```

Dopo aver inviato il job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

```
kubectl get pods

NAME                             READY   STATUS             RESTARTS        AGE
gpt-oss-120b-worker-0             0/1    running               0            36s
```

Se lo STATUS è in sospeso o ContainerCreating, esegui il comando seguente per ottenere maggiori dettagli

```
kubectl describe pod <name of pod>
```

Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.

```
kubectl logs <name of pod>
```

Lo STATUS diventerà Completato quando esegui kubectl get pods

## Avvia il processo di formazione con kubectl con yaml predefinito
<a name="sagemaker-eks-checkpointless-recipes-peft-kubectl"></a>

Un'altra opzione è avviare la formazione tramite kubectl con un job predefinito yaml.

1. aggiorna examples/gpt\$1oss/launch/peft \$1gpt\$1oss\$1120b\$1checkpointless\$1p5.yaml
   + immagine: Un contenitore di Deep Learning. Per trovare la versione più recente del contenitore di formazione checkpointless, consulta le note sulla versione di [checkpointless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) training.
   + [resume.restore\$1config.path=: il percorso per scaricare i pesi dei modelli preaddestrati in formato Nemo nella fase Prerequisiti.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-peft.html#sagemaker-eks-checkpointless-recipes-peft-prereqs) <path\$1to\$1pretrained\$1weights>
   + <path\$1to\$1dataset>dataset.dataset\$1path=: il percorso del set di dati archiviato nella memoria condivisa

1. Invia il lavoro usando kubectl con peft\$1gpt\$1oss\$1120b\$1checkpointless\$1p5.yaml

   ```
   kubectl apply -f examples/gpt_oss/launch/peft_gpt_oss_120b_checkpointless_p5.yaml
   ```

Dopo aver inviato il job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

```
kubectl get pods

NAME                                             READY   STATUS             RESTARTS        AGE
gpt-120b-lora-checkpointless-worker-0             0/1    running               0            36s
```

Se lo STATUS è in sospeso o, esegui il seguente comando per ottenere maggiori dettagli ContainerCreating

```
kubectl describe pod <name of pod>
```

Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.

```
kubectl logs <name of pod>
```

Lo STATUS diventerà Completato quando esegui kubectl get pods

# Tutorial - Amazon SageMaker HyperPod Checkpointless Pretraining Llama 3 70b
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3"></a>

La seguente sequenza di passaggi è necessaria per eseguire ricette di allenamento senza checkpoint. HyperPod

## Prerequisiti
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-prereqs"></a>

Prima di iniziare a configurare l’ambiente, assicurati di avere:
+ [Supporto Amazon EKS abilitato in Amazon SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [Configura l'operatore HyperPod di formazione (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ Una posizione di archiviazione condivisa. Può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.
+ I dati in uno dei seguenti formati:
  + JSON
  + JSONGZ (JSON compresso)
  + ARROW
+ [Scegli una ricetta di formazione supportata senza checkpoint per Llama 70B o GPT-OSS 120B dalla fonte.](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)
+ [Scaricate i pesi del modello Hugging](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) [Face e convertiteli nel formato supportato da Nemo.](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ Configurare l’ambiente

## Configurazione dell'ambiente Kubernetes
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-kubernetes"></a>

Per configurare l'ambiente Kubernetes, procedi come segue:

1. Configura l’ambiente virtuale. Assicurati di usare Python maggiore o uguale a 3.10 e inferiore a 3.14.

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [Configura kubectl ed eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [Installa Helm](https://helm.sh/docs/intro/install/)

1. Connettiti al cluster Kubernetes.

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. Installa le dipendenze utilizzando uno dei metodi seguenti:

   1. Metodo 1: metodo SageMaker HyperPod delle ricette:

      ```
      # install SageMaker HyperPod Recipes.
      git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
      cd sagemaker-hyperpod-recipes
      pip3 install -r requirements.txt
      ```

   1. Metodo 2: kubectl con metodo job yaml predefinito

      ```
      # install SageMaker HyperPod checkpointless training.
      git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git
      cd sagemaker-hyperpod-checkpointless-training
      ```

Ora puoi lanciare la ricetta di allenamento senza checkpointless usando il programma di avvio -style o usando kubectl. NeMo

## Metodo 1: avvia il processo di formazione con il programma di avvio delle ricette
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-recipes-launcher"></a>

In alternativa, puoi utilizzare le SageMaker HyperPod ricette per inviare il tuo lavoro di formazione. L'uso delle ricette comporta l'aggiornamento di k8s.yaml, config.yaml e l'esecuzione dello script di avvio.

1. Aggiornamento di `launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh`

   Un contenitore di Deep Learning. Per trovare la versione più recente del contenitore di formazione checkpointless, consulta le note sulla versione di [checkpointless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) training.

   ```
   #!/bin/bash
   
   SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"}
   TRAIN_DIR="${TRAIN_DIR}"
   VAL_DIR="${VAL_DIR}"
   EXP_DIR="${EXP_DIR}"
   LOG_DIR="${LOG_DIR}"
   CONTAINER_MOUNT="/data"
   CONTAINER="${CONTAINER}"
   
   HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
       recipes=training/llama/checkpointless_llama3_70b_pretrain \
       recipes.dataset.dataset_path="${TRAIN_DIR}" \
       recipes.exp_manager.exp_dir="${EXP_DIR}" \
       recipes.log_dir="${LOG_DIR}" \
       recipes.data.global_batch_size=16 \
       recipes.data.micro_batch_size=4 \
       base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
       git.use_default=false \
       cluster=k8s \
       cluster_type=k8s \
       container="${CONTAINER}" \
       +cluster.hostNetwork=true \
       +cluster.persistent_volume_claims.0.claimName=fsx-claim \
       +cluster.persistent_volume_claims.0.mountPath="${CONTAINER_MOUNT}" \
       +recipes.dataset.val_dataset_path="${VAL_DIR}" \
       ++recipes.callbacks.3.test_fault_config.fault_prob_between_lock=1 \
   ```

1. Avvio del job di addestramento

   ```
   bash launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh
   ```

1. Dopo aver inviato il job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

   ```
   kubectl get pods
   
   NAME                             READY   STATUS             RESTARTS        AGE
   llama-3-70b-worker-0             0/1    running               0            36s
   ```

1. Se lo STATUS è in sospeso o ContainerCreating, esegui il comando seguente per ottenere maggiori dettagli

   ```
   kubectl describe pod <name of pod>
   ```

1. Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.

   ```
   kubectl logs <name of pod>
   ```

   Lo STATUS diventerà Completato quando esegui kubectl get pods

## Metodo 2: Avvia il processo di formazione con kubectl con yaml predefinito
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-kubectl"></a>

Un'altra opzione è avviare la formazione tramite kubectl con un job predefinito yaml.

1. Aggiornamento di `examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml`
   + `image`: un container per il Deep Learning. [Per trovare la versione più recente del contenitore di formazione checkpointless, consulta le note sulla versione di checkpointless training.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)
   + `resume.restore_config.path=<path_to_pretrained_weights>`[: Il percorso per scaricare i pesi dei modelli preaddestrati in formato Nemo nella fase Prerequisiti.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-finetune.html#sagemaker-eks-checkpointless-recipes-finetune-prereqs)
   + `dataset.dataset_path=<path_to_dataset>`: Il percorso del set di dati archiviato nella memoria condivisa

1. Invia il lavoro usando kubectl con `pretrain_llama3_70b_checkpointless_p5.yaml`

   ```
   kubectl apply -f examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml
   ```

1. Dopo aver inviato il job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

   ```
   kubectl get pods
   
   NAME                                             READY   STATUS             RESTARTS        AGE
   llama3-pretrain-checkpointless-worker-0             0/1    running               0            36s
   ```

1. Se lo STATUS è in sospeso o ContainerCreating, esegui il seguente comando per ottenere maggiori dettagli

   ```
   kubectl describe pod <name of pod>
   ```

1. Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.

   ```
   kubectl logs <name of pod>
   ```

   Lo STATUS diventerà Completato quando esegui kubectl get pods

# Tutorial - Amazon SageMaker HyperPod Checkpointless Left-Lora Llama 3 70b
<a name="sagemaker-eks-checkpointless-recipes-peft-llama"></a>

La seguente sequenza di passaggi è necessaria per eseguire ricette di formazione senza checkpoint. HyperPod

## Prerequisiti
<a name="sagemaker-eks-checkpointless-recipes-peft-llama-prereqs"></a>

Prima di iniziare a configurare l’ambiente, assicurati di avere:
+ [Supporto Amazon EKS abilitato in Amazon SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [Configura l'operatore HyperPod di formazione (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ Una posizione di archiviazione condivisa. Può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.
+ I dati in uno dei seguenti formati:
  + JSON
  + JSONGZ (JSON compresso)
  + ARROW
+ [Scegli una ricetta di formazione supportata senza checkpoint per Llama 70B o GPT-OSS 120B dalla fonte.](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)
+ [Scaricate i pesi del modello Hugging](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) [Face e convertiteli nel formato supportato da Nemo.](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ Configurare l’ambiente

## Configurazione dell'ambiente Kubernetes
<a name="sagemaker-eks-checkpointless-recipes-peft-llama-kubernetes"></a>

Per configurare l'ambiente Kubernetes, procedi come segue:

1. Configura l’ambiente virtuale. Assicurati di usare Python maggiore o uguale a 3.10 e inferiore a 3.14.

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [Configura kubectl ed eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [Installa Helm](https://helm.sh/docs/intro/install/)

1. Connettiti al cluster Kubernetes.

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. Installa le dipendenze utilizzando uno dei metodi seguenti:

   1. Metodo 1: metodo SageMaker HyperPod delle ricette:

      ```
      # install SageMaker HyperPod Recipes.
      git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
      cd sagemaker-hyperpod-recipes
      pip3 install -r requirements.txt
      ```

   1. Metodo 2: kubectl con metodo job yaml predefinito

      ```
      # install SageMaker HyperPod checkpointless training.
      git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git
      cd sagemaker-hyperpod-checkpointless-training
      ```

Ora puoi lanciare la ricetta di allenamento senza checkpointless usando il programma di avvio -style o usando kubectl. NeMo

## Metodo 1: avvia il processo di formazione con il programma di avvio delle ricette
<a name="sagemaker-eks-checkpointless-recipes-peft-llama-recipes-launcher"></a>

In alternativa, puoi utilizzare le SageMaker HyperPod ricette per inviare il tuo lavoro di formazione. L'uso delle ricette comporta l'aggiornamento di k8s.yaml, config.yaml e l'esecuzione dello script di avvio.

1. Aggiornamento di `launcher_scripts/llama/run_checkpointless_llama3_70b_lora.sh`

   Un contenitore di Deep Learning. Per trovare la versione più recente del contenitore di formazione checkpointless, consulta le note sulla versione di [checkpointless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) training.

   ```
   #!/bin/bash
   
   SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"}
   TRAIN_DIR="${TRAIN_DIR}"
   VAL_DIR="${VAL_DIR}"
   EXP_DIR="${EXP_DIR}"
   LOG_DIR="${LOG_DIR}"
   CONTAINER_MOUNT="/data"
   CONTAINER="${CONTAINER}"
   MODEL_NAME_OR_PATH="${MODEL_NAME_OR_PATH}"
   
   HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
       recipes=fine-tuning/llama/checkpointless_llama3_70b_lora \
       recipes.dataset.dataset_path="${TRAIN_DIR}" \
       recipes.exp_manager.exp_dir="${EXP_DIR}" \
       recipes.log_dir="${LOG_DIR}" \
       recipes.resume.restore_config.path="${MODEL_NAME_OR_PATH}" \
       base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
       git.use_default=false \
       cluster=k8s \
       cluster_type=k8s \
       container="${CONTAINER}" \
       +cluster.hostNetwork=true \
       +cluster.persistent_volume_claims.0.claimName=fsx-claim \
       +cluster.persistent_volume_claims.0.mountPath="${CONTAINER_MOUNT}" \
       +recipes.dataset.val_dataset_path="${VAL_DIR}" \
       ++recipes.callbacks.3.test_fault_config.fault_prob_between_lock=1 \
   ```

1. Avvio del job di addestramento

   ```
   bash launcher_scripts/llama/run_checkpointless_llama3_70b_lora.sh
   ```

1. Dopo aver inviato il job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

   ```
   kubectl get pods
   
   NAME                             READY   STATUS             RESTARTS        AGE
   llama-3-70b-worker-0             0/1    running               0            36s
   ```

1. Se lo STATUS è in sospeso o ContainerCreating, esegui il comando seguente per ottenere maggiori dettagli

   ```
   kubectl describe pod <name of pod>
   ```

1. Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.

   ```
   kubectl logs <name of pod>
   ```

   Lo STATUS diventerà Completato quando esegui kubectl get pods

## Metodo 2: Avvia il processo di formazione con kubectl con yaml predefinito
<a name="sagemaker-eks-checkpointless-recipes-peft-llama-kubectl"></a>

Un'altra opzione è avviare la formazione tramite kubectl con un job predefinito yaml.

1. Aggiornamento di `examples/llama3/launch/peft_llama3_70b_checkpointless_p5.yaml`
   + `image`: un container per il Deep Learning. [Per trovare la versione più recente del contenitore di formazione checkpointless, consulta le note sulla versione di checkpointless training.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)
   + `resume.restore_config.path=<path_to_pretrained_weights>`[: Il percorso per scaricare i pesi dei modelli preaddestrati in formato Nemo nella fase Prerequisiti.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-finetune.html#sagemaker-eks-checkpointless-recipes-finetune-prereqs)
   + `dataset.dataset_path=<path_to_dataset>`: Il percorso del set di dati archiviato nella memoria condivisa

1. Invia il lavoro usando kubectl con `peft_llama3_70b_checkpointless_p5.yaml`

   ```
   kubectl apply -f examples/llama3/launch/peft_llama3_70b_checkpointless_p5.yaml
   ```

1. Dopo aver inviato il job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

   ```
   kubectl get pods
   
   NAME                                             READY   STATUS             RESTARTS        AGE
   llama3-70b-lora-checkpointless-worker-0             0/1    running               0            36s
   ```

1. Se lo STATUS è in sospeso o ContainerCreating, esegui il seguente comando per ottenere maggiori dettagli

   ```
   kubectl describe pod <name of pod>
   ```

1. Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.

   ```
   kubectl logs <name of pod>
   ```

   Lo STATUS diventerà Completato quando esegui kubectl get pods

# Tutorial - Amazon SageMaker HyperPod Checkpointless, preaddestramento o messa a punto di modelli personalizzati
<a name="sagemaker-eks-checkpointless-recipes-custom"></a>

La seguente sequenza di passaggi è necessaria per eseguire un addestramento senza checkpoint con il modello personalizzato acceso. HyperPod

## Prerequisiti
<a name="sagemaker-eks-checkpointless-recipes-custom-prereqs"></a>

Prima di iniziare a configurare l’ambiente, assicurati di avere:
+ [Supporto Amazon EKS abilitato in Amazon SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [Configura l'operatore HyperPod di formazione (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ Una posizione di archiviazione condivisa. Può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.
+ I dati in uno dei seguenti formati:
  + JSON
  + JSONGZ (JSON compresso)
  + ARROW
+ [Scarica i pesi del modello Hugging Face](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) [e convertili nel formato supportato da Nemo.](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ Configurare l’ambiente

## Configurazione dell'ambiente Kubernetes
<a name="sagemaker-eks-checkpointless-recipes-custom-kubernetes"></a>

Per configurare l'ambiente Kubernetes, procedi come segue:

1. Configura l’ambiente virtuale. Assicurati di usare Python maggiore o uguale a 3.10 e inferiore a 3.14.

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [Configura kubectl ed eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. Connettiti al cluster Kubernetes.

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. Installare le dipendenze

   ```
   # install SageMaker HyperPod checkpointless training.
   git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git
   cd sagemaker-hyperpod-checkpointless-training
   ```

## Istruzioni di modifica dell'allenamento Checkpointless
<a name="sagemaker-eks-checkpointless-recipes-custom-modification-instructions"></a>

Per adottare in modo incrementale la formazione senza checkpoint per i modelli personalizzati, segui la guida all'integrazione (qui utilizziamo il pretraining di Llama 3 70b come esempio), che prevede:
+ Creazione rapida di comunicatori
+ Dataloader mappato in memoria (MMAP)
+ Ripristino in corso e senza checkpoint

### Componente 1: creazione rapida di comunicatori
<a name="sagemaker-eks-checkpointless-recipes-custom-component1"></a>

Questo per ottimizzare i tempi necessari per stabilire connessioni tra i lavoratori. Non sono necessarie modifiche al codice e richiede solo l'impostazione delle variabili env

```
  # Enable Rootless features
  export HPCT_USE_ROOTLESS=1 && \
  sysctl -w net.ipv4.ip_local_port_range="20000 65535" && \

  hyperpodrun --nproc_per_node=8 \
              ...
              --inprocess-restart \
              ...
```

La modifica completa può essere trovata nel file [llama3 70 pretrain](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml) launch job config.

### Componente 2: Dataloader mappato in memoria (MMAP)
<a name="sagemaker-eks-checkpointless-recipes-custom-component2"></a>

Cache MMAP per archiviare campioni di dati precaricati e consentire l'avvio immediato della formazione senza dover attendere la preelaborazione dei dati. Richiede modifiche minime al codice da adottare inserendo il dataloader esistente.

```
data_module = MMAPDataModule(
  data_module=base_data_module,
  mmap_config=CacheResumeMMAPConfig(cache_dir=…)
)
```

### Componenti 3 e 4: ripristino in corso e senza checkpoint
<a name="sagemaker-eks-checkpointless-recipes-custom-components3-4"></a>

Ciò consente il ripristino in caso di errore senza riavviare i processi di addestramento o il caricamento dai checkpoint. Sono necessarie ulteriori modifiche al codice (aggiornamento della configurazione di strategia e formazione, wrap existing main)

```
@HPWrapper(
  health_check=CudaHealthCheck(),
  hp_api_factory=HPAgentK8sAPIFactory(),
  abort_timeout=60.0,
...)
def run_main(
  cfg,
  caller: Optional[HPCallWrapper] = None):
...


CheckpointlessMegatronStrategy(
  **self.cfg.strategy,
  ddp=self.ddp,
)
```

[La modifica completa è disponibile nello [script di immissione pretrain di llama3 70](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/llama3_70b_pretrain_checkpointless.py) e la corrispondente modifica alla configurazione di allenamento è disponibile nella configurazione di addestramento di llama3 70b.](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/config/llama3_70b_peft_checkpointless.yaml)

### Avvia la formazione
<a name="sagemaker-eks-checkpointless-recipes-custom-launch"></a>

Ora puoi avviare l'allenamento senza checkpoint usando kubectl.

```
kubectl apply -f your_job_config.yaml
```

# HyperPod funzionalità di formazione senza checkpointless
<a name="sagemaker-eks-checkpointless-features"></a>

Consulta le pagine seguenti per conoscere le funzionalità di formazione della formazione senza checkpointless.

**Topics**
+ [Archivi di formazione SageMaker HyperPod senza checkpoint di Amazon](#sagemaker-eks-checkpointless-repositories)
+ [Miglioramenti all'inizializzazione della comunicazione collettiva](sagemaker-eks-checkpointless-features-communication.md)
+ [Dataloader mappato in memoria](sagemaker-eks-checkpointless-features-mmap.md)
+ [Recupero durante il processo e formazione senza checkpoint](sagemaker-eks-checkpointless-in-process-recovery.md)

## Archivi di formazione SageMaker HyperPod senza checkpoint di Amazon
<a name="sagemaker-eks-checkpointless-repositories"></a>

[ HyperPod checkpointless training](https://github.com/aws/sagemaker-hyperpod-checkpointless-training#) accelera il ripristino dai guasti dei cluster in ambienti di formazione distribuiti su larga scala attraverso ottimizzazioni a livello di framework. Queste ottimizzazioni vengono fornite tramite un'immagine del contenitore di base che include miglioramenti avanzati dell'inizializzazione NCCL, ottimizzazioni del caricamento dei dati e componenti di ripristino in corso e senza checkpoint. Il pacchetto di formazione HyperPod checkpointless si basa su queste basi.

La formazione Checkpointless è abilitata tramite tre percorsi di ottimizzazione eseguiti in sinergia:
+ **Miglioramenti all'inizializzazione della comunicazione (NCCL e Gloo)**: elimina gli ostacoli alla comunicazione decentralizzando le informazioni di rango tra pari e ring (riquadro rosso in basso).
+ **Ottimizzazioni del caricamento dei dati**: riduci il tempo necessario per fornire il primo batch di dati durante le operazioni di riavvio (riquadri arancioni sotto).
+ **Riduzione del sovraccarico di riavvio del programma**: riduci al minimo i costi di riavvio e abilita il rifornimento senza checkpoint attraverso il ripristino del processo su nodi integri (riquadri blu e verdi di seguito).

![\[alt text not found\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-checkpointless-optimization-tracks.png)


# Miglioramenti all'inizializzazione della comunicazione collettiva
<a name="sagemaker-eks-checkpointless-features-communication"></a>

NCCL e Gloo sono librerie di comunicazione fondamentali che consentono operazioni collettive (come all-reduce e broadcast) attraverso processi di formazione distribuiti. Tuttavia, l'inizializzazione tradizionale di NCCL e Gloo può creare colli di bottiglia durante il ripristino dei guasti.

Il processo di ripristino standard richiede che tutti i processi si connettano a un sistema centralizzato TCPStore e si coordinino tramite un processo root, il che comporta un oneroso sovraccarico che diventa particolarmente problematico durante i riavvii. Questo design centralizzato crea tre problemi critici: sovraccarico di coordinamento dovuto alle TCPStore connessioni obbligatorie, ritardi di ripristino poiché ogni riavvio deve ripetere l'intera sequenza di inizializzazione e un singolo punto di errore nel processo principale stesso. Ciò impone procedure di coordinamento costose e centralizzate ogni volta che la formazione viene inizializzata o riavviata.

HyperPod la formazione senza checkpointless elimina questi ostacoli di coordinamento, permettendo un recupero più rapido dai guasti grazie a un'inizializzazione «senza radici» e «...» TCPStoreless

## configurazioni rootless
<a name="sagemaker-eks-checkpointless-features-communication-rootless-config"></a>

Per abilitare Rootless, è sufficiente esporre le seguenti variabili di ambiente.

```
export HPCT_USE_ROOTLESS=1 && \
sysctl -w net.ipv4.ip_local_port_range="20000 65535" && \
```

HPCT\$1USE\$1ROOTLESS: 0 o 1. Si usa per accendere e spegnere rootless

sysctl -w net.ipv4.ip\$1local\$1port\$1range="20000 65535": imposta l'intervallo delle porte di sistema

[Vedi l'esempio per abilitare Rootless](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml#L111-L113).

## Rootless
<a name="sagemaker-eks-checkpointless-features-communication-rootless"></a>

HyperPod checkpointless training offre nuovi metodi di inizializzazione, Rootless e, per i gruppi di processi NCCL e TCPStoreless Gloo.

L'implementazione di queste ottimizzazioni comporta la modifica di NCCL, Gloo e: PyTorch
+ Estensione della libreria di terze parti APIs per abilitare le ottimizzazioni Rootless e Storeless NCCL e Gloo mantenendo al contempo la compatibilità con le versioni precedenti
+ Aggiornamento dei backend dei gruppi di processi per utilizzare in modo condizionale percorsi ottimizzati e gestire i problemi di ripristino durante il processo
+ Evitando costose TCPStore creazioni a livello PyTorch distribuito mantenendo al contempo modelli di indirizzi simmetrici attraverso contatori di gruppo globali

Il grafico seguente mostra l'architettura delle librerie di formazione distribuite e le modifiche apportate alla formazione senza checkpoint.

![\[Il grafico seguente mostra l'architettura delle librerie di formazione distribuite e le modifiche apportate alla formazione senza checkpointless.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-checkpointless-training-libraries.png)


### NCCL e Gloo
<a name="sagemaker-eks-checkpointless-features-communication-nccl-gloo"></a>

Si tratta di pacchetti indipendenti che eseguono le funzionalità principali delle comunicazioni collettive. Forniscono chiavi APIs, come ncclCommInit Rank, per inizializzare le reti di comunicazione, gestire le risorse sottostanti ed eseguire comunicazioni collettive. Dopo aver apportato modifiche personalizzate a NCCL e Gloo, Rootless e Storeless ottimizzano (ad esempio, saltando la connessione a) l'inizializzazione della rete di comunicazione. TCPStore È possibile passare dall'utilizzo dei percorsi di codice originali ai percorsi di codice ottimizzati in modo flessibile.

### PyTorch backend del gruppo di processi
<a name="sagemaker-eks-checkpointless-features-communication-pytorch"></a>

I backend del gruppo di processi, in particolare ProcessGroup NCCL e ProcessGroupGloo, lo implementano ProcessGroup APIs richiamando le APIs librerie sottostanti corrispondenti. Poiché estendiamo le librerie di terze parti APIs, dobbiamo richiamarle correttamente e modificare il percorso del codice in base alle configurazioni dei clienti.

Oltre all'ottimizzazione dei percorsi di codice, modifichiamo anche il backend del gruppo di processi per supportare il ripristino durante il processo.

# Dataloader mappato in memoria
<a name="sagemaker-eks-checkpointless-features-mmap"></a>

Un altro sovraccarico di riavvio deriva dal caricamento dei dati: il cluster di addestramento rimane inattivo mentre il dataloader si inizializza, scarica i dati dai file system remoti e li elabora in batch.

Per risolvere questo problema, introduciamo il Memory Mapped DataLoader (MMAP) Dataloader, che memorizza nella cache i batch preimpostati nella memoria persistente, assicurando che rimangano disponibili anche dopo un riavvio indotto da un errore. Questo approccio elimina i tempi di configurazione del dataloader e consente di riprendere immediatamente l'addestramento utilizzando batch memorizzati nella cache, mentre il dataloader reinizializza e recupera contemporaneamente i dati successivi in background. La cache dei dati si trova su ogni livello che richiede dati di addestramento e mantiene due tipi di batch: i batch consumati di recente e utilizzati per l'addestramento e i batch precaricati pronti per l'uso immediato.

![\[Questa immagine illustra il Dataloader MMAP, le cache e i batch utilizzati.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-checkpointless-mmap-dataloader.png)


Il dataloader MMAP offre due funzionalità seguenti:
+ **Prefetching dei dati**: recupera e memorizza in modo proattivo i dati generati dal dataloader
+ **Memorizzazione nella cache persistente**: archivia i batch consumati e quelli precaricati in un file system temporaneo che sopravvive al riavvio del processo

Utilizzando la cache, il processo di formazione trarrà vantaggio da:
+ **Impronta di memoria ridotta**: sfrutta la mappatura della memoria I/O per mantenere una singola copia condivisa dei dati nella memoria della CPU host, eliminando le copie ridondanti tra i processi GPU (ad esempio, riduce da 8 copie a 1 su un'istanza p5 con 8) GPUs
+ **Ripristino più rapido**: riduce il tempo medio di riavvio (MTTR) grazie alla possibilità di riprendere immediatamente la formazione dai batch memorizzati nella cache, eliminando così l'attesa per la reinizializzazione del dataloader e la prima generazione del batch

## Configurazioni MMAP
<a name="sagemaker-eks-checkpointless-features-communication-mmap-config"></a>

Per utilizzare MMAP, è sufficiente inserire il modulo dati originale in `MMAPDataModule`

```
data_module=MMAPDataModule(
    data_module=MY_DATA_MODULE(...),
    mmap_config=CacheResumeMMAPConfig(
        cache_dir=self.cfg.mmap.cache_dir,
        checkpoint_frequency=self.cfg.mmap.checkpoint_frequency),
)
```

`CacheResumeMMAPConfig`: I parametri di MMAP Dataloader controllano la posizione della directory della cache, i limiti di dimensione e la delega per il recupero dei dati. Per impostazione predefinita, solo il livello TP 0 per nodo recupera i dati dall'origine, mentre gli altri ranghi dello stesso gruppo di replica li leggono dalla cache condivisa, eliminando i trasferimenti ridondanti.

`MMAPDataModule`: racchiude il modulo di dati originale e restituisce il dataloader mmap sia per l'addestramento che per la convalida.

[Vedi l'esempio per abilitare MMAP.](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/gpt_oss/gpt_oss_120b_full_finetune_checkpointless.py#L101-L109)

## Guida di riferimento alle API
<a name="sagemaker-eks-checkpointless-mmap-reference"></a>

### CacheResumeMMAPConfig
<a name="sagemaker-eks-checkpointless-mmap-reference-cacheresume"></a>

```
class hyperpod_checkpointless_training.dataloader.config.CacheResumeMMAPConfig(
  cache_dir='/dev/shm/pdl_cache',
  prefetch_length=10,
  val_prefetch_length=10,
  lookback_length=2,
  checkpoint_frequency=None,
  model_parallel_group=None,
  enable_batch_encryption=False)
```

Classe di configurazione per la funzionalità del dataloader cache-resume memory-mapped (MMAP) durante la formazione senza checkpoint. HyperPod 

Questa configurazione consente un caricamento efficiente dei dati con funzionalità di caching e prefetching, permettendo di riprendere rapidamente l'addestramento dopo i guasti mantenendo i batch di dati memorizzati nella cache in file mappati in memoria.

**Parametri**
+ **cache\$1dir** (str, opzionale) — Percorso della directory per l'archiviazione dei batch di dati memorizzati nella cache. Predefinito: «/\$1cache» dev/shm/pdl
+ **prefetch\$1length** (int, opzionale) — Numero di batch da prerecuperare durante l'allenamento. Impostazione predefinita: 10
+ **val\$1prefetch\$1length** (int, opzionale) — Numero di batch da prerecuperare in anticipo durante la convalida. Impostazione predefinita: 10
+ **lookback\$1length** (int, opzionale) — Numero di batch utilizzati in precedenza da conservare nella cache per un potenziale riutilizzo. Impostazione predefinita: 2
+ **checkpoint\$1frequency (int, opzionale) — Frequenza delle** fasi di checkpoint del modello. Utilizzato per l'ottimizzazione delle prestazioni della cache. Impostazione predefinita: nessuna
+ **model\$1parallel\$1group (oggetto, opzionale) — Gruppo** di processi per il parallelismo dei modelli. Se Nessuno, verrà creato automaticamente. Impostazione predefinita: nessuna
+ **enable\$1batch\$1encryption** (bool, opzionale) — Indica se abilitare la crittografia per i dati batch memorizzati nella cache. Impostazione predefinita: False

**Metodi**

```
create(dataloader_init_callable,
    parallel_state_util,
   step,
    is_data_loading_rank,
   create_model_parallel_group_callable,
    name='Train',
   is_val=False,
   cached_len=0)
```

Crea e restituisce un'istanza di dataloader MMAP configurata.

**Parametri**
+ **dataloader\$1init\$1callable (Callable**) — Funzione per inizializzare il dataloader sottostante
+ **parallel\$1state\$1util (object) — Utilità** per la gestione dello stato parallelo tra i processi
+ **step** (int) — La fase relativa ai dati da cui riprendere durante l'allenamento
+ **is\$1data\$1loading\$1rank (Callable) — Funzione che restituisce True se il rank** corrente deve caricare i dati
+ **create\$1model\$1parallel\$1group\$1callable (Callable**) — Funzione per creare un gruppo di processi parallelo modello
+ name (str, opzionale) — **Identificatore del nome** per il dataloader. Predefinito: «Train»
+ **is\$1val** (bool, opzionale) — Se si tratta di un dataloader di convalida. Impostazione predefinita: False
+ **cached\$1len** (int, opzionale) — Lunghezza dei dati memorizzati nella cache se si riprende dalla cache esistente. Impostazione predefinita: 0

Restituisce `CacheResumePrefetchedDataLoader` o: istanza del dataloader MMAP configurata `CacheResumeReadDataLoader`

Aumenta `ValueError` se il parametro step è. `None`

**Esempio**

```
from hyperpod_checkpointless_training.dataloader.config import CacheResumeMMAPConfig

# Create configuration
config = CacheResumeMMAPConfig(
    cache_dir="/tmp/training_cache",
    prefetch_length=20,
    checkpoint_frequency=100,
    enable_batch_encryption=False
)

# Create dataloader
dataloader = config.create(
    dataloader_init_callable=my_dataloader_init,
    parallel_state_util=parallel_util,
    step=current_step,
    is_data_loading_rank=lambda: rank == 0,
    create_model_parallel_group_callable=create_mp_group,
    name="TrainingData"
)
```

**Note**
+ La directory della cache dovrebbe avere spazio sufficiente e I/O prestazioni veloci (ad esempio, /dev/shm per l'archiviazione in memoria).
+ L'impostazione `checkpoint_frequency` migliora le prestazioni della cache allineando la gestione della cache con il checkpointing del modello
+ Per i dataloaders di convalida (`is_val=True`), il passaggio viene reimpostato su 0 e l'avvio a freddo viene forzato
+ Vengono utilizzate diverse implementazioni del dataloader a seconda che il rango corrente sia responsabile del caricamento dei dati

### MMAPDataModulo
<a name="sagemaker-eks-checkpointless-mmap-reference-mmapdatamodule"></a>

```
class hyperpod_checkpointless_training.dataloader.mmap_data_module.MMAPDataModule(  
    data_module,  
    mmap_config,  
    parallel_state_util=MegatronParallelStateUtil(),  
    is_data_loading_rank=None)
```

Un DataModule wrapper PyTorch Lightning che applica funzionalità di caricamento dei dati mappate in memoria (MMAP) a quelle esistenti per un addestramento senza checkpoint. DataModules 

Questa classe integra un PyTorch Lightning esistente e lo migliora con la funzionalità MMAP, che consente una memorizzazione efficiente dei dati nella cache DataModule e un ripristino rapido in caso di errori di formazione. Mantiene la compatibilità con l'interfaccia originale DataModule aggiungendo funzionalità di formazione senza checkpoint.

Parameters

data\$1module (pl. LightningDataModule)  
Il sottostante DataModule da avvolgere (ad esempio, LLMData Module)

mmap\$1config () MMAPConfig  
L'oggetto di configurazione MMAP che definisce il comportamento e i parametri della memorizzazione nella cache

`parallel_state_util`(MegatronParallelStateUtil, opzionale)  
Utilità per la gestione dello stato parallelo tra processi distribuiti. Impostazione predefinita: MegatronParallelStateUtil ()

`is_data_loading_rank`(Richiamabile, opzionale)  
Funzione che restituisce True se il rango corrente deve caricare dati. Se Nessuno, il valore predefinito è parallel\$1state\$1util.is\$1tp\$10. Impostazione predefinita: nessuna

**Attributes**

`global_step` (int)  
Fase di formazione globale attuale, utilizzata per riprendere dai checkpoint

`cached_train_dl_len` (int)  
Lunghezza memorizzata nella cache del dataloader di addestramento

`cached_val_dl_len` (int)  
Lunghezza memorizzata nella cache del dataloader di convalida

**Metodi**

```
setup(stage=None)
```

Imposta il modulo di dati sottostante per la fase di formazione specificata.

`stage`(str, opzionale)  
Fase dell'allenamento («adattamento», «convalida», «test» o «previsione»). Impostazione predefinita: nessuna

```
train_dataloader()
```

Crea l'allenamento DataLoader con MMAP wrapping.

*Restituisce: DataLoader — Addestramento* basato su MMAP con funzionalità di caching e prefetching DataLoader 

```
val_dataloader()
```

Crea la convalida con MMAP wrapping. DataLoader 

*Restituisce:* DataLoader — Validazione avvolta in MMAP con funzionalità di memorizzazione nella cache DataLoader 

```
test_dataloader()
```

Crea il test DataLoader se il modulo di dati sottostante lo supporta.

*Restituisce:* DataLoader o Nessuno: esegue il test DataLoader dal modulo di dati sottostante o Nessuno se non è supportato

```
predict_dataloader()
```

Crea la previsione DataLoader se il modulo di dati sottostante la supporta.

*Restituisce:* DataLoader o Nessuno: prevedi DataLoader dal modulo di dati sottostante o Nessuno se non è supportato

```
load_checkpoint(checkpoint)
```

Carica le informazioni sul checkpoint per riprendere l'allenamento da una fase specifica.

checkpoint (dict)  
dizionario Checkpoint contenente la chiave 'global\$1step'

```
get_underlying_data_module()
```

Ottieni il modulo di dati racchiuso sottostante.

*Restituisce:* pl. LightningDataModule — Il modulo dati originale che è stato confezionato

```
state_dict()
```

Ottieni il dizionario di stato del MMAP DataModule per il checkpoint.

*Restituisce:* dict — Dizionario contenente le lunghezze del dataloader memorizzate nella cache

```
load_state_dict(state_dict)
```

Carica il dizionario di stato per ripristinare lo stato MMAP. DataModule 

`state_dict`(dict)  
Dizionario di stato da caricare

**Proprietà**

```
data_sampler
```

Esporre il campionatore di dati del modulo di dati sottostante al framework. NeMo 

*Restituisce:* object or None: il campionatore di dati del modulo di dati sottostante

**Esempio**

```
from hyperpod_checkpointless_training.dataloader.mmap_data_module import MMAPDataModule  
from hyperpod_checkpointless_training.dataloader.config import CacheResumeMMAPConfig  
from my_project import MyLLMDataModule  

# Create MMAP configuration  
mmap_config = CacheResumeMMAPConfig(  
    cache_dir="/tmp/training_cache",  
    prefetch_length=20,  
    checkpoint_frequency=100  
)  

# Create original data module  
original_data_module = MyLLMDataModule(  
    data_path="/path/to/data",  
    batch_size=32  
)  

# Wrap with MMAP capabilities  
mmap_data_module = MMAPDataModule(  
    data_module=original_data_module,  
    mmap_config=mmap_config  
)  

# Use in PyTorch Lightning Trainer  
trainer = pl.Trainer()  
trainer.fit(model, data=mmap_data_module)  

# Resume from checkpoint  
checkpoint = {"global_step": 1000}  
mmap_data_module.load_checkpoint(checkpoint)
```

**Note**
+ Il wrapper delega la maggior parte dell'accesso degli attributi al modulo di dati sottostante utilizzando \$1\$1getattr\$1\$1
+ Solo i ranghi di caricamento dei dati inizializzano e utilizzano effettivamente il modulo di dati sottostante; gli altri ranghi utilizzano dataloader falsi
+ Le lunghezze dei dataloader memorizzati nella cache vengono mantenute per ottimizzare le prestazioni durante la ripresa dell'allenamento

# Recupero durante il processo e formazione senza checkpoint
<a name="sagemaker-eks-checkpointless-in-process-recovery"></a>

HyperPod la formazione senza checkpointless utilizza la ridondanza dei modelli per consentire un addestramento tollerante ai guasti. Il principio fondamentale è che gli stati del modello e dell'ottimizzatore vengono completamente replicati su più gruppi di nodi, con aggiornamenti di peso e modifiche dello stato dell'ottimizzatore replicati in modo sincrono all'interno di ciascun gruppo. Quando si verifica un errore, le repliche integre completano le fasi di ottimizzazione e trasmettono gli stati aggiornati alle repliche in fase di ripristino. model/optimizer 

Questo approccio basato sulla ridondanza del modello consente diversi meccanismi di gestione dei guasti:
+ **Ripristino durante il processo:** i processi rimangono attivi nonostante i guasti, mantenendo tutti gli stati del modello e dell'ottimizzatore nella memoria della GPU con i valori più recenti
+ **Gestione agevole delle interruzioni: aborti** controllati e pulizia delle risorse per le operazioni interessate
+ Riesecuzione **del blocco di codice: riesecuzione** solo dei segmenti di codice interessati all'interno di un blocco di codice rieseguibile (RCB)
+ **Recupero senza punti di controllo senza perdita dei progressi di allenamento:** poiché i processi persistono e gli stati rimangono in memoria, nessun progresso dell'allenamento viene perso; quando si verifica un errore, l'allenamento riprende dalla fase precedente, anziché riprendere dall'ultimo checkpoint salvato

**Configurazioni senza checkpoint**

Ecco il frammento principale della formazione senza checkpointless.

```
from hyperpod_checkpointless_training.inprocess.train_utils import wait_rank
    wait_rank()
      
def main():
    @HPWrapper(
        health_check=CudaHealthCheck(),
        hp_api_factory=HPAgentK8sAPIFactory(),
        abort_timeout=60.0,
        checkpoint_manager=PEFTCheckpointManager(enable_offload=True),
        abort=CheckpointlessAbortManager.get_default_checkpointless_abort(),
        finalize=CheckpointlessFinalizeCleanup(),
    )
    def run_main(cfg, caller: Optional[HPCallWrapper] = None):
        ...
        trainer = Trainer(
            strategy=CheckpointlessMegatronStrategy(...,
                num_distributed_optimizer_instances=2),
            callbacks=[..., CheckpointlessCallback(...)],
            )
        trainer.fresume = resume
        trainer._checkpoint_connector = CheckpointlessCompatibleConnector(trainer)
        trainer.wrapper = caller
```
+ `wait_rank`: Tutti i ranghi aspetteranno le informazioni sulla classifica dall'infrastruttura. HyperpodTrainingOperator 
+ `HPWrapper`: wrapper di funzioni Python che abilita le funzionalità di riavvio per un blocco di codice rieseguibile (RCB). L'implementazione utilizza un gestore di contesto anziché un decoratore Python perché i decoratori non possono determinare il numero di elementi da RCBs monitorare in fase di esecuzione.
+ `CudaHealthCheck`: Assicura che il contesto CUDA per il processo corrente sia integro mediante la sincronizzazione con la GPU. Utilizza il dispositivo specificato dalla variabile di ambiente LOCAL\$1RANK o utilizza come impostazione predefinita il dispositivo CUDA del thread principale se LOCAL\$1RANK non è impostato.
+ `HPAgentK8sAPIFactory`: Questa API consente la formazione senza checkpoint per interrogare lo stato di addestramento di altri pod nel cluster di formazione Kubernetes. Fornisce inoltre una barriera a livello di infrastruttura che garantisce che tutti i ranghi completino con successo le operazioni di interruzione e riavvio prima di procedere.
+ `CheckpointManager`: Gestisce i checkpoint in memoria e il ripristino per una tolleranza agli errori senza checkpoint. peer-to-peer Ha le seguenti responsabilità principali:
  + **Gestione dei checkpoint in memoria**: salva e gestisce i checkpoint NeMo del modello in memoria per un ripristino rapido senza disco I/O durante gli scenari di ripristino senza checkpoint.
  + Convalida **della fattibilità del ripristino: determina se è possibile il ripristino senza checkpoint convalidando** la coerenza globale dei passaggi, lo stato del rango e l'integrità dello stato del modello.
  + **Peer-to-Peer Orchestrazione del ripristino: coordina il trasferimento dei** checkpoint tra i ranghi sani e quelli danneggiati utilizzando la comunicazione distribuita per un ripristino rapido.
  + **Gestione dello stato RNG**: conserva e ripristina gli stati dei generatori di numeri casuali su Python e Megatron per il NumPy ripristino PyTorch deterministico.
  + **[Opzionale] Checkpoint Offload: trasferisci il checkpoint** di memoria sulla CPU se la GPU non ha una capacità di memoria sufficiente.
+ `PEFTCheckpointManager`: Si estende mantenendo i pesi del modello base `CheckpointManager` per la regolazione fine del PEFT.
+ `CheckpointlessAbortManager`: Gestisce le operazioni di interruzione in un thread in background quando si verifica un errore. Per impostazione predefinita, interrompe TransformerEngine, Checkpointing e. TorchDistributed DataLoader Gli utenti possono registrare gestori di aborti personalizzati in base alle esigenze. Una volta completata l'interruzione, tutte le comunicazioni devono cessare e tutti i processi e i thread devono terminare per evitare perdite di risorse.
+ `CheckpointlessFinalizeCleanup`: gestisce le operazioni di pulizia finale nel thread principale per i componenti che non possono essere interrotti o ripuliti in modo sicuro nel thread in background.
+ `CheckpointlessMegatronStrategy`: Eredita dalla forma di Nemo`MegatronStrategy`. Nota che l'addestramento senza checkpoint richiede almeno 2 partecipanti `num_distributed_optimizer_instances` per consentire la replica dell'ottimizzatore. La strategia si occupa anche della registrazione degli attributi essenziali e dell'inizializzazione dei gruppi di processi, ad esempio rootless.
+ `CheckpointlessCallback`: Lightning callback che integra l' NeMo allenamento con il sistema di tolleranza ai guasti di checkpointless training. Ha le seguenti responsabilità principali:
  + **Gestione del ciclo di vita delle fasi di allenamento**: tiene traccia dei progressi dell'allenamento e si coordina ParameterUpdateLock per enable/disable un recupero senza problemi in base allo stato dell'allenamento (prima fase e fasi successive).
  + **Checkpoint State Coordination**: gestisce il salvataggio/ripristino dei checkpoint del modello base PEFT in memoria.
+ `CheckpointlessCompatibleConnector`: Un PTL `CheckpointConnector` che tenta di precaricare il file di checkpoint in memoria, con il percorso di origine determinato in base a questa priorità:
  + prova checkpointless recovery
  + se checkpointless restituisce None, torna a parent.resume\$1start ()

Guarda l'esempio per aggiungere funzionalità di formazione senza [checkpointless ai codici.](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/gpt_oss/gpt_oss_120b_full_finetune.py)

**Concetti**

Questa sezione introduce concetti di formazione senza checkpoint. La formazione Checkpointless su Amazon SageMaker HyperPod supporta il ripristino in corso. Questa interfaccia API segue un formato simile a quello di. NVRx APIs

**Concetto: Re-Executable Code Block (RCB)**

Quando si verifica un errore, i processi sani rimangono attivi, ma una parte del codice deve essere rieseguita per ripristinare gli stati di addestramento e gli stack python. Un Re-Executable Code Block (RCB) è un segmento di codice specifico che viene eseguito nuovamente durante il ripristino in caso di errore. Nell'esempio seguente, l'RCB comprende l'intero script di addestramento (ovvero, tutto ciò che è contenuto in main ()), il che significa che ogni ripristino in caso di errore riavvia lo script di addestramento preservando il modello in memoria e gli stati dell'ottimizzatore.

**Concetto: controllo dei guasti**

Un modulo di controllo dei guasti riceve notifiche quando si verificano guasti durante un addestramento senza checkpoint. Questo controller di guasto include i seguenti componenti:
+ **Modulo di rilevamento dei guasti:** riceve notifiche di guasti dell'infrastruttura
+ **Definizione RCB APIs:** consente agli utenti di definire il blocco di codice rieseguibile (RCB) nel proprio codice
+ **Modulo di riavvio:** termina l'RCB, ripulisce le risorse e riavvia l'RCB

![\[Questa immagine illustra come un modulo di controllo dei guasti riceve notifiche quando si verifica un errore durante un addestramento senza checkpoint.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-checkpointless-fault-controller-module.png)


**Concetto: ridondanza del modello**

L'addestramento su modelli di grandi dimensioni richiede in genere una dimensione parallela dei dati sufficientemente grande per addestrare i modelli in modo efficiente. Nel tradizionale parallelismo dei dati come PyTorch DDP e Horovod, il modello è completamente replicato. Le tecniche più avanzate di parallelismo dei dati condivisi come DeepSpeed Zero Optimizer e FSDP supportano anche la modalità di sharding ibrida, che consente di suddividere gli stati all'interno del gruppo di sharding e di replicarli completamente tra i gruppi di replica. model/optimizer NeMo ha anche questa funzione di sharding ibrido tramite un argomento num\$1distributed\$1optimizer\$1instances, che consente la ridondanza.

Tuttavia, l'aggiunta della ridondanza indica che il modello non sarà completamente suddiviso in tutto il cluster, con conseguente maggiore utilizzo della memoria del dispositivo. La quantità di memoria ridondante varierà a seconda delle specifiche tecniche di sharding del modello implementate dall'utente. I pesi, i gradienti e la memoria di attivazione del modello a bassa precisione non ne risentiranno, poiché vengono suddivisi tramite il parallelismo del modello. Il modello master ad alta precisione e gli stati dell'ottimizzatore ne risentiranno. weights/gradients L'aggiunta di una replica ridondante del modello aumenta l'utilizzo della memoria del dispositivo all'incirca dell'equivalente delle dimensioni di un checkpoint DCP.

Lo sharding ibrido suddivide i collettivi di tutti i gruppi DP in collettivi relativamente più piccoli. In precedenza c'era una riduzione della dispersione e un raggruppamento universale tra l'intero gruppo DP. Dopo lo sharding ibrido, il reduce-scatter viene eseguito solo all'interno di ogni replica del modello e verrà applicata una riduzione totale tra i gruppi di repliche dei modelli. L'all-collect funziona anche all'interno di ogni replica del modello. Di conseguenza, l'intero volume di comunicazioni rimane pressoché invariato, ma i collettivi utilizzano gruppi più piccoli, quindi ci aspettiamo una latenza migliore.

**Concetto: tipi di errore e riavvio**

La tabella seguente riporta i diversi tipi di errore e i meccanismi di ripristino associati. Checkpointless training tenta innanzitutto il ripristino in caso di errore tramite un ripristino in corso, seguito da un riavvio a livello di processo. Si ritorna al riavvio a livello di processo solo in caso di guasto catastrofico (ad esempio, guasto di più nodi contemporaneamente).


| Tipo di errore | Causa | Tipo di ripristino | Meccanismo di ripristino | 
| --- | --- | --- | --- | 
| Guasto durante il processo | Errori a livello di codice, eccezioni | Ripristino in corso (IPR) | Riesegui RCB all'interno del processo esistente; i processi sani rimangono attivi | 
| Errore di riavvio del processo | Contesto CUDA danneggiato, processo interrotto | Riavvio a livello di processo (PLR) | SageMaker HyperPod l'operatore addetto alla formazione riavvia i processi; salta il riavvio del pod K8s | 
| Errore di sostituzione del nodo | Guasto node/GPU hardware permanente | Job Level Restart (JLR) | Sostituisci il nodo fallito; riavvia l'intero processo di formazione | 

**Concetto: protezione Atomic Lock per Optimizer Step**

L'esecuzione del modello è suddivisa in tre fasi: propagazione in avanti, propagazione all'indietro e fase di ottimizzazione. Il comportamento di ripristino varia in base alla tempistica dell'errore:
+ **Propagazione avanti/indietro:** torna all'inizio della fase di addestramento corrente e trasmetti gli stati del modello ai nodi sostitutivi
+ **Fase di ottimizzazione:** consenti alle repliche sane di completare la fase di blocco della protezione, quindi trasmetti gli stati aggiornati del modello ai nodi sostitutivi

Questa strategia garantisce che gli aggiornamenti completati dell'ottimizzatore non vengano mai scartati, contribuendo a ridurre i tempi di ripristino dei guasti.

![\[Questa immagine illustra come viene gestito l'errore a seconda che si verifichi prima o dopo l'errore.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-checkpointless-optimizer.png)


## Diagramma del flusso di allenamento Checkpointless
<a name="sagemaker-eks-checkpointless-training-flow"></a>

![\[Questo diagramma illustra il flusso di allenamento senza checkpoint.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-checkpointless-training-flow.png)


I passaggi seguenti descrivono il processo di rilevamento degli errori e di ripristino senza checkpoint:

1. Inizia il ciclo di formazione

1. Si verifica un errore

1. Valuta la fattibilità di un curriculum senza controlli

1. Verifica se è possibile eseguire un curriculum senza checkpoint
   + Se possibile, prova a riprendere senza checkpointless
     + Se la ripresa fallisce, torna al caricamento del checkpoint dallo storage
     + Se la ripresa ha esito positivo, l'allenamento continua dallo stato di ripristino
   + Se non è possibile, ricorri al checkpoint di caricamento dal magazzino

1. Pulisci le risorse: interrompi tutti i gruppi di processi e i backend e libera le risorse in preparazione al riavvio.

1. Riprendi il ciclo di allenamento: inizia un nuovo ciclo di allenamento e il processo torna alla fase 1.

## Guida di riferimento alle API
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference"></a>

### wait\$1rank
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-wait_rank"></a>

```
hyperpod_checkpointless_training.inprocess.train_utils.wait_rank()
```

Attende e recupera le informazioni sulla classificazione da HyperPod, quindi aggiorna l'ambiente di processo corrente con variabili di addestramento distribuite.

Questa funzione ottiene l'assegnazione del grado e le variabili di ambiente corrette per l'addestramento distribuito. Garantisce che ogni processo ottenga la configurazione appropriata per il suo ruolo nel processo di formazione distribuito.

**Parametri**

Nessuno

**Valori restituiti**

**Nessuno**

**Comportamento**
+ **Controllo del processo**: salta l'esecuzione se viene chiamato da un sottoprocesso (viene eseguito solo in) MainProcess
+ **Recupero dell'ambiente: recupera le variabili** correnti `RANK` e da quelle di ambiente `WORLD_SIZE`
+ **HyperPod Comunicazione**: chiamate `hyperpod_wait_rank_info()` da cui recuperare informazioni sulla classifica HyperPod
+ **Aggiornamento dell'ambiente**: aggiorna l'ambiente di processo corrente con le variabili di ambiente specifiche del lavoratore ricevute da HyperPod

**Variabili di ambiente**

La funzione legge le seguenti variabili di ambiente:
+ **RANK** (*int*) — Classificazione attuale del processo (impostazione predefinita: -1 se non è impostata)
+ **WORLD\$1SIZE** (*int*) — Numero totale di processi nel processo distribuito (predefinito: 0 se non è impostato)

**Aumenta**
+ **AssertionError**— Se la risposta di non HyperPod è nel formato previsto o se mancano i campi obbligatori

**Esempio**

```
from hyperpod_checkpointless_training.inprocess.train_utils import wait_rank  

# Call before initializing distributed training  
wait_rank()  

# Now environment variables are properly set for this rank  
import torch.distributed as dist  
dist.init_process_group(backend='nccl')
```

**Note**
+ Viene eseguito solo nel processo principale; le chiamate ai sottoprocessi vengono saltate automaticamente
+ La funzione si blocca finché non HyperPod fornisce le informazioni sulla classificazione

### HPWrapper
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-HPWrapper"></a>

```
class hyperpod_checkpointless_training.inprocess.wrap.HPWrapper(  
    *,  
    abort=Compose(HPAbortTorchDistributed()),  
    finalize=None,  
    health_check=None,  
    hp_api_factory=None,  
    abort_timeout=None,  
    enabled=True,  
    trace_file_path=None,  
    async_raise_before_abort=True,  
    early_abort_communicator=False,  
    checkpoint_manager=None,  
    check_memory_status=True)
```

*Wrapper di funzioni Python che abilita le funzionalità di riavvio per un Re-Executable Code Block (RCB) durante un addestramento senza checkpoint. HyperPod *

*Questo wrapper offre funzionalità di tolleranza agli errori e ripristino automatico monitorando l'esecuzione della formazione e coordinando i riavvii tra i processi distribuiti in caso di errori. Utilizza un approccio di gestione del contesto anziché un decoratore per mantenere le risorse globali durante tutto il ciclo di vita della formazione.*

**Parametri**
+ **abort** (Abort, *opzionale*): *interrompe* l'esecuzione in modo asincrono quando vengono rilevati errori. Impostazione predefinita: `Compose(HPAbortTorchDistributed())`
+ **finalize (Finalize**, *opzionale*) — Gestore di *finalizzazione* Rank-Local eseguito durante il riavvio. Impostazione predefinita: `None`
+ **health\$1check (*HealthCheck*, *opzionale*) — Controllo dello** stato di salute di Rank-local eseguito durante il riavvio. Impostazione predefinita: `None`
+ **hp\$1api\$1factory** (*Callable*, *opzionale*) — Funzione di fabbrica per la creazione di un'API con cui interagire. HyperPod HyperPod Impostazione predefinita: `None`
+ **abort\$1timeout (*float*, *opzionale*) — Timeout** per interrompere la chiamata nel thread di controllo degli errori. Impostazione predefinita: `None`
+ **enabled** (*bool*, *opzionale*) — Abilita la funzionalità wrapper. Quando`False`, il wrapper diventa un pass-through. Impostazione predefinita: `True`
+ **trace\$1file\$1path** (*str*, *opzionale*) — Percorso del file di traccia per la profilazione. VizTracer Impostazione predefinita: `None`
+ **async\$1raise\$1before\$1abort (bool, opzionale) — Abilita il raise before abort** **nel thread di controllo degli errori.** Impostazione predefinita: `True`
+ **early\$1abort\$1communicator** **(bool, opzionale) — Interrompe il comunicatore (nccl/Gloo) prima di interrompere il dataloader.** Impostazione predefinita: `False`
+ **checkpoint\$1manager** (*Any*, *opzionale*) — Gestore per la gestione dei checkpoint durante il ripristino. Impostazione predefinita: `None`
+ **check\$1memory\$1status** *(*bool*, opzionale) — Abilita il controllo e la registrazione dello stato della memoria.* Impostazione predefinita: `True`

**Metodi**

```
def __call__(self, fn)
```

*Racchiude una funzione per abilitare le funzionalità di riavvio.*

**Parametri:**
+ **fn** (*Callable*) — La funzione da completare con le funzionalità di riavvio

**Restituisce:**
+ **Richiamabile**: funzione racchiusa con funzionalità di riavvio o funzione originale se disabilitata

**Esempio**

```
from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager  
from hyperpod_checkpointless_training.nemo_plugins.patches import patch_megatron_optimizer  
from hyperpod_checkpointless_training.nemo_plugins.checkpoint_connector import CheckpointlessCompatibleConnector  
from hyperpod_checkpointless_training.inprocess.train_utils import HPAgentK8sAPIFactory  
from hyperpod_checkpointless_training.inprocess.abort import CheckpointlessFinalizeCleanup, CheckpointlessAbortManager   
      
@HPWrapper(  
    health_check=CudaHealthCheck(),  
    hp_api_factory=HPAgentK8sAPIFactory(),  
    abort_timeout=60.0,  
    checkpoint_manager=CheckpointManager(enable_offload=False),  
    abort=CheckpointlessAbortManager.get_default_checkpointless_abort(),  
    finalize=CheckpointlessFinalizeCleanup(),  
)def training_function():  
    # Your training code here  
    pass
```

**Note**
+ Il wrapper deve essere disponibile `torch.distributed`
+ Quando`enabled=False`, il wrapper diventa un pass-through e restituisce la funzione originale invariata
+ Il wrapper mantiene risorse globali come il monitoraggio dei thread durante tutto il ciclo di vita della formazione
+ Supporta la profilazione quando viene fornita VizTracer `trace_file_path`
+ Si integra HyperPod per una gestione coordinata dei guasti nell'ambito della formazione distribuita

### HPCallInvolucro
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-HPCallWrapper"></a>

```
class hyperpod_checkpointless_training.inprocess.wrap.HPCallWrapper(wrapper)
```

Monitora e gestisce lo stato di un Restart Code Block (RCB) durante l'esecuzione.

Questa classe gestisce il ciclo di vita dell'esecuzione di RCB, incluso il rilevamento degli errori, il coordinamento con altri ranghi per i riavvii e le operazioni di pulizia. Gestisce la sincronizzazione distribuita e garantisce un ripristino coerente in tutti i processi di formazione.

**Parametri**
+ **wrapper** (*HPWrapper*) — Il wrapper principale contenente le impostazioni globali di ripristino durante il processo

**Attributes**
+ **step\$1upon\$1restart** (*int*) — Contatore che tiene traccia dei passaggi dall'ultimo riavvio, utilizzato per determinare la strategia di riavvio

**Metodi**

```
def initialize_barrier()
```

Attendi la sincronizzazione della HyperPod barriera dopo aver riscontrato un'eccezione da RCB.

```
def start_hp_fault_handling_thread()
```

Avvia il thread di gestione degli errori per monitorare e coordinare gli errori.

```
def handle_fn_exception(call_ex)
```

Elabora le eccezioni dalla funzione di esecuzione o da RCB.

**Parametri:**
+ **call\$1ex** (*Exception) — Eccezione* dalla funzione di monitoraggio

```
def restart(term_ex)
```

Esegue il gestore di riavvio che include la finalizzazione, la raccolta dei rifiuti e i controlli di integrità.

**Parametri:**
+ **term\$1ex** (*RankShouldRestart*) — Eccezione di terminazione che attiva il riavvio

```
def launch(fn, *a, **kw)
```

*Esegui l'RCB con una corretta gestione delle eccezioni.*

**Parametri:**
+ **fn** (*Callable*) — Funzione da eseguire
+ **a — Argomenti** della funzione
+ **kw** — Argomenti delle parole chiave della funzione

```
def run(fn, a, kw)
```

Ciclo di esecuzione principale che gestisce i riavvii e la sincronizzazione delle barriere.

**Parametri:**
+ **fn** (*Callable*) — Funzione da eseguire
+ **a — Argomenti** della funzione
+ **kw** — Argomenti delle parole chiave della funzione

```
def shutdown()
```

Gestione degli errori di spegnimento e thread di monitoraggio.

**Note**
+ Gestisce automaticamente le `RankShouldRestart` eccezioni per un ripristino coordinato
+ Gestisce il tracciamento e gli aborti della memoria, la raccolta dei rifiuti durante i riavvii
+ Supporta sia il ripristino in corso che le strategie PLR (Process-Level Restart) basate sulla tempistica degli errori

### CudaHealthCheck
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-cudahealthcheck"></a>

```
class hyperpod_checkpointless_training.inprocess.health_check.CudaHealthCheck(timeout=datetime.timedelta(seconds=30))
```

Assicura che il contesto CUDA per il processo corrente sia in buono stato durante il recupero dall'allenamento senza checkpoint.

Questo controllo di integrità si sincronizza con la GPU per verificare che il contesto CUDA non sia danneggiato dopo un errore di allenamento. Esegue operazioni di sincronizzazione della GPU per rilevare eventuali problemi che potrebbero impedire la corretta ripresa dell'allenamento. Il controllo dello stato viene eseguito dopo la distruzione dei gruppi distribuiti e il completamento della finalizzazione.

**Parametri**
+ **timeout** (*datetime.timedelta, *opzionale*) — Durata del timeout* per le operazioni di sincronizzazione della GPU. Impostazione predefinita: `datetime.timedelta(seconds=30)`

**Metodi**

```
__call__(state, train_ex=None)
```

Esegui il controllo dello stato di salute CUDA per verificare l'integrità del contesto della GPU.

**Parametri:**
+ **state (*HPState*) — HyperPod Stato** attuale contenente informazioni sulla classificazione e sulla distribuzione
+ **train\$1ex** (*Eccezione*, *opzionale*) — L'eccezione di allenamento originale che ha attivato il riavvio. Impostazione predefinita: `None`

**Restituisce:**
+ **tuple** — Una tupla che contiene `(state, train_ex)` invariate le modifiche se il controllo sanitario ha esito positivo

**Aumenta:**
+ **TimeoutError**— Se la sincronizzazione della GPU scade, indica un contesto CUDA potenzialmente danneggiato

**Conservazione dello stato**: restituisce lo stato e l'eccezione originali invariati se tutti i controlli vengono superati

**Esempio**

```
import datetime  
from hyperpod_checkpointless_training.inprocess.health_check import CudaHealthCheck  
from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper  
  
# Create CUDA health check with custom timeout  
cuda_health_check = CudaHealthCheck(  
    timeout=datetime.timedelta(seconds=60)  
)  
  
# Use with HPWrapper for fault-tolerant training  
@HPWrapper(  
    health_check=cuda_health_check,  
    enabled=True  
)  
def training_function():  
    # Your training code here  
    pass
```

**Note**
+ Utilizza il threading per implementare la protezione da timeout per la sincronizzazione della GPU
+ Progettato per rilevare contesti CUDA danneggiati che potrebbero impedire la corretta ripresa dell'allenamento
+ Dovrebbe essere utilizzato come parte della pipeline di tolleranza agli errori negli scenari di formazione distribuiti

### HPAgentK8s APIFactory
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-HPAgentK8sAPIFactory"></a>

```
class hyperpod_checkpointless_training.inprocess.train_utils.HPAgentK8sAPIFactory()
```

Classe Factory per la creazione di istanze HPAgent K8SAPi che comunicano con HyperPod l'infrastruttura per il coordinamento distribuito della formazione.

Questa factory fornisce un modo standardizzato per creare e configurare oggetti HPAgent K8SAPi che gestiscono la comunicazione tra i processi di addestramento e il piano di controllo. HyperPod Incapsula la creazione del client socket sottostante e dell'istanza API, garantendo una configurazione coerente tra le diverse parti del sistema di formazione.

**Metodi**

```
__call__()
```

Crea e restituisci un'istanza HPAgent K8SAPi configurata per la comunicazione. HyperPod 

**Restituisce:**
+ **HPAgentK8sapi**: istanza API configurata per la comunicazione con l'infrastruttura HyperPod 

**Esempio**

```
from hyperpod_checkpointless_training.inprocess.train_utils import HPAgentK8sAPIFactory  
from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper  
from hyperpod_checkpointless_training.inprocess.health_check import CudaHealthCheck  
  
# Create the factory  
hp_api_factory = HPAgentK8sAPIFactory()  
  
# Use with HPWrapper for fault-tolerant training  
hp_wrapper = HPWrapper(  
    hp_api_factory=hp_api_factory,  
    health_check=CudaHealthCheck(),  
    abort_timeout=60.0,  
    enabled=True  
)  
  
@hp_wrapper  
def training_function():  
    # Your distributed training code here  
    pass
```

**Note**
+ Progettato per funzionare perfettamente con l'infrastruttura basata su Kubernetes. HyperPod È essenziale per la gestione e il ripristino coordinati dei guasti in scenari di formazione distribuiti

### CheckpointManager
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-CheckpointManager"></a>

```
class hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager.CheckpointManager(  
    enable_checksum=False,  
    enable_offload=False)
```

Gestisce i checkpoint in memoria e peer-to-peer il ripristino per una tolleranza agli errori senza checkpoint nell'addestramento distribuito.

Questa classe fornisce le funzionalità di base per un addestramento HyperPod senza checkpoint gestendo i checkpoint del NeMo modello in memoria, convalidando la fattibilità del recupero e orchestrando il trasferimento dei checkpoint tra i ranghi sani e quelli falliti. peer-to-peer Elimina la necessità del disco I/O durante il ripristino, riducendo in modo significativo il tempo medio di ripristino (MTTR).

**Parametri**
+ **enable\$1checksum** (*bool*, *opzionale*) — Abilita la convalida del checksum dello stato del modello per i controlli di integrità durante il ripristino. Impostazione predefinita: `False`
+ **enable\$1offload (*bool*, *opzionale*) — Abilita l'offload** dei checkpoint dalla GPU alla memoria della CPU per ridurre l'utilizzo della memoria della GPU. Impostazione predefinita: `False`

**Attributes**
+ **global\$1step (int o None) — Fase** *di allenamento corrente associata al checkpoint* *salvato*
+ **rng\$1states (*list* o *None*) — Stati** del generatore di numeri casuali memorizzati per il recupero deterministico
+ **checksum\$1manager** (*MemoryChecksumManager*) — Gestore per la convalida del checksum dello stato del modello
+ **parameter\$1update\$1lock (**) — Blocco per coordinare gli aggiornamenti dei parametri durante il ripristino *ParameterUpdateLock*

**Metodi**

```
save_checkpoint(trainer)
```

Salva il checkpoint del NeMo modello in memoria per un potenziale ripristino senza checkpoint.

**Parametri:**
+ **trainer (*Pytorch\$1Lightning.trainer***) — Istanza del trainer Lightning PyTorch 

**Note:**
+ Chiamato CheckpointlessCallback alla fine del batch o durante la gestione delle eccezioni
+ Crea punti di ripristino senza I/O sovraccarico del disco
+ Memorizza gli stati completi del modello, dell'ottimizzatore e dello scheduler

```
delete_checkpoint()
```

Elimina il checkpoint in memoria ed esegui le operazioni di pulizia.

**Note:**
+ Cancella i dati del checkpoint, gli stati RNG e i tensori memorizzati nella cache
+ Esegue la raccolta dei rifiuti e la pulizia della cache CUDA
+ Chiamato dopo il ripristino riuscito o quando il checkpoint non è più necessario

```
try_checkpointless_load(trainer)
```

Tenta il ripristino senza checkpoint caricando lo stato dai ranghi dei peer ranks.

**Parametri:**
+ **trainer (*PyTorch\$1Lightning.trainer***) — Istanza del trainer Lightning PyTorch 

**Restituisce:**
+ **dict** o **None**: checkpoint ripristinato in caso di successo, Nessuno se è necessario eseguire il fallback su disco

**Note:**
+ Punto di accesso principale per il ripristino senza checkpoint
+ Convalida la fattibilità del ripristino prima di tentare il trasferimento P2P
+ Pulisce sempre i checkpoint in memoria dopo il tentativo di ripristino

```
checkpointless_recovery_feasible(trainer, include_checksum_verification=True)
```

Determina se è possibile un ripristino senza checkpoint per lo scenario di errore corrente.

**Parametri:**
+ **trainer (*Pytorch\$1Lightning.trainer***) — Istanza del trainer Lightning PyTorch 
+ **include\$1checksum\$1verification (bool, opzionale) — **Se includere la** convalida del checksum.** Impostazione predefinita: `True`

**Restituisce:**
+ **bool** — Vero se il ripristino senza checkpoint è fattibile, False altrimenti

**Criteri di convalida:**
+ Coerenza globale dei passaggi tra i ranghi più sani
+ Sono disponibili sufficienti repliche sane per il ripristino
+ Integrità del checksum dello stato del modello (se abilitata)

```
store_rng_states()
```

Memorizza tutti gli stati del generatore di numeri casuali per il ripristino deterministico.

**Note:**
+ Cattura gli stati RNG di Python NumPy PyTorch , CPU/GPU e Megatron
+ Essenziale per mantenere il determinismo dell'allenamento dopo il recupero

```
load_rng_states()
```

Ripristina tutti gli stati RNG per una continuazione deterministica del recupero.

**Note:**
+ Ripristina tutti gli stati RNG precedentemente memorizzati
+ Assicura che l'allenamento continui con sequenze casuali identiche

```
maybe_offload_checkpoint()
```

Sposta il checkpoint dalla GPU alla memoria della CPU se l'offload è abilitato.

**Note:**
+ Riduce l'utilizzo della memoria della GPU per i modelli di grandi dimensioni
+ Viene eseguito solo se `enable_offload=True`
+ Mantiene l'accessibilità ai checkpoint per il ripristino

**Esempio**

```
from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper  
from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager  
# Use with HPWrapper for complete fault tolerance  
@HPWrapper(  
    checkpoint_manager=CheckpointManager(),  
    enabled=True  
)  
def training_function():  
    # Training code with automatic checkpointless recovery  
    pass
```

**Convalida**: verifica l'integrità del checkpoint utilizzando i checksum (se abilitati)

**Note**
+ Utilizza primitive di comunicazione distribuite per un trasferimento P2P efficiente
+ Gestisce automaticamente le conversioni di tipo d del tensore e il posizionamento dei dispositivi
+ **MemoryChecksumManager**— Gestisce la convalida dell'integrità dello stato del modello

### PEFTCheckpointGestore
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-PEFTCheckpointManager"></a>

```
class hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager.PEFTCheckpointManager(  
    *args,  
    **kwargs)
```

Gestisce i checkpoint per PEFT (Parameter-Efficient Fine-Tuning) con gestione separata della base e dell'adattatore per un ripristino ottimizzato senza checkpoint.

Questo gestore di checkpoint specializzato consente di ottimizzare i flussi di lavoro PEFT separando CheckpointManager i pesi del modello base dai parametri dell'adattatore.

**Parametri**

Eredita tutti i parametri da: **CheckpointManager**
+ **enable\$1checksum** (*bool*, *opzionale*) — Abilita la convalida del checksum dello stato del modello. Impostazione predefinita: `False`
+ **enable\$1offload (*bool*, opzionale) — Abilita l'offloading del checkpoint** *nella memoria della CPU.* Impostazione predefinita: `False`

**Attributi aggiuntivi**
+ **params\$1to\$1save** (*set) — Set* di nomi di parametri che devono essere salvati come parametri dell'adattatore
+ **base\$1model\$1weights (*dict* o None) — Pesi** *del modello base memorizzati nella cache, salvati una volta e riutilizzati*
+ ****base\$1model\$1keys\$1to\$1extract (list o None) — Chiavi per estrarre i tensori del modello base durante il trasferimento P2P****

**Metodi**

```
maybe_save_base_model(trainer)
```

Salva i pesi del modello base una volta, filtrando i parametri dell'adattatore.

**Parametri:**
+ **trainer (*PyTorch\$1Lightning.trainer***) — Istanza del trainer Lightning PyTorch 

**Note:**
+ Salva i pesi del modello base solo alla prima chiamata; le chiamate successive non sono operative
+ Filtra i parametri dell'adattatore per memorizzare solo i pesi del modello base congelati
+ I pesi del modello base vengono mantenuti per più sessioni di allenamento

```
save_checkpoint(trainer)
```

Salva il checkpoint del modello di adattatore NeMo PEFT in memoria per un potenziale ripristino senza checkpoint.

**Parametri:**
+ **trainer (*PyTorch\$1Lightning.trainer***) — Istanza di Lightning trainer PyTorch 

**Note:**
+ `maybe_save_base_model()`Chiama automaticamente se il modello base non è ancora stato salvato
+ Filtra il checkpoint per includere solo i parametri dell'adattatore e lo stato di allenamento
+ Riduce in modo significativo le dimensioni dei checkpoint rispetto ai checkpoint del modello completo

```
try_base_model_checkpointless_load(trainer)
```

Il modello base di Attempt PEFT soppesa il ripristino senza checkpoint caricando lo stato dai ranghi dei peer rank.

**Parametri:**
+ *trainer (**PyTorch\$1Lightning.trainer) — Istanza del trainer Lightning*** PyTorch 

**Restituisce:**
+ **dict** o **None** — Il checkpoint del modello base è stato ripristinato in caso di successo, None se è necessario il fallback

**Note:**
+ Utilizzato durante l'inizializzazione del modello per recuperare i pesi del modello base
+ Non elimina i pesi del modello base dopo il ripristino (li conserva per il riutilizzo)
+ Ottimizzato per scenari di ripristino model-weights-only

```
try_checkpointless_load(trainer)
```

L'adattatore PEFT di Attempt soppesa il ripristino senza checkpoint caricando lo stato dai ranghi dei colleghi.

**Parametri:**
+ *trainer (**PyTorch\$1Lightning.trainer) — Istanza di Lightning trainer*** PyTorch 

**Restituisce:**
+ **dict** o **None** — Il checkpoint dell'adattatore è stato ripristinato in caso di successo, Nessuno se è necessario il fallback

**Note:**
+ Recupera solo i parametri dell'adattatore, gli stati dell'ottimizzatore e gli scheduler
+ Carica automaticamente gli stati dell'ottimizzatore e dello scheduler dopo il ripristino riuscito
+ Pulisce i checkpoint dell'adattatore dopo il tentativo di ripristino

```
is_adapter_key(key)
```

Controlla se la chiave state dict appartiene ai parametri dell'adattatore.

**Parametri:**
+ **key** (*str* o *tuple*) — Chiave dict di stato da controllare

**Restituisce:**
+ **bool** — Vero se la chiave è il parametro dell'adattatore, False se è il parametro del modello base

**Logica di rilevamento:**
+ Controlla se la chiave è `params_to_save` impostata
+ Identifica le chiavi contenenti «.adapter». substring
+ Identifica le chiavi che terminano con «.adapters»
+ Per le chiavi tuple, controlla se il parametro richiede gradienti

```
maybe_offload_checkpoint()
```

Scarica i pesi del modello base dalla GPU alla memoria della CPU.

**Note:**
+ Estende il metodo principale per gestire lo scaricamento del peso del modello base
+ I pesi degli adattatori sono in genere piccoli e non richiedono lo scarico
+ Imposta un flag interno per tracciare lo stato di offload

**Note**
+ Progettato specificamente per scenari di fine-tuning efficienti dal punto di vista dei parametri (LoRa, adattatori, ecc.)
+ Gestisce automaticamente la separazione dei parametri del modello base e dell'adattatore

**Esempio**

```
from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper  
from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import PEFTCheckpointManager  
# Use with HPWrapper for complete fault tolerance  
@HPWrapper(  
    checkpoint_manager=PEFTCheckpointManager(),  
    enabled=True  
)  
def training_function():  
    # Training code with automatic checkpointless recovery  
    pass
```

### CheckpointlessAbortManager
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-CheckpointlessAbortManager"></a>

```
class hyperpod_checkpointless_training.inprocess.abort.CheckpointlessAbortManager()
```

Classe Factory per la creazione e la gestione delle composizioni dei componenti di interruzione per una tolleranza ai guasti senza checkpoint.

Questa classe di utilità fornisce metodi statici per creare, personalizzare e gestire le composizioni dei componenti di aborto utilizzate durante la gestione dei guasti durante la formazione senza checkpoint. HyperPod Semplifica la configurazione delle sequenze di interruzione che gestiscono la pulizia dei componenti di formazione distribuiti, dei caricatori di dati e delle risorse specifiche del framework durante il ripristino in caso di errore.

**Parametri**

Nessuno (tutti i metodi sono statici)

**Metodi statici**

```
get_default_checkpointless_abort()
```

Ottieni l'istanza abort compose predefinita contenente tutti i componenti di abort standard.

**Restituisce:**
+ **Componi**: istanza di interruzione composta predefinita con tutti i componenti di interruzione

**Componenti predefiniti:**
+ **AbortTransformerEngine()** — Pulisce le risorse TransformerEngine 
+ **HPCheckpointingAbort ()** — Gestisce la pulizia del sistema di checkpoint
+ **HPAbortTorchDistributed()** — Interrompe le operazioni distribuite PyTorch 
+ **HPDataLoaderAbort()** — Arresta e pulisce i caricatori di dati

```
create_custom_abort(abort_instances)
```

*Crea una composizione di interruzione personalizzata con solo le istanze di interruzione specificate.*

**Parametri:**
+ **abort\$1instances** (*Abort) — Numero variabile di istanze di aborto* da includere nella composizione

**Restituisce:**
+ **Componi** — Nuova istanza di interruzione composta contenente solo i componenti specificati

**Aumenta:**
+ **ValueError**— Se non vengono fornite istanze di interruzione

```
override_abort(abort_compose, abort_type, new_abort)
```

Sostituisci un componente di interruzione specifico in un'istanza Compose con un nuovo componente.

**Parametri:**
+ **abort\$1compose (Compose**) — L'*istanza Compose* originale da modificare
+ **abort\$1type (type**) — Il *tipo di componente di* interruzione da sostituire (ad esempio,) `HPCheckpointingAbort`
+ **new\$1abort** (Abort) — La nuova istanza di *abort* da utilizzare come sostituto

**Restituisce:**
+ **Compose** — Nuova istanza Compose con il componente specificato sostituito

**Aumenta:**
+ **ValueError**— Se abort\$1compose non ha l'attributo 'instances'

**Esempio**

```
from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper  
from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback  
from hyperpod_checkpointless_training.inprocess.abort import CheckpointlessFinalizeCleanup, CheckpointlessAbortManager  
  
# The strategy automatically integrates with HPWrapper  
@HPWrapper(  
    abort=CheckpointlessAbortManager.get_default_checkpointless_abort(),  
    health_check=CudaHealthCheck(),  
    finalize=CheckpointlessFinalizeCleanup(),  
    enabled=True  
)  
def training_function():  
    trainer.fit(...)
```

**Note**
+ Le configurazioni personalizzate consentono un controllo preciso sul comportamento di pulizia
+ Le operazioni di interruzione sono fondamentali per una corretta pulizia delle risorse durante il ripristino dei guasti

### CheckpointlessFinalizeCleanup
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-CheckpointlessFinalizeCleanup"></a>

```
class hyperpod_checkpointless_training.inprocess.abort.CheckpointlessFinalizeCleanup()
```

Esegue una pulizia completa dopo il rilevamento dei guasti per prepararsi al ripristino in corso durante l'addestramento senza checkpoint.

Questo gestore di finalizzazione esegue operazioni di pulizia specifiche del framework, tra cui Megatron/TransformerEngine interruzione, pulizia DDP, ricaricamento dei moduli e pulizia della memoria, eliminando i riferimenti ai componenti di addestramento. Garantisce che l'ambiente di formazione venga ripristinato correttamente per il corretto ripristino durante il processo senza richiedere l'interruzione completa del processo.

**Parametri**

Nessuno

**Attributes**
+ **trainer** *(*Pytorch\$1Lightning.trainer o None) — Riferimento all'istanza del trainer Lightning** PyTorch 

**Metodi**

```
__call__(*a, **kw)
```

**Esegui operazioni di pulizia complete per la preparazione del ripristino durante il processo.**

*Parametri:*
+ **a** — Argomenti posizionali variabili (ereditati dall'interfaccia Finalize)
+ **kw** — Argomenti variabili relativi alle parole chiave (ereditati dall'interfaccia Finalize)

**Operazioni di pulizia:**
+ **Megatron Framework Cleanup**: chiamate per ripulire le risorse specifiche `abort_megatron()` di Megatron
+ **TransformerEngine Cleanup: chiamate per ripulire le risorse** `abort_te()` TransformerEngine 
+ **RoPE Cleanup**: chiamate `cleanup_rope()` per ripulire le risorse di incorporamento della posizione rotante
+ **DDP Cleanup: chiamate per ripulire** le risorse `cleanup_ddp()` DistributedDataParallel 
+ **Module Reloading: chiamate `reload_megatron_and_te()` per ricaricare** i moduli del framework
+ **Pulizia del modulo Lightning: cancella facoltativamente il** modulo Lightning per ridurre la memoria della GPU
+ **Memory Cleanup**: elimina i riferimenti ai componenti di addestramento per liberare memoria

```
register_attributes(trainer)
```

*Registra l'istanza del trainer per utilizzarla durante le operazioni di pulizia.*

**Parametri:**
+ **trainer** (*PyTorch\$1Lightning.trainer) — Istanza di Lightning* trainer da registrare PyTorch 

**Integrazione con CheckpointlessCallback**

```
from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback  
from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper  
  
# The strategy automatically integrates with HPWrapper  
@HPWrapper(  
    ...  
    finalize=CheckpointlessFinalizeCleanup(),   
)  
def training_function():  
    trainer.fit(...)
```

**Note**
+ Le operazioni di pulizia vengono eseguite in un ordine specifico per evitare problemi di dipendenza
+ La pulizia della memoria utilizza l'introspezione della raccolta dei rifiuti per trovare gli oggetti di destinazione
+ Tutte le operazioni di pulizia sono progettate per essere idempotenti e sicure da riprovare

### CheckpointlessMegatronStrategy
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-CheckpointlessMegatronStrategy"></a>

```
class hyperpod_checkpointless_training.nemo_plugins.megatron_strategy.CheckpointlessMegatronStrategy(*args, **kwargs)
```

NeMo Strategia Megatron con funzionalità integrate di ripristino senza checkpoint per una formazione distribuita con tolleranza ai guasti.

Tieni presente che l'addestramento senza checkpoint deve essere almeno 2 in `num_distributed_optimizer_instances` modo da garantire la replica dell'ottimizzatore. La strategia si occupa anche della registrazione degli attributi essenziali e dell'inizializzazione dei gruppi di processi.

**Parametri**

Eredita tutti i parametri da: **MegatronStrategy**
+  NeMo MegatronStrategy Parametri di inizializzazione standard
+ Opzioni di configurazione della formazione distribuita
+ Impostazioni del parallelismo del modello

**Attributes**
+ **base\$1store** *(torch.distributed). TCPStore*o *Nessuno*) — Archivio distribuito per il coordinamento dei gruppi di processi

**Metodi**

```
setup(trainer)
```

Inizializza la strategia e registra i componenti di tolleranza ai guasti con il trainer.

**Parametri:**
+ **trainer (*PyTorch\$1Lightning.trainer***) — Istanza del trainer Lightning PyTorch 

**Operazioni di configurazione:**
+ **Parent Setup**: richiama la MegatronStrategy configurazione principale
+ **Fault Injection Registration**: registra HPFault InjectionCallback gli hook, se presenti
+ **Finalizza la registrazione**: registra il trainer con i gestori di finalize cleanup
+ Interrompi la **registrazione: registra il trainer con i gestori di aborti che lo supportano**

```
setup_distributed()
```

Inizializza il gruppo di processi utilizzando una connessione con prefisso o senza root. TCPStore 

```
load_model_state_dict(checkpoint, strict=True)
```

Carica il modello state dict con compatibilità di ripristino senza checkpointless.

**Parametri:**
+ **checkpoint** (*Mapping [str, Any]*) — Dizionario Checkpoint contenente lo stato del modello
+ **strict** (*bool*, *optional*) — Se applicare rigorosamente la corrispondenza delle chiavi state dict. Impostazione predefinita: `True`

```
get_wrapper()
```

Ottieni l'istanza HPCall Wrapper per il coordinamento della tolleranza agli errori.

**Restituisce:**
+ **HPCallWrapper**: l'istanza wrapper collegata al trainer per la tolleranza agli errori

```
is_peft()
```

Controlla se PEFT (Parameter-Efficient Fine-Tuning) è abilitato nella configurazione di addestramento verificando la presenza di callback PEFT

**Restituisce:**
+ **bool** — Vero se è presente il callback PEFT, False in caso contrario

```
teardown()
```

Sostituisci lo smontaggio nativo di PyTorch Lightning per delegare la pulizia ai gestori di aborti.

**Esempio**

```
from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper  
  
# The strategy automatically integrates with HPWrapper  
@HPWrapper(  
    checkpoint_manager=checkpoint_manager,  
    enabled=True  
)  
def training_function():  
    trainer = pl.Trainer(strategy=CheckpointlessMegatronStrategy())  
    trainer.fit(model, datamodule)
```

### CheckpointlessCallback
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-CheckpointlessCallback"></a>

```
class hyperpod_checkpointless_training.nemo_plugins.callbacks.CheckpointlessCallback(  
    enable_inprocess=False,  
    enable_checkpointless=False,  
    enable_checksum=False,  
    clean_tensor_hook=False,  
    clean_lightning_module=False)
```

Lightning callback che integra la formazione con il sistema di tolleranza ai guasti di checkpointless training. NeMo 

Questo callback gestisce il tracciamento dei passaggi, il salvataggio dei checkpoint e il coordinamento dell'aggiornamento dei parametri per le funzionalità di ripristino durante il processo. Funge da punto di integrazione principale tra i cicli di formazione PyTorch Lightning e i meccanismi di addestramento HyperPod senza checkpoint, coordinando le operazioni di tolleranza agli errori durante l'intero ciclo di vita della formazione.

**Parametri**
+ ****enable\$1inprocess (bool, opzionale) — Abilita le funzionalità di ripristino durante il processo.**** Impostazione predefinita: `False`
+ **enable\$1checkpointless (*bool*, opzionale) — Abilita il ripristino senza checkpointless** *(richiesto).* `enable_inprocess=True` Impostazione predefinita: `False`
+ **enable\$1checksum (bool, opzionale) — Abilita la convalida del checksum** *dello stato del modello (richiesto**).* `enable_checkpointless=True` Impostazione predefinita: `False`
+ **clean\$1tensor\$1hook (*bool*, opzionale) — Elimina gli hook** *tensoriali da tutti i tensori della GPU durante la pulizia (operazione* costosa). Impostazione predefinita: `False`
+ **clean\$1lightning\$1module (bool, opzionale) — Abilita la pulizia del modulo Lightning** **per liberare memoria della GPU dopo ogni riavvio.** Impostazione predefinita: `False`

**Attributes**
+ **tried\$1adapter\$1checkpointless** *(bool) — Contrassegna per verificare se è stato tentato il ripristino senza checkpointless dell'adattatore*

**Metodi**

```
get_wrapper_from_trainer(trainer)
```

Scarica l'istanza Wrapper dal trainer per il coordinamento della tolleranza agli errori. HPCall

**Parametri:**
+ **trainer (*PyTorch\$1Lightning.trainer***) — Istanza del trainer Lightning PyTorch 

**Restituisce:**
+ **HPCallWrapper**: l'istanza wrapper per le operazioni di tolleranza ai guasti

```
on_train_batch_start(trainer, pl_module, batch, batch_idx, *args, **kwargs)
```

Richiamato all'inizio di ogni batch di allenamento per gestire il monitoraggio e il recupero delle fasi.

**Parametri:**
+ **trainer** (*PyTorch\$1Lightning.trainer) — Istanza di Lightning* trainer PyTorch 
+ **pl\$1module** (*pytorch\$1lightning). LightningModule*) — Modulo Lightning in fase di addestramento
+ **batch: dati** correnti relativi al batch di addestramento
+ **batch\$1idx** (*int*) — Indice del batch corrente
+ args — **Argomenti** posizionali aggiuntivi
+ **kwargs** — Argomenti aggiuntivi relativi alle parole chiave

```
on_train_batch_end(trainer, pl_module, outputs, batch, batch_idx)
```

*Rilascia il blocco di aggiornamento dei parametri alla fine di ogni batch di addestramento.*

**Parametri:**
+ **trainer** (*Pytorch\$1Lightning.trainer) — Istanza del trainer Lightning* PyTorch 
+ **pl\$1module** (*pytorch\$1lightning). LightningModule*) — Modulo Lightning in fase di addestramento
+ **outputs** (*STEP\$1OUTPUT) — Uscite* della fase di addestramento
+ **batch (Any**) — *Dati* correnti del batch di addestramento
+ **batch\$1idx** (*int*) — Indice del batch corrente

**Note:**
+ La tempistica di rilascio del blocco garantisce che il ripristino senza checkpoint possa procedere dopo il completamento degli aggiornamenti dei parametri
+ Viene eseguito solo quando entrambi i valori sono impostati su True `enable_inprocess` `enable_checkpointless`

```
get_peft_callback(trainer)
```

*Recupera il callback PEFT dall'elenco dei callback del trainer.*

**Parametri:**
+ *trainer (**Pytorch\$1Lightning.trainer**) — Istanza del trainer Lightning* PyTorch 

**Restituisce:**
+ **PEFT** o **None**: istanza di callback PEFT se trovata, nessuna in caso contrario

```
_try_adapter_checkpointless_restore(trainer, params_to_save)
```

*Tenta il ripristino senza checkpoint dei parametri dell'adattatore PEFT.*

**Parametri:**
+ **trainer (*Pytorch\$1Lightning.trainer***) — Istanza di Lightning trainer PyTorch 
+ ***params\$1to\$1save (set) — Set di nomi di parametri da salvare come parametri dell'adattatore***

**Note:**
+ Viene eseguito solo una volta per sessione di allenamento (controllata da flag) `tried_adapter_checkpointless`
+ Configura il gestore dei punti di controllo con le informazioni sui parametri dell'adattatore

**Esempio**

```
from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback  
from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager  
import pytorch_lightning as pl  
  
# Create checkpoint manager  
checkpoint_manager = CheckpointManager(  
    enable_checksum=True,  
    enable_offload=True  
)  
  
# Create checkpointless callback with full fault tolerance  
checkpointless_callback = CheckpointlessCallback(  
    enable_inprocess=True,  
    enable_checkpointless=True,  
    enable_checksum=True,  
    clean_tensor_hook=True,  
    clean_lightning_module=True  
)  
  
# Use with PyTorch Lightning trainer  
trainer = pl.Trainer(  
    callbacks=[checkpointless_callback],  
    strategy=CheckpointlessMegatronStrategy()  
)  
  
# Training with fault tolerance  
trainer.fit(model, datamodule=data_module)
```

**Gestione della memoria**
+ **clean\$1tensor\$1hook: rimuove i ganci tensoriali** durante la pulizia (costoso ma completo)
+ **clean\$1lightning\$1module**: libera memoria GPU del modulo Lightning durante i riavvii
+ Entrambe le opzioni aiutano a ridurre l'ingombro di memoria durante il ripristino dei guasti
+ Coordinate con ParameterUpdateLock per il tracciamento degli aggiornamenti dei parametri thread-safe

### CheckpointlessCompatibleConnector
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-CheckpointlessCompatibleConnector"></a>

```
class hyperpod_checkpointless_training.nemo_plugins.checkpoint_connector.CheckpointlessCompatibleConnector()
```

PyTorch Connettore Lightning Checkpoint che integra il ripristino senza checkpoint con il tradizionale caricamento dei checkpoint basato su disco.

Questo connettore estende quello di PyTorch Lightning per fornire una perfetta integrazione tra il ripristino senza checkpoint e `_CheckpointConnector` il ripristino dei checkpoint standard. Tenta innanzitutto il ripristino senza checkpoint, quindi torna al caricamento del checkpoint basato su disco se il ripristino senza checkpoint non è fattibile o fallisce.

**Parametri**

**Eredita** tutti i parametri da \$1 CheckpointConnector

**Metodi**

```
resume_start(checkpoint_path=None)
```

Tentativo di precaricare il checkpoint con priorità di ripristino senza checkpointless.

**Parametri:**
+ **checkpoint\$1path** (*str* o *None*, *opzionale*) — Percorso verso il checkpoint del disco per il fallback. Impostazione predefinita: `None`

```
resume_end()
```

Completa il processo di caricamento del checkpoint ed esegui le operazioni successive al caricamento.

**Note**
+ Estende la `_CheckpointConnector` classe interna di PyTorch Lightning con il supporto per il ripristino senza checkpoint
+ Mantiene la piena compatibilità con i flussi di lavoro Lightning checkpoint standard PyTorch 

### CheckpointlessAutoResume
<a name="sagemaker-eks-checkpointless-in-process-recovery-reference-CheckpointlessAutoResume"></a>

```
class hyperpod_checkpointless_training.nemo_plugins.resume.CheckpointlessAutoResume()
```

Estende NeMo la funzionalità AutoResume con configurazione ritardata per consentire la convalida del ripristino senza checkpoint prima della risoluzione del percorso di checkpoint.

Questa classe implementa una strategia di inizializzazione in due fasi che consente la convalida del ripristino senza checkpoint prima di tornare al tradizionale caricamento dei checkpoint basato su disco. Ritarda in modo condizionale la AutoResume configurazione per impedire la risoluzione prematura del percorso dei checkpoint, permettendo di verificare innanzitutto se il ripristino senza checkpoint è fattibile. CheckpointManager peer-to-peer

**Parametri**

Eredita tutti i parametri da **AutoResume**

**Metodi**

```
setup(trainer, model=None, force_setup=False)
```

Ritarda la AutoResume configurazione in modo condizionale per consentire la convalida del ripristino senza checkpoint.

**Parametri:**
+ **trainer (Pytorch\$1Lightning.trainer o** *lightning.Fabric.fabric) — Lightning* *trainer o istanza Fabric* PyTorch 
+ **model** *(opzionale) — Istanza* del modello per la configurazione. Impostazione predefinita: `None`
+ **force\$1setup** (*bool*, *opzionale*) — Se True, ignora il ritardo ed esegui immediatamente la configurazione. AutoResume Impostazione predefinita: `False`

**Esempio**

```
from hyperpod_checkpointless_training.nemo_plugins.resume import CheckpointlessAutoResume  
from hyperpod_checkpointless_training.nemo_plugins.megatron_strategy import CheckpointlessMegatronStrategy  
import pytorch_lightning as pl  
  
# Create trainer with checkpointless auto-resume  
trainer = pl.Trainer(  
    strategy=CheckpointlessMegatronStrategy(),  
    resume=CheckpointlessAutoResume()  
)
```

**Note**
+ La AutoResume classe NeMo di Extends con meccanismo di ritardo per consentire il ripristino senza checkpoint
+ Funziona in combinazione con `CheckpointlessCompatibleConnector` per un flusso di lavoro di ripristino completo

# Considerazioni speciali
<a name="sagemaker-eks-checkpointless-considerations"></a>

Raccogliamo determinate metriche operative aggregate e anonime di routine per fornire la disponibilità essenziale del servizio. La creazione di queste metriche è completamente automatizzata e non prevede la revisione umana del carico di lavoro di formazione del modello sottostante. Queste metriche riguardano le operazioni lavorative, la gestione delle risorse e le funzionalità essenziali dei servizi. 

HyperPod checkpoint gestito su più livelli e formazione elastica: tieni presente che la formazione HyperPod senza checkpoint è attualmente incompatibile con HyperPod il checkpointing gestito a più livelli e l'allenamento elastico.

Per semplificare l'avvio, vengono fornite ricette di formazione senza checkpointless per i modelli GPT OSS 120B e Llama. Queste ricette sono state verificate su istanze ml.p5. L'utilizzo di altri tipi di istanze può richiedere ulteriori modifiche alle ricette sottostanti. Queste ricette possono essere adattate anche a flussi di lavoro di ottimizzazione completi. [Per i modelli personalizzati, ti consigliamo di consultare gli esempi introduttivi.](https://docs.aws.amazon.com/sagemaker-eks-checkpointless-recipes-custom)

# Appendice
<a name="sagemaker-eks-checkpointless-appendix"></a>

**Monitora i risultati dell'allenamento tramite HyperPod ricette**

SageMaker HyperPod le ricette offrono l'integrazione con Tensorboard per analizzare il comportamento di allenamento. Queste ricette includono VizTracer anche uno strumento a basso costo per tracciare e visualizzare l'esecuzione del codice Python. Per ulteriori informazioni, consulta [ VizTracer](https://github.com/gaogaotiantian/viztracer).

I log di tensorboard vengono generati e archiviati all'interno di. `log_dir` Per accedere ai log e analizzarli in locale, procedi come indicato di seguito:

1. Scarica la cartella degli esperimenti TensorBoard dal tuo ambiente di addestramento al computer locale.

1. Apri un prompt del terminale o di comando sul tuo computer locale.

1. Passa alla directory che contiene la cartella degli esperimenti scaricata.

1. Avvia Tensorboard eseguendo il comando:

   ```
   tensorboard --port=<port> --bind_all --logdir experiment.
   ```

1. Apri il tuo browser web e visita. `http://localhost:8008`

Ora puoi vedere lo stato e le visualizzazioni dei tuoi job di addestramento all’interno dell’interfaccia TensorBoard. L’accesso allo stato e alle visualizzazioni consente di monitorare e analizzare il processo di addestramento. Il monitoraggio e l’analisi del processo di addestramento consentono di ottenere informazioni approfondite sul comportamento e sulle prestazioni dei modelli. Per ulteriori informazioni su come monitorare e analizzare l'allenamento con Tensorboard, consulta la Guida per l'utente di [NVIDIA Framework NeMo ](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemotoolkit/core/exp_manager.html#experiment-manager).

**VizTracer**

Per abilitarlo VizTracer, puoi modificare la tua ricetta impostando la variabile di ambiente su. `ENABLE_VIZTRACER` `1` Una volta completata la formazione, il tuo VizTracer profilo si trova nella cartella dell'esperimento`log_dir/viztracer_xxx.json`. Per analizzare il tuo profilo, puoi scaricarlo e aprirlo utilizzando lo **vizviewer** strumento:

```
vizviewer --port <port> viztracer_xxx.json
```

Questo comando avvia vizviewer sulla porta 9001. Puoi visualizzarlo VizTracer andando su http://localhost: <port>nel tuo browser. Dopo l'apertura VizTracer, iniziate ad analizzare il training. Per ulteriori informazioni sull'utilizzo VizTracer, consultate [ VizTracer la documentazione](https://viztracer.readthedocs.io/en/latest/installation.html).

# Note di rilascio
<a name="sagemaker-eks-checkpointless-release-notes"></a>

Consulta le seguenti note di rilascio per tenere traccia degli ultimi aggiornamenti per la formazione SageMaker HyperPod senza checkpoint.

**La formazione senza SageMaker HyperPod checkpointless v1.0.0**

Data: 03 dicembre 2025

**SageMaker HyperPod funzionalità di allenamento senza checkpointless**
+ **Miglioramenti all'inizializzazione della comunicazione collettiva**: offre nuovi metodi di inizializzazione, Rootless e per NCCL e Gloo. TCPStoreless 
+ Dataloader **con mappatura in memoria (MMAP): memorizza** nella cache (persistono) i batch precaricati in modo che siano disponibili anche quando un errore causa il riavvio del processo di formazione.
+ **Checkpointless**: consente un ripristino più rapido dagli errori di training dei cluster in ambienti di formazione distribuiti su larga scala apportando ottimizzazioni a livello di framework
+ **Basato su Nvidia Nemo e PyTorch Lightning: sfrutta questi potenti framework per una formazione dei modelli efficiente e flessibile**
  + [Nividia NeMo](https://github.com/NVIDIA-NeMo/NeMo)
  + [PyTorch Fulmine](https://lightning.ai/docs/pytorch/stable/)

**SageMaker HyperPod Contenitore Docker di formazione Checkpointless**

[Checkpointless training on HyperPod si basa sul framework NVIDIA. NeMo ](https://docs.nvidia.com/nemo-framework/user-guide/latest/overview.html) HyperPod checkpointless training mira a recuperare più rapidamente gli errori di formazione su cluster in ambienti di formazione distribuiti su larga scala effettuando ottimizzazioni a livello di framework che verranno fornite su un contenitore di base contenente l'immagine di base con NCCL e ottimizzazioni. PyTorch 

**Disponibilità**

Attualmente le immagini sono disponibili solo in:

```
eu-north-1
ap-south-1
us-east-2
eu-west-1
eu-central-1
sa-east-1
us-east-1
eu-west-2
ap-northeast-1
us-west-2
us-west-1
ap-southeast-1
ap-southeast-2
```

ma non disponibile nelle seguenti 3 regioni opzionali:

```
ap-southeast-3
ap-southeast-4
eu-south-2
```

**Dettagli container**

Contenitore Docker di formazione Checkpointless per PyTorch la versione 2.6.0 con CUDA v12.9

```
963403601044.dkr.ecr.eu-north-1.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
423350936952.dkr.ecr.ap-south-1.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
556809692997.dkr.ecr.us-east-2.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
942446708630.dkr.ecr.eu-west-1.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
391061375763.dkr.ecr.eu-central-1.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
311136344257.dkr.ecr.sa-east-1.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
327873000638.dkr.ecr.us-east-1.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
016839105697.dkr.ecr.eu-west-2.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
356859066553.dkr.ecr.ap-northeast-1.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
920498770698.dkr.ecr.us-west-2.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
827510180725.dkr.ecr.us-west-1.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
885852567298.dkr.ecr.ap-southeast-1.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
304708117039.dkr.ecr.ap-southeast-2.amazonaws.com/hyperpod-checkpointless-training:v1.0.0
```

**Pacchetti preinstallati**

```
PyTorch: v2.6.0
CUDA: v12.9
NCCL: v2.27.5
EFA: v1.43.0
AWS-OFI-NCCL v1.16.0
Libfabric version 2.1
Megatron v0.15.0
Nemo v2.6.0rc0
```

# Utilizzo delle partizioni GPU in Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-gpu-partitioning"></a>

Gli amministratori dei cluster possono scegliere come massimizzare l'utilizzo della GPU all'interno dell'organizzazione. Puoi abilitare il partizionamento della GPU con la tecnologia NVIDIA Multi-Instance GPU (MIG) per partizionare le risorse GPU in istanze più piccole e isolate per un migliore utilizzo delle risorse. Questa funzionalità offre la possibilità di eseguire più attività di piccole dimensioni contemporaneamente su una singola GPU anziché dedicare l'intero hardware a una singola attività, spesso sottoutilizzata. Ciò elimina lo spreco di potenza di elaborazione e memoria.

Il partizionamento GPU con tecnologia MIG supporta GPUs e consente di partizionare una singola GPU supportata in un massimo di sette partizioni GPU separate. Ogni partizione GPU dispone di risorse di memoria, cache e calcolo dedicate, che garantiscono un isolamento prevedibile.

## Vantaggi
<a name="sagemaker-hyperpod-eks-gpu-partitioning-benefits"></a>
+ **Utilizzo migliorato della GPU**: massimizza l'efficienza di elaborazione mediante il partizionamento in base ai requisiti di elaborazione e memoria GPUs 
+ **Isolamento delle attività**: ogni partizione GPU funziona in modo indipendente con risorse di memoria, cache e calcolo dedicate
+ **Flessibilità delle attività**: supporta una combinazione di attività su un'unica GPU fisica, tutte in esecuzione in parallelo
+ **Gestione flessibile della configurazione**: supporta sia le configurazioni Kubernetes Do-it-yourself (fai-da-te) utilizzando il client a riga di comando Kubernetes`kubectl`, sia una soluzione gestita con etichette personalizzate per configurare e applicare facilmente le etichette associate alle partizioni GPU

## Tipi di istanze supportati
<a name="sagemaker-hyperpod-eks-gpu-partitioning-instance-types"></a>

Il partizionamento GPU con tecnologia MIG è supportato sui seguenti tipi di istanze: HyperPod 

[Istanze GPU A100 - **instance-types/p4/** https://aws.amazon.com/ec2/](https://aws.amazon.com/ec2/instance-types/p4/)
+ ml.p4d.24xlarge - 8 schede NVIDIA **A100** (80 GB per GPU) GPUs HBM2e 
+ **ml.p4de.24xlarge** - 8 schede NVIDIA A100 GPUs (80 GB HBM2e per GPU)

**Istanze GPU [https://aws.amazon.com/ec2/H100](https://aws.amazon.com/ec2/instance-types/p5/) - instance-types/p5/**
+ ml.p5.48xlarge - 8 NVIDIA **H100** (80 GB per GPU) GPUs HBM3 

**Istanze GPU [https://aws.amazon.com/ec2/H200 - instance-types/p5/](https://aws.amazon.com/ec2/instance-types/p5/)**
+ ml.p5e.48xlarge - 8 schede NVIDIA **H200** (141 GB per GPU) GPUs HBM3e 
+ **ml.p5en.48xlarge** - 8 schede NVIDIA H200 GPUs (141 GB HBM3e per GPU)

**Istanze GPU [https://aws.amazon.com/ec2/B200](https://aws.amazon.com/ec2/instance-types/p6/) - instance-types/p6/**
+ **ml.p6b.48xlarge - 8 schede NVIDIA B200** GPUs

## partizioni GPU
<a name="sagemaker-hyperpod-eks-gpu-partitioning-profiles"></a>

I profili NVIDIA MIG definiscono il modo in cui vengono partizionati. GPUs Ogni profilo specifica l'allocazione di calcolo e memoria per istanza MIG. Di seguito sono riportati i profili MIG associati a ciascun tipo di GPU:

**GPU A100 (ml.p4d.24xlarge)**


| Profilo | Memoria (GB) | Istanze per GPU | Totale per ml.p4d.24xlarge | 
| --- | --- | --- | --- | 
| `1g.5gb` | 5 | 7 | 56 | 
| `2g.10gb` | 10 | 3 | 24 | 
| `3g.20gb` | 20 | 2 | 16 | 
| `4g.20gb` | 20 | 1 | 8 | 
| `7g.40gb` | 40 | 1 | 8 | 

**GPU H100 (ml.p5.48xlarge)**


| Profilo | Memoria (GB) | Istanze per GPU | Totale per ml.p5,48xlarge | 
| --- | --- | --- | --- | 
| `1g.10gb` | 10 | 7 | 56 | 
| `1g.20gb` | 20 | 4 | 32 | 
| `2g.20gb` | 20 | 3 | 24 | 
| `3g.40gb` | 40 | 2 | 16 | 
| `4g.40gb` | 40 | 1 | 8 | 
| `7g.80gb` | 80 | 1 | 8 | 

**GPU H200 (ml.p5e.48xlarge e ml.p5en.48xlarge)**


| Profilo | Memoria (GB) | Istanze per GPU | Totale per ml.p5en.48xlarge | 
| --- | --- | --- | --- | 
| `1g.18gb` | 18 | 7 | 56 | 
| `1g.35gb` | 35 | 4 | 32 | 
| `2g.35gb` | 35 | 3 | 24 | 
| `3g.71gb` | 71 | 2 | 16 | 
| `4g.71gb` | 71 | 1 | 8 | 
| `7g.141gb` | 141 | 1 | 8 | 

**Topics**
+ [Vantaggi](#sagemaker-hyperpod-eks-gpu-partitioning-benefits)
+ [Tipi di istanze supportati](#sagemaker-hyperpod-eks-gpu-partitioning-instance-types)
+ [partizioni GPU](#sagemaker-hyperpod-eks-gpu-partitioning-profiles)
+ [Configurazione di partizioni GPU su Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning-setup.md)
+ [Ciclo di vita dei nodi ed etichette](sagemaker-hyperpod-eks-gpu-partitioning-labels.md)
+ [Invio di attività con MIG](sagemaker-hyperpod-eks-gpu-partitioning-task-submission.md)

# Configurazione di partizioni GPU su Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup"></a>

**Topics**
+ [Prerequisiti](#sagemaker-hyperpod-eks-gpu-partitioning-setup-prerequisites)
+ [Creazione di un cluster con configurazione MIG](#sagemaker-hyperpod-eks-gpu-partitioning-setup-create-cluster)
+ [Aggiungere un operatore GPU a un cluster esistente](#sagemaker-hyperpod-eks-gpu-partitioning-setup-add-operator)
+ [Aggiornamento della configurazione MIG](#sagemaker-hyperpod-eks-gpu-partitioning-setup-update)
+ [Verifica della configurazione MIG](#sagemaker-hyperpod-eks-gpu-partitioning-setup-verify)
+ [Comandi comuni per il debug della configurazione MIG](#sagemaker-hyperpod-eks-gpu-partitioning-setup-debug-commands)
+ [Utilizzo della console SageMaker AI](#sagemaker-hyperpod-eks-gpu-partitioning-setup-console)

## Prerequisiti
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-prerequisites"></a>
+ HyperPod Cluster Amazon EKS con istanze GPU supportate
+ NVIDIA GPU Operator installato
+ Autorizzazioni IAM appropriate per la gestione dei cluster

## Creazione di un cluster con configurazione MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-create-cluster"></a>

### Usando AWS CLI
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-create-cluster-cli"></a>

```
aws sagemaker create-cluster \
  --cluster-name my-mig-cluster \
  --orchestrator 'Eks={ClusterArn=arn:aws:eks:region:account:cluster/cluster-name}' \
  --instance-groups '{
    "InstanceGroupName": "gpu-group",
    "InstanceType": "ml.p4d.24xlarge",
    "InstanceCount": 1,
    "LifeCycleConfig": {
       "SourceS3Uri": "s3://my-bucket",
       "OnCreate": "on_create_script.sh"
    },
    "KubernetesConfig": {
       "Labels": {
          "nvidia.com/mig.config": "all-1g.5gb"
       }
    },
    "ExecutionRole": "arn:aws:iam::account:role/execution-role",
    "ThreadsPerCore": 1
  }' \
  --vpc-config '{
     "SecurityGroupIds": ["sg-12345"],
     "Subnets": ["subnet-12345"]
  }' \
  --node-provisioning-mode Continuous
```

### Usando CloudFormation
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-create-cluster-cfn"></a>

```
{
  "ClusterName": "my-mig-cluster",
  "InstanceGroups": [
    {
      "InstanceGroupName": "gpu-group",
      "InstanceType": "ml.p4d.24xlarge",
      "InstanceCount": 1,
      "KubernetesConfig": {
        "Labels": {
          "nvidia.com/mig.config": "all-2g.10gb"
        }
      },
      "ExecutionRole": "arn:aws:iam::account:role/execution-role"
    }
  ],
  "Orchestrator": {
    "Eks": {
      "ClusterArn": "arn:aws:eks:region:account:cluster/cluster-name"
    }
  },
  "NodeProvisioningMode": "Continuous"
}
```

## Aggiungere un operatore GPU a un cluster esistente
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-add-operator"></a>

### Installa GPU Operator
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-add-operator-install"></a>

Sostituisci `{$AWS_REGION}` con la regione del tuo cluster (ad es. us-east-1, us-west-2).

```
helm install gpuo helm_chart/HyperPodHelmChart/charts/gpu-operator \
-f helm_chart/HyperPodHelmChart/charts/gpu-operator/regional-values/values-{$AWS_REGION}.yaml \
-n kube-system
```

### Verifica l'installazione (attendi 2-3 minuti)
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-add-operator-verify"></a>

Verifica che tutti i pod dell'operatore della GPU siano in funzione:

```
kubectl get pods -n kube-system | grep -E "(gpu-operator|nvidia-)"
```

**Pod previsti:**
+ gpu-operator-\$1 - 1 istanza (controller del cluster)
+ nvidia-device-plugin-daemonset-\$1 - 1 per nodo GPU (tutte le istanze GPU)
+ nvidia-mig-manager-\$1 - 1 per nodo compatibile con MiG (A100/H100)

### Rimuovi il vecchio plug-in del dispositivo
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-add-operator-remove"></a>

Disabilita l'esistente nvidia-device-plugin:

```
helm upgrade dependencies helm_chart/HyperPodHelmChart \
--set nvidia-device-plugin.devicePlugin.enabled=false \
-n kube-system
```

### Verifica le risorse della GPU
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-add-operator-verify-gpu"></a>

Conferma che i nodi mostrino la capacità della GPU. Dovrebbe mostrare: nvidia.com/gpu: 8 (o il numero effettivo di GPU).

```
kubectl describe nodes | grep "nvidia.com/gpu"
```

## Aggiornamento della configurazione MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update"></a>

**Preparazione dei nodi prima degli aggiornamenti MIG**  
Prima di aggiornare le configurazioni MIG sul gruppo di istanze, è necessario preparare i nodi per evitare interruzioni del carico di lavoro. Segui questi passaggi per drenare in sicurezza i carichi di lavoro dai nodi che verranno riconfigurati.

### Fase 1: Identifica i nodi nel gruppo di istanze
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-identify"></a>

Innanzitutto, identifica tutti i nodi che appartengono al gruppo di istanze che desideri aggiornare:

```
# List all nodes in the instance group
kubectl get nodes -l sagemaker.amazonaws.com/instance-group-name=INSTANCE_GROUP_NAME

# Example:
kubectl get nodes -l sagemaker.amazonaws.com/instance-group-name=p4d-group
```

Questo comando restituisce un elenco di tutti i nodi nel gruppo di istanze specificato. Prendi nota del nome di ogni nodo per i seguenti passaggi.

### Fase 2: cordonare e drenare ogni nodo
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-drain"></a>

Per ogni nodo identificato nel passaggio 1, esegui le seguenti azioni:

#### Cordone il nodo
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-drain-cordon"></a>

Il cordonamento impedisce la pianificazione di nuovi pod sul nodo:

```
# Cordon a single node
kubectl cordon NODE_NAME

# Example:
kubectl cordon hyperpod-i-014a41a7001adca60
```

#### Svuota i Workload Pods dal nodo
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-drain-evict"></a>

Svuota il nodo per eliminare tutti i pod del carico di lavoro preservando al contempo i pod di sistema:

```
# Drain the node (ignore DaemonSets and evict pods)
kubectl drain NODE_NAME \
  --ignore-daemonsets \
  --delete-emptydir-data \
  --force \
  --grace-period=300

# Example:
kubectl drain hyperpod-i-014a41a7001adca60 \
  --ignore-daemonsets \
  --delete-emptydir-data \
  --force \
  --grace-period=300
```

**Spiegazione delle opzioni di comando:**
+ `--ignore-daemonsets`- Consente di continuare l'operazione di scarico anche in presenza di DaemonSet cialde
+ `--delete-emptydir-data`- Elimina i pod utilizzando i volumi EmptyDir (necessario per il corretto drenaggio)
+ `--force`- Forza l'eliminazione dei pod non gestiti da un controller (usare con cautela)
+ `--grace-period=300`- Dà ai pod 5 minuti per terminare correttamente

**Importante**  
L'operazione di scarico può richiedere diversi minuti a seconda del numero di pod e dei relativi periodi di tolleranza
I pod di sistema nei seguenti namespace rimarranno in esecuzione:`kube-system`,,,,`cert-manager`,`kubeflow`,`hyperpod-inference-system`,, `kube-public``mpi-operator`, e `gpu-operator` `aws-hyperpod` `jupyter-k8s-system` `hyperpod-observability` `kueue-system` `keda`
DaemonSet i pod rimarranno sul nodo (vengono ignorati in base alla progettazione)

### Passaggio 3: verifica che i pod del carico di lavoro non siano in esecuzione
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-verify"></a>

Dopo il drenaggio, verifica che nessun pod del carico di lavoro rimanga sui nodi (esclusi i namespace di sistema):

```
# Check for any remaining pods outside system namespaces
kubectl get pods --all-namespaces --field-selector spec.nodeName=NODE_NAME \
  | grep -v "kube-system" \
  | grep -v "cert-manager" \
  | grep -v "kubeflow" \
  | grep -v "hyperpod-inference-system" \
  | grep -v "kube-public" \
  | grep -v "mpi-operator" \
  | grep -v "gpu-operator" \
  | grep -v "aws-hyperpod" \
  | grep -v "jupyter-k8s-system" \
  | grep -v "hyperpod-observability" \
  | grep -v "kueue-system" \
  | grep -v "keda"

# Example:
kubectl get pods --all-namespaces --field-selector spec.nodeName=hyperpod-i-014a41a7001adca60 \
  | grep -v "kube-system" \
  | grep -v "cert-manager" \
  | grep -v "kubeflow" \
  | grep -v "hyperpod-inference-system" \
  | grep -v "kube-public" \
  | grep -v "mpi-operator" \
  | grep -v "gpu-operator" \
  | grep -v "aws-hyperpod" \
  | grep -v "jupyter-k8s-system" \
  | grep -v "hyperpod-observability" \
  | grep -v "kueue-system" \
  | grep -v "keda"
```

**Output previsto:** se il nodo è drenato correttamente, questo comando non dovrebbe restituire alcun risultato (o mostrare solo la riga di intestazione). Se alcuni pod sono ancora in funzione, scoprite perché non sono stati rimossi ed eliminateli manualmente, se necessario.

### Fase 4: Verifica dello stato di preparazione del nodo
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-readiness"></a>

Prima di procedere con l'aggiornamento MIG, verificate che tutti i nodi siano isolati:

```
# Check node status - should show "SchedulingDisabled"
kubectl get nodes -l sagemaker.amazonaws.com/instance-group-name=INSTANCE_GROUP_NAME
```

I nodi devono essere visualizzati `SchedulingDisabled` nella colonna STATUS, a indicare che sono isolati e pronti per l'aggiornamento MIG.

### Aggiorna il profilo MIG sul cluster esistente
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-change"></a>

È possibile modificare i profili MIG sui cluster esistenti:

```
aws sagemaker update-cluster \
  --cluster-name my-mig-cluster \
  --instance-groups '{
    "InstanceGroupName": "gpu-group",
    "InstanceType": "ml.p4d.24xlarge",
    "InstanceCount": 1,
    "KubernetesConfig": {
       "Labels": {
          "nvidia.com/mig.config": "all-3g.20gb"
       }
    },
    "ExecutionRole": "arn:aws:iam::account:role/execution-role"
  }'
```

**Nota**  
Se i lavori sono già in esecuzione su un nodo, il partizionamento MIG avrà esito negativo. L'utente riceverà un messaggio di errore per svuotare i nodi prima di tentare nuovamente il partizionamento MIG.

## Verifica della configurazione MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-verify"></a>

Dopo la creazione o l'aggiornamento del cluster, verifica la configurazione MIG:

```
# Update kubeconfig
aws eks update-kubeconfig --name your-eks-cluster --region us-east-2

# Check MIG labels
kubectl get node NODE_NAME -o=jsonpath='{.metadata.labels}' | grep mig

# Check available MIG resources
kubectl describe node NODE_NAME | grep -A 10 "Allocatable:"
```

## Comandi comuni per il debug della configurazione MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-debug-commands"></a>

Utilizzate i seguenti comandi per risolvere i problemi e convalidare la configurazione MIG nel cluster:

```
# Check GPU Operator status
kubectl get pods -n gpu-operator-resources

# View MIG configuration
kubectl exec -n gpu-operator-resources nvidia-driver-XXXXX -- nvidia-smi mig -lgi

# Check device plugin configuration
kubectl logs -n gpu-operator-resources nvidia-device-plugin-XXXXX

# Monitor node events
kubectl get events --field-selector involvedObject.name=NODE_NAME
```

**Nota**  
Sostituisci `nvidia-driver-XXXXX` e `nvidia-device-plugin-XXXXX` con i nomi effettivi dei pod del cluster e `NODE_NAME` con il nome del nodo.

## Utilizzo della console SageMaker AI
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-console"></a>

### Creazione di un nuovo cluster con MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-console-create"></a>

1. Passa ad **Amazon SageMaker AI** > **HyperPod Clusters** > **Gestione dei cluster** > **Crea HyperPod ** cluster

1. Seleziona **Orchestrated by EKS**

1. Scegli **Configurazione personalizzata** e verifica che **GPU Operator** sia abilitato per impostazione predefinita

1. Nella sezione **Gruppi di istanze**, fai clic su **Aggiungi** gruppo

1. Configura il gruppo di istanze e vai a **Configurazione avanzata** per attivare **l'opzione Usa partizione GPU** e scegli la configurazione **MIG** desiderata dal menu a discesa

1. Fai clic su **Aggiungi gruppo di istanze** e completa la configurazione del cluster rimanente

1. Fai clic su **Invia** per creare il cluster

### Aggiornamento della configurazione MIG su un cluster esistente
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-console-update"></a>

1. Passa ad **Amazon SageMaker AI** > **HyperPod Clusters > Gestione dei** **cluster**

1. Seleziona il cluster esistente e fai clic su **Modifica** sul gruppo di istanze che desideri modificare

1. In **Configurazione avanzata**, attiva **Usa la partizione GPU** se non è già abilitata e seleziona una configurazione **MIG** diversa dal menu a discesa

1. **Fai clic su Salva modifiche**

# Ciclo di vita dei nodi ed etichette
<a name="sagemaker-hyperpod-eks-gpu-partitioning-labels"></a>

Amazon SageMaker HyperPod esegue controlli approfonditi sullo stato delle istanze del cluster durante la creazione e l'aggiornamento dei HyperPod cluster prima che inizi il partizionamento della GPU. HyperPod l'agente di monitoraggio dello stato di salute monitora continuamente lo stato di salute delle istanze partizionate con GPU.

## Stati di configurazione MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-labels-states"></a>

I nodi con configurazione delle partizioni GPU attraversano diversi stati:
+ **In sospeso: il** nodo viene configurato con un profilo MIG
+ **Configurazione: l'**operatore GPU sta applicando il partizionamento MIG
+ Operazione **riuscita**: il partizionamento della GPU è stato completato correttamente
+ **Fallito**: il partizionamento della GPU ha rilevato un errore

## Monitoraggio degli stati dei nodi
<a name="sagemaker-hyperpod-eks-gpu-partitioning-labels-monitoring"></a>

```
# Check node health status
kubectl get nodes -l sagemaker.amazonaws.com/node-health-status=Schedulable

# Monitor MIG configuration progress
kubectl get node NODE_NAME -o jsonpath='{.metadata.labels.nvidia\.com/mig\.config\.state}'

# Check for configuration errors
kubectl describe node NODE_NAME | grep -A 5 "Conditions:"
```

## Etichette e segni personalizzati
<a name="sagemaker-hyperpod-eks-gpu-partitioning-labels-custom"></a>

Puoi gestire la configurazione MIG con etichette e colori personalizzati per etichettare le partizioni GPU e applicarle a tutte le istanze:

```
{
  "KubernetesConfig": {
    "Labels": {
      "nvidia.com/mig.config": "all-2g.10gb",
      "task-type": "inference",
      "environment": "production"
    },
    "Taints": [
      {
        "Key": "gpu-task",
        "Value": "mig-enabled",
        "Effect": "NoSchedule"
      }
    ]
  }
}
```

# Invio di attività con MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission"></a>

**Topics**
+ [Utilizzo di Kubernetes YAML](#sagemaker-hyperpod-eks-gpu-partitioning-task-submission-kubectl)
+ [Utilizzo della HyperPod CLI](#sagemaker-hyperpod-eks-gpu-partitioning-task-submission-cli)
+ [Distribuzione del modello con MIG](#sagemaker-hyperpod-eks-gpu-partitioning-task-submission-deployment)
+ [Utilizzo della HyperPod CLI](#sagemaker-hyperpod-eks-gpu-partitioning-task-submission-hyperpod-cli)

## Utilizzo di Kubernetes YAML
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-kubectl"></a>

```
apiVersion: batch/v1
kind: Job
metadata:
  name: mig-job
  namespace: default
spec:
  template:
    spec:
      containers:
      - name: pytorch
        image: pytorch/pytorch:latest
        resources:
          requests:
            nvidia.com/mig-1g.5gb: 1
            cpu: "100m"
            memory: "128Mi"
          limits:
            nvidia.com/mig-1g.5gb: 1
      restartPolicy: Never
```

## Utilizzo della HyperPod CLI
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-cli"></a>

Utilizza la HyperPod CLI per distribuire JumpStart modelli con supporto MIG. L'esempio seguente illustra i nuovi parametri CLI per il partizionamento della GPU:

```
# Deploy JumpStart model with MIG
hyp create hyp-jumpstart-endpoint \
  --model-id deepseek-llm-r1-distill-qwen-1-5b \
  --instance-type ml.p5.48xlarge \
  --accelerator-partition-type mig-2g.10gb \
  --accelerator-partition-validation True \
  --endpoint-name my-endpoint \
  --tls-certificate-output-s3-uri s3://certificate-bucket/ \
  --namespace default
```

## Distribuzione del modello con MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-deployment"></a>

HyperPod L'inferenza consente di implementare i modelli sui profili MIG tramite Studio Classic e `kubectl` CLI. HyperPod Per distribuire JumpStart i modelli`kubectl`, richiama CRDs i campi `spec.server.acceleratorPartitionType` per distribuire il modello sul profilo MIG desiderato. Eseguiamo convalide per garantire che i modelli possano essere implementati sul profilo MIG selezionato nel CRD. Nel caso in cui desideri disabilitare i controlli di convalida MIG, usa to. `spec.server.validations.acceleratorPartitionValidation` `False`

### JumpStart Modelli
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-jumpstart"></a>

```
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: JumpStartModel
metadata:
  name: deepseek-model
  namespace: default
spec:
  sageMakerEndpoint:
    name: deepseek-endpoint
  model:
    modelHubName: SageMakerPublicHub
    modelId: deepseek-llm-r1-distill-qwen-1-5b
  server:
    acceleratorPartitionType: mig-7g.40gb
    instanceType: ml.p4d.24xlarge
```

### Distribuisci il modello da Amazon S3 utilizzando InferenceEndpointConfig
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-s3"></a>

InferenceEndpointConfig consente di distribuire un modello personalizzato da Amazon S3. Per implementare un modello su MIG, `spec.worker.resources` menziona il profilo MIG in and. `requests` `limits` Fai riferimento a una semplice implementazione di seguito:

```
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: InferenceEndpointConfig
metadata:
  name: custom-model
  namespace: default
spec:
  replicas: 1
  modelName: my-model
  endpointName: my-endpoint
  instanceType: ml.p4d.24xlarge
  modelSourceConfig:
    modelSourceType: s3
    s3Storage:
      bucketName: my-model-bucket
      region: us-east-2
    modelLocation: model-path
  worker:
    resources:
      requests:
        nvidia.com/mig-3g.20gb: 1
        cpu: "5600m"
        memory: "10Gi"
      limits:
        nvidia.com/mig-3g.20gb: 1
```

### Implementa il modello di FSx for Lustre utilizzando InferenceEndpointConfig
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-fsx"></a>

InferenceEndpointConfig consente di implementare un modello personalizzato di For Lustre. FSx Per implementare un modello su MIG, `spec.worker.resources` menziona il profilo MIG in and. `requests` `limits` Fai riferimento a una semplice implementazione di seguito:

```
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: InferenceEndpointConfig
metadata:
  name: custom-model
  namespace: default
spec:
  replicas: 1
  modelName: my-model
  endpointName: my-endpoint
  instanceType: ml.p4d.24xlarge
  modelSourceConfig:
    modelSourceType: fsx
    fsxStorage:
      fileSystemId: fs-xxxxx
    modelLocation: location-on-fsx
  worker:
    resources:
      requests:
        nvidia.com/mig-3g.20gb: 1
        cpu: "5600m"
        memory: "10Gi"
      limits:
        nvidia.com/mig-3g.20gb: 1
```

### Utilizzo dell'interfaccia utente di Studio Classic
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-studio"></a>

#### Distribuzione di JumpStart modelli con MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-studio-deploy"></a>

1. Apri **Studio Classic e vai** a **JumpStart**

1. Sfoglia o cerca il modello desiderato (ad es. "DeepSeek«, «Llama», ecc.)

1. **Fai clic sulla scheda del modello e seleziona Deploy**

1. Nella configurazione di distribuzione:
   + Scegli **HyperPod**come obiettivo di distribuzione
   + Seleziona il tuo cluster abilitato per MiG dal menu a discesa
   + **In Configurazione dell'istanza:**
     + Seleziona il tipo di istanza (ad esempio,`ml.p4d.24xlarge`)
     + Scegli il **tipo di partizione GPU** tra le opzioni disponibili
     + **Configura il **conteggio delle istanze e le** impostazioni di ridimensionamento automatico**

1. **Rivedi e fai clic su Distribuisci**

1. Monitora l'avanzamento della distribuzione nella sezione **Endpoints**

#### Opzioni di configurazione del modello
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-studio-config"></a>

**Impostazioni dell'endpoint:**
+ **Nome dell'endpoint**: identificatore univoco per la distribuzione
+ **Nome variante** - Variante di configurazione (impostazione predefinita:) AllTraffic
+ **Tipo di istanza**: deve supportare la partizione GPU (serie p)
+ **Profilo MIG - partizione GPU**
+ Numero **iniziale di istanze: numero** di istanze da distribuire
+ **Scalabilità automatica: abilita la scalabilità** dinamica in base al traffico

**Configurazione avanzata:**
+ **Posizione dei dati del modello**: percorso Amazon S3 per modelli personalizzati
+ **Immagine del contenitore**: contenitore di inferenza personalizzato (opzionale)
+ **Variabili di ambiente: configurazioni** specifiche del modello
+ **Configurazione Amazon VPC: impostazioni di** isolamento della rete

#### Monitoraggio dei modelli implementati
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-studio-monitor"></a>

1. **Passa a **Studio Classic** > **Distribuzioni > Endpoint****

1. Seleziona il tuo endpoint abilitato per MiG

1. Visualizza metriche tra cui:
   + Utilizzo **MIG: utilizzo** per partizione GPU
   + **Consumo di memoria**: per partizione GPU
   + **Latenza di inferenza: tempo di elaborazione della** richiesta
   + **Throughput: richieste** al secondo

1. Configura gli ** CloudWatch allarmi Amazon** per il monitoraggio automatico

1. Configurazione di politiche **di auto-scaling basate sull'utilizzo di** MIG

## Utilizzo della HyperPod CLI
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-hyperpod-cli"></a>

### JumpStart Distribuzione
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-hyperpod-cli-jumpstart"></a>

Il JumpStart comando HyperPod CLI include due nuovi campi per il supporto MIG:
+ `--accelerator-partition-type`- Speciifica la configurazione MIG (ad esempio, mig-4g.20gb)
+ `--accelerator-partition-validation`- Convalida la compatibilità tra i modelli e il profilo MIG (default: true)

```
hyp create hyp-jumpstart-endpoint \
  --version 1.1 \
  --model-id deepseek-llm-r1-distill-qwen-1-5b \
  --instance-type ml.p4d.24xlarge \
  --endpoint-name js-test \
  --accelerator-partition-type "mig-4g.20gb" \
  --accelerator-partition-validation true \
  --tls-certificate-output-s3-uri s3://my-bucket/certs/
```

### Distribuzione personalizzata degli endpoint
<a name="sagemaker-hyperpod-eks-gpu-partitioning-task-submission-hyperpod-cli-custom"></a>

Per la distribuzione tramite endpoint personalizzato, utilizza i campi esistenti `--resources-requests` e abilita la funzionalità del `--resources-limits` profilo MIG:

```
hyp create hyp-custom-endpoint \
  --namespace default \
  --metadata-name deepseek15b-mig-10-14-v2 \
  --endpoint-name deepseek15b-mig-endpoint \
  --instance-type ml.p4d.24xlarge \
  --model-name deepseek15b-mig \
  --model-source-type s3 \
  --model-location deep-seek-15b \
  --prefetch-enabled true \
  --tls-certificate-output-s3-uri s3://sagemaker-bucket \
  --image-uri lmcache/vllm-openai:v0.3.7 \
  --container-port 8080 \
  --model-volume-mount-path /opt/ml/model \
  --model-volume-mount-name model-weights \
  --s3-bucket-name model-storage-123456789 \
  --s3-region us-east-2 \
  --invocation-endpoint invocations \
  --resources-requests '{"cpu":"5600m","memory":"10Gi","nvidia.com/mig-3g.20gb":"1"}' \
  --resources-limits '{"nvidia.com/mig-3g.20gb":"1"}' \
  --env '{
    "OPTION_ROLLING_BATCH":"vllm",
    "SERVING_CHUNKED_READ_TIMEOUT":"480",
    "DJL_OFFLINE":"true",
    "NUM_SHARD":"1",
    "SAGEMAKER_PROGRAM":"inference.py",
    "SAGEMAKER_SUBMIT_DIRECTORY":"/opt/ml/model/code",
    "MODEL_CACHE_ROOT":"/opt/ml/model",
    "SAGEMAKER_MODEL_SERVER_WORKERS":"1",
    "SAGEMAKER_MODEL_SERVER_TIMEOUT":"3600",
    "OPTION_TRUST_REMOTE_CODE":"true",
    "OPTION_ENABLE_REASONING":"true",
    "OPTION_REASONING_PARSER":"deepseek_r1",
    "SAGEMAKER_CONTAINER_LOG_LEVEL":"20",
    "SAGEMAKER_ENV":"1"
  }'
```

# Funzionalità di resilienza del SageMaker HyperPod cluster per l'orchestrazione dei cluster con Amazon EKS
<a name="sagemaker-hyperpod-eks-resiliency"></a>

SageMaker HyperPod fornisce le seguenti funzionalità di resilienza del cluster. 

**Topics**
+ [Sistema di monitoraggio della salute](sagemaker-hyperpod-eks-resiliency-health-monitoring-agent.md)
+ [Controlli dell’integrità di base](sagemaker-hyperpod-eks-resiliency-basic-health-check.md)
+ [Controlli dell’integrità approfonditi](sagemaker-hyperpod-eks-resiliency-deep-health-checks.md)
+ [Ripristino automatico del nodo](sagemaker-hyperpod-eks-resiliency-node-recovery.md)
+ [Etichette Kubernetes relative alla resilienza di SageMaker HyperPod](sagemaker-hyperpod-eks-resiliency-node-labels.md)
+ [Quarantena, sostituzione o riavvio manuale di un nodo](sagemaker-hyperpod-eks-resiliency-manual.md)
+ [Configurazioni di resilienza consigliate](sagemaker-hyperpod-eks-resiliency-config-tips.md)

# Sistema di monitoraggio della salute
<a name="sagemaker-hyperpod-eks-resiliency-health-monitoring-agent"></a>

SageMaker HyperPod il sistema di monitoraggio dello stato di salute include due componenti 

1. Agenti di monitoraggio installati nei nodi, tra cui l'Health Monitoring Agent (HMA) che funge da monitoraggio dello stato dell'host e un set di monitor dello out-of-node stato.

1. Node Recovery System gestito da. SageMaker HyperPod Il sistema di monitoraggio dell'integrità monitorerà continuamente lo stato di salute del nodo tramite agenti di monitoraggio e quindi agirà automaticamente quando viene rilevato un guasto utilizzando il Node Recovery System. 

![\[Questa immagine illustra come il sistema di monitoraggio della salute si sia integrato con HyperPod Cluster.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-resilience-event.png)


## Controlli sanitari effettuati dall'agente di SageMaker HyperPod monitoraggio sanitario
<a name="sagemaker-hyperpod-eks-resiliency-health-monitoring-agent-list-of-checks"></a>

L'agente di SageMaker HyperPod monitoraggio sanitario verifica quanto segue.

**NVIDIA GPUs**
+ [Notifiche di violazione delle policy DCGM](https://docs.nvidia.com/datacenter/dcgm/3.0/user-guide/feature-overview.html#notifications)
+ Errori nell’output `nvidia-smi`
+ Vari errori nei log generati dalla piattaforma Amazon Elastic Compute Cloud (EC2)
+ Convalida del conteggio GPU: se c'è una mancata corrispondenza tra il numero previsto di GPUs in un particolare tipo di istanza (ad esempio: 8 GPUs nel tipo di istanza ml.p5.48xlarge) e il conteggio restituito da, HMA riavvia il nodo `nvidia-smi` 

**AWS Trainium**
+ Errori nell’output dal monitoraggio [AWS Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron-monitor-user-guide.html)
+ Output generati dal rilevatore di problemi del nodo Neuron (per ulteriori informazioni sul rilevatore di problemi del nodo AWS Neuron, consulta [Rilevamento e ripristino dei problemi AWS dei nodi Neuron all'interno dei](https://aws.amazon.com/blogs/machine-learning/node-problem-detection-and-recovery-for-aws-neuron-nodes-within-amazon-eks-clusters/) cluster Amazon EKS).
+ Vari errori nei log generati dalla piattaforma Amazon EC2
+ Convalida del conteggio dei dispositivi Neuron: se c'è una discrepanza tra il numero effettivo di dispositivi neuronali in un particolare tipo di istanza e il conteggio restituito da, HMA riavvia il nodo `neuron-ls`

 I controlli di cui sopra sono passivi, i controlli dello stato in background vengono eseguiti HyperPod continuamente sui nodi. Oltre a questi controlli, esegue HyperPod anche controlli di integrità approfonditi (o attivi) durante la creazione e l'aggiornamento dei HyperPod cluster. Scopri di più sui [controlli sanitari approfonditi](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-resiliency-deep-health-checks.html).

## Rilevamento degli errori
<a name="sagemaker-hyperpod-eks-resiliency-health-monitoring-fault-detection"></a>

Quando SageMaker HyperPod rileva un guasto, implementa una risposta in quattro parti:

1. **Etichette dei nodi**

   1. Stato di salute: `sagemaker.amazonaws.com/node-health-status`

   1. Tipo di errore: `sagemaker.amazonaws.com/fault-types` etichetta per la categorizzazione di alto livello

   1. Motivo dell'errore: `sagemaker.amazonaws.com/fault-reasons` etichetta con informazioni dettagliate sull'errore

1. **Intossicazione del nodo**

   1. `sagemaker.amazonaws.com/node-health-status=Unschedulable:NoSchedule`

1. **Annotazione del nodo**

   1. Dettagli del guasto: `sagemaker.amazonaws.com/fault-details`

   1. Registra fino a 20 errori con timestamp che si sono verificati sul nodo

1. **Condizioni del nodo (condizione** del nodo [Kubernetes](https://kubernetes.io/docs/reference/node/node-status/#condition))

   1. Riflette lo stato di salute attuale nelle condizioni del nodo:
      + Tipo: uguale al tipo di errore
      + Stato: `True`
      + Motivo: uguale al motivo del guasto
      + LastTransitionTime: ora di insorgenza del guasto

![\[Questa immagine illustra come funziona il sistema di monitoraggio dello stato di salute quando viene rilevato un guasto.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-resilience-workflow.png)


## Registri generati dall'agente di monitoraggio sanitario SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-resiliency-health-monitoring-agent-health-check-results"></a>

L'agente di SageMaker HyperPod monitoraggio dello stato è una funzionalità di controllo dello out-of-the-box stato e viene eseguito continuamente su tutti i cluster. HyperPod L'agente di monitoraggio dello stato pubblica gli eventi sanitari rilevati su istanze GPU o Trn nel gruppo di log Cluster. CloudWatch `/aws/sagemaker/Clusters/`

I registri di rilevamento dell'agente di HyperPod monitoraggio dello stato vengono creati come flussi di registro separati denominati per ciascun nodo. `SagemakerHealthMonitoringAgent` È possibile interrogare i registri di rilevamento utilizzando CloudWatch log insights come segue.

```
fields @timestamp, @message
| filter @message like /HealthMonitoringAgentDetectionEvent/
```

Questo restituisce un output simile al seguente.

```
2024-08-21T11:35:35.532-07:00
    {"level":"info","ts":"2024-08-21T18:35:35Z","msg":"NPD caught event: %v","details: ":{"severity":"warn","timestamp":"2024-08-22T20:59:29Z","reason":"XidHardwareFailure","message":"Node condition NvidiaErrorReboot is now: True, reason: XidHardwareFailure, message: \"NVRM: Xid (PCI:0000:b9:00): 71, pid=<unknown>, name=<unknown>, NVLink: fatal error detected on link 6(0x10000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)\""},"HealthMonitoringAgentDetectionEvent":"HealthEvent"}
2024-08-21T11:35:35.532-07:00
    {"level":"info","ts":"2024-08-21T18:35:35Z","msg":"NPD caught event: %v","details: ":{"severity":"warn","timestamp":"2024-08-22T20:59:29Z","reason":"XidHardwareFailure","message":"Node condition NvidiaErrorReboot is now: True, reason: XidHardwareFailure, message: \"NVRM: Xid (PCI:0000:b9:00): 71, pid=<unknown>, name=<unknown>, NVLink: fatal error detected on link 6(0x10000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)\""},"HealthMonitoringAgentDetectionEvent":"HealthEvent"}
```

# Controlli dell’integrità di base
<a name="sagemaker-hyperpod-eks-resiliency-basic-health-check"></a>

SageMaker HyperPod esegue una serie di *controlli di integrità di base* sulle istanze del cluster durante la creazione e l'aggiornamento dei cluster. HyperPod Questi controlli di integrità di base sono indipendenti dall'orchestratore, quindi sono applicabili indipendentemente dalle piattaforme di orchestrazione sottostanti supportate da SageMaker HyperPod (Amazon EKS o Slurm).

I controlli dell’integrità di base monitorano le istanze del cluster per individuare problemi relativi a dispositivi come gli acceleratori (core GPU e Trainium) e i dispositivi di rete (Elastic Fabric Adapter o EFA). Per trovare l’elenco dei controlli dell’integrità di base dei cluster, consulta la sezione sui [controlli dell’integrità del cluster](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-resiliency-slurm.html#sagemaker-hyperpod-resiliency-slurm-cluster-health-check).

# Controlli dell’integrità approfonditi
<a name="sagemaker-hyperpod-eks-resiliency-deep-health-checks"></a>

SageMaker HyperPod esegue *controlli approfonditi sullo stato* delle istanze del cluster durante la creazione e l'aggiornamento dei cluster. HyperPod I controlli approfonditi dello stato garantiscono l'affidabilità e la stabilità dei SageMaker HyperPod cluster testando a fondo i componenti hardware e dell'infrastruttura sottostanti prima di consentire l'utilizzo dei cluster per l'addestramento di modelli di machine learning. Questo approccio proattivo aiuta a identificare e mitigare i potenziali problemi nelle prime fasi del ciclo di vita del cluster.

## Elenco dei controlli sanitari approfonditi eseguiti da SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-resiliency-deep-health-checks-list"></a>

SageMaker HyperPod esegue i seguenti controlli sanitari approfonditi.

**Controlli dell’integrità approfonditi a livello di istanza**


| Categoria | Nome dell’utilità | Compatibilità del tipo di istanza | Description | 
| --- | --- | --- | --- | 
| Accelerator | GPU/count NVLink  | GPU | Verifica GPU/NVLink i conteggi. | 
| Accelerator | [Diagnostica DCGM](https://docs.nvidia.com/datacenter/dcgm/latest/user-guide/dcgm-diagnostics.html) di livello 4 | GPU | Valuta lo stato e la funzionalità di NVIDIA GPUs eseguendo la diagnostica DCGM (NVIDIA Data Center GPU Manager) a livello 4, inclusi test di memoria aggiuntivi. | 
| Accelerator | Neuron Sysfs | Trainium | Per le istanze basate su Trainium, l’integrità dei dispositivi Neuron viene determinato dalla lettura dei contatori di [Neuron Sysfs](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron-sysfs-user-guide.html) propagati direttamente dal driver Neuron. | 
| Accelerator | Controllo dell’hardware Neuron | Trainium | Esegue un carico di lavoro di formazione e verifica i risultati per testare l'hardware. | 
| Accelerator | Test locale NCCOM | Trainium | Valuta le prestazioni delle operazioni di comunicazione collettiva su singoli nodi Trainium | 
| Rete | EFA | GPU e Trainium | Esegue il benchmarking della latenza e della larghezza di banda sul dispositivo EFA collegato. | 

**Controlli dell’integrità approfonditi a livello di cluster**


| Categoria | Nome dell’utilità | Compatibilità del tipo di istanza | Description | 
| --- | --- | --- | --- | 
| Accelerator | Test NCCL | GPU | Verifica le prestazioni delle operazioni di comunicazione collettiva su più unità NVIDIA GPUs | 
| Accelerator | Test del cluster NCCOM | Trainium | Verifica le prestazioni delle operazioni di comunicazione collettiva su più nodi Trainium | 

## Log dei controlli dell’integrità approfonditi
<a name="sagemaker-hyperpod-eks-resiliency-deep-health-checks-log"></a>

Di seguito sono riportati alcuni esempi di log tratti dai controlli sanitari SageMaker HyperPod approfonditi.

**Log a livello di cluster** 

I log dei controlli sanitari approfonditi a livello di cluster sono archiviati nel gruppo di log all'indirizzo CloudWatch `/aws/sagemaker/Clusters/<cluster_name>/<cluster_id>`

I flussi di log vengono registrati in `DeepHealthCheckResults/<log_stream_id>`.

Nell’esempio illustrato di seguito, i log di output dei controlli dell’integrità approfonditi mostrano l’ID dell’istanza che non ha superato i controlli insieme alla causa dell’errore.

```
{
    "level": "error",
    "ts": "2024-06-18T21:15:22Z",
    "msg": "Encountered FaultyInstance. Replace the Instance. Region: us-west-2, InstanceType: p4d.24xlarge. ERROR:Bandwidth has less than threshold: Expected minimum threshold :80,NCCL Test output Bw: 30"
}
```

**Log a livello di istanza** 

I log dei controlli dell’integrità approfonditi a livello di istanza sono archiviati in `/var/log/aws/clusters/sagemaker-deep-health-check.log` su ogni nodo. Accedi con SSH al nodo e apri il file di log eseguendo il comando seguente.

```
cat /var/log/aws/clusters/sagemaker-deep-health-check.log
```

Di seguito è riportato un esempio di output del controllo dello stress dell’hardware e di [NVIDIA DCGM](https://developer.nvidia.com/dcgm), oltre all’output del test di connettività EFA.

```
# Hardware Stress Test output

2024-08-20T21:53:58Z info Executing Hardware stress check with command: stress-ng, and args: [--cpu 32 --vm 2 --hdd 1 --fork 8 --switch 4 --timeout 60 --metrics]

2024-08-20T21:54:58Z info stress-ng success

2024-08-20T21:54:58Z    info    GpuPci Count check success

# DCGM Stress Test

2024-08-20T22:25:02Z    info    DCGM diagnostic health summary: dcgmCheckLevel: 0 dcgmVersion: 3.3.7 gpuDriverVersion: 535.183.01, gpuDeviceIds: [2237] replacementRequired: false rebootRequired:false

# EFA Loopback Test

2024-08-20T22:26:28Z    info    EFA Loopback check passed for device: rdmap0s29 . Output summary is MaxBw: 58.590000, AvgBw: 32.420000, MaxTypicalLat: 30.870000, MinTypicalLat: 20.080000, AvgLat: 21.630000
```

Di seguito è riportato un esempio di output del test di connettività NCCL.

```
#       size         count      type   redop    root     time   algbw   busbw #wrong     time   algbw   busbw #wrong

#        (B)    (elements)                               (us)  (GB/s)  (GB/s)            (us)  (GB/s)  (GB/s)       

           8             2     float     sum      -1    353.9    0.00    0.00      0    304.2    0.00    0.00      0
          16             4     float     sum      -1    352.8    0.00    0.00      0    422.9    0.00    0.00      0
          32             8     float     sum      -1    520.0    0.00    0.00      0    480.3    0.00    0.00      0
          64            16     float     sum      -1    563.0    0.00    0.00      0    416.1    0.00    0.00      0
         128            32     float     sum      -1    245.1    0.00    0.00      0    308.4    0.00    0.00      0
         256            64     float     sum      -1    310.8    0.00    0.00      0    304.9    0.00    0.00      0
         512           128     float     sum      -1    304.9    0.00    0.00      0    300.8    0.00    0.00      0
        1024           256     float     sum      -1    509.3    0.00    0.00      0    495.4    0.00    0.00      0
        2048           512     float     sum      -1    530.3    0.00    0.00      0    420.0    0.00    0.00      0
        4096          1024     float     sum      -1    391.2    0.01    0.01      0    384.5    0.01    0.01      0
        8192          2048     float     sum      -1    328.5    0.02    0.02      0    253.2    0.03    0.03      0
       16384          4096     float     sum      -1    497.6    0.03    0.03      0    490.9    0.03    0.03      0
       32768          8192     float     sum      -1    496.7    0.07    0.07      0    425.0    0.08    0.08      0
       65536         16384     float     sum      -1    448.0    0.15    0.15      0    501.0    0.13    0.13      0
      131072         32768     float     sum      -1    577.4    0.23    0.23      0    593.4    0.22    0.22      0
      262144         65536     float     sum      -1    757.8    0.35    0.35      0    721.6    0.36    0.36      0
      524288        131072     float     sum      -1   1057.1    0.50    0.50      0   1019.1    0.51    0.51      0
     1048576        262144     float     sum      -1   1460.5    0.72    0.72      0   1435.6    0.73    0.73      0
     2097152        524288     float     sum      -1   2450.6    0.86    0.86      0   2583.1    0.81    0.81      0
     4194304       1048576     float     sum      -1   4344.5    0.97    0.97      0   4419.3    0.95    0.95      0
     8388608       2097152     float     sum      -1   8176.5    1.03    1.03      0   8197.8    1.02    1.02      0
    16777216       4194304     float     sum      -1    15312    1.10    1.10      0    15426    1.09    1.09      0
    33554432       8388608     float     sum      -1    30149    1.11    1.11      0    29941    1.12    1.12      0
    67108864      16777216     float     sum      -1    57819    1.16    1.16      0    58635    1.14    1.14      0
   134217728      33554432     float     sum      -1   115699    1.16    1.16      0   115331    1.16    1.16      0
   268435456      67108864     float     sum      -1   227507    1.18    1.18      0   228047    1.18    1.18      0
   536870912     134217728     float     sum      -1   453751    1.18    1.18      0   456595    1.18    1.18      0
  1073741824     268435456     float     sum      -1   911719    1.18    1.18      0   911808    1.18    1.18      0
  2147483648     536870912     float     sum      -1  1804971    1.19    1.19      0  1806895    1.19    1.19      0

2024-08-20T16:22:43.831-07:00

# Out of bounds values : 0 OK

2024-08-20T16:22:43.831-07:00

# Avg bus bandwidth    : 0.488398 

2024-08-20T23:22:43Z    info    Nccl test successful. Summary: NcclMaxAlgoBw: 1.190000, NcclAvgAlgoBw: 0.488398, NcclThresholdAlgoBw: 1.180000, NcclOutOfBoundError: OK, NcclOperations: all_reduce_perf, NcclTotalDevices: 2, NcclNodes: 2, NcclClusterMessage:
```

# Ripristino automatico del nodo
<a name="sagemaker-hyperpod-eks-resiliency-node-recovery"></a>

Durante la creazione o l’aggiornamento del cluster, gli utenti amministratori del cluster possono selezionare l’opzione di ripristino del nodo (istanza) scegliendo tra `Automatic` (consigliato) e `None` a livello di cluster. Se impostato su`Automatic`, SageMaker HyperPod riavvia o sostituisce automaticamente i nodi difettosi. 

**Importante**  
Consigliamo di impostare l’opzione `Automatic`.

Il ripristino automatico dei nodi viene eseguito quando vengono rilevati problemi dall’agente di monitoraggio dell’integrità, dai controlli dell’integrità di base e dai controlli dell’integrità approfonditi. Se è impostato `None`, l’agente di monitoraggio dell’integrità etichetta le istanze in cui viene rilevato un guasto, ma non avvia automaticamente alcuna azione di correzione o ripristino sui nodi interessati. Questa opzione non è consigliata.

# Etichette Kubernetes relative alla resilienza di SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-resiliency-node-labels"></a>

*Le etichette* sono coppie chiave-valore allegate agli oggetti [Kubernetes](https://kubernetes.io/docs/concepts/overview/working-with-objects/#kubernetes-objects). SageMaker HyperPod introduce le seguenti etichette per i controlli sanitari che fornisce.

## Etichette dello stato di integrità dei nodi
<a name="sagemaker-hyperpod-eks-resiliency-node-labels-health-status"></a>

Le etichette `node-health-status` rappresentano lo stato di integrità del nodo e devono essere utilizzate come parte del filtro di selezione dei nodi integri.


| Etichetta | Description | 
| --- | --- | 
| sagemaker.amazonaws.com/node-health-status: Schedulable | Il nodo ha superato i controlli dell’integrità di base ed è disponibile per l’esecuzione di carichi di lavoro. Questo controllo di integrità è lo stesso delle [funzionalità di SageMaker HyperPod resilienza attualmente disponibili per i cluster Slurm](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-resiliency-slurm.html). | 
| sagemaker.amazonaws.com/node-health-status: Unschedulable | Il nodo sta eseguendo controlli dell’integrità approfonditi e non è disponibile per l’esecuzione di carichi di lavoro. | 
| sagemaker.amazonaws.com/node-health-status: UnschedulablePendingReplacement | Il nodo non ha superato i controlli dell’integrità approfonditi o i controlli degli agenti di monitoraggio dell’integrità e deve essere sostituito. Se il ripristino automatico del nodo è abilitato, il nodo verrà automaticamente sostituito da. SageMaker HyperPod | 
| sagemaker.amazonaws.com/node-health-status: UnschedulablePendingReboot | Il nodo non ha superato i controlli dell’integrità approfonditi o i controlli degli agenti di monitoraggio dell’integrità e richiede un riavvio. Se il ripristino automatico del nodo è abilitato, il nodo verrà riavviato automaticamente da. SageMaker HyperPod | 

## Etichette dei controlli dell’integrità approfonditi
<a name="sagemaker-hyperpod-eks-resiliency-node-labels-deep-health-check"></a>

Le etichette `deep-health-check-status` rappresentano lo stato di avanzamento dei controlli dell’integrità approfonditi su un nodo specifico. Sono utili agli utenti di Kubernetes per filtrare rapidamente in base allo stato di avanzamento complessivo dei controlli dell’integrità approfonditi.


| Etichetta | Description | 
| --- | --- | 
| sagemaker.amazonaws.com/deep-health-check-status: InProgress | Il nodo sta eseguendo controlli dell’integrità approfonditi e non è disponibile per l’esecuzione di carichi di lavoro. | 
| sagemaker.amazonaws.com/deep-health-check-status: Passed | Il nodo ha completato correttamente i controlli dell’integrità approfonditi e i controlli degli agenti di monitoraggio dell’integrità ed è disponibile per l’esecuzione di carichi di lavoro. | 
| sagemaker.amazonaws.com/deep-health-check-status: Failed | Il nodo non ha superato i controlli dell’integrità approfonditi o i controlli degli agenti di monitoraggio dell’integrità e richiede il riavvio o la sostituzione. Se il ripristino automatico del nodo è abilitato, il nodo verrà riavviato o sostituito automaticamente da. SageMaker HyperPod | 

## Etichette relative al tipo e al motivo del guasto
<a name="sagemaker-hyperpod-eks-resiliency-node-labels-fault-type-and-reason"></a>

Di seguito vengono descritte le etichette `fault-type` e`fault-reason`.
+ Le etichette `fault-type` rappresentano categorie generali per i guasti in caso di controlli dell’integrità non riusciti. Queste vengono compilate per gli errori identificati sia durante i controlli dell’integrità approfonditi sia dai controlli dell’agente di monitoraggio dell’integrità.
+ Le etichette `fault-reason` riportano il motivo dettagliato del guasto associato a `fault-type`.

## Come SageMaker HyperPod etichette
<a name="sagemaker-hyperpod-eks-resiliency-node-how-it-labels"></a>

Gli argomenti seguenti illustrano come viene eseguita l’etichettatura in base ai vari casi.

**Topics**
+ [Quando un nodo viene aggiunto a un SageMaker HyperPod cluster con la configurazione Deep Health Check disattivata](#sagemaker-hyperpod-eks-resiliency-node-how-it-labels-when-dhc-is-off)
+ [Quando un nodo viene aggiunto a un SageMaker HyperPod cluster con la configurazione Deep Health Check abilitata](#sagemaker-hyperpod-eks-resiliency-node-how-it-labels-when-dhc-is-on)
+ [Quando si verificano errori di calcolo sui nodi](#sagemaker-hyperpod-eks-resiliency-node-how-it-labels-when-node-fails)

### Quando un nodo viene aggiunto a un SageMaker HyperPod cluster con la configurazione Deep Health Check disattivata
<a name="sagemaker-hyperpod-eks-resiliency-node-how-it-labels-when-dhc-is-off"></a>

Quando viene aggiunto un nuovo nodo a un cluster e se il controllo approfondito dello stato non è abilitato per il gruppo di istanze, SageMaker HyperPod esegue gli stessi controlli di integrità dei controlli di [ SageMaker HyperPod integrità attualmente disponibili per i cluster Slurm](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-resiliency-slurm.html). 

Se il controllo dell’integrità viene superato, i nodi vengono contrassegnati con la seguente etichetta.

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

Se il controllo dell’integrità non viene superato, i nodi verranno terminati e sostituiti. Questo comportamento è lo stesso del modo in cui funziona il controllo dello stato di SageMaker HyperPod salute per i cluster Slurm. 

### Quando un nodo viene aggiunto a un SageMaker HyperPod cluster con la configurazione Deep Health Check abilitata
<a name="sagemaker-hyperpod-eks-resiliency-node-how-it-labels-when-dhc-is-on"></a>

Quando viene aggiunto un nuovo nodo a un SageMaker HyperPod cluster e se il test di controllo approfondito dello stato è abilitato per il gruppo di istanze, HyperPod prima contamina il nodo e avvia il check/stress test di integrità approfondito di circa 2 ore sul nodo. Ci sono tre possibili esiti per le etichette dei nodi dopo il controllo dell’integrità approfondito. 

1. Quando il test di controllo dell’integrità approfondito viene superato.

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

1. Quando il test di controllo dell’integrità approfondito non riesce e l’istanza deve essere sostituita.

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

1. Quando il test di controllo dell’integrità approfondito non riesce e l’istanza deve essere riavviata per ripetere il test.

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

Se un’istanza non supera il test di controllo dell’integrità approfondito, verrà sempre sostituita. Se i test del controllo dell’integrità approfondito hanno esito positivo, il taint sul nodo verrà rimosso.

### Quando si verificano errori di calcolo sui nodi
<a name="sagemaker-hyperpod-eks-resiliency-node-how-it-labels-when-node-fails"></a>

L'agente di monitoraggio dello stato di SageMaker HyperPod salute inoltre monitora continuamente lo stato di salute di ciascun nodo. Quando rileva eventuali guasti (ad esempio della GPU o del driver), l’agente contrassegna il nodo con una delle seguenti etichette.

1. Quando il nodo non è integro e deve essere sostituito.

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

1. Quando il nodo non è integro e deve essere riavviato.

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

 L’agente di monitoraggio dell’integrità esegue il taint anche sul nodo se rileva eventuali problemi di integrità del nodo.

# Quarantena, sostituzione o riavvio manuale di un nodo
<a name="sagemaker-hyperpod-eks-resiliency-manual"></a>

Scopri come mettere in quarantena, sostituire e riavviare manualmente un nodo difettoso in SageMaker HyperPod cluster orchestrati con Amazon EKS.

**Per mettere in quarantena un nodo e forzare l’eliminazione di un pod di addestramento**

```
kubectl cordon <node-name>
```

Dopo la quarantena, forza l’espulsione del pod. Questa operazione è utile se un pod è bloccato in stato di terminazione da più di 30 minuti o se `kubectl describe pod` indica che il nodo non è pronto in Eventi

```
kubectl delete pods <pod-name> --grace-period=0 --force
```

SageMaker HyperPod offre due metodi per il ripristino manuale dei nodi. L'approccio preferito consiste nell'utilizzare SageMaker HyperPod Reboot and Replace APIs, che fornisce un processo di ripristino più rapido e trasparente che funziona con tutti gli orchestratori. In alternativa, puoi usare i comandi kubectl per etichettare i nodi per le operazioni di riavvio e sostituzione. Entrambi i metodi attivano gli stessi processi di ripristino. SageMaker HyperPod 

**Per riavviare un nodo utilizzando l'API Reboot**

Per riavviare un nodo puoi usare l'API. BatchRebootClusterNodes 

 Ecco un esempio di esecuzione dell'operazione di riavvio su due istanze di un cluster utilizzando: AWS Command Line Interface

```
 aws sagemaker batch-reboot-cluster-nodes \
        --cluster-name arn:aws:sagemaker:ap-northeast-1:123456789:cluster/test-cluster \
        --node-ids i-0123456789abcdef0 i-0fedcba9876543210
```

**Per sostituire un nodo utilizzando l'API Replace**

Per sostituire un nodo puoi usare l' BatchReplaceClusterNodes API come segue

 Ecco un esempio di esecuzione dell'operazione di sostituzione su due istanze di un cluster utilizzando: AWS Command Line Interface

```
 aws sagemaker batch-replace-cluster-nodes \
        --cluster-name arn:aws:sagemaker:ap-northeast-1:123456789:cluster/test-cluster \
        --node-ids i-0123456789abcdef0 i-0fedcba9876543210
```

**Cluster gestiti da Karpenter**  
Per SageMaker HyperPod i cluster che utilizzano Karpenter per il provisioning dei nodi, l'`BatchReplaceClusterNodes`API non garantisce la creazione di un nodo sostitutivo. Il nodo specificato *verrà* terminato, ma la sostituzione dipende dal modello di provisioning di Karpenter. pod-demand-based Karpenter crea nuovi nodi solo quando ci sono pod in `Pending` uno stato che non può essere pianificato su nodi esistenti.  
Se il carico di lavoro del nodo eliminato può essere riprogrammato sui nodi rimanenti del cluster (ad esempio, se tali nodi hanno una capacità sufficiente), Karpenter non fornisce un supporto sostitutivo. Per garantire la creazione di un nodo sostitutivo, verificate che la configurazione del carico di lavoro (ad esempio le regole di anti-affinità dei pod o le richieste di risorse) richieda un nuovo nodo per i pod spostati.  
Siamo consapevoli di questa limitazione e stiamo lavorando attivamente a una soluzione per imporre la sostituzione dei nodi quando richiesta tramite l'API.

**Per sostituire un nodo usando kubectl**

Etichetta il nodo con cui sostituirlo`sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReplacement`, che attiva il. SageMaker HyperPod [Ripristino automatico del nodo](sagemaker-hyperpod-eks-resiliency-node-recovery.md) Tieni presente che devi anche attivare il ripristino automatico dei nodi durante la creazione o l’aggiornamento del cluster.

```
kubectl label nodes <node-name> \
   sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReplacement
```

**Per riavviare un nodo usando kubectl**

Etichetta il nodo con `sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReboot` cui riavviare, che attiva il. SageMaker HyperPod [Ripristino automatico del nodo](sagemaker-hyperpod-eks-resiliency-node-recovery.md) Tieni presente che devi anche attivare il ripristino automatico dei nodi durante la creazione o l’aggiornamento del cluster.

```
kubectl label nodes <node-name> \
   sagemaker.amazonaws.com/node-health-status=UnschedulablePendingReboot
```

Dopo aver applicato `UnschedulablePendingReboot` le etichette `UnschedulablePendingReplacement` o, dovresti essere in grado di vedere che il nodo viene terminato o riavviato in pochi minuti. 

# Configurazioni di resilienza consigliate
<a name="sagemaker-hyperpod-eks-resiliency-config-tips"></a>

Quando i controlli approfonditi dello stato sono abilitati, ogni volta che viene aggiunta una nuova istanza al HyperPod cluster (durante la creazione del cluster o tramite la sostituzione automatica del nodo), la nuova istanza viene sottoposta al processo di controllo approfondito (stress test a livello di istanza) per circa un paio d'ore. Di seguito sono illustrate alcune combinazioni di configurazione della resilienza, suggerite in base ai possibili casi.

1. **Caso**: hai altri nodi di riserva all’interno di un cluster come risorse di backup (la capacità non è completamente utilizzata) o puoi attendere circa 2 ore per ottenere le istanze meno soggette a errori grazie al processo di controllo dell’integrità approfondito.

   **Raccomandazione**: abilita la configurazione dei controlli dell’integrità approfonditi per tutto il ciclo di vita del cluster. La configurazione del ripristino automatico del nodo è abilitata per impostazione predefinita.

1. **Caso**: non hai nodi di backup aggiuntivi (la capacità è completamente utilizzata da carichi di addestramento). Hai bisogno di nodi sostitutivi il prima possibile per riprendere il job di addestramento. 

   **Raccomandazione**: abilita il controllo dell’integrità approfondito durante la creazione del cluster, quindi disattiva la configurazione dei controlli dell’integrità approfonditi dopo la creazione del cluster. La configurazione del ripristino automatico del nodo è abilitata per impostazione predefinita.

1. **Caso**: non hai nodi di backup aggiuntivi e non vuoi attendere il processo di controllo dell’integrità approfondito, che richiede circa 2 ore (cluster di piccole dimensioni).

   **Raccomandazione**: disabilita la configurazione dei controlli dell’integrità approfonditi per tutto il ciclo di vita del cluster. La configurazione del ripristino automatico del nodo è abilitata per impostazione predefinita.

Per riprendere immediatamente il job di addestramento dopo un errore, assicurati di avere nodi di riserva aggiuntivi disponibili come risorse di backup nel cluster.

# Istanze Spot in Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-spot"></a>

Amazon SageMaker HyperPod supporta le istanze Spot di Amazon EC2, che consentono risparmi significativi sui costi per carichi di lavoro con tolleranza ai guasti e stateless. AI/ML I casi d'uso includono lavori di inferenza e formazione in batch, ottimizzazione degli iperparametri e carichi di lavoro sperimentali. Puoi anche utilizzare le istanze Spot per scalare automaticamente la capacità di elaborazione quando questa capacità a basso costo è disponibile e tornare alla capacità on demand quando viene recuperata la capacità Spot aggiunta.

Per impostazione predefinita, le istanze Spot on HyperPod funzionano con la [funzione HyperPod di provisioning continuo](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-scaling-eks.html), che consente di fornire automaticamente la capacità SageMaker HyperPod residua in background mentre i carichi di lavoro iniziano immediatamente sulle istanze disponibili. Quando il provisioning dei nodi riscontra errori dovuti a vincoli di capacità o altri problemi, riprova SageMaker HyperPod automaticamente in background finché i cluster non raggiungono la scala desiderata, in modo che le operazioni di scalabilità automatica rimangano resilienti e non bloccanti. [Puoi anche utilizzare le istanze Spot con la scalabilità automatica basata su Karpenter.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-autoscaling.html)

**Funzionalità e concetti chiave da considerare**
+ Ottieni un risparmio sui costi fino al 90% rispetto alle istanze On-Demand
+ Utilizza le istanze Spot per lavori in grado di gestire le interruzioni e in cui i tempi di inizio e completamento dei lavori sono flessibili
+ Quando si utilizza Karpenter per il ridimensionamento automatico, è possibile configurare la configurazione in modo da ricorrere automaticamente HyperPod a On-Demand quando la capacità Spot è interrotta o non disponibile
+ Accedi a un'ampia gamma di tipi di istanze di CPU, GPU e acceleratori supportati da HyperPod
+ La disponibilità della capacità dipende dalla fornitura di EC2 e varia in base alla regione e al tipo di istanza
+ È possibile eseguire varie azioni, come identificare la probabilità di ottenere le istanze desiderate o di subire interruzioni, utilizzando vari strumenti come [Spot Instance](https://aws.amazon.com/ec2/spot/instance-advisor/) Advisor fornito da EC2

## Nozioni di base
<a name="sagemaker-hyperpod-spot-instance-getstart"></a>

### Prerequisiti
<a name="sagemaker-hyperpod-spot-instance-getstart-prereq"></a>

Prima di iniziare, assicurati di disporre dei seguenti elementi:

#### AWS CLI installato e configurato
<a name="sagemaker-hyperpod-spot-instance-getstart-prereq-cli"></a>

Imposta AWS le tue credenziali e la tua regione:

```
aws configure
```

Per istruzioni dettagliate, consulta la [documentazione relativa alle AWS credenziali](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html).

#### Ruolo IAM per l'esecuzione SageMaker HyperPod
<a name="sagemaker-hyperpod-spot-instance-getstart-prereq-iam"></a>

Per aggiornare il cluster, devi prima creare le autorizzazioni [AWS Identity and Access Management](https://aws.amazon.com/iam/) (IAM) per Karpenter. Per istruzioni, consulta [Creare un ruolo IAM per la scalabilità HyperPod automatica](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-autoscaling-iam.html) con Karpenter.

#### Configurazione di cluster VPC ed EKS
<a name="sagemaker-hyperpod-spot-instance-getstart-prereq-cluster"></a>

**2.1 Creazione di cluster VPC ed EKS**

Segui la [guida all'installazione di HyperPod EKS](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-install-packages-using-helm-chart.html) per:

1. Crea un VPC con sottoreti in più zone di disponibilità

1. Crea un cluster EKS

1. Installa [le dipendenze richieste utilizzando i](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-install-packages-using-helm-chart.html) grafici Helm

**2.2 Imposta le variabili d'ambiente**

```
export EKS_CLUSTER_ARN="arn:aws:eks:REGION:ACCOUNT_ID:cluster/CLUSTER_NAME"
export EXECUTION_ROLE="arn:aws:iam::ACCOUNT_ID:role/SageMakerExecutionRole"
export BUCKET_NAME="your-s3-bucket-name"
export SECURITY_GROUP="sg-xxxxx"
export SUBNET="subnet-xxxxx"
export SUBNET1="subnet-xxxxx"
export SUBNET2="subnet-xxxxx"
export SUBNET3="subnet-xxxxx"
```

#### Quote di servizio per le istanze Spot
<a name="sagemaker-hyperpod-spot-instance-getstart-prereq-quota"></a>

Verifica di disporre delle quote richieste per le istanze che creerai nel cluster. SageMaker HyperPod Per rivedere le quote, nella console Service Quotas, AWS scegli servizi nel riquadro di navigazione, quindi scegli. SageMaker Ad esempio, la schermata seguente mostra la quota disponibile per le istanze c5.

![\[Un'immagine contenente informazioni sulla regione di costo.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/Screenshot-cluster-quota.png)


#### Verifica la disponibilità degli spot
<a name="sagemaker-hyperpod-spot-instance-getstart-prereq-availability"></a>

Prima di creare gruppi di istanze Spot, verifica la disponibilità in diverse zone di disponibilità:

```
aws ec2 get-spot-placement-scores \
  --region us-west-2 \
  --instance-types c5.2xlarge \
  --target-capacity 10 \
  --single-availability-zone \
  --region-names us-west-2
```

**Suggerimento**: scegli come target le zone di disponibilità con punteggi di posizionamento più alti per una migliore disponibilità. Puoi anche controllare i prezzi di Spot Instance Advisor ed EC2 Spot per verificare la disponibilità. Seleziona la zona di disponibilità richiesta con un punteggio di disponibilità migliore e configura il gruppo di istanze con la sottorete associata per avviare l'istanza in quella zona.

### Creazione di un gruppo di istanze (nessuna scalabilità automatica)
<a name="sagemaker-hyperpod-spot-instance-getstart-create"></a>

**CreateCluster (Spot)**

```
aws sagemaker create-cluster \
    --cluster-name clusterNameHere \
    --orchestrator 'Eks={ClusterArn='$EKS_CLUSTER_ARN'}' \
    --node-provisioning-mode "Continuous" \
    --cluster-role 'arn:aws:iam::YOUR-ACCOUNT-ID:role/SageMakerHyperPodRole' \
    --instance-groups '[{
        "InstanceGroupName": "auto-spot-c5-2x-az1",
        "InstanceType": "ml.c5.2xlarge",
        "InstanceCount": 2,
        "CapacityRequirements: { "Spot": {} }
        "LifeCycleConfig": {
        "SourceS3Uri": "s3://'$BUCKET_NAME'",
        "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET1'"]
         }
    }]' 
    --vpc-config '{
        "SecurityGroupIds": ["'$SECURITY_GROUP'"],
        "Subnets": ["'$SUBNET'"] 
    }'
```

**Aggiorna cluster (Spot \$1 On-Demand)**

```
aws sagemaker update-cluster \
   --cluster-name "my-cluster" \
   --instance-groups '[{
        "InstanceGroupName": "auto-spot-c5-x-az3",
        "InstanceType": "ml.c5.xlarge",
        "InstanceCount": 2,
        "CapacityRequirements: { "Spot": {} },
        "LifeCycleConfig": {
            "SourceS3Uri": "s3://'$BUCKET_NAME'",
            "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET3'"]
        }
    },
    {
        "InstanceGroupName": "auto-spot-c5-2x-az2",
        "InstanceType": "ml.c5.2xlarge",
        "InstanceCount": 2,
        "CapacityRequirements: { "Spot": {} }
        "LifeCycleConfig": {
        "SourceS3Uri": "s3://'$BUCKET_NAME'",
        "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET2'"]
         }
    },
    {   
        "InstanceGroupName": "auto-ondemand-c5-2x-az1",
        "InstanceType": "ml.c5.2xlarge",
        "InstanceCount": 2,
        "LifeCycleConfig": {
        "SourceS3Uri": "s3://'$BUCKET_NAME'",
        "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET1'"]
         }
    }]'
```

`CapacityRequirements`non può essere modificato una volta creato un gruppo di istanze.

**Descrizione del cluster**

```
aws sagemaker describe-cluster --cluster-name $HP_CLUSTER_NAME --region us-west-2
```

```
## Sample Response
{
    "ClusterName": "my-cluster",
    "InstanceGroups": [
        {
            "InstanceGroupName": "ml.c5.2xlarge",
            "InstanceType": "ml.c5.xlarge",
            "InstanceCount": 5,
            "CurrentCount": 3,
            "CapacityRequirements: { "Spot": {} },
            "ExecutionRole": "arn:aws:iam::account:role/SageMakerExecutionRole",
            "InstanceStorageConfigs": [...],
            "OverrideVpcConfig": {...}
        }
        // Other IGs
    ]
}
```

**DescribeClusterNode**

```
aws sagemaker describe-cluster-node --cluster-name $HP_CLUSTER_NAME --region us-west-2
```

```
## Sample Response
{
  "NodeDetails": {
    "InstanceId": "i-1234567890abcdef1",
    "InstanceGroupName": "ml.c5.2xlarge",
    "CapacityType": "Spot",
    "InstanceStatus": {...}
  }
}
```

### Utilizzo della console
<a name="sagemaker-hyperpod-spot-instance-getstart-console"></a>

#### Crea e configura un SageMaker HyperPod cluster
<a name="sagemaker-hyperpod-spot-instance-getstart-console-create"></a>

Per iniziare, avvia e configura il cluster SageMaker HyperPod EKS e verifica che la modalità di provisioning continuo sia abilitata durante la creazione del cluster. Completa questa procedura:

1. Sulla console SageMaker AI, scegli HyperPod i cluster nel pannello di navigazione.

1. Scegli Crea HyperPod cluster e Orchestrated on Amazon EKS.

1. Per le opzioni di configurazione, seleziona Configurazione personalizzata.

1. In Nome, immetti un nome.

1. Per Ripristino dell'istanza, seleziona Automatico.

1. Per la modalità di provisioning dell'istanza, seleziona Usa il provisioning continuo.

1. CapacityType : Seleziona Spot 

1. Seleziona Invia.

Schermata della console: 

![\[Un'immagine contenente il flusso del cluster di creazione.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/Screenshot-create-cluster.png)


Questa configurazione crea la configurazione necessaria come cloud privato virtuale (VPC), sottoreti, gruppi di sicurezza e cluster EKS e installa gli operatori nel cluster. Puoi anche fornire risorse esistenti come un cluster EKS se desideri utilizzare un cluster esistente invece di crearne uno nuovo. Questa configurazione richiederà circa 20 minuti.

#### Aggiungere un nuovo gruppo di istanze Spot allo stesso cluster
<a name="sagemaker-hyperpod-spot-instance-getstart-console-add"></a>

Per aggiungere uno Spot IG al tuo cluster HyperPod EKS esistente. Completa questa procedura:

1. Sulla console SageMaker AI, scegli HyperPod i cluster nel riquadro di navigazione.

1. Seleziona un HyperPod cluster esistente con Amazon EKS Orchestration (assicurati che il provisioning continuo sia abilitato).

1. Fare clic su Edit (Modifica).

1. Nella pagina Modifica cluster, fai clic su Crea gruppo di istanze.

1. Seleziona il tipo di capacità: istanza Spot nella configurazione del gruppo di istanze.

1. Fai clic su Crea gruppo di istanze. 

1. Fare clic su Submit (Invia).

**Schermata della console:**

![\[Un'immagine contenente il flusso di creazione del gruppo di istanze.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/Screenshot-instance-group.png)


### Usando CloudFormation
<a name="sagemaker-hyperpod-spot-instance-getstart-cfn"></a>

```
Resources:
  TestCluster:
    Type: AWS::SageMaker::Cluster
    Properties:
      ClusterName: "SampleCluster"
      InstanceGroups:
        - InstanceGroupName: group1
          InstanceType: ml.c5.2xlarge
          InstanceCount: 1
          LifeCycleConfig:
            SourceS3Uri: "s3://'$BUCKET_NAME'"
            OnCreate: "on_create_noop.sh"
          ExecutionRole: "'$EXECUTION_ROLE'",
          ThreadsPerCore: 1
          CapacityRequirements:
            Spot: {}
      VpcConfig:
        Subnets:
          - "'$SUBNET1'"
        SecurityGroupIds:
          - "'$SECURITY_GROUP'"
      Orchestrator:
        Eks:
          ClusterArn:
            '$EKS_CLUSTER_ARN'
      NodeProvisioningMode: "Continuous"
      NodeRecovery: "Automatic"
```

Vedi [https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster- getting-started-eks-console - create-cluster-cfn .html](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-eks-console-create-cluster-cfn.html) per i dettagli.

### Autoscaling basato su Karpenter
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter"></a>

#### Crea il ruolo del cluster
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-role"></a>

**Passaggio 1: accedi alla console IAM**

1. Vai al servizio **Console di gestione AWS**→ **IAM**

1. Fai clic su **Ruoli** nella barra laterale sinistra

1. Fai clic su **Crea ruolo**

**Fase 2: Impostazione della politica di fiducia**

1. Seleziona la politica di fiducia personalizzata (anziché AWS il servizio)

1. Sostituisci il JSON predefinito con questa politica di fiducia:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "hyperpod.sagemaker.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

fai clic su Avanti

**Passaggio 3: creazione di una politica di autorizzazioni personalizzata**

Poiché si tratta di SageMaker autorizzazioni specifiche, dovrai creare una politica personalizzata:

1. Fai clic su **Crea politica** (apre una nuova scheda)

1. Fai clic sulla **scheda JSON**

1. Inserisci questa policy:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "sagemaker:BatchAddClusterNodes",
           "sagemaker:BatchDeleteClusterNodes"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

1. **Fai clic su Avanti**

1. Dategli un nome come `SageMakerHyperPodRolePolicy`

1. Fai clic su **Crea politica**

**Fase 4: Allega la policy al ruolo**

1. Torna alla scheda di creazione del ruolo

1. Aggiorna l'elenco delle politiche

1. Cerca e seleziona la politica appena creata

1. Fai clic su **Avanti**

**Fase 5: Assegna un nome e crea un ruolo**

1. Inserisci il nome di un ruolo (ad esempio,`SageMakerHyperPodRole`)

1. Se lo desideri, aggiungi una descrizione

1. Rivedi la politica di fiducia e le autorizzazioni

1. Fai clic su **Crea ruolo**

#### Verifica
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-verify"></a>

Dopo la creazione, puoi effettuare la verifica tramite:
+ Se si seleziona la scheda Relazioni di fiducia, viene visualizzato il servizio hyperpod
+ La selezione della scheda Autorizzazioni mostra la tua politica personalizzata
+ Il ruolo ARN sarà disponibile per l'uso con HyperPod

Il formato ARN del ruolo sarà:

```
 arn:aws:iam::YOUR-ACCOUNT-ID:role/SageMakerHyperPodRole
```

#### Crea cluster con AutoScaling:
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-create-cluster"></a>

Per una migliore disponibilità, crea IGs in più sottoreti AZs configurando le sottoreti. Puoi anche includere IGs onDemand come fallback.

```
aws sagemaker create-cluster \
    --cluster-name clusterNameHere \
    --orchestrator 'Eks={ClusterArn='$EKS_CLUSTER_ARN'}' \
    --node-provisioning-mode "Continuous" \
    --cluster-role 'arn:aws:iam::YOUR-ACCOUNT-ID:role/SageMakerHyperPodRole' \
    --instance-groups '[{
        "InstanceGroupName": "auto-spot-c5-2x-az1",
        "InstanceType": "ml.c5.2xlarge",
        "InstanceCount": 0, // For Auto scaling keep instance count as 0
        "CapacityRequirements: { "Spot": {} }
        "LifeCycleConfig": {
        "SourceS3Uri": "s3://'$BUCKET_NAME'",
        "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET1'"]
         }
    }]' 
--vpc-config '{
    "SecurityGroupIds": ["'$SECURITY_GROUP'"],
    "Subnets": ["'$SUBNET'"] 
}'
--auto-scaling ' {
    "Mode": "Enable",
    "AutoScalerType": "Karpenter"
}'
```

#### Aggiorna cluster (Spot \$1 On-Demand)
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-update-cluster"></a>

```
aws sagemaker update-cluster \
   --cluster-name "my-cluster" \
   --instance-groups '[{
        "InstanceGroupName": "auto-spot-c5-x-az3",
        "InstanceType": "ml.c5.xlarge",
        "InstanceCount": 2,
        "CapacityRequirements: { "Spot": {} },
        "LifeCycleConfig": {
            "SourceS3Uri": "s3://'$BUCKET_NAME'",
            "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET3'"]
        }
    },
    {
        "InstanceGroupName": "auto-spot-c5-2x-az2",
        "InstanceType": "ml.c5.2xlarge",
        "InstanceCount": 2,
        "CapacityRequirements: { "Spot": {} }
        "LifeCycleConfig": {
        "SourceS3Uri": "s3://'$BUCKET_NAME'",
        "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET2'"]
         }
    },
    {   
        "InstanceGroupName": "auto-ondemand-c5-2x-az1",
        "InstanceType": "ml.c5.2xlarge",
        "InstanceCount": 2,
        "LifeCycleConfig": {
        "SourceS3Uri": "s3://'$BUCKET_NAME'",
        "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET1'"]
         }
    }]'
```

#### Crea HyperpodNodeClass
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-create-class"></a>

`HyperpodNodeClass`è una risorsa personalizzata che esegue il mapping a gruppi di istanze precreati SageMaker HyperPod, definendo i vincoli relativi ai tipi di istanze e alle zone di disponibilità supportati per le decisioni di scalabilità automatica di Karpenter. Per `HyperpodNodeClass` utilizzarla, è sufficiente specificare i nomi `InstanceGroups` del SageMaker HyperPod cluster che si desidera utilizzare come origine per le risorse di AWS calcolo da utilizzare per scalare i pod del proprio. NodePools Il `HyperpodNodeClass` nome che usi qui viene riportato nella sezione successiva NodePool in cui fai riferimento ad esso. Questo indica da NodePool cosa `HyperpodNodeClass` attingere le risorse. Per creare un`HyperpodNodeClass`, completa i seguenti passaggi:

1. Create un file YAML (ad esempio, nodeclass.yaml) simile al codice seguente. Aggiungi `InstanceGroup` i nomi che hai usato al momento della creazione del cluster. SageMaker HyperPod Puoi anche aggiungere nuovi gruppi di istanze a un cluster SageMaker HyperPod EKS esistente.

1. Fai riferimento al `HyperPodNodeClass` nome nella tua NodePool configurazione.

Di seguito è riportato un esempio`HyperpodNodeClass`:

```
apiVersion: karpenter.sagemaker.amazonaws.com/v1
kind: HyperpodNodeClass
metadata:
  name: multiazg6
spec:
  instanceGroups:
    # name of InstanceGroup in HyperPod cluster. InstanceGroup needs to pre-created
    # before this step can be completed.
    # MaxItems: 10
    - auto-spot-c5-2x-az1
    - auto-spot-c5-2x-az2
    - auto-spot-c5-x-az3
    - auto-ondemand-c5-2x-az1
```

Karpenter dà la priorità ai gruppi di istanze Spot rispetto alle istanze On-Demand, utilizzando On-Demand come fallback quando specificato nella configurazione. La selezione delle istanze viene ordinata in base ai punteggi di posizionamento Spot di EC2 associati alla zona di disponibilità di ciascuna sottorete.

**Applica la configurazione al tuo cluster EKS utilizzando: `kubectl`**

```
kubectl apply -f nodeclass.yaml
```

Il HyperPod cluster deve essere AutoScaling abilitato e lo AutoScaling stato deve cambiare `InService` prima di `HyperpodNodeClass` poter essere applicato. Mostra anche le capacità dei gruppi di istanze come Spot o OnDemand. Per ulteriori informazioni e considerazioni chiave, consulta Scaling [automatico](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-autoscaling.html) su EKS. SageMaker HyperPod 

**Ad esempio**

```
apiVersion: karpenter.sagemaker.amazonaws.com/v1
kind: HyperpodNodeClass
metadata:
  creationTimestamp: "2025-11-30T03:25:04Z"
  name: multiazc6
  uid: ef5609be-15dd-4700-89ea-a3370e023690
spec:
  instanceGroups:
  -spot1
status:
  conditions:
  // true when all IGs in the spec are present in SageMaker cluster, false otherwise
  - lastTransitionTime: "2025-11-20T03:25:04Z"
    message: ""
    observedGeneration: 3
    reason: InstanceGroupReady
    status: "True"
    type: InstanceGroupReady
  // true if subnets of IGs are discoverable, false otherwise
  - lastTransitionTime: "2025-11-20T03:25:04Z"
    message: ""
    observedGeneration: 3
    reason: SubnetsReady
    status: "True"
    type: SubnetsReady
  // true when all dependent resources are Ready [InstanceGroup, Subnets]
  - lastTransitionTime: "2025-11-30T05:47:55Z"
    message: ""
    observedGeneration: 3
    reason: Ready
    status: "True"
    type: Ready
  instanceGroups:
  - instanceTypes:
    - ml.c5.2xlarge
    name:auto-spot-c5-2x-az2
    subnets:
    - id: subnet-03ecc649db2ff20d2
      zone: us-west-2a
      zoneId: usw2-az2
  - capacities: {"Spot": {}}
```

#### Crea NodePool
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-create-nodepool"></a>

 NodePool Imposta i vincoli sui nodi che possono essere creati da Karpenter e sui pod che possono essere eseguiti su quei nodi. NodePool Possono essere impostati per eseguire varie azioni, come: 
+ Definisci etichette e colorazioni per limitare i pod che possono essere eseguiti sui nodi creati da Karpenter
+ Limita la creazione di nodi a determinate zone, tipi di istanze e architetture di computer e così via

Per ulteriori informazioni su NodePool, fare riferimento a. [NodePools](https://karpenter.sh/docs/concepts/nodepools/) SageMaker HyperPod managed Karpenter supporta una serie limitata di requisiti noti per Kubernetes e Karpenter, che spieghiamo in questo post.

Per creare un, completa i seguenti passaggi: NodePool

Crea un file YAML denominato `nodepool.yaml` con la configurazione desiderata NodePool. Il codice seguente è una configurazione di esempio per creare un esempio. NodePool Specifichiamo NodePool di includere il nostro tipo di istanza SageMaker ml.g6.xlarge e lo specifichiamo inoltre per una zona. Per ulteriori personalizzazioni, fare riferimento a. [NodePools](https://karpenter.sh/docs/concepts/nodepools/)

```
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
 name: gpunodepool
spec:
 template:
   spec:
     nodeClassRef:
      group: karpenter.sagemaker.amazonaws.com
      kind: HyperpodNodeClass
      name: multiazg6
     expireAfter: Never
     requirements:
        - key: node.kubernetes.io/instance-type
          operator: Exists
        - key: "node.kubernetes.io/instance-type" // Optional otherwise Karpenter will decide based on Job config resource requirements
          operator: In
          values: ["ml.c5.2xlarge"]
        - key: "topology.kubernetes.io/zone"
          operator: In
          values: ["us-west-2a"]
```

**Suggerimento**: in caso di interruzione di EC2 Spot, Hyperpod contamina il nodo per innescare lo sfratto del pod. **Il processo di **consolidamento** di Karpenter rispetta i budget destinati alle interruzioni dei pod ed esegue la normale rimozione di Kubernetes, ma se si imposta ConsolidateAfter: 0, il consolidamento può avvenire immediatamente, lasciando pochissimo tempo per lo sfratto graduale dei pod.** Impostalo su un valore diverso da zero per un massimo di 2 minuti per consentire lo sfratto graduale dei pod per qualsiasi esigenza di checkpoint.

**Applicalo NodePool al tuo cluster:**

```
kubectl apply -f nodepool.yaml
```

**Monitora lo NodePool stato per assicurarti che la condizione Ready nello stato sia impostata su True:**

```
kubectl get nodepool gpunodepool -oyaml
```

Questo esempio mostra come utilizzare a per specificare l'hardware (tipo di istanza) e il posizionamento (zona di disponibilità) per i pod. NodePool 

**Avvia un carico di lavoro semplice**

Il seguente carico di lavoro esegue una distribuzione Kubernetes in cui i pod in fase di implementazione richiedono 1 CPU e 256 MB di memoria per replica, per pod. I pod non sono ancora stati attivati.

```
kubectl apply -f https://raw.githubusercontent.com/aws/karpenter-provider-aws/refs/heads/main/examples/workloads/inflate.yaml
```

Quando lo applichiamo, possiamo vedere una distribuzione e l'avvio di un singolo nodo nel nostro cluster, come mostrato nella schermata seguente.

**Per scalare questo componente, usa il seguente comando:**

```
kubectl scale deployment inflate --replicas 10
```

Vedi [https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker- hyperpod-eks-autoscaling .html](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-autoscaling.html) per maggiori dettagli.

### Gestione dell'interruzione dei nodi
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-interrupt"></a>

Le istanze Spot possono essere recuperate in qualsiasi momento. Nella maggior parte dei casi, EC2 fornisce un avviso di interruzione di 2 minuti nel migliore dei casi, ma questo avviso non è garantito. In alcune situazioni, EC2 può chiudere immediatamente le istanze Spot senza alcun preavviso. HyperPod gestisce automaticamente entrambi gli scenari:
+ Con un preavviso di 2 minuti: ritenta automaticamente lo sgombero graduale dei pod e la sostituzione controllata della capacità non appena la capacità Spot diventa disponibile.
+ Senza preavviso (cessazione immediata): ritenta automaticamente la sostituzione del nodo (quando la capacità Spot diventa disponibile) senza procedere allo sfratto 

**Come funziona**

Quando EC2 invia un avviso di interruzione Spot, automaticamente: HyperPod 

1. Rileva il segnale di interruzione 

1. Influisce sul nodo: impedisce la pianificazione di nuovi pod sull'istanza interrotta

1. Rimuove con eleganza i pod: dà ai pod in esecuzione il tempo di completare o controllare il loro lavoro (nel rispetto di Kubernetes) `terminationGracePeriodSeconds`

1. Sostituisce la capacità: tenta automaticamente di fornire le istanze sostitutive (Spot o On-Demand in base alla disponibilità). 

   La sostituzione della capacità funziona fornendo automaticamente le istanze sostitutive. Quando la capacità non è immediatamente disponibile, il sistema continua a controllare fino a quando le risorse non diventano accessibili. Nel caso di gruppi di istanze senza scalabilità automatica, HyperPod tenta di scalare all'interno dello stesso gruppo di istanze fino a quando non diventa disponibile la capacità richiesta. Per i gruppi di istanze basati su Karpenter, Karpenter implementa un meccanismo di fallback su altri gruppi di istanze configurati nella classe Node quando il gruppo primario non è in grado di soddisfare la domanda. Inoltre, puoi configurare On-Demand come opzione di fallback, permettendo a Karpenter di passare automaticamente alle istanze On-Demand se non riesce a scalare correttamente i gruppi di istanze Spot.

1. Riprogramma i carichi di lavoro: Kubernetes riprogramma automaticamente i pod eliminati su nodi integri

### Individuazione dell'utilizzo e della fattura
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-bill"></a>

Per verificare l'utilizzo e la fatturazione delle istanze Spot su, HyperPod puoi utilizzare la console AWS Cost Explorer. Vai a Billing and Cost Management > Fattura

![\[Un'immagine contenente informazioni sulla regione di costo.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/Screenshot-cost-region.png)


**Per esplorare l'utilizzo e la fatturazione su Console, vai a Billing and Cost Management > Cost Explorer**

![\[Un'immagine contenente costi e utilizzo.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/Screenshot-cost-usage.png)


# Utilizzo UltraServers in Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-ultraserver"></a>

SageMaker HyperPod il supporto per Ultraservers offre funzionalità di elaborazione GPU ad alte prestazioni per carichi di lavoro di intelligenza artificiale e apprendimento automatico. Basati su NVIDIA GB200 e sull' NVL72 architettura, questi Ultraserver forniscono NVLink connettività su 18 GB200 istanze in una configurazione dual-rack, per un totale di 72 B200. GPUs Questa NVLink struttura consente ai carichi di lavoro di utilizzare comunicazioni GPU che aumentano la capacità utilizzabile della GPU e la memoria indirizzabile oltre quanto possibile con le istanze discrete, supportando modelli di intelligenza artificiale più complessi e che richiedono molte risorse. La NVLink connettività è abilitata dalla tecnologia NVIDIA IMEX, che gestisce la configurazione di basso livello per connessioni sicure in struttura di GPU tra istanze all'interno dello stesso rack.

HyperPod semplifica l'implementazione e la gestione di questi cluster di GPU attraverso il riconoscimento intelligente della topologia e la configurazione automatizzata. La piattaforma rileva ed etichetta automaticamente i nodi con la loro posizione fisica e le informazioni sui blocchi di capacità, il che supporta la pianificazione basata sulla topologia per i carichi di lavoro distribuiti. HyperPod astrae i complessi requisiti di configurazione IMEX, consentendoti di concentrarti sull'implementazione dei carichi di lavoro piuttosto che sulla configurazione dell'infrastruttura GPU di basso livello. Puoi scegliere opzioni di implementazione flessibili, inclusi nodi autogestiti e gruppi di nodi gestiti da EKS. Amazon EKS offre soluzioni ottimizzate AMIs che includono driver NVIDIA preconfigurati, Fabric Manager, driver IMEX e tutto il software di sistema necessario per un funzionamento senza interruzioni.

L'integrazione include funzionalità di posizionamento dei pod che garantiscono una pianificazione ottimale dei carichi di lavoro distribuiti tra i NVL72 domini utilizzando etichette topologiche Kubernetes standard. Le funzionalità integrate di monitoraggio e ripristino automatico forniscono supporto operativo grazie all’agente di integrità AMI che rileva gli errori della GPU dai log del kernel e può correggere automaticamente i problemi o sostituire i nodi difettosi nei gruppi di nodi gestiti. Questa combinazione di scalabilità GPU, posizionamento intelligente dei carichi di lavoro e operazioni automatizzate ti aiuta a concentrarti sulle AI/ML innovazioni anziché sulla complessità dell'infrastruttura, ottenendo al contempo le massime prestazioni dagli investimenti in GPU.

Per eseguire la configurazione UltraServers con il HyperPod cluster, segui i seguenti passaggi:

1. Crea un cluster [basato su EKS HyperPod ](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-create-cluster.html). Quando scegli un gruppo di istanze, assicurati di scegliere un. UltraServer 

1. Dopo aver creato il cluster, utilizza i comandi seguenti per installare i plugin operativi:

   Plugin per dispositivi NVIDIA v0.17.2

   ```
   kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.17.2/deployments/static/nvidia-device-plugin.yml
   ```

   FD DaemonSet v0.17.3

   ```
   kubectl apply -k "https://github.com/kubernetes-sigs/node-feature-discovery/deployment/overlays/default?ref=v0.17.3"
   ```

   Rilevamento delle funzionalità della GPU

   ```
   kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.17.2/deployments/static/gpu-feature-discovery-daemonset.yaml
   ```

Ora puoi eseguire processi. Nell’esempio seguente viene illustrato come creare un dominio, configurare un dominio IMEX e abilitare l’allocazione dei canali. Queste fasi consentono inoltre di creare un pod per allocare un canale per la comunicazione NCCL.

1. Crea un file con le specifiche delle risorse da utilizzare con Kubectl.

   ```
   cat <<EOF > imex-channel-injection.yaml
   ---
   apiVersion: resource.nvidia.com/v1beta1
   kind: ComputeDomain
   metadata:
     name: imex-channel-injection
   spec:
     numNodes: 1
     channel:
       resourceClaimTemplate:
         name: imex-channel-0
   ---
   apiVersion: v1
   kind: Pod
   metadata:
     name: imex-channel-injection
   spec:
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: nvidia.com/gpu.clique
               operator: Exists
             - key: topology.k8s.aws/ultraserver-id
               operator: In
               values: 
               - <UltraServer-ID>
     containers:
     - name: ctr
       image: ubuntu:22.04
       command: ["bash", "-c"]
       args: ["ls -la /dev/nvidia-caps-imex-channels; trap 'exit 0' TERM; sleep 9999 & wait"]
       resources:
         claims:
         - name: imex-channel-0
     resourceClaims:
     - name: imex-channel-0
       resourceClaimTemplateName: imex-channel-0
   EOF
   ```

1. Applica la configurazione che hai creato.

   ```
   kubectl apply -f imex-channel-injection.yaml
   ```

1. Esegui i comandi `get pods` per verificare che il pod sia stato creato.

   ```
   kubectl get pods
   kubectl get pods -n nvidia-dra-driver-gpu -l resource.nvidia.com/computeDomain
   ```

1. Puoi anche controllare i log del pod per vedere se ha allocato un canale di comunicazione.

   ```
   kubectl logs imex-channel-injection
   ```

   ```
   total 0
   drwxr-xr-x 2 root root     60 Feb 19 10:43 .
   drwxr-xr-x 6 root root    380 Feb 19 10:43 ..
   crw-rw-rw- 1 root root 507, 0 Feb 19 10:43 channel0
   ```

1. Puoi anche controllare i log per verificare che la configurazione IMEX automatizzata sia in esecuzione con un canale allocato.

   ```
   kubectl logs -n nvidia-dra-driver-gpu -l resource.nvidia.com/computeDomain --tail=-1
   /etc/nvidia-imex/nodes_config.cfg:
   ```

   ```
   IMEX Log initializing at: 8/8/2025 14:23:12.081
   [Aug 8 2025 14:23:12] [INFO] [tid 39] IMEX version 570.124.06 is running with the following configuration options
   
   [Aug 8 2025 14:23:12] [INFO] [tid 39] Logging level = 4
   
   [Aug 8 2025 14:23:12] [INFO] [tid 39] Logging file name/path = /var/log/nvidia-imex.log
   
   [Aug 8 2025 14:23:12] [INFO] [tid 39] Append to log file = 0
   
   [Aug 8 2025 14:23:12] [INFO] [tid 39] Max Log file size = 1024 (MBs)
   
   [Aug 8 2025 14:23:12] [INFO] [tid 39] Use Syslog file = 0
   
   [Aug 8 2025 14:23:12] [INFO] [tid 39] IMEX Library communication bind interface =
   
   [JAug 8 2025 14:23:12] [INFO] [tid 39] IMEX library communication bind port = 50000
   
   [Aug 8 2025 14:23:12] [INFO] [tid 39] Identified this node as ID 0, using bind IP of '10.115.131.8', and network interface of enP5p9s0
   [Aug 8 2025 14:23:120] [INFO] [tid 39] nvidia-imex persistence file /var/run/nvidia-imex/persist.dat does not exist.  Assuming no previous importers.
   [Aug 8 2025 14:23:12] [INFO] [tid 39] NvGpu Library version matched with GPU Driver version
   [Aug 8 2025 14:23:12] [INFO] [tid 63] Started processing of incoming messages.
   [Aug 8 2025 14:23:12] [INFO] [tid 64] Started processing of incoming messages.
   [Aug 8 2025 14:23:12] [INFO] [tid 65] Started processing of incoming messages.
   [Aug 8 2025 14:23:12] [INFO] [tid 39] Creating gRPC channels to all peers (nPeers = 1).
   [Aug 8 2025 14:23:12] [INFO] [tid 66] Started processing of incoming messages.
   [Aug 8 2025 14:23:12] [INFO] [tid 39] IMEX_WAIT_FOR_QUORUM != FULL, continuing initialization without waiting for connections to all nodes.
   [Aug 8 2025 14:23:12] [INFO] [tid 67] Connection established to node 0 with ip address 10.115.131.8. Number of times connected: 1
   [Aug 8 2025 14:23:12] [INFO] [tid 39] GPU event successfully subscribed
   ```

1. Dopo aver verificato tutto, elimina il carico di lavoro e rimuovi la configurazione.

   ```
   kubectl delete -f imex-channel-injection.yaml
   ```

# IDEs e notebook
<a name="sagemaker-hyperpod-eks-cluster-ide"></a>

Amazon SageMaker sta introducendo una nuova funzionalità per i cluster SageMaker HyperPod EKS, che consente agli sviluppatori di intelligenza artificiale di eseguire i propri carichi di lavoro interattivi di machine learning direttamente sul cluster HyperPod EKS. Questa funzionalità introduce un nuovo componente aggiuntivo chiamato Amazon SageMaker Spaces, che consente agli sviluppatori di intelligenza artificiale di creare e gestire ambienti autonomi per l'esecuzione di notebook.

Gli amministratori possono utilizzare SageMaker HyperPod Console per installare il componente aggiuntivo sul proprio cluster e definire configurazioni di spazio predefinite come immagini, risorse di elaborazione, archiviazione locale per le impostazioni dei notebook (spazio di archiviazione aggiuntivo da allegare agli spazi di sviluppo), file system e script di inizializzazione. Sarà disponibile un'opzione di installazione con un clic con impostazioni predefinite per semplificare l'esperienza di amministrazione. Gli amministratori possono utilizzare SageMaker HyperPod Console, kubectl o HyperPod CLI per installare l'operatore, creare impostazioni predefinite e gestire tutti gli spazi in una posizione centralizzata.

Gli sviluppatori di intelligenza artificiale possono utilizzare la HyperPod CLI per creare, aggiornare ed eliminare spazi di sviluppo. Hanno la flessibilità di utilizzare le configurazioni predefinite fornite dagli amministratori o personalizzare le impostazioni. Gli sviluppatori di intelligenza artificiale possono accedere ai propri spazi HyperPod utilizzando il codice VS locale IDEs, and/or il browser Web che ospita il proprio JupyterLab CodeEditor IDE su un dominio DNS personalizzato configurato dai propri amministratori. Possono anche utilizzare la funzionalità di port forwarding di Kubernetes per accedere agli spazi nei loro browser web.

## Admin
<a name="admin-cx"></a>
+ [Impostazione delle autorizzazioni](permission-setup.md)
+ [Installa il componente aggiuntivo SageMaker AI Spaces](operator-install.md)
+ [Personalizza il componente aggiuntivo](customization.md)
+ [Aggiungere utenti e configurare account di servizio](add-user.md)
+ [Limits](ds-limits.md)
+ [Gestione delle attività per Interactive Spaces su HyperPod](task-governance.md)
+ [Osservabilità](observability.md)

## Data Scientist
<a name="data-scientist-cx"></a>
+ [Crea e gestisci spazi](create-manage-spaces.md)
+ [Accesso tramite browser Web](browser-access.md)
+ [Accesso remoto a SageMaker Spaces](vscode-access.md)

## SageMaker Prezzi delle istanze Spaces Managed
<a name="spaces-managed-instance-pricing"></a>

Il componente SageMaker aggiunto/operatore di Spaces non comporta alcun costo aggiuntivo per il cliente. Tuttavia, per supportare il SSH-over-SSM tunneling richiesto per la funzionalità di *connessione IDE remota*, Spaces utilizza un'istanza gestita. SageMaker AWS Questa istanza è registrata come istanza avanzata on-premise in SSM e pertanto viene fatturata per ora di elaborazione.

[Consulta la tariffa «On-Premises Instance Management» nella pagina dei prezzi di AWS Systems Manager: AWS Systems Manager Pricing: pricing/ https://aws.amazon.com/systems-manager/](https://aws.amazon.com/systems-manager/pricing.com)

# Impostazione delle autorizzazioni
<a name="permission-setup"></a>

## Ruoli richiesti per Add-on e relative dipendenze
<a name="permission-setup-addon"></a>

### Ruoli IAM richiesti per SageMaker Spaces on SageMaker HyperPod
<a name="role-hyperpod"></a>

Quando si abilitano le funzionalità di **SageMaker Spaces (alias SageMaker ** **IDE/Notebooks)** su un cluster SageMaker HyperPod (EKS), è necessario creare e assegnare diversi ruoli IAM. Questi ruoli supportano l'accesso sicuro, il routing, le sessioni IDE remote e il provisioning dello storage EBS. La tabella seguente riassume i quattro ruoli e quando sono richiesti.

### Tabella riassuntiva dei ruoli
<a name="role-table"></a>


| Ruolo IAM | Obbligatorio? | Scopo | Chi lo usa? | Personalizzazione consentita dalla SageMaker console? | 
| --- | --- | --- | --- | --- | 
|  Ruolo di esecuzione del componente aggiuntivo Spaces  |  Sempre richiesto  |  Consente al controller Spaces di gestire Spaces, generare sessioni SSM predefinite URLs e gestire sessioni SSM  |  Pod controller aggiuntivo (privilegiato)  |  ✔ Sì  | 
|  Ruolo del router all'interno del cluster  |  Necessario per l'accesso WebUI  |  Consente al pod del router di eseguire operazioni KMS per la firma JWT (autenticazione WebUI)  |  Pod router interno al cluster (privilegiato)  |  ✔ Sì  | 
|  Ruolo dell'istanza gestita SSM  |  Necessario per l'accesso remoto all'IDE  |  Utilizzato da SSM Agent Sidecar per sessioni IDE SSH-over-SSM remote  |  SSM Agent in Space IDE Pods (non un pod aggiuntivo)  |  ✔ Sì  | 
|  Componente aggiuntivo IAM Role for EBS CSI Driver  |  Sempre richiesto  |  Consente a EBS CSI Driver di eseguire create/attach/modify volumi per i carichi di lavoro di Spaces  |  Componente aggiuntivo EBS CSI Driver  |  Creato automaticamente  | 
|  Componente aggiuntivo IAM Role for External DNS  |  Necessario per l'accesso WebUI  |  Garantisce che agli endpoint Space e ai componenti del cluster possano essere assegnati automaticamente nomi DNS nelle zone ospitate Route 53 del cliente.  |  Componente aggiuntivo DNS esterno  |  Creato automaticamente  | 

### 1. Ruolo di esecuzione del componente aggiuntivo Spaces (obbligatorio)
<a name="add-n-execution-role"></a>

Il ruolo di esecuzione del componente aggiuntivo Spaces è sempre richiesto perché viene utilizzato dal pod controller del componente aggiuntivo SageMaker Spaces, un componente amministrativo installato tramite il componente aggiuntivo EKS. Questo ruolo consente al controller di gestire gli spazi, fornire risorse, interagire con SSM e generare predefiniti URLs per l'accesso remoto all'IDE e al WebUI. Supporta anche l'accesso KMS utilizzato per la firma delle richieste per l'autenticazione delle richieste https WebUI. Questo ruolo può essere creato automaticamente quando il componente aggiuntivo SageMaker Spaces viene installato tramite la console. SageMaker Per la creazione manuale, AWS fornisce la policy `AmazonSageMakerSpacesControllerPolicy` gestita.

**Politica di fiducia di riferimento**

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "pods.eks.amazonaws.com"
      },
      "Action": [
          "sts:AssumeRole",
          "sts:TagSession"
      ],
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "{{accountId}}",
          "aws:SourceArn": "arn:aws:eks:{{region}}:{{accountId}}:cluster/{{eksClusterName}}"
        }
      }
    }
  ]
}
```

### 2. Ruolo In-Cluster Router (richiesto per l'autenticazione WebUI)
<a name="in-cluster-role"></a>

Il ruolo In-Cluster Router viene utilizzato dal **router pod**, un componente privilegiato che autentica le sessioni WebUI di Spaces. Il router utilizza una chiave KMS per creare e firmare token JWT che autorizzano l'accesso degli utenti a spazi specifici. Questo ruolo consente al router pod di generare chiavi dati e decrittografarle. Analogamente al ruolo del controller, impone la sicurezza utilizzando restrizioni di ambito basate su tag e cluster. Questo ruolo può essere generato automaticamente quando il componente aggiuntivo Spaces viene installato tramite la AWS SageMaker console, ma i clienti possono crearlo manualmente.

**Politica di fiducia di riferimento**

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "pods.eks.amazonaws.com"
      },
      "Action": [
          "sts:AssumeRole",
          "sts:TagSession"
      ],
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "{{accountId}}",
          "aws:SourceArn": "arn:aws:eks:{{region}}:{{accountId}}:cluster/{{eksClusterName}}"
        }
      }
    }
  ]
}
```

**Politica di autorizzazione di riferimento**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "KMSDescribeKey",
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:{{region}}:{{accountId}}:key/{{kmsKeyId}}"
        },
        {
            "Sid": "KMSKeyOperations",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:{{region}}:{{accountId}}:key/{{kmsKeyId}}",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:sagemaker:component": "amazon-sagemaker-spaces",
                    "kms:EncryptionContext:sagemaker:eks-cluster-arn": "${aws:PrincipalTag/eks-cluster-arn}"
                }
            }
        }
    ]
}
```

### 3. Ruolo dell'istanza gestita SSM (richiesto per l'accesso IDE remoto)
<a name="ssm-role"></a>

Il ruolo dell'istanza gestita SSM viene passato al momento della registrazione dell'istanza gestita SSM per abilitare l'accesso IDE remoto. Questo ruolo consente all'agente SSM di registrare il pod come istanza gestita SSM e utilizzare i canali SSM Session Manager per la connettività IDE remota (SSH-over-SSM). Può essere creato automaticamente quando si utilizza la console. AWS SageMaker Per le distribuzioni manuali, i clienti devono creare questo ruolo e fornirlo al componente aggiuntivo Spaces. Il controller pod di per sé non assume questo ruolo, ma lo fornisce solo durante la chiamata. `ssm:CreateActivation`

**Politica di fiducia di riferimento**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "ssm.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "{{account}}"
                },
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:ssm:{{region}}:{{account}}:*"
                }
            }
        }
    ]
}
```

**Politica sulle autorizzazioni di riferimento**

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssm:DescribeAssociation"
      ],
      "Resource": [
        "arn:aws:ssm:{{region}}:{{account}}:association/*",
        "arn:aws:ssm:{{region}}:{{account}}:document/*",
        "arn:aws:ec2:{{region}}:{{account}}:instance/*",
        "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ssm:GetDocument",
        "ssm:DescribeDocument"
      ],
      "Resource": "arn:aws:ssm:{{region}}:{{account}}:document/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ssm:GetParameter",
        "ssm:GetParameters"
      ],
      "Resource": "arn:aws:ssm:{{region}}:{{account}}:parameter/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ssm:ListInstanceAssociations"
      ],
      "Resource": [
        "arn:aws:ec2:{{region}}:{{account}}:instance/*",
        "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ssm:PutComplianceItems"
      ],
      "Resource": [
        "arn:aws:ec2:{{region}}:{{account}}:instance/*",
        "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ssm:UpdateAssociationStatus"
      ],
      "Resource": [
        "arn:aws:ssm:{{region}}:{{account}}:document/*",
        "arn:aws:ec2:{{region}}:{{account}}:instance/*",
        "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ssm:UpdateInstanceAssociationStatus"
      ],
      "Resource": [
        "arn:aws:ssm:{{region}}:{{account}}:association/*",
        "arn:aws:ec2:{{region}}:{{account}}:instance/*",
        "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ssm:UpdateInstanceInformation"
      ],
      "Resource": [
        "arn:aws:ec2:{{region}}:{{account}}:instance/*",
        "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ssm:GetDeployablePatchSnapshotForInstance",
        "ssm:GetManifest",
        "ssm:ListAssociations",
        "ssm:PutInventory",
        "ssm:PutConfigurePackageResult"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ssmmessages:CreateControlChannel",
        "ssmmessages:CreateDataChannel",
        "ssmmessages:OpenControlChannel",
        "ssmmessages:OpenDataChannel"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2messages:AcknowledgeMessage",
        "ec2messages:DeleteMessage",
        "ec2messages:FailMessage",
        "ec2messages:GetEndpoint"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2messages:GetMessages",
        "ec2messages:SendReply"
      ],
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "ssm:SourceInstanceARN": "arn:aws:ssm:{{region}}:{{account}}:managed-instance/*"
        }
      }
    }
  ]
}
```

### 4. Componente aggiuntivo IAM Role for EBS CSI Driver
<a name="role-ebs-csi"></a>

Il ruolo IAM per il driver CSI EBS è necessario perché il driver CSI EBS fornisce volumi persistenti per i carichi di lavoro di Spaces. Sebbene la [Amazon EBSCSIDriver Policy AWS](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEBSCSIDriverPolicy.html) gestita fornisca autorizzazioni di base, SageMaker HyperPod i cluster richiedono [funzionalità aggiuntive](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-ebs.html#sagemaker-hyperpod-eks-ebs-setup) come la creazione di ripristini rapidi di snapshot, l'etichettatura dei volumi di proprietà del cluster e dei volumi per i nodi gestiti. attaching/detaching HyperPod Queste SageMaker APIs `sagemaker:AttachClusterNodeVolume` autorizzazioni includono anche autorizzazioni specifiche come. **Se il driver EBS CSI non è installato, questo ruolo verrà ora creato automaticamente dalla SageMaker Console durante l'installazione del componente aggiuntivo Spaces, senza richiedere alcuna azione da parte del cliente.**

### 5. Componente aggiuntivo IAM Role for External DNS
<a name="role-external-nds"></a>

Il componente aggiuntivo DNS esterno gestisce i record DNS per le risorse Services e Ingress sul cluster. HyperPod Garantisce che agli endpoint Space e ai componenti del cluster possano essere assegnati automaticamente nomi DNS nelle zone ospitate Route 53 del cliente. Oggi, i clienti spesso installano il DNS esterno manualmente tramite un'opzione con 1 clic nella console EKS. Come parte del miglioramento dell'esperienza di SageMaker Spaces, questo ruolo verrà ora creato automaticamente dalla SageMaker console durante l'installazione del componente aggiuntivo Spaces, **senza richiedere alcuna** azione da parte del cliente.

## Configurazione delle autorizzazioni per AWS Toolkit to Access Spaces SageMaker
<a name="permission-for-toolkitl"></a>

Per consentire al pannello laterale di esplorazione delle risorse di AWS VS Code Toolkit di rilevare e connettersi a SageMaker Spaces, sono necessarie le seguenti autorizzazioni IAM. Queste autorizzazioni consentono al Toolkit di elencare SageMaker HyperPod i cluster disponibili, recuperare i dettagli del cluster e ottenere un token di connessione per il cluster Amazon EKS associato.

**Policy IAM richiesta**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SageMakerListClusters",
            "Effect": "Allow",
            "Action": "sagemaker:ListClusters",
            "Resource": "*"
        },
        {
            "Sid": "SageMakerDescribeCluster",
            "Effect": "Allow",
            "Action": "sagemaker:DescribeCluster",
            "Resource": "arn:aws:sagemaker:{{region}}:{{account}}:cluster/cluster-name"
        },
        {
            "Sid": "EksDescribeCluster",
            "Effect": "Allow",
            "Action": "eks:DescribeCluster",
            "Resource": "arn:aws:eks:{{region}}:{{account}}:cluster/cluster-name"
        },
        {
            "Sid": "EksGetToken",
            "Effect": "Allow",
            "Action": "eks:GetToken",
            "Resource": "*"
        }
    ]
}
```

**Raccomandazioni per l'ambito**
+ Sostituisci il nome del cluster con i SageMaker HyperPod cluster specifici a cui gli utenti devono accedere.
+ L'GetToken azione eks: attualmente non supporta le restrizioni a livello di risorsa e deve utilizzare Resource: «\$1». Questa è una limitazione del servizio. AWS L'autenticazione lato client viene eseguita tramite le [voci di accesso EKS](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html).

# Installa il componente aggiuntivo SageMaker AI Spaces
<a name="operator-install"></a>

## Dipendenze
<a name="dependencies"></a>

**Componente aggiuntivo Amazon EKS Pod Identity Agent**
+ Richiesto all'operatore per ottenere AWS le credenziali
+ **In genere preinstallato** sulla maggior parte dei cluster EKS
+ Installazione: tramite componenti aggiuntivi EKS

**CERT-manager**
+ Necessario per la gestione dei certificati TLS
+ **Preinstallato** se si utilizza la creazione HyperPod rapida del cluster
+ Installazione: tramite componenti aggiuntivi EKS

**Driver CSI EBS**
+ Necessario per lo storage persistente Space (volumi EBS)
+ **Installato automaticamente** quando si utilizza la SageMaker console per l'installazione
+ Richiede un ruolo IAM con `AmazonEBSCSIDriverPolicy` HyperPod autorizzazioni specifiche per \$1
+ Installazione: tramite componenti aggiuntivi EKS. Tuttavia, assicurati di seguire la guida per installare le autorizzazioni aggiuntive necessarie per. HyperPod 
+ Riferimento: [utilizzo del driver CSI Amazon EBS](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-ebs.html) su HyperPod

## Dipendenze aggiuntive per WebUI Access
<a name="-additional-dependencies"></a>

**AWS Controller Load Balancer**
+ **Preinstallato** se si utilizza la creazione HyperPod rapida del cluster
+ Installazione: Via Helm
+ Guida all'installazione manuale: [installazione del AWS Load Balancer Controller](https://docs.aws.amazon.com/eks/latest/userguide/lbc-helm.html)

**DNS esterno**
+ Richiesto quando si utilizza un dominio personalizzato per l'accesso WebUI
+ Gestisce automaticamente i record DNS di Route53
+ Richiede un ruolo IAM con autorizzazioni Route53
+ Installazione: tramite componenti aggiuntivi EKS

## Installazione
<a name="installation"></a>

Prima di iniziare, assicurati di avere:
+ Un SageMaker HyperPod cluster attivo con almeno un nodo di lavoro che esegue Kubernetes versione 1.30 o successiva
+ Almeno un nodo di lavoro con tipo minimo di istanza (XX vCPU, memoria YY GiB)

### Installazione del componente aggiuntivo Amazon SageMaker Spaces
<a name="space-add-on"></a>

Puoi installare il componente aggiuntivo SageMaker Spaces utilizzando l'installazione rapida per le impostazioni predefinite o l'installazione personalizzata per la configurazione avanzata.

#### Installazione rapida
<a name="quick-install"></a>

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

1. Scegli il tuo cluster dall'elenco dei cluster.

1. Nella scheda IDE e notebook, individua Amazon SageMaker Spaces, quindi scegli Installazione rapida.

Installazione rapida automatica:
+ Crea i ruoli IAM richiesti per il componente aggiuntivo
+ Abilita la modalità di accesso remoto con i ruoli IAM richiesti per Systems Manager
+ Installa il componente aggiuntivo e configura l'associazione delle identità dei pod

#### Installazione personalizzata
<a name="custom-install"></a>

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

1. Scegli il tuo cluster dall'elenco dei cluster.

1. Nella scheda IDE e notebook, individua Amazon SageMaker Spaces, quindi scegli Installazione personalizzata.

1. Configura le opzioni seguenti:

   **Ruoli IAM necessari per il componente aggiuntivo**
   + Scegli se creare nuovi ruoli IAM con le autorizzazioni consigliate o utilizzare quelli esistenti con le autorizzazioni richieste (consulta la sezione sulla configurazione delle autorizzazioni degli amministratori sopra riportata)

   **Configurazione dell'accesso remoto**
   + Abilita per consentire agli utenti di connettersi agli spazi dal codice di Visual Studio locale utilizzando AWS Systems Manager
   + Per il ruolo dell'istanza gestita SSM:
     + **Crea nuovo ruolo**: il componente aggiuntivo crea e gestisce il ruolo con le autorizzazioni di Systems Manager richieste
     + **Usa il ruolo esistente**: seleziona un ruolo preconfigurato con le autorizzazioni necessarie di Systems Manager
   + Assicurati che il ruolo di esecuzione del componente aggiuntivo di Spaces disponga PassRole delle autorizzazioni per il ruolo dell'istanza gestita SSM
**Nota**  
L'abilitazione dell'accesso remoto attiva il livello Advanced Instances di AWS Systems Manager per costi aggiuntivi per istanza. Per informazioni sui prezzi, consulta la pagina dei prezzi di Systems Manager.

   **Configurazione dell'accesso tramite browser Web**
   + Abilita per consentire agli utenti di accedere agli spazi tramite un browser Web utilizzando i certificati DNS e SSL Route 53
   + **Prerequisiti:** installare AWS Load Balancer Controller prima di abilitare l'accesso al browser
   + **Zona ospitata Route 53:** seleziona una zona ospitata esistente per un dominio o sottodominio di tua proprietà. Il dominio o il sottodominio deve essere registrato e sotto il tuo controllo per abilitare la gestione DNS e la convalida del certificato SSL.

     Per maggiori dettagli sulla registrazione del dominio, consulta [Registrazione di un nuovo dominio](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html#domain-register-procedure-section) nella Route 53 Developer Guide.
   + **Sottodominio:** inserisci il prefisso del sottodominio (solo caratteri alfanumerici e trattini, massimo 63 caratteri)
   + Certificato **SSL: seleziona un certificato** SSL esistente da AWS Certificate Manager. Il certificato deve essere valido e coprire sia il sottodominio (ad esempio, subdomain.domain.com) che i sottodomini wildcard (ad es. \$1.subdomain.domain.com) per supportare l'accesso individuale allo spazio. URLs
   +  **Chiave** di AWS firma con token: seleziona una chiave asimmetrica KMS per la firma con token JWT. La chiave viene utilizzata per crittografare i token di autenticazione per un accesso sicuro al WebUI. Puoi creare una nuova chiave asimmetrica in KMS o selezionarne una esistente a cui il tuo account ha accesso.
**Nota**  
Per le zone ospitate e le query DNS si applicano le tariffe standard della Route 53. Per informazioni sui prezzi, consulta i prezzi di Route 53.

#### Installazione del componente aggiuntivo EKS - Jupyter K8s con WebUI
<a name="webui-install"></a>

##### File di configurazione
<a name="configure-file"></a>

Crea: `addon-config.yaml`

```
jupyter-k8s:
  workspacePodWatching:
    enable: true

jupyter-k8s-aws-hyperpod:
  clusterWebUI:
    enabled: true
    domain: "<DOMAIN_NAME>"
    awsCertificateArn: "<ACM_CERTIFICATE_ARN>"
    kmsEncryptionContext:
      enabled: true
    traefik:
      shouldInstall: true
    auth:
      kmsKeyId: "<KMS_KEY_ARN>"
```

**Sostituisci i seguenti segnaposto:**
+ <DOMAIN\$1NAME>: Il tuo nome di dominio (ad esempio,) `jupyter.example.com`
+ <ACM\$1CERTIFICATE\$1ARN>: Il tuo certificato ACM ARN (ad es. `arn:aws:acm:us-west-2:111122223333:certificate/12345678-1234-1234-1234-123456789012` 
+ <KMS\$1KEY\$1ARN>: ARN della tua chiave KMS (ad es. `arn:aws:kms:us-west-2:111122223333:key/12345678-1234-1234-1234-123456789012`

##### Installazione tramite AWS CLI
<a name="install-via-cli"></a>

```
aws eks create-addon \
  --cluster-name <CLUSTER_NAME> \
  --addon-name amazon-sagemaker-spaces \
  --configuration-values file://addon-config.yaml \
  --resolve-conflicts OVERWRITE \
  --region <AWS_REGION>
```

**Per aggiornare l'addon esistente:**

```
aws eks update-addon \
  --cluster-name <CLUSTER_NAME> \
  --addon-name amazon-sagemaker-spaces \
  --configuration-values file://addon-config.yaml \
  --resolve-conflicts OVERWRITE \
  --region <AWS_REGION>
```

##### Installazione tramite Console di gestione AWS
<a name="install-via-console"></a>

1. Vai alla **console EKS** → Seleziona il tuo cluster

1. Fai clic sulla scheda **Componenti aggiuntivi** → **Aggiungi nuovo**

1. Seleziona il componente aggiuntivo **SageMaker Spaces**

1. **Incolla la configurazione YAML riportata sopra nelle Impostazioni di configurazione opzionali**

1. Fai clic su **Avanti**, quindi rivedi le impostazioni del componente aggiuntivo

1. **Fai clic su Crea**

##### Verifica l'installazione
<a name="install-verify"></a>

```
# Check addon status
aws eks describe-addon \
  --cluster-name <CLUSTER_NAME> \
  --addon-name amazon-sagemaker-spaces \
  --region <AWS_REGION>
```

##### Personalizzazione degli attributi ALB
<a name="customize-alb"></a>

Per impostazione predefinita, l'addon crea un sistema di bilanciamento del carico pubblico da utilizzare con l'interfaccia utente Web. È possibile personalizzare gli attributi del bilanciamento del carico utilizzando le proprietà del componente aggiuntivo EKS.

Per creare un ALB interno, imposta lo schema su: `internal`

```
jupyter-k8s-aws-hyperpod:
  clusterWebUI:
    enabled: true
    domain: "<DOMAIN_NAME>"
    awsCertificateArn: "<ACM_CERTIFICATE_ARN>"
    alb:
      scheme: "internal"  # Default is "internet-facing"
```

Puoi anche usare il `alb.annotations` campo per personalizzare le impostazioni ALB:

```
jupyter-k8s-aws-hyperpod:
  clusterWebUI:
    enabled: true
    domain: "<DOMAIN_NAME>"
    awsCertificateArn: "<ACM_CERTIFICATE_ARN>"
    alb:
      scheme: "internal"
      annotations:
        alb.ingress.kubernetes.io/security-groups: "<SECURITY_GROUP_ID>"
        alb.ingress.kubernetes.io/subnets: "<SUBNET_ID_1>,<SUBNET_ID_2>"
        alb.ingress.kubernetes.io/load-balancer-attributes: "idle_timeout.timeout_seconds=60"
```

**Annotazioni ALB comuni:**
+ `alb.ingress.kubernetes.io/security-groups`: Specificare i gruppi di sicurezza per l'ALB
+ `alb.ingress.kubernetes.io/subnets`: Specificare le sottoreti per l'ALB
+ `alb.ingress.kubernetes.io/load-balancer-attributes`: imposta gli attributi ALB (timeout di inattività, registri di accesso, ecc.)

Consulta la [documentazione del AWS Load Balancer Controller per tutte le annotazioni](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/annotations/) disponibili.

### Aggiornamento/versionamento del componente aggiuntivo
<a name="upgrade-add-on"></a>

```
aws eks update-addon \
  --cluster-name <CLUSTER_NAME> \
  --addon-name amazon-sagemaker-spaces \
  --configuration-values file://addon-config.yaml \
  --resolve-conflicts OVERWRITE \
  --region <AWS_REGION>
```

# Personalizza il componente aggiuntivo
<a name="customization"></a>

## Modello
<a name="customization-template"></a>

I modelli sono configurazioni di aree di lavoro riutilizzabili che fungono da modelli controllati dall'amministratore per la creazione di aree di lavoro. Forniscono impostazioni predefinite per i valori di configurazione dell'area di lavoro e protezioni per controllare cosa possono fare i data scientist. I modelli esistono a livello di cluster e possono essere riutilizzati in tutti i namespace. 

SageMaker Spaces crea due modelli di sistema come punto di partenza per i data scientist, uno per Code Editor e uno per. JupyterLab Questi modelli di sistema sono gestiti dall'addon e non possono essere modificati direttamente. Gli amministratori possono invece creare nuovi modelli e impostarli come predefiniti.

## Governance delle attività
<a name="customization-governabce"></a>

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: WorkspaceTemplate
metadata:
  name: my-jupyter-template
  namespace: my-namespace
  labels:
    kueue.x-k8s.io/priority-class: <user-input>-priority
spec:
  displayName: "My Custom Jupyter Lab"
  description: "Custom Jupyter Lab with specific configurations"
  defaultImage: "public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu"
  allowedImages:
    - "public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu"
    - "public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu"
  defaultResources:
    requests:
      cpu: "1"
      memory: "4Gi"
    limits:
      cpu: "4"
      memory: "16Gi"
  primaryStorage:
    defaultSize: "10Gi"
    minSize: "5Gi"
    maxSize: "50Gi"
    defaultStorageClassName: "sagemaker-spaces-default-storage-class"
    defaultMountPath: "/home/sagemaker-user"
  defaultContainerConfig:
    command: ["/opt/amazon/sagemaker/workspace/bin/entrypoint-workspace-jupyterlab"]
  defaultPodSecurityContext:
    fsGroup: 1000
  defaultOwnershipType: "Public"
  defaultAccessStrategy:
    name: "hyperpod-access-strategy"
  allowSecondaryStorages: true
  appType: "jupyterlab"
```

## SMD/Immagini personalizzate
<a name="customization-image"></a>

I clienti possono configurare le politiche relative alle immagini tramite modelli fornendo un'immagine predefinita e un elenco di immagini consentite. Inoltre, gli amministratori possono scegliere se consentire ai data scientist di portare le proprie immagini personalizzate. Per impostazione predefinita, il sistema utilizza la SageMaker distribuzione più recente, ma se desideri aggiungere una versione specifica, puoi specificare l'esatta versione SMD da utilizzare in un modello.

Requisiti per immagini personalizzate:
+ `curl`se si desidera utilizzare lo spegnimento inattivo
+ porta 8888
+ accesso remoto

## Requisito IDE remoto
<a name="remote-ide-requirement"></a>

### Requisito per la versione di VS Code
<a name="remote-ide-requirement-vscode"></a>

È richiesta la versione VS Code [v1.90](https://code.visualstudio.com/updates/v1_90) o successiva. Consigliamo di utilizzare l’[ultima versione stabile di VS Code](https://code.visualstudio.com/updates).

### Requisiti del sistema operativo
<a name="remote-ide-requirement-operate"></a>

Per connetterti in remoto agli spazi di Studio, devi disporre di uno dei seguenti sistemi operativi:
+ macOS 13\$1
+ Windows 10
  + [Il supporto per Windows 10 termina il 14 ottobre 2025](https://support.microsoft.com/en-us/windows/windows-10-support-ends-on-october-14-2025-2ca8b313-1946-43d3-b55c-2b95b107f281)
+ Windows 11
+ Linux
+ Installa il [Microsoft VS Code ufficiale per Linux](https://code.visualstudio.com/docs/setup/linux)
  + non è una versione open source

### Prerequisiti del computer locale
<a name="remote-ide-requirement-machine"></a>

Prima di connettere il codice di Visual Studio locale agli spazi di Studio, assicurati che il computer locale disponga delle dipendenze e dell'accesso alla rete richiesti.

**Nota**  
Gli ambienti con restrizioni all'installazione del software possono impedire agli utenti di installare le dipendenze richieste. Il AWS Toolkit for Visual Studio Code cerca automaticamente queste dipendenze all'avvio delle connessioni remote e richiederà l'installazione se ne mancano alcune. Coordinatevi con il vostro reparto IT per garantire la disponibilità di questi componenti.

**Dipendenze locali richieste**

Sul computer locale devono essere installati i seguenti componenti:
+ **[https://code.visualstudio.com/docs/remote/ssh](https://code.visualstudio.com/docs/remote/ssh)**
+ — Estensione standard di VS Code Marketplace per lo sviluppo remoto
+ **[Plugin Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)**: necessario per la gestione sicura delle sessioni
+ **Client SSH**: componente standard sulla maggior parte delle macchine ([OpenSSH consigliato](https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse) per Windows)
+ **[https://code.visualstudio.com/docs/configure/command-line](https://code.visualstudio.com/docs/configure/command-line)**
+  In genere incluso nell'installazione di VS Code

**Requisiti specifici della piattaforma**
+ **Utenti Windows**: per le connessioni ai terminali SSH è richiesta la versione PowerShell 5.1 o successiva

**Requisiti per la connettività**

Il computer locale deve avere accesso di rete agli [endpoint di Session Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html). Ad esempio, negli Stati Uniti orientali (Virginia settentrionale) (us-east-1) questi possono essere:
+ `[ssm.us-east-1.amazonaws.com](http://ssm.us-east-1.amazonaws.com)`
+ `ssm.us-east-1.api.aws`
+ `[ssmmessages.us-east-1.amazonaws.com](http://ssmmessages.us-east-1.amazonaws.com)`
+ `[ec2messages.us-east-1.amazonaws.com](http://ec2messages.us-east-1.amazonaws.com)`

### Requisiti delle immagini
<a name="remote-ide-requirement-image"></a>

**SageMaker Immagini di distribuzione**

Quando si utilizza SageMaker Distribution con accesso remoto, utilizzare [SageMaker Distribution](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-distribution.html) versione 2.7 o successiva.

**Immagini personalizzate**

Quando utilizzi [Bring your own image (BYOI)](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-byoi.html) con accesso remoto, assicurati di seguire le [specifiche personalizzate dell'immagine](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-byoi-specs.html) e assicurati che siano installate le seguenti dipendenze:
+ `curl`o `wget` — Necessario per scaricare i componenti AWS CLI 
+ `unzip`— Necessario per estrarre i file AWS CLI di installazione
+ `tar`— Necessario per l'estrazione dell'archivio
+ `gzip`— Necessario per la gestione di file compressi

### Requisiti per l’istanza
<a name="remote-ide-requirement-instance"></a>
+ **Memoria**: almeno 8 GB
+ Utilizza istanze con almeno 8 GB di memoria. I seguenti tipi di istanze *non* sono supportati a causa della memoria insufficiente (meno di 8 GB): `ml.t3.medium`, `ml.c7i.large`, `ml.c6i.large`, `ml.c6id.large` e `ml.c5.large`. Per un elenco più completo dei tipi di istanze, consulta la pagina dei [prezzi on demand di Amazon EC2](https://aws.amazon.com/ec2/pricing/on-demand/)

## Ottimizzazione del tempo di avvio di Kubernetes preriscaldando le immagini dei container
<a name="remote-ide-optimize-image"></a>

Le prestazioni di acquisizione delle immagini dei container sono diventate un ostacolo significativo per molti clienti EKS, soprattutto perché i carichi di lavoro si basano su immagini di container sempre più AI/ML grandi. L'estrazione e il disimballaggio di queste immagini di grandi dimensioni richiedono in genere diversi minuti la prima volta che vengono utilizzate su ciascun nodo EKS. Questo ritardo aggiunge una notevole latenza all'avvio di SageMaker Spaces e influisce direttamente sull'esperienza utente, in particolare in ambienti in cui l'avvio rapido è essenziale, come notebook e processi di sviluppo interattivi. 

Il preriscaldamento delle immagini è una tecnica utilizzata per precaricare immagini di container specifiche su ogni nodo del cluster prima che siano necessarie. EKS/HyperPod Invece di aspettare che un pod attivi la prima estrazione di un'immagine di grandi dimensioni, il cluster scarica e memorizza in modo proattivo le immagini su tutti i nodi. Ciò garantisce che all'avvio dei carichi di lavoro, le immagini richieste siano già disponibili localmente, eliminando i lunghi ritardi di avvio a freddo. Il preriscaldamento delle immagini migliora la velocità di avvio di SageMaker Spaces e offre un'esperienza più prevedibile e reattiva per gli utenti finali.

### Preriscaldamento tramite DaemonSet
<a name="remote-ide-optimize-image-dae"></a>

Si consiglia di utilizzare un DaemonSet per precaricare le immagini. A DaemonSet garantisce che un pod venga eseguito su ogni nodo del cluster. Ogni contenitore all'interno del DaemonSet pod fa riferimento a un'immagine che si desidera memorizzare nella cache. Quando Kubernetes avvia il pod, estrae automaticamente le immagini, riscaldando la cache su ogni nodo.

L'esempio seguente mostra come creare un file DaemonSet che precarica due immagini GPU. Ogni contenitore esegue un `sleep infinity` comando leggero per mantenere attivo il pod con un sovraccarico minimo.

```
cat <<EOF | kubectl apply -n "namespace_1" -f -
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: image-preload-ds
spec:
  selector:
    matchLabels:
      app: image-preloader
  template:
    metadata:
      labels:
        app: image-preloader
    spec:
      containers:
      - name: preloader-3-4-2
        image: public.ecr.aws/sagemaker/sagemaker-distribution:3.4.2-gpu
        command: ["sleep"]
        args: ["infinity"]
        resources:
          requests:
            cpu: 1m
            memory: 16Mi
          limits:
            cpu: 5m
            memory: 32Mi
      - name: preloader-3-3-2
        image: public.ecr.aws/sagemaker/sagemaker-distribution:3.3.2-gpu
        command: ["sleep"]
        args: ["infinity"]
        resources:
          requests:
            cpu: 1m
            memory: 16Mi
          limits:
            cpu: 5m
            memory: 32Mi
EOF
```

### Come funziona
<a name="remote-ide-optimize-image-how"></a>
+ Ogni contenitore fa riferimento a un'immagine.
+ Kubernetes deve scaricare ogni immagine prima di avviare il contenitore.
+ Una volta che il pod è in esecuzione su ogni nodo, le immagini vengono memorizzate nella cache locale.
+ Qualsiasi carico di lavoro che utilizza queste immagini ora inizia molto più velocemente.

## Space Default Storage (EBS)
<a name="space-storage"></a>

Per impostazione predefinita, il sistema utilizza il driver CSI EBS per eseguire il provisioning dei volumi di storage EBS per ogni area di lavoro. SageMaker crea una classe di archiviazione EBS da utilizzare con le aree di lavoro e gli amministratori possono personalizzare la dimensione predefinita e massima di questi volumi utilizzando le impostazioni del modello. Per gli utenti esperti che lavorano con gli strumenti CLI, puoi anche personalizzare la classe di archiviazione dell'area di lavoro, che consente agli utenti di sfruttare altre classi di archiviazione, inclusa la configurazione di chiavi KMS gestite dal cliente per i propri volumi EBS.

Tieni presente che i volumi EBS sono associati a una particolare AZ, il che significa che le aree di lavoro possono essere pianificate solo su nodi nella stessa AZ del volume di archiviazione. Ciò può portare a errori di pianificazione se la capacità del cluster esiste ma non nella zona di disponibilità corretta.

## Archiviazione aggiuntiva
<a name="space-additional-storage"></a>

SageMaker Spaces supporta il collegamento di volumi di storage aggiuntivi come Amazon EFS, FSx for Lustre o S3 Mountpoint ai tuoi spazi di sviluppo. Ciò ti consente di accedere a set di dati condivisi, collaborare a progetti o utilizzare storage ad alte prestazioni per i tuoi carichi di lavoro.

### Prerequisiti
<a name="space-additional-storage-prereq"></a>

Prima di aggiungere spazio di archiviazione aggiuntivo agli spazi, devi:

1. **Installa il componente aggiuntivo del driver CSI appropriato tramite componenti aggiuntivi** [EKS (](https://docs.aws.amazon.com/eks/latest/userguide/workloads-add-ons-available-eks.html)Amazon EFS CSI Driver, Amazon FSx for Lustre CSI Driver o Mountpoint per Amazon S3 CSI Driver)

1. **Configura le risorse di storage e** segui la documentazione del driver CSI per il tuo tipo di storage PersistentVolumeClaims specifico

1. **Assicurati che il PVC sia disponibile** nello stesso namespace in cui intendi creare il tuo spazio

### Collegamento dello spazio di archiviazione agli spazi
<a name="space-additional-storage-attach"></a>

Una volta PersistentVolumeClaim configurato, puoi collegarlo a uno spazio usando la HyperPod CLI o kubectl.

**HyperPod CLI**

```
hyp create hyp-space \
    --name my-space \
    --display-name "My Space with FSx" \
    --memory 8Gi \
    --volume name=shared-fsx,mountPath=/shared,persistentVolumeClaimName=my-fsx-pvc
```

**kubectl**

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: Workspace
metadata:
  name: my-space
spec:
  displayName: "My Space with FSx"
  desiredStatus: Running
  volumes:
  - name: shared-fsx
    mountPath: /shared
    persistentVolumeClaimName: my-fsx-pvc
```

### Volumi multipli
<a name="space-additional-storage-multiple"></a>

Puoi collegare più volumi di archiviazione aggiuntivi a un singolo spazio specificando più `--volume` flag con la CLI o più voci nell'array con kubectl. `volumes`

**HyperPod CLI**

```
hyp create hyp-space \
    --name my-space \
    --display-name "My Space with Multiple Storage" \
    --memory 8Gi \
    --volume name=shared-efs,mountPath=/shared,persistentVolumeClaimName=my-efs-pvc \
    --volume name=datasets,mountPath=/datasets,persistentVolumeClaimName=my-s3-pvc
```

**kubectl**

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: Workspace
metadata:
  name: my-space
spec:
  displayName: "My Space with Multiple Storage"
  desiredStatus: Running
  volumes:
  - name: shared-efs
    mountPath: /shared
    persistentVolumeClaimName: my-efs-pvc
  - name: datasets
    mountPath: /datasets
    persistentVolumeClaimName: my-s3-pvc
```

## Configurazione delle risorse
<a name="space-resource-configuration"></a>

SageMaker Spaces ti consente di configurare le risorse di calcolo per i tuoi ambienti di sviluppo, tra cui CPU, memoria e GPU, per soddisfare i requisiti del carico di lavoro.

### Configurazione della GPU
<a name="space-gpu-configuration"></a>

SageMaker Spaces supporta sia l'allocazione dell'intera GPU che il partizionamento della GPU utilizzando la tecnologia NVIDIA Multi-Instance GPU (MIG). Ciò consente di ottimizzare l'utilizzo della GPU per diversi tipi di carichi di lavoro di machine learning.

#### Allocazione completa della GPU
<a name="space-gpu-whole"></a>

**HyperPod CLI**

```
hyp create hyp-space \
    --name gpu-space \
    --display-name "GPU Development Space" \
    --image public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu \
    --memory 16Gi \
    --gpu 1 \
    --gpu-limit 1
```

**kubectl**

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: Workspace
metadata:
  name: gpu-space
spec:
  displayName: "GPU Development Space"
  image: "public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu"
  desiredStatus: Running
  resources:
    requests:
      memory: "16Gi"
      nvidia.com/gpu: "1"
    limits:
      memory: "16Gi"
      nvidia.com/gpu: "1"
```

#### Partizionamento GPU (MIG)
<a name="space-gpu-mig"></a>

Il partizionamento della GPU con la tecnologia NVIDIA Multi-Instance GPU (MIG) consente di partizionare una singola GPU in istanze più piccole e isolate. Il HyperPod cluster deve avere nodi GPU che supportano MIG e avere profili MIG configurati. Per ulteriori informazioni sulla configurazione MIG sul HyperPod cluster, consulta Partizionamento della [GPU](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-gpu-partitioning-setup.html) con NVIDIA MIG.

**HyperPod CLI**

```
hyp create hyp-space \
    --name mig-space \
    --display-name "MIG GPU Space" \
    --image public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu \
    --memory 8Gi \
    --accelerator-partition-type mig-3g.20gb \
    --accelerator-partition-count 1
```

**kubectl**

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: Workspace
metadata:
  name: mig-space
spec:
  displayName: "MIG GPU Space"
  image: "public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu"
  desiredStatus: Running
  resources:
    requests:
      memory: "8Gi"
      nvidia.com/mig-3g.20gb: "1"
    limits:
      memory: "8Gi"
      nvidia.com/mig-3g.20gb: "1"
```

## Ciclo di vita
<a name="space-lifecycle"></a>

La configurazione del ciclo di vita fornisce script di avvio che vengono eseguiti quando viene creato o avviato uno spazio di lavoro. Questi script consentono agli amministratori di personalizzare l'ambiente dell'area di lavoro durante l'avvio. Si tratta di script bash con una dimensione massima di 1 KB. Se hai bisogno di una configurazione di configurazione più ampia, ti consigliamo di aggiungere uno script all'immagine del contenitore e di attivare lo script dalla configurazione del ciclo di vita.

[Utilizziamo gli hook del ciclo di vita dei container Kubernetes per fornire questa funzionalità https://kubernetes. io/docs/concepts/containers/container-lifecycle-hooks/.](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/) Tieni presente che Kubernetes non fornisce garanzie su quando lo script di avvio verrà eseguito in relazione al punto di ingresso del contenitore. 

## Spegnimento in modalità inattiva
<a name="space-idle-shutdown"></a>

Configura lo spegnimento automatico delle aree di lavoro inattive per ottimizzare l'utilizzo delle risorse.

### Spegnimento in modalità inattiva
<a name="space-idle-shutdown-spec"></a>

```
idleShutdown:
  enabled: true
  idleShutdownTimeoutMinutes: 30
  detection:
    httpGet:
      path: /api/idle
      port: 8888
      scheme: HTTP
```

### Parameters
<a name="space-idle-shutdown-parameter"></a>

**abilitato** (booleano, obbligatorio): abilita o disabilita lo spegnimento inattivo per l'area di lavoro.

**idleShutdownTimeoutMinuti** (numeri interi, obbligatori): numero di minuti di inattività prima della chiusura dell'area di lavoro. Il valore minimo è 1.

**rilevamento** (oggetto, obbligatorio): definisce come rilevare lo stato di inattività dell'area di lavoro.

**detection.httpGet** (oggetto, opzionale) - Configurazione dell'endpoint HTTP per il rilevamento delle attività inattive. Utilizza la specifica HTTPGet Kubernetes Action.
+ **path: percorso** HTTP da richiedere
+ **port** - Numero o nome della porta
+ **schema** - HTTP o HTTPS (impostazione predefinita: HTTP)

### Posizioni di configurazione
<a name="space-idle-shutdown-configure"></a>

**Configurazione dell'area di lavoro**

Definisci lo spegnimento inattivo direttamente nelle specifiche dell'area di lavoro:

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: Workspace
metadata:

      name: my-workspace
spec:
  displayName: "Development Workspace"
  image:
      jupyter/scipy-notebook:latest
  idleShutdown:
    enabled: true

      idleShutdownTimeoutMinutes: 30
    detection:
      httpGet:
        path:
      /api/idle
        port: 8888
```

**Configurazione del modello**

Definisci il comportamento di spegnimento predefinito in caso di inattività in un: WorkspaceTemplate

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: WorkspaceTemplate
metadata:
  name: jupyter-template
spec:
  displayName: "Jupyter Template"
  defaultImage: jupyter/scipy-notebook:latest
  defaultIdleShutdown:
    enabled: true
    idleShutdownTimeoutMinutes: 30
    detection:
      httpGet:
        path: /api/idle
        port: 8888
  idleShutdownOverrides:
    allow: true
    minTimeoutMinutes: 60
    maxTimeoutMinutes: 240
```

### Ereditarietà e sostituzioni dei modelli
<a name="space-idle-shutdown-inherit"></a>

Le aree di lavoro che utilizzano un modello ereditano automaticamente la configurazione del modello. `defaultIdleShutdown` Le aree di lavoro possono sovrascrivere questa configurazione se il modello lo consente.

**Ignora politica**

I modelli controllano il comportamento di override tramite: `idleShutdownOverrides`

**allow** (boolean, default: true) - Se gli spazi di lavoro possono sovrascrivere la configurazione predefinita di inattività.

**minTimeoutMinutes**(intero, opzionale) - Valore di timeout minimo consentito per le sostituzioni dell'area di lavoro.

**maxTimeoutMinutes**(intero, opzionale): valore di timeout massimo consentito per le sostituzioni dell'area di lavoro.

**Esempio di ereditarietà**

Workspace eredita le impostazioni predefinite del modello:

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: Workspace
metadata:
  name: my-workspace
spec:
  displayName: "My Workspace"
  templateRef:
    name: jupyter-template
  # Inherits defaultIdleShutdown from template
```

**Esempio di override**

Workspace sostituisce le impostazioni predefinite del modello:

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: Workspace
metadata:
  name: my-workspace
spec:
  displayName: "My Workspace"
  templateRef:
    name: jupyter-template
  idleShutdown:
    enabled: true
    idleShutdownTimeoutMinutes: 60  # Must be within template bounds
    detection:
      httpGet:
        path: /api/idle
        port: 8888
```

**Configurazione bloccata**

Impedisci le sostituzioni dello spazio di lavoro:

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: WorkspaceTemplate
metadata:
  name: locked-template
spec:
  displayName: "Locked Template"
  defaultImage: jupyter/scipy-notebook:latest
  defaultIdleShutdown:
    enabled: true
    idleShutdownTimeoutMinutes: 30
    detection:
      httpGet:
        path: /api/idle
        port: 8888
  idleShutdownOverrides:
    allow: false  # Workspaces cannot override
```

### Comportamento
<a name="space-idle-shutdown-behavior"></a>

Quando lo spegnimento in stato di inattività è abilitato, il sistema controlla periodicamente l'attività nell'area di lavoro utilizzando l'endpoint HTTP configurato. Se l'endpoint indica che l'area di lavoro è inattiva per la durata del timeout specificata, l'area di lavoro si interrompe automaticamente. È possibile riavviare manualmente l'area di lavoro quando necessario.

## Aggiornamenti dei modelli
<a name="customization-template-updates"></a>

Gli strumenti client come Kubectl o Hyperpod CLI e SDK possono essere utilizzati per gestire gli spazi all'interno del cluster EKS. Gli amministratori possono fornire modelli di spazio per le configurazioni Space predefinite, mentre i data scientist possono personalizzare i propri ambienti di sviluppo integrati senza dover comprendere la complessità sottostante di Kubernetes. Per istruzioni dettagliate sull'uso, consulta la documentazione della CLI e dell'SDK all'indirizzo. [https://sagemaker-hyperpod-cli.readthedocs.io/en/latest/index.html](https://sagemaker-hyperpod-cli.readthedocs.io/en/latest/index.html)

Gli amministratori possono eseguire operazioni CRUD sui modelli di spazio, che fungono da configurazioni di base per la creazione di uno spazio. I data scientist possono eseguire operazioni CRUD su Spaces e sovrascrivere vari parametri, inclusi i profili GPU multiistanza per nodi di calcolo specifici. Possono avviare, arrestare e connettersi a Spaces tramite VSCode accesso remoto e interfaccia utente Web. Quando un modello di spazio viene aggiornato, qualsiasi spazio creato successivamente verrà configurato con le impostazioni del modello aggiornato. I controlli di conformità verranno eseguiti quando gli spazi esistenti vengono aggiornati o avviati. Se alcune impostazioni superano i limiti o non corrispondono, gli spazi non verranno aggiornati o avviati.

## Usare hyp cli e kubectl
<a name="customization-hyp-cli"></a>

L'utente può eseguire CRUD sui modelli con la CLI Hyperpod

```
### 1. Create a Space Template
hyp create hyp-space-template --file template.yaml

### 2. List Space Templates
hyp list hyp-space-template
hyp list hyp-space-template --output json

### 3. Describe a Space Template
hyp describe hyp-space-template --name my-template
hyp describe hyp-space-template --name my-template --output json

### 4. Update a Space Template
hyp update hyp-space-template --name my-template --file updated-template.yaml

### 5. Delete a Space Template
hyp delete hyp-space-template --name my-template
```

Per creare modelli personalizzati, puoi utilizzare i nostri modelli di sistema come punto di partenza. Questo modello funzionerà per immagini simili a SMD, tuttavia può essere personalizzato in base alle immagini utilizzate dagli amministratori.

Esempio di modello personalizzato: JupyterLab 

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: WorkspaceTemplate
metadata:
  name: my-jupyter-template
  namespace: my-namespace
spec:
  displayName: "My Custom Jupyter Lab"
  description: "Custom Jupyter Lab with specific configurations"
  defaultImage: "public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu"
  allowedImages:
    - "public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu"
    - "public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu"
  defaultResources:
    requests:
      cpu: "1"
      memory: "4Gi"
    limits:
      cpu: "4"
      memory: "16Gi"
  primaryStorage:
    defaultSize: "10Gi"
    minSize: "5Gi"
    maxSize: "50Gi"
    defaultStorageClassName: "sagemaker-spaces-default-storage-class"
    defaultMountPath: "/home/sagemaker-user"
  defaultContainerConfig:
    command: ["/opt/amazon/sagemaker/workspace/bin/entrypoint-workspace-jupyterlab"]
  defaultPodSecurityContext:
    fsGroup: 1000
  defaultOwnershipType: "Public"
  defaultAccessStrategy:
    name: "hyperpod-access-strategy"
  allowSecondaryStorages: true
  appType: "jupyterlab"
```

Esempio di modello di Code Editor personalizzato:

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: WorkspaceTemplate
metadata:
  name: my-code-editor-template
  namespace: my-namespace
spec:
  displayName: "My Custom Code Editor"
  description: "Custom Code Editor with specific configurations"
  defaultImage: "public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu"
  allowedImages:
    - "public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu"
    - "public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu"
  defaultResources:
    requests:
      cpu: "1"
      memory: "4Gi"
    limits:
      cpu: "4"
      memory: "16Gi"
  primaryStorage:
    defaultSize: "10Gi"
    minSize: "5Gi"
    maxSize: "50Gi"
    defaultStorageClassName: "sagemaker-spaces-default-storage-class"
    defaultMountPath: "/home/sagemaker-user"
  defaultContainerConfig:
    command: ["/opt/amazon/sagemaker/workspace/bin/entrypoint-workspace-code-editor"]
  defaultPodSecurityContext:
    fsGroup: 1000
  defaultOwnershipType: "Public"
  defaultAccessStrategy:
    name: "hyperpod-access-strategy"
  allowSecondaryStorages: true
  appType: "code-editor"
```

# Aggiungere utenti e configurare account di servizio
<a name="add-user"></a>

## Controllo granulare degli accessi: la nostra raccomandazione
<a name="add-user-access-control"></a>

Gli utenti vengono differenziati in base al nome utente Kubernetes. Il nome utente Kubernetes dell'utente è definito nella relativa voce di accesso. Per garantire che due utenti umani abbiano nomi utente distinti, sono disponibili due opzioni:

1. Consigliato: più utenti umani possono utilizzare lo stesso ruolo purché ognuno abbia il proprio nome di sessione distinto che persisterà tra le sessioni. Per impostazione predefinita, i nomi utente Kubernetes per i ruoli IAM sono nel formato. `arn:aws:sts::{ACCOUNT_ID}:assumed-role/{ROLE_NAME}/{SESSION_NAME}` Con questa impostazione predefinita, gli utenti saranno già differenziati in base al nome della sessione. Un amministratore dispone di alcuni modi per imporre nomi di sessione univoci per utente.
   + Accesso SSO: per impostazione predefinita, gli utenti che utilizzano l'accesso SSO avranno un nome di sessione associato al proprio nome utente AWS 
   + Servizio centralizzato di vendita di credenziali: i clienti aziendali possono disporre di un servizio interno di vendita di credenziali che gli utenti possono chiamare per ottenere credenziali con la propria identità. 
   + Applicazione basata sui ruoli: richiedi agli utenti IAM di impostare il proprio `aws:username` nome di sessione di ruolo quando assumono un ruolo IAM nella tua azienda. Account AWS La documentazione su come eseguire questa operazione è disponibile qui: [https://aws.amazon.com/blogs/security/ -/easily-control-naming-individualiam-role-sessions](https://aws.amazon.com/blogs/security/easily-control-naming-individual-iam-role-sessions/)

1. Se 2 Data Scientist utilizzano voci di accesso diverse (ruolo o utente IAM diverso), verranno sempre conteggiati come utenti diversi.

**Creazione di una voce di accesso**

Policy IAM richiesta per il ruolo di data scientist:
+ `eks:DescribeCluster`

Politiche di accesso richieste
+ `AmazonSagemakerHyperpodSpacePolicy`- con ambito limitato allo spazio dei nomi, DS dovrebbe creare spazi in
+ `AmazonSagemakerHyperpodSpaceTemplatePolicy`- limitato allo spazio dei nomi «jupyter-k8s-shared»

## Spazi privati e pubblici
<a name="add-user-spaces"></a>

Supportiamo 2 tipi di modelli di condivisione: «Pubblico» e «OwnerOnly». Entrambi i campi «AccessType» e «OwnershipType» utilizzano questi 2 valori.
+ AccessType: Gli spazi pubblici sono accessibili da chiunque disponga delle autorizzazioni nel namespace, mentre sono OwnerOnly accessibili solo dal creatore dello spazio e dagli utenti amministratori. Gli utenti amministratori sono definiti con i seguenti criteri:
+ OwnershipType: Gli spazi pubblici possono modified/deleted appartenere a chiunque disponga delle autorizzazioni nel namespace, OwnerOnly dal creatore o modified/deleted dall'amministratore.

Gli utenti amministratori sono definiti da:

1. Parte del gruppo `system:masters` Kubernetes

1. Parte del gruppo Kubernetes definito nella variabile di ambiente CLUSTER\$1ADMIN\$1GROUP nel grafico helm.

I gruppi di un utente possono essere configurati utilizzando le voci di accesso EKS. Uno spazio può essere definito come «Pubblico» o «OwnerOnly» configurando le specifiche nell'oggetto:

```
apiVersion: workspace.jupyter.org/v1alpha1
kind: Workspace
metadata:
  labels:
    app.kubernetes.io/name: jupyter-k8s
  name: example-workspace
spec:
  displayName: "Example Workspace"
  image: "public.ecr.aws/sagemaker/sagemaker-distribution:3.4.2-cpu"
  desiredStatus: "Running"
  ownershipType: "Public"/"OwnerOnly"
  accessType: "Public"/"OwnerOnly"
  # more fields here
```

# Limits
<a name="ds-limits"></a>

Gli spazi vengono eseguiti come pod sui nodi HyperPod EKS con volumi EBS collegati. Il numero di Spaces che possono essere implementati per nodo è limitato dai limiti dell'infrastruttura. AWS 

**Limiti di volume EBS per nodo**

[Riferimento: \$1limits.html https://docs.aws.amazon.com/AWSEC2/ latest/UserGuide/volume](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/volume_limits.html)

I nodi EC2 hanno un numero massimo di volumi EBS che possono essere collegati. Poiché ogni Space utilizza in genere un volume EBS, ciò limita il numero di Spaces con storage EBS dedicato che possono essere eseguiti su un singolo nodo.

**Numero massimo di pod per nodo HyperPod **

Riferimento: [https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker- .html hyperpod-eks-prerequisites](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)

Ogni tipo di HyperPod istanza supporta un numero massimo di pod in base agli indirizzi IP disponibili dal plug-in VPC CNI. Poiché ogni Space funziona come un pod, questo limita direttamente il numero di spazi per nodo.

**Impatto**

Il limite effettivo per Spaces per nodo è il vincolo raggiunto per primo. 

# Gestione delle attività per Interactive Spaces su HyperPod
<a name="task-governance"></a>

Questa sezione spiega come ottimizzare i cluster Amazon SageMaker HyperPod EKS condivisi per i carichi di lavoro Interactive Spaces. Imparerai a configurare le funzionalità di governance delle attività di Kueue, tra cui la gestione delle quote, la pianificazione delle priorità e le politiche di condivisione delle risorse, per garantire che i carichi di lavoro di sviluppo funzionino senza interruzioni, mantenendo al contempo un'equa allocazione tra le attività di formazione, valutazione ed elaborazione in batch dei tuoi team.

## Come funziona la gestione interattiva dello spazio
<a name="task-governance-how"></a>

Per gestire efficacemente gli spazi interattivi in cluster HyperPod EKS condivisi, implementa le seguenti strategie di governance delle attività utilizzando le funzionalità esistenti di Kueue.

**Configurazione della classe di priorità**

Definisci classi prioritarie dedicate per gli spazi interattivi con pesi elevati (ad esempio 100) per garantire che i pod di sviluppo siano ammessi e programmati prima di altri tipi di attività. Questa configurazione consente a Interactive Spaces di anticipare i lavori con priorità inferiore durante il caricamento del cluster, il che è fondamentale per mantenere flussi di lavoro di sviluppo ininterrotti.

**Dimensionamento e allocazione delle quote**

Riserva al tuo team risorse di elaborazione sufficienti per gestire i carichi di lavoro di sviluppo previsti. ClusterQueue Nei periodi in cui le risorse di sviluppo sono inattive, le quote di risorse inutilizzate possono essere temporaneamente assegnate alle attività di altri team. Quando la domanda di sviluppo aumenta, queste risorse prese in prestito possono essere recuperate per dare priorità ai pod Interactive Space in sospeso.

**Strategie di condivisione delle risorse**

Scegli tra due approcci di condivisione delle quote in base alle tue esigenze:

*Controllo rigoroso delle risorse*: disabilita il prestito e il prestito di quote per garantire che la capacità di elaborazione riservata sia sempre disponibile per i tuoi spazi interattivi. Questo approccio richiede il dimensionamento di quote sufficientemente ampie da gestire in modo indipendente i picchi di domanda di sviluppo e può comportare l'inattività dei nodi durante i periodi di utilizzo limitato.

*Condivisione flessibile delle risorse*: abilita il prestito tramite quote per consentire ad altri team di utilizzare risorse di sviluppo inattive quando necessario. Tuttavia, disabilita il prestito per garantire che gli Interactive Spaces non funzionino mai con risorse recuperabili e prese in prestito che potrebbero portare a sfratti imprevisti.

**Prelazione all’interno del team**

Abilita la priorità all'interno del team quando esegui carichi di lavoro misti (formazione, valutazione e spazi interattivi) nell'ambito della stessa quota. Ciò consente a Kueue di anticipare i lavori con priorità più bassa all'interno del team per ospitare i pod Interactive Space ad alta priorità, garantendo che il lavoro di sviluppo possa procedere senza dipendere da quote esterne in prestito.

## Esempio di configurazione di Interactive Space
<a name="task-governance-space-setup"></a>

L'esempio seguente mostra come Kueue gestisce le risorse di calcolo per Interactive Spaces in un cluster Amazon condiviso. SageMaker HyperPod 

**Configurazione del cluster e impostazione delle politiche**

Il tuo cluster ha la configurazione seguente:
+ *Team Alpha (Dev Team)*: quota di 8 CPU per Interactive Spaces
+ *Team Beta (ML Team)*: quota di 16 CPU per la formazione e la valutazione
+ *Team Gamma (Research)*: quota di 6 CPU per la sperimentazione
+ *Provisioning statico*: nessun dimensionamento automatico
+ *Capacità totale*: 30 CPUs

Il pool di CPU condiviso utilizza questa politica di priorità:
+ *Spazi interattivi*: priorità 100
+ *Addestramento*: priorità 75
+ *Valutazione*: priorità 50
+ *Elaborazione in batch*: Priorità 25

Kueue impone le quote e le classi di priorità del team, con la priorità abilitata e il prestito disabilitato per il team di sviluppo.

**Stato iniziale: utilizzo normale del cluster**

Durante il normale funzionamento:
+ *Team Alpha*: gestisce 6 spazi interattivi utilizzando 6 CPUs, 2 CPUs inattivi
+ *Team Beta*: esegue lavori di formazione (12 CPUs) e valutazione (4 CPUs) entro la sua quota di 16 CPU
+ *Team Gamma*: esegue carichi di lavoro di ricerca su tutti e 6 CPUs
+ *Condivisione delle risorse*: il Team Beta prende in prestito l'idle CPUs 2 del Team Alpha per una formazione aggiuntiva

**Picco di sviluppo: il Team Alpha richiede risorse aggiuntive**

Quando gli sviluppatori di Team Alpha devono ampliare il lavoro di sviluppo, i pod Interactive Space aggiuntivi ne richiedono altre 4. CPUs Kueue rileva che i nuovi pod:
+ All'interno dello spazio dei nomi del Team Alpha
+ Priorità 100 (spazi interattivi)
+ Hanno l’ammissione in sospeso a causa di vincoli di quota

**Il processo di risposta di Kueue**

Kueue segue un processo in tre fasi per l’allocazione delle risorse:

1. **Controllo delle quote**

   Domanda: Il Team Alpha ha una quota inutilizzata?
   + *Utilizzo attuale*: 6 CPUs usati, 2 disponibili CPUs 
   + *Nuovo requisito*: 4 CPUs necessari
   + *Risultato*: quota insufficiente → Procedi alla Fase 2

1. **Auto-prelazione all'interno del Team Alpha**

   Domanda: È possibile anticipare i lavori Team Alpha con priorità più bassa?
   + *Obiettivi disponibili*: nessun lavoro con priorità inferiore in Team Alpha
   + *Risultato*: Nessuna prelazione possibile → Procedi alla Fase 3

1. **Recupera le risorse prese in prestito**

   Domanda: Le risorse del Team Alpha vengono prese in prestito da altri team?
   + *Risorse prese in prestito*: Team Beta utilizza 2 dal Team Alpha CPUs 
   + *Azione*: Kueue smonta le capsule di allenamento prese in prestito dal Team Beta, liberandone 2 CPUs
   + *Necessità residua: ne* mancano ancora 2 CPUs → Gli spazi interattivi restano attivi fino a quando le risorse non saranno disponibili NotAdmitted 

Questo approccio dà priorità agli spazi interattivi mantenendo al contempo i limiti delle quote del team e impedendo che il lavoro di sviluppo venga eseguito su risorse prese in prestito instabili.

# Osservabilità
<a name="observability"></a>

## Monitoraggio standard di Kubernetes
<a name="observability-monitor"></a>

Puoi monitorare Spaces utilizzando strumenti Kubernetes standard come description e logs. `kubectl` `kubectl`

**Monitoraggio dello stato dello spazio**

```
# List all Spaces with status
kubectl get workspace -A

# Get detailed information about a specific Space
kubectl describe workspace <workspace-name>
```

**Visualizzazione dei registri spaziali**

```
# View workspace container logs
kubectl logs -l workspace.jupyter.org/workspace-name=<workspace-name> -c workspace

# View SSM agent sidecar logs (for remote IDE connectivity)
kubectl logs -l workspace.jupyter.org/workspace-name=<workspace-name> -c ssm-agent-sidecar

# Follow logs in real-time
kubectl logs -l workspace.jupyter.org/workspace-name=<workspace-name> -c workspace -f
```

**Comprensione delle condizioni dello spazio**

Gli spazi riportano quattro tipi di condizioni nel loro stato:
+ **Disponibile**: `True` quando lo spazio è pronto per l'uso. Tutte le risorse richieste (pod, servizi, storage) sono funzionanti e integre.
+ **Progressione**: `True` quando lo Spazio viene creato, aggiornato o riconciliato. Passa a una volta stabile. `False`
+ **Degradato**: `True` quando vengono rilevati errori nelle risorse spaziali. Controlla il messaggio sulla condizione per i dettagli.
+ **Interrotto**: `True` quando lo stato desiderato di Space è impostato su`Stopped`. I pod vengono terminati ma l'archiviazione e la configurazione vengono preservate.

## CloudWatch Integrazione dei log
<a name="observability-cw"></a>

Puoi installare il componente aggiuntivo di CloudWatch registrazione per inviare i log di Space ad Amazon CloudWatch Logs per la gestione e la conservazione centralizzate dei log. Ciò consente l'aggregazione dei log su più cluster e l'integrazione con Insights per l'interrogazione e l'analisi. CloudWatch Tutti i `kubectl` log sopra disponibili possono essere interrogati con questo plugin. CloudWatch 

**Riferimento: [https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker- - .html hyperpod-eks-cluster-observability](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci.html)**. cluster-cloudwatch-ci

## HyperPod Componente aggiuntivo Observability
<a name="observability-addon"></a>

Il componente aggiuntivo SageMaker HyperPod Observability fornisce dashboard completi per il monitoraggio dell'utilizzo delle risorse spaziali. Dopo aver installato il componente aggiuntivo, puoi visualizzare lo spazio, la memoria e l'utilizzo della CPU nella scheda **Attività** della HyperPod console, che mostra le metriche nelle dashboard di Amazon Managed Grafana.

**[Riferimento: - .html https://docs.aws.amazon.com/sagemaker/ latest/dg/sagemaker hyperpod-observability-addon](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-observability-addon.html)**

**Metriche chiave disponibili:**
+ Utilizzo della CPU e della memoria per spazio
+ Metriche della GPU (se applicabile)

# Crea e gestisci spazi
<a name="create-manage-spaces"></a>

I data scientist possono elencare per visualizzare tutti gli spazi a cui hanno accesso, creare uno spazio utilizzando uno dei modelli, aggiornare lo spazio per aggiornare l'immagine, il file system e altri attributi della configurazione dello spazio ed eliminare uno spazio. Come prerequisito, i clienti devono installare la HyperPod CLI o utilizzare kubectl per creare e gestire gli spazi. [Per ulteriori dettagli sulla HyperPod CLI, consulta questa pagina.](https://github.com/aws/sagemaker-hyperpod-cli/blob/main/README.md#space) Per usare i comandi kubectl, consulta [questa guida](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) per installare kubectl.

## Crea spazio
<a name="create-manage-spaces-create"></a>

**HyperPod CLI**

Crea uno spazio Jupyter

```
hyp create hyp-space \ 
    --name myspace \ 
    --display-name "My Space" \ 
    --memory 8Gi \ 
    --template-ref name=sagemaker-jupyter-template,namespace=jupyter-k8s-system
```

Crea uno spazio Code Editor

```
hyp create hyp-space \ 
    --name myspace \ 
    --display-name "My Space" \ 
    --memory 8Gi \ 
    --template-ref name=sagemaker-code-editor-template,namespace=jupyter-k8s-system
```

**kubectl**

```
kubectl apply -f - <<EOF
apiVersion: workspace.jupyter.org/v1alpha1
kind: Workspace
metadata:
  name: my-space
spec:
  displayName: my-space
  desiredStatus: Running
EOF
```

oppure puoi semplicemente applicare il file yaml

```
kubectl apply -f my-workspace.yaml
```

## Elenca spazi
<a name="create-manage-spaces-list"></a>

**HyperPod CLI**

```
hyp list hyp-space
```

**kubectl**

```
kubectl get workspaces -n <workspace-namespace> 
```

## Descrivi uno spazio
<a name="create-manage-spaces-describe"></a>

**HyperPod CLI**

```
hyp describe hyp-space --name myspace
```

**kubectl**

```
# Basic Status reporting
kubectl get workspace my-workspace -n <workspace-namespace>

# Enhanced Workspace Information Retrieval 
kubectl get workspace my-workspace -n <workspace-namespace> -o wide

# Complete Workspace Information Retrieval
kubectl get workspace my-workspace -n <workspace-namespace> -o json
kubectl get workspace my-workspace -n <workspace-namespace> -o yaml
```

## Aggiorna uno spazio
<a name="create-manage-spaces-update"></a>

**HyperPod CLI**

```
hyp update hyp-space \
    --name myspace \
    --display-name "Updated My Space"
```

**kubectl**

Aggiorna il file YAML dell'area di lavoro originale secondo necessità, quindi riapplicalo. Assicuratevi che il nome dei metadati non sia modificato. Puoi anche usare questi comandi kubectl per modificare i campi senza riapplicare l'intero spazio di lavoro yaml: 

```
# Open a Terminal IDE and modify the Workspace
kubectl edit workspace -n <workspace-namespace>

# Patch a Workspace
kubectl patch workspace <workspace-name> --type='merge' -p \
    '{"spec":{"<field name>":"<desired value>"}}' -n <workspace-namespace>
```

## Avvia/arresta uno spazio
<a name="create-manage-spaces-stop"></a>

**HyperPod CLI**

```
hyp start hyp-space --name myspace
hyp stop hyp-space --name myspace
```

**kubectl**

È possibile aggiornare il campo di stato desiderato nell'area di lavoro in uno spazio. start/stop 

```
# Start a Workspace
kubectl patch workspace <workspace-name> --type='merge' -p \
    '{"spec":{"desiredStatus":"Running"}}' -n <workspace-namespace>
    
# Stop a Workspace
kubectl patch workspace <workspace-name> --type='merge' -p \
    '{"spec":{"desiredStatus":"Stopped"}}' -n <workspace-namespace>
```

## Ottieni registri
<a name="create-manage-spaces-log"></a>

**HyperPod CLI**

```
hyp get-logs hyp-space --name myspace
```

**kubectl**

```
# Check Pod Logs
kubectl logs -l workspace.jupyter.org/workspace-name=<workspace-metadata-name>

# Check Pod Events
kubectl describe pod -l workspace.jupyter.org/workspace-name=<workspace-metadata-name>

# Check Operator Logs
kubectl logs -n jupyter-k8s-system deployment/jupyter-k8s-controller-manager
```

## Eliminare uno spazio
<a name="create-manage-spaces-delete"></a>

**HyperPod CLI**

```
hyp delete hyp-space --name myspace
```

**kubectl**

```
# Delete a Workspace
kubectl delete workspace <workspace-name> -n <namespace>
```

# Accesso tramite browser Web
<a name="browser-access"></a>

L'accesso all'interfaccia utente Web consente di connettersi direttamente agli spazi di sviluppo in esecuzione sul SageMaker HyperPod cluster tramite un'interfaccia browser Web sicura. Ciò fornisce l'accesso immediato a Jupyter Lab e ad altri ambienti di sviluppo basati sul Web senza richiedere l'installazione di software locale.

## Prerequisiti
<a name="browser-access-prereq"></a>

Prima di configurare l'accesso all'interfaccia utente Web, assicurati di aver completato quanto segue:
+ SageMaker Installazione del *componente aggiuntivo Spaces: segui l'installazione* del [componente aggiuntivo SageMaker Spaces e abilita l'accesso all'interfaccia Web durante](https://docs.aws.amazon.com/sagemaker/latest/dg/operator-install.html) l'installazione
+ *Accesso utente al cluster EKS*: gli utenti devono configurare EKS Access Entry con le autorizzazioni appropriate. Vedi [Aggiungere utenti e configurare gli account di servizio per i dettagli di configurazione di EKS Access Entry](https://docs.aws.amazon.com/sagemaker/latest/dg/add-user.html)
+ *Spazi di sviluppo*: crea e avvia spazi di sviluppo sul tuo HyperPod cluster
+ *accesso kubectl*: assicurati che kubectl sia configurato per accedere al tuo cluster EKS

## Genera l'URL di accesso all'interfaccia utente Web
<a name="browser-access-url"></a>

**Utilizzo della HyperPod CLI**

Se hai installato la HyperPod CLI, puoi usare questo comando semplificato:

```
hyp create hyp-space-access --name <space-name> --connection-type web-ui
```

**Usare kubectl**

Puoi anche usare la `kubectl` riga di comando per creare una richiesta di connessione.

```
kubectl create -f - -o yaml <<EOF
apiVersion: connection.workspace.jupyter.org/v1alpha1
kind: WorkspaceConnection
metadata:
  namespace: <space-namespace>
spec:
  workspaceName: <space-name>
  workspaceConnectionType: web-ui
EOF
```

L'URL è presente nell'`status.workspaceConnectionUrl`output di questo comando.

## Accesso al tuo spazio di sviluppo
<a name="browser-access-develop"></a>

1. *Genera l'URL dell'interfaccia utente Web* utilizzando uno dei metodi precedenti

1. *Copia l'URL* dalla risposta

1. *Apri l'URL* nel tuo browser web

1. *Accedi al tuo ambiente di sviluppo* tramite l'interfaccia web

## Ambienti di sviluppo supportati
<a name="browser-access-develop-env"></a>

L'interfaccia utente Web fornisce l'accesso a:
+ *Jupyter Lab*
+ *Editor di codici*

## Risoluzione dei problemi
<a name="browser-access-troubleshooting"></a>

**Impossibile generare l'accesso URLs**

Verifica quanto segue:
+ SageMaker Il componente aggiuntivo Spaces è in esecuzione: kubectl get pods -n sagemaker-spaces-system
+ Lo spazio di sviluppo è funzionante e funzionante
+ L'utente dispone delle autorizzazioni EKS Access Entry appropriate

# Accesso remoto a SageMaker Spaces
<a name="vscode-access"></a>

L'accesso remoto consente di connettere il codice di Visual Studio locale direttamente agli spazi di sviluppo in esecuzione sul SageMaker HyperPod cluster. Le connessioni remote utilizzano SSM per stabilire tunnel sicuri e crittografati tra il computer locale e gli spazi di sviluppo.

## Prerequisiti
<a name="vscode-access-prereq"></a>

Prima di configurare l'accesso remoto, assicurati di aver completato quanto segue:
+ *SageMaker Installazione del componente aggiuntivo SageMaker * [Spaces: segui l'installazione del componente aggiuntivo](https://docs.aws.amazon.com/sagemaker/latest/dg/operator-install.html) Spaces e abilita l'accesso remoto durante l'installazione (installazione rapida o installazione personalizzata con la configurazione dell'accesso remoto abilitata).
+ *Accesso utente al cluster EKS*: gli utenti devono configurare EKS Access Entry con le autorizzazioni appropriate. Vedi [Aggiungere utenti e configurare gli account di servizio per i dettagli di configurazione di EKS Access Entry](https://docs.aws.amazon.com/sagemaker/latest/dg/add-user.html)
+ *Spazi di sviluppo*: crea e avvia spazi di sviluppo sul tuo HyperPod cluster
+ *accesso kubectl*: assicurati che kubectl sia configurato per accedere al tuo cluster EKS

## Genera una connessione remota VS Code
<a name="vscode-access-remote"></a>

### Utilizzo della HyperPod CLI
<a name="vscode-access-remote-cli"></a>

Se hai installato la HyperPod CLI, puoi usare questo comando semplificato:

```
hyp create hyp-space-access --name <space-name> --connection-type vscode-remote
```

### Usare kubectl
<a name="vscode-access-remote-kubectl"></a>

Puoi anche usare la `kubectl` riga di comando per creare una richiesta di connessione.

```
kubectl create -f - -o yaml <<EOF
apiVersion: connection.workspace.jupyter.org/v1alpha1
kind: WorkspaceConnection
metadata:
  namespace: <space-namespace>
spec:
  workspaceName: <space-name>
  workspaceConnectionType: vscode-remote
EOF
```

L'URL è presente nell'`status.workspaceConnectionUrl`output di questo comando.

## Connessione con VS Code
<a name="vscode-access-remote-vscode"></a>

1. Genera l'URL di connessione VS Code utilizzando uno dei metodi sopra indicati

1. Copia l'URL del codice VS dalla risposta

1. Fai clic sull'URL o incollalo nel browser

1. VS Code richiederà di aprire la connessione remota

1. Conferma la connessione per stabilire l'ambiente di sviluppo remoto

## Ambienti di sviluppo supportati
<a name="vscode-access-remote-dev-env"></a>

L'interfaccia utente Web fornisce l'accesso a:
+ *Jupyter Lab*
+ *Editor di codici*

## Risoluzione dei problemi
<a name="troubleshooting"></a>

**Impossibile generare una connessione URLs**

*Controlla quanto segue:*
+ SageMaker Il componente aggiuntivo Spaces è in esecuzione: kubectl get pods -n sagemaker-spaces-system
+ Lo spazio di sviluppo è funzionante e funzionante
+ L'accesso remoto è stato abilitato durante l'installazione del componente aggiuntivo
+ L'utente dispone delle autorizzazioni EKS Access Entry appropriate

# Addestra e implementa modelli con HyperPod CLI e SDK
<a name="getting-started-hyperpod-training-deploying-models"></a>

Amazon ti SageMaker HyperPod aiuta ad addestrare e distribuire modelli di machine learning su larga scala. La AWS HyperPod CLI è un'interfaccia a riga di comando unificata che semplifica i flussi di lavoro di machine learning (ML). AWS Riduce le complessità dell’infrastruttura e offre un’esperienza semplificata per l’invio, il monitoraggio e la gestione dei job di addestramento di ML. La CLI è progettata specificamente per i Data Scientist e gli ingegneri di ML che desiderano concentrarsi sullo sviluppo di modelli piuttosto che sulla gestione dell’infrastruttura. Questo argomento illustra tre scenari chiave: addestramento di un PyTorch modello, implementazione di un modello personalizzato utilizzando artefatti addestrati e distribuzione di un modello. JumpStart Progettato per gli utenti alle prime armi, questo breve tutorial ti consente di configurare, addestrare e distribuire i modelli senza sforzo utilizzando la CLI o l' HyperPod SDK. Il processo di handshake tra l’addestramento e l’inferenza consente di gestire gli artefatti del modello in modo efficace. 

## Prerequisiti
<a name="prerequisites"></a>

Prima di iniziare a utilizzare Amazon SageMaker HyperPod, assicurati di avere:
+ Un AWS account con accesso ad Amazon SageMaker HyperPod
+ Python 3.9, 3.10 o 3.11 installato
+ AWS CLI configurato con le credenziali appropriate. 

## Installa la HyperPod CLI e l'SDK
<a name="install-cli-sdk"></a>

Installa il pacchetto richiesto per accedere alla CLI e all’SDK:

```
pip install sagemaker-hyperpod
```

Questo comando imposta gli strumenti necessari per interagire con HyperPod i cluster.

## Configurazione del contesto del cluster
<a name="configure-cluster"></a>

HyperPod opera su cluster ottimizzati per l'apprendimento automatico. Inizia elencando i cluster disponibili e selezionane uno per le tue attività.

1. Elenca tutti i cluster disponibili:

   ```
   hyp list-cluster
   ```

1. Scegli e imposta il cluster attivo:

   ```
   hyp set-cluster-context your-eks-cluster-name
   ```

1. Verifica la configurazione:

   ```
   hyp get-cluster-context
   ```

**Nota**  
Tutti i comandi successivi hanno come destinazione il cluster che hai impostato come contesto.

## Scelta dello scenario
<a name="choose-scenario"></a>

Per istruzioni dettagliate su ogni scenario, fai clic sugli argomenti seguenti:

**Topics**
+ [Prerequisiti](#prerequisites)
+ [Installa la HyperPod CLI e l'SDK](#install-cli-sdk)
+ [Configurazione del contesto del cluster](#configure-cluster)
+ [Scelta dello scenario](#choose-scenario)
+ [Addestra un modello PyTorch](train-models-with-hyperpod.md)
+ [Implementazione di un modello personalizzato](deploy-trained-model.md)
+ [Implementa un modello JumpStart](deploy-jumpstart-model.md)

# Addestra un modello PyTorch
<a name="train-models-with-hyperpod"></a>

Questo argomento illustra il processo di addestramento di un PyTorch modello utilizzando HyperPod.

In questo scenario, formiamo un PyTorch modello utilizzando il `hyp-pytorch-job` modello, che semplifica la creazione di posti di lavoro esponendo i parametri di uso comune. Gli artefatti del modello vengono archiviati in un bucket S3 per essere utilizzati successivamente per l’inferenza. Tuttavia, questa impostazione è facoltativa, quindi puoi scegliere la tua posizione di archiviazione preferita.

## Creazione di un job di addestramento
<a name="create-training-job"></a>

Puoi addestrare il modello utilizzando la CLI o Python SDK.

### Utilizzo della CLI
<a name="using-cli"></a>

Crea un job di addestramento con il comando seguente:

```
hyp create hyp-pytorch-job \
    --version 1.0 \
    --job-name test-pytorch-job \
    --image pytorch/pytorch:latest \
    --command '["python", "train.py"]' \
    --args '["--epochs", "10", "--batch-size", "32"]' \
    --environment '{"PYTORCH_CUDA_ALLOC_CONF": "max_split_size_mb:32"}' \
    --pull-policy "IfNotPresent" \
    --instance-type ml.p4d.24xlarge \
    --tasks-per-node 8 \
    --label-selector '{"accelerator": "nvidia", "network": "efa"}' \
    --deep-health-check-passed-nodes-only true \
    --scheduler-type "kueue" \
    --queue-name "training-queue" \
    --priority "high" \
    --max-retry 3 \
    --volumes '["data-vol", "model-vol", "checkpoint-vol"]' \
    --persistent-volume-claims '["shared-data-pvc", "model-registry-pvc"]' \
    --output-s3-uri s3://my-bucket/model-artifacts
```

**Spiegazione dei principali parametri richiesti**:
+ `--job-name`: identificatore univoco per il job di addestramento
+ `--image`: immagine Docker che contiene l’ambiente di addestramento

Questo comando avvia un job di addestramento denominato `test-pytorch-job`. `--output-s3-uri` specifica dove vengono archiviati gli artefatti del modello addestrato, ad esempio `s3://my-bucket/model-artifacts`. Annota questa posizione, perché ti servirà per implementare il modello personalizzato.

### Utilizzo di Python SDK
<a name="using-python-sdk"></a>

Per il controllo programmatico, utilizza l’SDK. Crea uno script Python per avviare lo stesso job di addestramento.

```
from sagemaker.hyperpod import HyperPodPytorchJob
from sagemaker.hyperpod.job 
import ReplicaSpec, Template, Spec, Container, Resources, RunPolicy, Metadata

# Define job specifications
nproc_per_node = "1"  # Number of processes per node
replica_specs = 
[
    ReplicaSpec
    (
        name = "pod",  # Replica name
        template = Template
        (
            spec = Spec
            (
                containers =
                [
                    Container
                    (
                        # Container name
                        name="container-name",  
                        
                        # Training image
                        image="448049793756.dkr.ecr.us-west-2.amazonaws.com/ptjob:mnist",  
                        
                        # Always pull image
                        image_pull_policy="Always",  
                        resources=Resources\
                        (
                            # No GPUs requested
                            requests={"nvidia.com/gpu": "0"},  
                            # No GPU limit
                            limits={"nvidia.com/gpu": "0"},   
                        ),
                        # Command to run
                        command=["python", "train.py"],  
                        # Script arguments
                        args=["--epochs", "10", "--batch-size", "32"],  
                    )
                ]
            )
        ),
    )
]
# Keep pods after completion
run_policy = RunPolicy(clean_pod_policy="None")  

# Create and start the PyTorch job
pytorch_job = HyperPodPytorchJob
(
    # Job name
    metadata = Metadata(name="demo"),  
    # Processes per node
    nproc_per_node = nproc_per_node,   
    # Replica specifications
    replica_specs = replica_specs,     
    # Run policy
    run_policy = run_policy,           
    # S3 location for artifacts
    output_s3_uri="s3://my-bucket/model-artifacts"  
)
# Launch the job
pytorch_job.create()
```

## Monitoraggio del job di addestramento
<a name="monitor-training-job"></a>

Monitora lo stato di avanzamento del processo con questi comandi:

### Utilizzo della CLI
<a name="monitor-cli"></a>

```
# Check job status
hyp list hyp-pytorch-job

# Get detailed information
hyp describe hyp-pytorch-job --job-name test-pytorch-job

# View logs
hyp get-logs hyp-pytorch-job \
    --pod-name test-pytorch-job-pod-0 \
    --job-name test-pytorch-job
```

**Nota**: la durata dell’addestramento varia in base alla complessità del modello e al tipo di istanza. Monitora i log per tenere traccia dello stato di avanzamento.

Questi comandi consentono di verificare lo stato del processo e di risolvere i problemi. Una volta completato correttamente il processo, gli artefatti del modello vengono salvati in `s3://my-bucket/model-artifacts`.

### Utilizzo di Python SDK
<a name="monitor-python-sdk"></a>

Aggiungi il codice seguente allo script Python:

```
print("List all pods created for this job:")
print(pytorch_job.list_pods())

print("Check the logs from pod0:")
print(pytorch_job.get_logs_from_pod(pod_name="demo-pod-0"))

print("List all HyperPodPytorchJobs:")
print(HyperPodPytorchJob.list())

print("Describe job:")
print(HyperPodPytorchJob.get(name="demo").model_dump())

pytorch_job.refresh()
print(pytorch_job.status.model_dump())
```

## Fasi successive
<a name="next-steps"></a>

Dopo l’addestramento, gli artefatti del modello vengono archiviati nel bucket S3 che hai specificato (`s3://my-bucket/model-artifacts`). Puoi utilizzare questi artefatti per implementare un modello. Attualmente, è necessario gestire manualmente la transizione dall’addestramento all’inferenza. Questa operazione prevede:
+ **Individuazione degli artefatti**: controlla il bucket S3 (`s3://my-bucket/model-artifacts`) per verificare che i file del modello addestrato siano presenti.
+ **Registrazione del percorso**: annota il percorso S3 esatto (ad esempio `s3://my-bucket/model-artifacts/test-pytorch-job/model.tar.gz`) da utilizzare nella configurazione dell’inferenza.
+ **Riferimento durante l’implementazione**: inserisci questo percorso S3 nella configurazione dell’endpoint personalizzato per assicurarti che venga caricato il modello corretto.

# Implementazione di un modello personalizzato
<a name="deploy-trained-model"></a>

Al termine dell’addestramento, implementa il modello per l’inferenza. Puoi implementare un modello personalizzato utilizzando la CLI o l’SDK.

## Individuazione degli artefatti del modello
<a name="locate-model-artifacts"></a>
+ **Controlla il tuo bucket S3**: verifica che gli artefatti del modello siano salvati in `s3://my-bucket/model-artifacts/`
+ **Annota il percorso esatto**: ti servirà il percorso completo (ad esempio `s3://my-bucket/model-artifacts/test-pytorch-job/model.tar.gz`)

## Implementazione con la CLI
<a name="deploy-using-cli"></a>

Per implementare il modello personalizzato, utilizza il comando seguente:

```
hyp create hyp-custom-endpoint \
    --version 1.0 \
    --env '{"HF_MODEL_ID":"/opt/ml/model", "SAGEMAKER_PROGRAM":"inference.py", }' \
    --model-source-type s3 \
    --model-location test-pytorch-job \
    --s3-bucket-name my-bucket \
    --s3-region us-east-2 \
    --prefetch-enabled true \ 
    --image-uri 763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-inference:latest \
    --model-volume-mount-name model-weights \
    --container-port 8080 \
    --resources-requests '{"cpu": "30000m", "nvidia.com/gpu": 1, "memory": "100Gi"}' \
    --resources-limits '{"nvidia.com/gpu": 1}' \
    --tls-output-s3-uri s3://<bucket_name> \
    --instance-type ml.g5.8xlarge \
    --endpoint-name endpoint-custom-pytorch \
    --model-name pytorch-custom-model
```

Questo comando distribuisce il modello addestrato come endpoint denominato `endpoint-custom-pytorch`. `--model-location` fa riferimento al percorso dell’artefatto specificato nel job di addestramento.

## Implementazione con Python SDK
<a name="deploy-using-sdk"></a>

Crea uno script Python con il seguente contenuto:

```
from sagemaker.hyperpod.inference.config.hp_custom_endpoint_config import Model, Server, SageMakerEndpoint, TlsConfig, EnvironmentVariables
from sagemaker.hyperpod.inference.hp_custom_endpoint import HPCustomEndpoint

model = Model(
    model_source_type="s3",
    model_location="test-pytorch-job",
    s3_bucket_name="my-bucket",
    s3_region="us-east-2",
    prefetch_enabled=True
)

server = Server(
    instance_type="ml.g5.8xlarge",
    image_uri="763104351884.dkr.ecr.us-east-2.amazonaws.com/huggingface-pytorch-tgi-inference:2.4.0-tgi2.3.1-gpu-py311-cu124-ubuntu22.04-v2.0",
    container_port=8080,
    model_volume_mount_name="model-weights"
)

resources = {
    "requests": {"cpu": "30000m", "nvidia.com/gpu": 1, "memory": "100Gi"},
    "limits": {"nvidia.com/gpu": 1}
}

env = EnvironmentVariables(
    HF_MODEL_ID="/opt/ml/model",
    SAGEMAKER_PROGRAM="inference.py",
    SAGEMAKER_SUBMIT_DIRECTORY="/opt/ml/model/code",
    MODEL_CACHE_ROOT="/opt/ml/model",
    SAGEMAKER_ENV="1"
)

endpoint_name = SageMakerEndpoint(name="endpoint-custom-pytorch")

tls_config = TlsConfig(tls_certificate_output_s3_uri="s3://<bucket_name>")

custom_endpoint = HPCustomEndpoint(
    model=model,
    server=server,
    resources=resources,
    environment=env,
    sage_maker_endpoint=endpoint_name,
    tls_config=tls_config
)

custom_endpoint.create()
```

## Richiamare l'endpoint
<a name="invoke-endpoint"></a>

### Utilizzo della CLI
<a name="invoke-using-cli"></a>

Testa l’endpoint con un input di esempio:

```
hyp invoke hyp-custom-endpoint \
    --endpoint-name endpoint-custom-pytorch \
    --body '{"inputs":"What is the capital of USA?"}'
```

Questa operazione restituisce la risposta del modello, ad esempio “La capitale degli Stati Uniti è Washington, D.C.”

### Utilizzo di SDK
<a name="invoke-using-sdk"></a>

Aggiungi il codice seguente allo script Python:

```
data = '{"inputs":"What is the capital of USA?"}'
response = custom_endpoint.invoke(body=data).body.read()
print(response)
```

## Gestione dell’endpoint
<a name="manage-endpoint"></a>

### Utilizzo della CLI
<a name="manage-using-cli"></a>

Elenca e ispeziona l’endpoint:

```
hyp list hyp-custom-endpoint
hyp get hyp-custom-endpoint --name endpoint-custom-pytorch
```

### Utilizzo di SDK
<a name="manage-using-sdk"></a>

Aggiungi il codice seguente allo script Python:

```
logs = custom_endpoint.get_logs()
print(logs)
```

## Eseguire la pulizia delle risorse
<a name="cleanup-resources"></a>

Al termine, elimina l’endpoint per evitare costi inutili.

### Utilizzo della CLI
<a name="cleanup-using-cli"></a>

```
hyp delete hyp-custom-endpoint --name endpoint-custom-pytorch
```

### Utilizzo di SDK
<a name="cleanup-using-sdk"></a>

```
custom_endpoint.delete()
```

## Fasi successive
<a name="next-steps"></a>

Hai distribuito e testato con successo un modello personalizzato utilizzando. SageMaker HyperPod Ora puoi utilizzare questo endpoint per l’inferenza nelle tue applicazioni.

# Implementa un modello JumpStart
<a name="deploy-jumpstart-model"></a>

Puoi implementare un JumpStart modello pre-addestrato per l'inferenza utilizzando la CLI o l'SDK.

## Utilizzo della CLI
<a name="deploy-jumpstart-cli"></a>

Esegui il comando seguente per distribuire un modello: JumpStart 

```
hyp create hyp-jumpstart-endpoint \
  --version 1.0 \
  --model-id deepseek-llm-r1-distill-qwen-1-5b \
  --instance-type ml.g5.8xlarge \
  --endpoint-name endpoint-test-jscli
```

## Utilizzo di SDK
<a name="deploy-jumpstart-sdk"></a>

Crea uno script Python con il seguente contenuto:

```
from sagemaker.hyperpod.inference.config.hp_jumpstart_endpoint_config import Model, Server, SageMakerEndpoint, TlsConfig
from sagemaker.hyperpod.inference.hp_jumpstart_endpoint import HPJumpStartEndpoint

model=Model(
    model_id='deepseek-llm-r1-distill-qwen-1-5b'
)

server=Server(
    instance_type='ml.g5.8xlarge',
)

endpoint_name=SageMakerEndpoint(name='<endpoint-name>')

# create spec
js_endpoint=HPJumpStartEndpoint(
    model=model,
    server=server,
    sage_maker_endpoint=endpoint_name
)
```

## Richiamare l'endpoint
<a name="invoke-jumpstart-endpoint"></a>

### Utilizzo della CLI
<a name="invoke-jumpstart-cli"></a>

Testa l’endpoint con un input di esempio:

```
hyp invoke hyp-jumpstart-endpoint \
    --endpoint-name endpoint-jumpstart \
    --body '{"inputs":"What is the capital of USA?"}'
```

### Utilizzo di SDK
<a name="invoke-jumpstart-sdk"></a>

Aggiungi il codice seguente allo script Python:

```
data = '{"inputs":"What is the capital of USA?"}'
response = js_endpoint.invoke(body=data).body.read()
print(response)
```

## Gestione dell’endpoint
<a name="manage-jumpstart-endpoint"></a>

### Utilizzo della CLI
<a name="manage-jumpstart-cli"></a>

Elenca e ispeziona l’endpoint:

```
hyp list hyp-jumpstart-endpoint
hyp get hyp-jumpstart-endpoint --name endpoint-jumpstart
```

### Utilizzo di SDK
<a name="manage-jumpstart-sdk"></a>

Aggiungi il codice seguente allo script Python:

```
endpoint_iterator = HPJumpStartEndpoint.list()
for endpoint in endpoint_iterator:
    print(endpoint.name, endpoint.status)

logs = js_endpoint.get_logs()
print(logs)
```

## Eseguire la pulizia delle risorse
<a name="cleanup-jumpstart-resources"></a>

Al termine, elimina l’endpoint per evitare costi inutili.

### Utilizzo della CLI
<a name="cleanup-jumpstart-cli"></a>

```
hyp delete hyp-jumpstart-endpoint --name endpoint-jumpstart
```

### Utilizzo di SDK
<a name="cleanup-jumpstart-sdk"></a>

```
js_endpoint.delete()
```

## Fasi successive
<a name="jumpstart-next-steps"></a>

Ora che hai addestrato un PyTorch modello, lo hai distribuito come endpoint personalizzato e distribuito un JumpStart modello utilizzando la HyperPod CLI e l'SDK, esplora le funzionalità avanzate:
+ **Addestramento multinodo**: estensione dell’addestramento su più istanze
+ **Container personalizzati**: crea ambienti di addestramento specializzati
+ **Integrazione con SageMaker Pipelines**: automatizza i flussi di lavoro ML
+ **Monitoraggio avanzato**: configura metriche e avvisi personalizzati

[Per altri esempi e configurazioni avanzate, visita il repository. SageMaker HyperPod GitHub ](https://github.com/aws/amazon-sagemaker-examples)

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

# HyperPod Utilizzo dell'operatore addetto alla formazione
<a name="sagemaker-eks-operator"></a>

 L'operatore di SageMaker HyperPod formazione di Amazon ti aiuta ad accelerare lo sviluppo di modelli di intelligenza artificiale generativi gestendo in modo efficiente la formazione distribuita su cluster di GPU di grandi dimensioni. Introduce funzionalità intelligenti di ripristino dai guasti, rilevamento delle interruzioni e gestione a livello di processo che riducono al minimo le interruzioni dell’addestramento e riducono i costi. A differenza dell’infrastruttura di addestramento tradizionale che richiede il riavvio completo del processo in caso di guasto, questo operatore implementa un ripristino chirurgico del processo per garantire il corretto funzionamento dei job di addestramento. 

 L'operatore collabora anche con le funzioni di monitoraggio HyperPod dello stato di salute e osservabilità, fornendo visibilità in tempo reale sull'esecuzione della formazione e il monitoraggio automatico di parametri critici come i picchi di perdita e il degrado della produttività. Puoi definire le policy di ripristino tramite semplici configurazioni YAML senza modifiche al codice, che consentono di rispondere rapidamente e ripristinare gli stati irreversibili dell’addestramento. Queste funzionalità di monitoraggio e ripristino interagiscono per garantire prestazioni di addestramento ottimali riducendo al minimo il sovraccarico operativo.

 Sebbene Kueue non sia necessario per questo operatore di addestramento, l’amministratore del cluster può installarlo e configurarlo per migliorare le capacità di pianificazione dei processi. Per ulteriori informazioni, consulta la [documentazione ufficiale di Kueue](https://kueue.sigs.k8s.io/docs/overview/).

**Nota**  
Per utilizzare l'operatore di formazione, è necessario utilizzare l'ultima [versione HyperPod AMI](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-release-ami-eks.html). Per eseguire l'aggiornamento, utilizzate l'operazione [ UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)API. Se utilizzi la [governance delle HyperPod attività](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-governance.html), deve essere anche la versione più recente.

## Versioni supportate
<a name="sagemaker-eks-operator-supported-versions"></a>

 L'operatore di HyperPod formazione funziona solo con versioni specifiche di Kubernetes, Kueue e. HyperPod Consulta l’elenco seguente per conoscere tutte le versioni compatibili. 
+ Versioni di Kubernetes supportate: 1.28, 1.29, 1.30, 1.31, 1.32 e 1.33
+ Versioni di Kueue consigliate: [v.0.12.2](https://github.com/kubernetes-sigs/kueue/releases/tag/v0.12.2) e [v.0.12.3](https://github.com/kubernetes-sigs/kueue/releases/tag/v0.12.3)
+ L'ultima versione HyperPod AMI. Per eseguire l'aggiornamento alla versione AMI più recente, utilizza l'[ UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)API.
+ [PyTorch 2.4.0 — 2.7.1](https://github.com/pytorch/pytorch/releases)

**Nota**  
Raccogliamo determinate metriche operative aggregate e anonime di routine per fornire la disponibilità essenziale del servizio. La creazione di queste metriche è completamente automatizzata e non prevede la revisione umana del carico di lavoro di formazione del modello sottostante. Queste metriche riguardano le operazioni lavorative, la gestione delle risorse e le funzionalità essenziali dei servizi.

# 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\$1/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 dopo il completamento del downgrade.

------
#### [ Amazon EKS Console ]

1. Apri la console Amazon EKS a [https://console.aws.amazon.com/eks/home\$1/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\$1restart | 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
   ```

# Utilizzo dell’operatore di addestramento per eseguire i processi
<a name="sagemaker-eks-operator-usage"></a>

 Per eseguire i processi con kubectl, devi creare un file job.yaml con le specifiche del processo ed eseguire `kubectl apply -f job.yaml` per inviare il processo. In questo file YAML, puoi specificare configurazioni personalizzate nell’argomento `logMonitoringConfiguration` per definire le regole di monitoraggio automatizzato che analizzano gli output dei log dei job di addestramento distribuito per rilevare problemi ed eseguire il ripristino. 

```
apiVersion: sagemaker.amazonaws.com/v1
kind: HyperPodPyTorchJob
metadata:
  labels:
    app.kubernetes.io/name: HyperPod
    app.kubernetes.io/managed-by: kustomize
  name: &jobname xxx
  annotations:
    XXX: XXX
    ......
spec:
  nprocPerNode: "X"
  replicaSpecs:
    - name: 'XXX'
      replicas: 16
      template:
        spec:
          nodeSelector:
            beta.kubernetes.io/instance-type: ml.p5.48xlarge
          containers:
            - name: XXX
              image: XXX
              imagePullPolicy: Always
              ports:
                - containerPort: 8080 # This is the port that HyperPodElasticAgent listens to
              resources:
                limits:
                  nvidia.com/gpu: 8
                  hugepages-2Mi: 5120Mi
                requests:
                  nvidia.com/gpu: 8
                  hugepages-2Mi: 5120Mi
                  memory: 32000Mi
          ......        
  runPolicy:
    jobMaxRetryCount: 50
    restartPolicy:
      numRestartBeforeFullJobRestart: 3 
      evalPeriodSeconds: 21600 
      maxFullJobRestarts: 1
    cleanPodPolicy: "All"
    logMonitoringConfiguration: 
      - name: "JobStart"
        logPattern: ".*Experiment configuration.*" # This is the start of the training script
        expectedStartCutOffInSeconds: 120 # Expected match in the first 2 minutes
      - name: "JobHangingDetection"
        logPattern: ".*\\[Epoch 0 Batch \\d+.*'training_loss_step': (\\d+(\\.\\d+)?).*"
        expectedRecurringFrequencyInSeconds: 300 # If next batch is not printed within 5 minute, consider it hangs. Or if loss is not decimal (e.g. nan) for 2 minutes, mark it hang as well.
        expectedStartCutOffInSeconds: 600 # Allow 10 minutes of job startup time
      - name: "NoS3CheckpointingDetection"
        logPattern: ".*The checkpoint is finalized. All shards is written.*"
        expectedRecurringFrequencyInSeconds: 600 # If next checkpoint s3 upload doesn't happen within 10 mins, mark it hang.
        expectedStartCutOffInSeconds: 1800 # Allow 30 minutes for first checkpoint upload
      - name: "LowThroughputDetection"
        logPattern: ".*\\[Epoch 0 Batch \\d+.*'samples\\/sec': (\\d+(\\.\\d+)?).*"
        metricThreshold: 80 # 80 samples/sec
        operator: "lteq"
        metricEvaluationDataPoints: 25 # if throughput lower than threshold for 25 datapoints, kill the job
```

Se desideri utilizzare le opzioni di monitoraggio del registro, assicurati di inviare il registro di allenamento a. `sys.stdout` HyperPod elastic agent monitora i log di allenamento in sys.stdout, che viene salvato in. `/tmp/hyperpod/` Per emettere i log di addestramento, puoi utilizzare il comando seguente.

```
logging.basicConfig(format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", level=logging.INFO, stream=sys.stdout)
```

 Nella tabella seguente sono descritte tutte le possibili configurazioni di monitoraggio dei log: 


| Parametro | Utilizzo | 
| --- | --- | 
| jobMaxRetryConta | Numero massimo di riavvii a livello di processo. | 
| Politica di riavvio: numRestartBefore FullJobRestart | Numero massimo di riavvii a livello di processo prima che l’operatore si riavvii a livello di processo. | 
| Politica di riavvio: evalPeriodSeconds | Periodo di valutazione del limite di riavvio in secondi. | 
| Politica di riavvio: riavvio maxFullJob | Numero massimo di riavvii completi del processo prima dell’errore del processo. | 
| cleanPodPolicy | Specifica i pod che l’operatore deve pulire. I valori accettati sono All, OnlyComplete e None. | 
| logMonitoringConfiguration | Le regole di monitoraggio dei log per il rilevamento di processi lenti e sospesi. | 
| expectedRecurringFrequencyInSeconds | Intervallo di tempo tra due LogPattern partite consecutive dopo il quale la regola restituisce HANGING. Se non specificato, non esiste alcun vincolo di tempo tra partite consecutive. LogPattern  | 
| expectedStartCutOffInSeconds | Tempo intercorso dalla prima LogPattern partita dopo il quale la regola restituisce HANGING. Se non specificato, non esiste alcun vincolo di tempo per la prima partita. LogPattern  | 
| logPattern | Espressione regolare che identifica le righe del log a cui si applica la regola quando è attiva. | 
| metricEvaluationDataPunti | Numero di volte consecutive in cui una regola restituisce SLOW prima di contrassegnare un processo come SLOW. Se il valore non viene specificato, viene usato il valore predefinito 1. | 
| metricThreshold | Soglia per il valore estratto da LogPattern con un gruppo di acquisizione. Se non specificato, la valutazione delle metriche non viene eseguita. | 
| operatore | La disuguaglianza da applicare alla configurazione del monitoraggio. I valori accettati sono gt, gteq, lt, lteq e eq. | 
| stopPattern | Espressione regolare per identificare la riga del log in corrispondenza della quale disattivare la regola. Se non viene specificata, la regola sarà sempre attiva. | 
| faultOnMatch | Indica se una corrispondenza di LogPattern deve causare immediatamente un errore di lavoro. Se impostato su true, il lavoro verrà contrassegnato come guasto non appena verrà trovato il LogPattern risultato, indipendentemente dagli altri parametri della regola. Se falsa o non è specificata, la regola verrà valutata come SLOW o HANGING in base ad altri parametri. | 

 Per una maggiore resilienza dell’addestramento, specifica i dettagli di configurazione dei nodi di riserva. Se il processo non riesce, l’operatore ricorre a Kueue per utilizzare i nodi riservati in anticipo per continuare a eseguire il processo. Le configurazioni dei nodi di riserva richiedono Kueue. Di conseguenza, se provi a inviare un processo con nodi di riserva ma Kueue non è installato, il processo non riuscirà. L’esempio seguente è un file `job.yaml` di esempio che contiene le configurazioni dei nodi di riserva.

```
apiVersion: sagemaker.amazonaws.com/v1
kind: HyperPodPyTorchJob
metadata:
  labels:
    kueue.x-k8s.io/queue-name: user-queue # Specify the queue to run the job.
  name: hyperpodpytorchjob-sample
spec:
  nprocPerNode: "1"
  runPolicy:
    cleanPodPolicy: "None"
  replicaSpecs: 
    - name: pods
      replicas: 1
      spares: 1 # Specify how many spare nodes to reserve.
      template:
        spec:
          containers:
            - name: XXX
              image: XXX
              
              imagePullPolicy: Always
              ports:
                - containerPort: 8080
              resources:
                requests:
                  nvidia.com/gpu: "0"
                limits:
                  nvidia.com/gpu: "0"
```

## Monitoraggio
<a name="sagemaker-eks-operator-usage-monitoring"></a>

Amazon SageMaker HyperPod è integrato con l'[osservabilità con Amazon Managed Grafana e Amazon Managed Service for Prometheus](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-observability-addon.html), quindi puoi configurare il monitoraggio per raccogliere e inserire i parametri in questi strumenti di osservabilità.

In alternativa, puoi acquisire le metriche tramite Servizio gestito da Amazon per Prometheus senza la funzionalità di osservabilità gestita. A tale scopo, includi nel file `job.yaml` le metriche da monitorare quando esegui i processi con `kubectl`.

```
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: hyperpod-training-operator
  namespace: aws-hyperpod
spec:
  ......
  endpoints:
    - port: 8081
      path: /metrics
      interval: 15s
```

Di seguito sono riportati gli eventi emessi dall’operatore di addestramento che puoi inserire in Servizio gestito da Amazon per Prometheus per monitorare i job di addestramento.


| Event | Description | 
| --- | --- | 
| hyperpod\$1training\$1operator\$1jobs\$1created\$1total | Numero totale di processi eseguiti dall’operatore di addestramento | 
| hyperpod\$1training\$1operator\$1jobs\$1restart\$1latency | Latenza di riavvio del processo corrente | 
| hyperpod\$1training\$1operator\$1jobs\$1fault\$1detection\$1latency | Latenza di rilevamento guasti | 
| hyperpod\$1training\$1operator\$1jobs\$1deleted\$1total | Numero totale di processi eliminati | 
| hyperpod\$1training\$1operator\$1jobs\$1successful\$1total | Numero totale di processi completati | 
| hyperpod\$1training\$1operator\$1jobs\$1failed\$1total | Numero totale di processi non riusciti | 
| hyperpod\$1training\$1operator\$1jobs\$1restarted\$1total | Numero totale di processi riavviati automaticamente | 

## Configurazione Docker di esempio
<a name="sagemaker-eks-operator-usage-docker"></a>

Di seguito è riportato un file Docker di esempio che puoi eseguire con il comando `hyperpod run`.

```
export AGENT_CMD="--backend=nccl"
exec hyperpodrun --server-host=${AGENT_HOST} --server-port=${AGENT_PORT} \
    --tee=3 --log_dir=/tmp/hyperpod \
    --nnodes=${NNODES} --nproc-per-node=${NPROC_PER_NODE} \
    --pre-train-script=/workspace/echo.sh --pre-train-args='Pre-training script' \
    --post-train-script=/workspace/echo.sh --post-train-args='Post-training script' \
    /workspace/mnist.py --epochs=1000 ${AGENT_CMD}
```

## Configurazioni di esempio per il monitoraggio dei log
<a name="sagemaker-eks-operator-usage-log-monitoring"></a>

**Rilevamento di processi bloccati**

Per rilevare i processi bloccati, utilizza le configurazioni seguenti con questi parametri:
+ expectedStartCutOffInSeconds — quanto tempo deve attendere il monitor prima di aspettarsi i primi log
+ expectedRecurringFrequencyInSeconds — l'intervallo di tempo di attesa per il successivo lotto di log

Con queste impostazioni, il monitoraggio dei log prevede di visualizzare una riga del log corrispondente al modello regex `.*Train Epoch.*` entro 60 secondi dall’inizio del job di addestramento. Dopo la prima occorrenza, il monitoraggio prevede di rilevare righe del log corrispondenti ogni 10 secondi. Se i primi registri non vengono visualizzati entro 60 secondi o i registri successivi non vengono visualizzati ogni 10 secondi, l'agente HyperPod elastico considera il contenitore bloccato e si coordina con l'operatore addetto alla formazione per riavviare il lavoro.

```
runPolicy:
    jobMaxRetryCount: 10
    cleanPodPolicy: "None"
    logMonitoringConfiguration:
      - name: "JobStartGracePeriod"
        # Sample log line: [default0]:2025-06-17 05:51:29,300 [INFO] __main__: Train Epoch: 5 [0/60000 (0%)]       loss=0.8470
        logPattern: ".*Train Epoch.*"  
        expectedStartCutOffInSeconds: 60 
      - name: "JobHangingDetection"
        logPattern: ".*Train Epoch.*"
        expectedRecurringFrequencyInSeconds: 10 # if the next batch is not printed within 10 seconds
```

**Picco di perdita dell’addestramento**

La configurazione del monitoraggio seguente emette log di addestramento con il modello `xxx training_loss_step xx`. Utilizza il parametro `metricEvaluationDataPoints`, che consente di specificare una soglia di punti dati prima che l’operatore riavvii il processo. Se il valore di perdita dell’addestramento è superiore a 2,0, l’operatore riavvia il processo.

```
runPolicy:
  jobMaxRetryCount: 10
  cleanPodPolicy: "None"
  logMonitoringConfiguration:
    - name: "LossSpikeDetection"
      logPattern: ".*training_loss_step (\\d+(?:\\.\\d+)?).*"   # training_loss_step 5.0
      metricThreshold: 2.0
      operator: "gt"
      metricEvaluationDataPoints: 5 # if loss higher than threshold for 5 data points, restart the job
```

**Rilevamento basso TFLOPs **

La configurazione del monitoraggio seguente emette log di addestramento con il modello `xx TFLOPs xx` ogni cinque secondi. Se TFLOPs è inferiore a 100 per 5 punti dati, l'operatore riavvia il processo di formazione.

```
runPolicy:
  jobMaxRetryCount: 10
  cleanPodPolicy: "None"
  logMonitoringConfiguration:
    - name: "TFLOPs"
      logPattern: ".* (.+)TFLOPs.*"    # Training model, speed: X TFLOPs...
      expectedRecurringFrequencyInSeconds: 5        
      metricThreshold: 100       # if Tflops is less than 100 for 5 data points, restart the job       
      operator: "lt"
      metricEvaluationDataPoints: 5
```

**Rilevamento del registro degli errori dello script di allenamento**

La seguente configurazione di monitoraggio rileva se il modello specificato in `logPattern` è presente nei registri di addestramento. Non appena l'operatore addetto alla formazione rileva lo schema di errore, lo considera un guasto e riavvia il lavoro.

```
runPolicy:
  jobMaxRetryCount: 10
  cleanPodPolicy: "None"
  logMonitoringConfiguration:
    - name: "GPU Error"
      logPattern: ".*RuntimeError.*out of memory.*"
      faultOnMatch: true
```

# Risoluzione dei problemi
<a name="sagemaker-eks-operator-troubleshooting"></a>

Consulta le sezioni seguenti per scoprire come risolvere gli errori relativi all’utilizzo dell’operatore di addestramento.

## Non riesco a installare l’operatore di addestramento
<a name="sagemaker-eks-operator-troubleshooting-installation-error"></a>

Se non riesci a installare l’operatore di addestramento, assicurati di utilizzare le [versioni supportate dei componenti](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html#sagemaker-eks-operator-supported-versions). Ad esempio, se ricevi un errore che indica che la tua versione HyperPod AMI è incompatibile con l'operatore di formazione, esegui [l'aggiornamento alla versione più recente](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html).

## Versione di HyperPod task governance incompatibile
<a name="sagemaker-eks-operator-troubleshooting-task-governance-version"></a>

Durante l'installazione, è possibile che venga visualizzato un messaggio di errore indicante che la versione di HyperPod task governance è incompatibile. L’operatore di addestramento funziona solo con la versione v1.3.0-eksbuild.1 o successive. Aggiorna il componente aggiuntivo per la governance delle HyperPod attività e riprova. 

## Autorizzazioni mancanti
<a name="sagemaker-eks-operator-troubleshooting-task-missing-permissions"></a>

 Durante la configurazione dell’operatore di addestramento o l’esecuzione dei processi, potresti ricevere errori che indicano che manca l’autorizzazione per eseguire determinate operazioni, ad esempio `DescribeClusterNode`. Per risolvere questi errori, assicurati di configurare correttamente le autorizzazioni IAM quando [configuri Amazon EKS Pod Identity Agent](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator-install.html#sagemaker-eks-operator-install-pod-identity).

# Utilizzo dell'allenamento elastico in Amazon SageMaker HyperPod
<a name="sagemaker-eks-elastic-training"></a>

 Elastic Training è una nuova SageMaker HyperPod funzionalità di Amazon che ridimensiona automaticamente i lavori di formazione in base alla disponibilità delle risorse di calcolo e alla priorità del carico di lavoro. I lavori di formazione elastica possono iniziare con le risorse di calcolo minime necessarie per l'addestramento dei modelli e scalare dinamicamente verso l'alto o verso il basso attraverso il checkpoint e la ripresa automatici su diverse configurazioni di nodi (a dimensione mondiale). La scalabilità si ottiene regolando automaticamente il numero di repliche parallele dei dati. Durante i periodi di utilizzo elevato del cluster, è possibile configurare processi di formazione elastici in modo da ridurli automaticamente in risposta alle richieste di risorse provenienti da lavori con priorità più elevata, liberando l'elaborazione per carichi di lavoro critici. Quando le risorse si liberano durante i periodi non di punta, i job di formazione elastica vengono ridimensionati automaticamente verso l'alto per accelerare la formazione, per poi ridurli quando i carichi di lavoro con priorità più alta richiedono nuovamente risorse. 

Elastic Training si basa sull'operatore addetto alla HyperPod formazione e integra i seguenti componenti:
+ [Amazon EKS per l'orchestrazione di Kubernetes](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks.html)
+ [Amazon SageMaker HyperPod Task Governance](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-governance.html) per l'accodamento, l'assegnazione delle priorità e la pianificazione dei lavori
+ [PyTorch Distributed Checkpoint (DCP)](https://docs.pytorch.org/docs/stable/distributed.checkpoint.html) per una gestione scalabile dello stato e dei checkpoint, come DCP

**Framework supportati**
+ PyTorch con Distributed Data Parallel (DDP) e Fully Sharded Data Parallel (FSDP)
+ PyTorch Checkpoint distribuito (DCP)

## Prerequisiti
<a name="sagemaker-eks-elastic-prereqs"></a>

### SageMaker HyperPod Cluster EKS
<a name="sagemaker-eks-elastic-hyperpod-cluster"></a>

È necessario disporre di un SageMaker HyperPod cluster in esecuzione con orchestrazione Amazon EKS. Per informazioni sulla creazione di un cluster HyperPod EKS, consulta:
+ [Guida introduttiva ad Amazon EKS in SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [Creazione di un SageMaker 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)

### SageMaker HyperPod Operatore di formazione
<a name="sagemaker-eks-elastic-training-operator"></a>

Elastic Training è supportato nella versione 1.2 e successive di training operator.

Per installare l'operatore di formazione come componente aggiuntivo EKS, vedi: [https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker- .html eks-operator-install](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator-install.html)

### (Consigliato) Installa e configura Task Governance e Kueue
<a name="sagemaker-eks-elastic-task-governance"></a>

Consigliamo di installare e configurare Kueue tramite [HyperPod Task Governance](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-governance.html) per specificare le priorità dei carichi di lavoro con un training elastico. Kueue offre una gestione più efficace del carico di lavoro con code, prioritizzazione, pianificazione dei gruppi, monitoraggio delle risorse e prelazione, essenziali per operare in ambienti di formazione multi-tenant.
+ La pianificazione in gruppo garantisce che tutti i moduli necessari per un lavoro di formazione inizino insieme. In questo modo si evitano situazioni in cui alcuni pod vengono avviati mentre altri rimangono in sospeso, il che potrebbe causare uno spreco di risorse.
+ La priorità delicata consente ai lavori elastici con priorità più bassa di destinare risorse a carichi di lavoro con priorità più elevata. I lavori elastici possono essere ridimensionati senza essere sfrattati con la forza, migliorando la stabilità complessiva del cluster.

Consigliamo di configurare i seguenti componenti Kueue:
+ PriorityClasses per definire l'importanza relativa del lavoro
+ ClusterQueues per gestire la condivisione globale delle risorse e le quote tra team o carichi di lavoro
+ LocalQueues per indirizzare i lavori dai singoli namespace a quelli appropriati ClusterQueue

Per configurazioni più avanzate, puoi anche incorporare:
+ Politiche di condivisione equa per bilanciare l'utilizzo delle risorse tra più team
+ Regole di priorità personalizzate per applicare il controllo organizzativo o dei costi SLAs 

Si prega di fare riferimento a:
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker- hyperpod-eks-operate-console -ui-governance.html](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-operate-console-ui-governance.html)
+ [Documentazione Kueue](https://kueue.sigs.k8s.io/)

### (Consigliato) Imposta i namespace utente e le quote di risorse
<a name="sagemaker-eks-elastic-namespaces-quotas"></a>

Quando si implementa questa funzionalità su Amazon EKS, consigliamo di applicare una serie di configurazioni di base a livello di cluster per garantire l'isolamento, l'equità delle risorse e la coerenza operativa tra i team.

#### Configurazione dello spazio dei nomi e degli accessi
<a name="sagemaker-eks-elastic-namespace-access"></a>

Organizza i tuoi carichi di lavoro utilizzando namespace separati per ogni team o progetto. Ciò consente di applicare un isolamento e una governance granulari. Consigliamo inoltre di configurare la mappatura RBAC da AWS IAM a Kubernetes per associare singoli utenti o ruoli IAM ai namespace corrispondenti.

Le pratiche chiave includono:
+ Mappa i ruoli IAM sugli account di servizio Kubernetes utilizzando IAM Roles for Service Accounts (IRSA) quando i carichi di lavoro richiedono autorizzazioni. AWS [https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html)
+ Applica le politiche RBAC per limitare gli utenti solo ai namespace designati (ad esempio,`Role`/`RoleBinding`anziché alle autorizzazioni a livello di cluster).

#### Vincoli relativi alle risorse e al calcolo
<a name="sagemaker-eks-elastic-resource-constraints"></a>

Per prevenire la contesa delle risorse e garantire una pianificazione equa tra i team, applica quote e limiti a livello di namespace:
+ ResourceQuotas per limitare il numero aggregato di CPU, memoria, storage e oggetti (pod, servizi, PVCs ecc.).
+ LimitRanges per applicare i limiti predefiniti e massimi di CPU e memoria per pod o per contenitore.
+ PodDisruptionBudgets (PDBs) se necessario per definire le aspettative di resilienza.
+ Facoltativo: vincoli di accodamento a livello di namespace (ad esempio, tramite Task Governance o Kueue) per impedire agli utenti di inviare lavori in modo eccessivo.

Questi vincoli aiutano a mantenere la stabilità del cluster e supportano una pianificazione prevedibile per carichi di lavoro di formazione distribuiti.

#### Dimensionamento automatico
<a name="sagemaker-eks-elastic-autoscaling"></a>

SageMaker HyperPod su EKS supporta la scalabilità automatica dei cluster tramite Karpenter. Quando Karpenter o un fornitore di risorse simile vengono utilizzati insieme alla formazione elastica, il cluster e il lavoro di formazione elastica possono aumentare automaticamente dopo l'invio di un lavoro di formazione elastica. Questo perché elastic training operator adotta un approccio avido, richiede sempre più risorse di calcolo rispetto alle risorse di calcolo disponibili fino a raggiungere il limite massimo stabilito dal lavoro. Ciò si verifica perché l'operatore di elastic training richiede continuamente risorse aggiuntive come parte dell'esecuzione elastica del lavoro, il che può attivare il provisioning dei nodi. I fornitori continui di risorse come Karpenter soddisferanno le richieste scalando il cluster di calcolo.

Per mantenere queste scalabilità prevedibili e sotto controllo, consigliamo di configurare a livello di ResourceQuotas namespace negli spazi dei nomi in cui vengono creati i job di training elastici. ResourceQuotas aiutano a limitare il numero massimo di risorse che i job possono richiedere, prevenendo la crescita illimitata dei cluster e permettendo comunque un comportamento elastico entro limiti definiti.

Ad esempio, una istanza da ResourceQuota 8 ml.p5.48xlarge avrà il seguente formato:

```
apiVersion: v1
kind: ResourceQuota
metadata:
  name: <quota-name>
  namespace: <namespace-name>
spec:
  hard:
    nvidia.com/gpu: "64"
    vpc.amazonaws.com/efa: "256"
    requests.cpu: "1536"
    requests.memory: "5120Gi"
    limits.cpu: "1536"
    limits.memory: "5120Gi"
```

## Costruisci un contenitore di formazione
<a name="sagemaker-eks-elastic-build-container"></a>

HyperPod [l'operatore addetto alla formazione lavora con un programma di PyTorch avvio personalizzato fornito tramite il pacchetto Python di HyperPod Elastic Agent (https://www.piwheels). org/project/hyperpod](https://www.piwheels.org/project/hyperpod-elastic-agent/)-elastic-agent/). I clienti devono installare l'agente elastico e sostituire il `torchrun` comando con to launch training. `hyperpodrun` Per maggiori dettagli, consulta:

[https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker- eks-operator-install .html\$1 sagemaker-eks-operator-elastic -agent](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator-install.html#sagemaker-eks-operator-elastic-agent)

Un esempio di contenitore di formazione:

```
FROM ...

...

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

## Modifica del codice di allenamento
<a name="sagemaker-eks-elastic-training-code"></a>

SageMaker HyperPod fornisce un set di ricette già configurate per l'esecuzione con Elastic Policy.

Per abilitare l'allenamento elastico per script di PyTorch allenamento personalizzati, dovrai apportare piccole modifiche al ciclo di allenamento. Questa guida illustra le modifiche necessarie per garantire che il processo di formazione risponda agli eventi di scalabilità elastica che si verificano quando la disponibilità delle risorse di calcolo cambia. Durante tutti gli eventi elastici (ad esempio, i nodi sono disponibili o i nodi vengono bloccati), il job di formazione riceve un segnale di evento elastico che viene utilizzato per coordinare uno spegnimento regolare salvando un checkpoint e riprendere l'allenamento riavviando da quel checkpoint salvato con una nuova configurazione mondiale. Per abilitare l'allenamento elastico con script di allenamento personalizzati, devi:

### Rilevare eventi Elastic Scaling
<a name="sagemaker-eks-elastic-detect-events"></a>

Nel ciclo di allenamento, verifica la presenza di eventi elastici durante ogni iterazione:

```
from hyperpod_elastic_agent.elastic_event_handler import elastic_event_detected

def train_epoch(model, dataloader, optimizer, args):
    for batch_idx, batch_data in enumerate(dataloader):
        # Forward and backward pass
        loss = model(batch_data).loss
        loss.backward()
        optimizer.step()
        optimizer.zero_grad()

        # Handle checkpointing and elastic scaling
        should_checkpoint = (batch_idx + 1) % args.checkpoint_freq == 0
        elastic_event = elastic_event_detected()
        
        # Save checkpoint if scaling-up or scaling down job
        if should_checkpoint or elastic_event:
            save_checkpoint(model, optimizer, scheduler, 
                            checkpoint_dir=args.checkpoint_dir, 
                            step=global_step)
              
            if elastic_event:
                print("Elastic scaling event detected. Checkpoint saved.")
                return
```

### Implementa Checkpoint Saving e Checkpoint Loading
<a name="sagemaker-eks-elastic-checkpoint-implementation"></a>

Nota: consigliamo di utilizzare PyTorch Distributed Checkpoint (DCP) per salvare gli stati del modello e dell'ottimizzatore, poiché DCP supporta la ripresa da un checkpoint con dimensioni mondiali diverse. Altri formati di checkpoint potrebbero non supportare il caricamento dei checkpoint su mondi di dimensioni diverse, nel qual caso dovrai implementare una logica personalizzata per gestire le modifiche dinamiche delle dimensioni mondiali.

```
import torch.distributed.checkpoint as dcp
from torch.distributed.checkpoint.state_dict import get_state_dict, set_state_dict

def save_checkpoint(model, optimizer, lr_scheduler, user_content, checkpoint_path):
    """Save checkpoint using DCP for elastic training."""
    state_dict = {
        "model": model,
        "optimizer": optimizer,
        "lr_scheduler": lr_scheduler,
        **user_content
    }
      
    dcp.save(
        state_dict=state_dict,
        storage_writer=dcp.FileSystemWriter(checkpoint_path)
    )

def load_checkpoint(model, optimizer, lr_scheduler, checkpoint_path):
    """Load checkpoint using DCP with automatic resharding."""
    state_dict = {
        "model": model,
        "optimizer": optimizer,
        "lr_scheduler": lr_scheduler
    }
      
    dcp.load(
        state_dict=state_dict,
        storage_reader=dcp.FileSystemReader(checkpoint_path)
    )
      
    return model, optimizer, lr_scheduler
```

### (Facoltativo) Usa dataloader stateful
<a name="sagemaker-eks-elastic-stateful-dataloaders"></a>

Se ti stai allenando solo per una singola epoca (ad esempio, un singolo passaggio attraverso l'intero set di dati), il modello deve vedere ogni campione di dati esattamente una volta. Se il processo di addestramento si interrompe a metà epoca e riprende con una dimensione mondiale diversa, i campioni di dati precedentemente elaborati verranno ripetuti se lo stato del dataloader non è persistente. Un dataloader con stato impedisce che ciò accada salvando e ripristinando la posizione del dataloader, assicurando che le esecuzioni riprese continuino dopo l'evento di scalabilità elastica senza rielaborare alcun campione. Consigliamo di utilizzare [StatefulDataLoader](https://meta-pytorch.org/data/main/torchdata.stateful_dataloader.html), che sostituisce direttamente tali aggiunte e metodi, che abiliti il checkpoint a metà periodo del processo di caricamento dei `torch.utils.data.DataLoader` dati. `state_dict()` `load_state_dict()`

## Invio di lavori di formazione elastici
<a name="sagemaker-eks-elastic-submit-job"></a>

[HyperPod l'operatore di formazione](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator-usage.html) definisce un nuovo tipo di risorsa -`hyperpodpytorchjob`. Elastic Training estende questo tipo di risorsa e aggiunge i campi evidenziati di seguito:

```
apiVersion: sagemaker.amazonaws.com/v1
kind: HyperPodPyTorchJob
metadata:
  name: elastic-training-job
spec:
  elasticPolicy:
    minReplicas: 1
    maxReplicas: 4
    # Increment amount of pods in fixed-size groups
    # Amount of pods will be equal to minReplicas + N * replicaIncrementStep
    replicaIncrementStep: 1           
    # ... or Provide an exact amount of pods that required for training
    replicaDiscreteValues: [2,4,8]     

    # How long traing operator wait job to save checkpoint and exit during
    # scaling events. Job will be force-stopped after this period of time
    gracefulShutdownTimeoutInSeconds: 600

    # When scaling event is detected:   
    # how long job controller waits before initiate scale-up.
    # Some delay can prevent from frequent scale-ups and scale-downs
    scalingTimeoutInSeconds: 60

    # In case of faults, specify how long elastic training should wait for
    # recovery, before triggering a scale-down
    faultyScaleDownTimeoutInSeconds: 30
  ...
  replicaSpecs:
    - name: pods
      replicas: 4           # Initial replica count
      maxReplicas: 8        # Max for this replica spec (should match elasticPolicy.maxReplicas)
      ...
```

### Usare kubectl
<a name="sagemaker-eks-elastic-kubectl-apply"></a>

Successivamente puoi avviare l'allenamento elastico con il seguente comando.

```
kubectl apply -f elastic-training-job.yaml
```

### Utilizzo delle SageMaker ricette
<a name="sagemaker-eks-elastic-sagemaker-recipes"></a>

I lavori di Elastic Training possono essere avviati tramite [SageMaker HyperPod ricette](https://github.com/aws/sagemaker-hyperpod-recipes).

**Nota**  
Abbiamo incluso **46** ricette elastiche per i lavori **SFO** e **DPO** su Hyperpod Recipe. Gli utenti possono avviare questi lavori con una sola modifica di riga sullo script di avvio statico esistente:  
`++recipes.elastic_policy.is_elastic=true`

Oltre alle ricette statiche, le ricette elastiche aggiungono i seguenti campi per definire i comportamenti elastici:

#### Politica elastica
<a name="sagemaker-eks-elastic-policy"></a>

Il `elastic_policy` campo definisce la configurazione a livello di lavoro per il job di elastic training, ha le seguenti configurazioni:
+ `is_elastic`: `bool` - se questo lavoro è un lavoro elastico
+ `min_nodes`: `int` - il numero minimo di nodi utilizzati per l'allenamento elastico
+ `max_nodes`: `int` - il numero massimo di nodi utilizzati per l'allenamento elastico
+ `replica_increment_step`: `int` - incrementa la quantità di pod in gruppi a dimensione fissa, questo campo si esclude a vicenda per quello che definiremo più avanti. `scale_config`
+ `use_graceful_shutdown`: `bool` - se si utilizza Graceful Shutdown durante gli eventi di ridimensionamento, l'impostazione predefinita è. `true`
+ `scaling_timeout`: `int` - il tempo di attesa in secondi durante l'evento di ridimensionamento prima del timeout
+ `graceful_shutdown_timeout`: `int` - il tempo di attesa per lo spegnimento graduale

Di seguito è riportato un esempio di definizione di questo campo, che puoi trovare anche nel repository Hyperpod Recipe in recipe: `recipes_collection/recipes/fine-tuning/llama/llmft_llama3_1_8b_instruct_seq4k_gpu_sft_lora.yaml`

```
<static recipe>
...
elastic_policy:
  is_elastic: true
  min_nodes: 1
  max_nodes: 16
  use_graceful_shutdown: true
  scaling_timeout: 600
  graceful_shutdown_timeout: 600
```

#### Config della scala
<a name="sagemaker-eks-elastic-scale-config"></a>

Il `scale_config` campo definisce le configurazioni prioritarie su ogni scala specifica. È un dizionario chiave-valore, dove key è un numero intero che rappresenta la scala di destinazione e value è un sottoinsieme della ricetta base. Su `<key>` larga scala, utilizziamo il `<value>` per aggiornare le configurazioni specifiche nella ricetta. base/static Di seguito viene mostrato un esempio di questo campo:

```
scale_config:   
...
  2:
    trainer:
      num_nodes: 2
    training_config:
      training_args:
        train_batch_size: 128
        micro_train_batch_size: 8
        learning_rate: 0.0004
  3:
    trainer:
      num_nodes: 3
    training_config:
      training_args:
        train_batch_size: 128
        learning_rate: 0.0004
        uneven_batch:
          use_uneven_batch: true
          num_dp_groups_with_small_batch_size: 16
          small_local_batch_size: 5
          large_local_batch_size: 6
 ...
```

La configurazione precedente definisce la configurazione di addestramento su scala 2 e 3. In entrambi i casi, utilizziamo il tasso di apprendimento`4e-4`, la dimensione del batch di`128`. Ma sulla scala 2, utilizziamo un numero `micro_train_batch_size` di 8, mentre sulla scala 3, utilizziamo una dimensione del batch non uniforme poiché la dimensione del batch del treno non può essere divisa equamente su 3 nodi.

**Dimensione irregolare del Batch**

Questo è un campo per definire il comportamento di distribuzione dei batch quando la dimensione globale del batch non può essere divisa equamente per il numero di ranghi. Non è specifico per l'allenamento elastico, ma è un fattore abilitante per una maggiore granularità di scalabilità.
+ `use_uneven_batch`: `bool` - se si utilizza una distribuzione non uniforme dei lotti
+ `num_dp_groups_with_small_batch_size`: `int` - nella distribuzione non uniforme dei lotti, alcuni ranghi utilizzano lotti locali di dimensioni inferiori, mentre altri utilizzano lotti di dimensioni maggiori. La dimensione globale del batch deve essere uguale a `small_local_batch_size * num_dp_groups_with_small_batch_size + (world_size-num_dp_groups_with_small_batch_size) * large_local_batch_size`
+ `small_local_batch_size`: `int` - questo valore è la dimensione del batch locale più piccola
+ `large_local_batch_size`: `int` - questo valore è la dimensione del batch locale più grande

**Monitora la formazione su MLFlow**

I lavori di creazione di ricette Hyperpod supportano l'osservabilità tramite. MLFlow Gli utenti possono specificare le MLFlow configurazioni nella ricetta:

```
training_config:
  mlflow:
    tracking_uri: "<local_file_path or MLflow server URL>"
    run_id: "<MLflow run ID>"
    experiment_name: "<MLflow experiment name, e.g. llama_exps>"
    run_name: "<run name, e.g. llama3.1_8b>"
```

[Queste configurazioni sono mappate alla configurazione corrispondente. MLFlow ](https://mlflow.org/docs/latest/ml/tracking/tracking-api/#setup--configuration) Di seguito è riportato un esempio di MLflow dashboard per un lavoro di allenamento elastico.

![\[Di seguito è riportato un esempio di MLflow dashboard per un lavoro di allenamento elastico.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-elastic-sample-dashboard.png)


Dopo aver definito le ricette elastiche, possiamo utilizzare gli script di avvio, ad esempio `launcher_scripts/llama/run_llmft_llama3_1_8b_instruct_seq4k_gpu_sft_lora.sh` per avviare un processo di allenamento elastico. È simile all'avvio di un lavoro statico utilizzando la ricetta Hyperpod.

**Nota**  
Il processo di formazione elastico di Recipe Support riprende automaticamente dai checkpoint più recenti, tuttavia, per impostazione predefinita, ogni riavvio crea una nuova directory di formazione. Per consentire la corretta ripresa dall'ultimo checkpoint, dobbiamo assicurarci che venga riutilizzata la stessa directory di formazione. Questo può essere fatto impostando  
`recipes.training_config.training_args.override_training_dir=true`

## Esempi e limitazioni dei casi d'uso
<a name="sagemaker-eks-elastic-use-cases"></a>

### Aumenta la scalabilità quando sono disponibili più risorse
<a name="sagemaker-eks-elastic-scale-up"></a>

Quando più risorse diventano disponibili sul cluster (ad esempio, altri carichi di lavoro vengono completati). Durante questo evento, il training controller aumenterà automaticamente il processo di formazione. Questo comportamento è spiegato di seguito.

Per simulare una situazione in cui diventano disponibili più risorse, possiamo inviare un lavoro ad alta priorità e quindi rilasciare nuovamente le risorse eliminando il lavoro ad alta priorità.

```
# Submit a high-priority job on your cluster. As a result of this command
# resources will not be available for elastic training
kubectl apply -f high_prioriy_job.yaml

# Submit an elastic job with normal priority
kubectl apply -f hyperpod_job_with_elasticity.yaml

# Wait for training to start....

# Delete high priority job. This command will make additional resources available for
# elastic training
kubectl delete -f high_prioriy_job.yaml

# Observe the scale-up of elastic job
```

Comportamento previsto:
+ L'operatore di formazione crea un carico di lavoro Kueue Quando un lavoro di formazione elastico richiede una modifica delle dimensioni mondiali, l'operatore di formazione genera un oggetto Kueue Workload aggiuntivo che rappresenta i nuovi requisiti di risorse.
+ Kueue ammette il carico di lavoro Kueue valuta la richiesta in base alle risorse disponibili, alle priorità e alle politiche di coda. Una volta approvato, il carico di lavoro viene ammesso.
+ L'operatore addetto all'addestramento crea i pod aggiuntivi Al momento dell'ammissione, l'operatore lancia i pod aggiuntivi necessari per raggiungere la nuova dimensione mondiale.
+ Quando i nuovi pod sono pronti, l'operatore addetto all'addestramento invia uno speciale segnale elastico di evento al training script.
+ **Il processo di addestramento esegue il checkpoint, per prepararsi a un arresto regolare Il processo di addestramento verifica periodicamente la presenza del segnale elastico dell'evento chiamando la funzione elastic\$1event\$1detected ().** Una volta rilevato, avvia un checkpoint. Una volta completato con successo il checkpoint, il processo di addestramento termina senza problemi.
+ L'operatore addetto alla formazione riavvia il lavoro con la nuova dimensione mondiale L'operatore attende la chiusura di tutti i processi, quindi riavvia il processo di formazione utilizzando la dimensione mondiale aggiornata e il checkpoint più recente.

**Nota:** quando Kueue non viene utilizzato, l'operatore addetto alla formazione salta i primi due passaggi. Tenta immediatamente di creare i pod aggiuntivi necessari per le nuove dimensioni del mondo. Se nel cluster non sono disponibili risorse sufficienti, questi pod rimarranno in **sospeso fino a quando la** capacità non sarà disponibile.

![\[Il diagramma illustra la tempistica del ridimensionamento e delle risorse.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-elastic-resize-timeline.png)


### Prelazione per mansioni ad alta priorità
<a name="sagemaker-eks-elastic-preemption"></a>

I lavori elastici possono essere ridimensionati automaticamente quando un lavoro ad alta priorità richiede risorse. Per simulare questo comportamento, puoi inviare un lavoro di formazione elastico, che utilizzi il numero massimo di risorse disponibili dall'inizio della formazione, inviare un lavoro ad alta priorità e osservare il comportamento di prelazione.

```
# Submit an elastic job with normal priority
kubectl apply -f hyperpod_job_with_elasticity.yaml

# Submit a high-priority job on your cluster. As a result of this command
# some amount of resources will be   
kubectl apply -f high_prioriy_job.yaml

# Observe scale-down behaviour
```

Quando un lavoro ad alta priorità richiede risorse, Kueue può anticipare i carichi di lavoro Elastic Training con priorità più bassa (potrebbe esserci più di un oggetto Workload associato al job Elastic Training). Il processo di prelazione segue questa sequenza:

1. Viene inviato un lavoro ad alta priorità Il lavoro crea un nuovo carico di lavoro Kueue, ma il carico di lavoro non può essere ammesso a causa di risorse del cluster insufficienti.

1. Kueue anticipa uno dei carichi di lavoro di Elastic Training I job Elastic possono avere più carichi di lavoro attivi (uno per configurazione di dimensioni mondiali). Kueue ne seleziona uno da anticipare in base alle politiche di priorità e coda.

1. L'operatore addetto all'addestramento invia un segnale di evento elastico. Una volta attivata la prelazione, l'operatore addetto all'addestramento notifica che il processo di addestramento in corso si interrompa correttamente.

1. Il processo di formazione esegue il checkpoint. Il training job verifica periodicamente la presenza di segnali di eventi elastici. Quando viene rilevato, avvia un checkpoint coordinato per preservare i progressi prima dello spegnimento.

1. l'operatore addetto alla formazione pulisce i pod e i carichi di lavoro. L'operatore attende il completamento del checkpoint, quindi elimina i pod di addestramento che facevano parte del carico di lavoro previsto. Rimuove inoltre l'oggetto Workload corrispondente da Kueue.

1. Il carico di lavoro ad alta priorità è ammesso. Una volta liberate le risorse, Kueue ammette il lavoro ad alta priorità, consentendogli di avviare l'esecuzione.  
![\[Cronologia di prelazione per carichi di lavoro di allenamento elastici.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod/hyperpod-elastic-preemption-timeline.png)

La prelazione può causare la sospensione dell'intero processo di formazione, il che potrebbe non essere auspicabile per tutti i flussi di lavoro. Per evitare la sospensione completa del lavoro e consentire comunque la scalabilità elastica, i clienti possono configurare due diversi livelli di priorità all'interno dello stesso processo di formazione definendo due sezioni: `replicaSpec`
+ Una ReplicaSpec primaria (fissa) con priorità normale o alta
  + Contiene il numero minimo richiesto di repliche necessarie per mantenere attivo il processo di formazione.
  + Ne utilizza uno superiore PriorityClass, garantendo che queste repliche *non vengano mai* annullate.
  + Mantiene i progressi di base anche quando il cluster è sotto pressione in termini di risorse.
+ Una ReplicaSpec elastica (scalabile) con priorità inferiore
  + Contiene le repliche opzionali aggiuntive che forniscono elaborazione aggiuntiva durante la scalabilità elastica.
  + Utilizza una versione inferiore PriorityClass, che consente a Kueue di anticipare queste repliche quando i lavori con priorità più alta richiedono risorse.
  + Assicura che venga recuperata solo la parte elastica, mentre l'allenamento di base continua senza interruzioni.

Questa configurazione consente la prelazione parziale, in cui viene recuperata solo la capacità elastica, mantenendo la continuità della formazione pur supportando un'equa condivisione delle risorse in ambienti multi-tenant. Esempio:

```
apiVersion: sagemaker.amazonaws.com/v1
kind: HyperPodPyTorchJob
metadata:
  name: elastic-training-job
spec:
  elasticPolicy:
    minReplicas: 2
    maxReplicas: 8
    replicaIncrementStep: 2
  ...
  replicaSpecs:
    - name: base
      replicas: 2
      template:
        spec:
          priorityClassName: high-priority # set high-priority to avoid evictions
           ...
    - name: elastic
      replicas: 0
      maxReplicas: 6
      template:
        spec:
          priorityClassName: low-priority. # Set low-priority for elastic part
           ...
```

### Gestione dello sfratto dei pod, dei crash dei pod e del degrado dell'hardware:
<a name="sagemaker-eks-elastic-pod-eviction"></a>

L'operatore addetto alla HyperPod formazione include meccanismi integrati per ripristinare il processo di formazione quando viene interrotto inaspettatamente. Le interruzioni possono verificarsi per vari motivi, ad esempio errori del codice di addestramento, rimozione dei pod, guasti dei nodi, deterioramento dell'hardware e altri problemi di runtime.

Quando ciò accade, l'operatore tenta automaticamente di ricreare i pod interessati e di riprendere l'addestramento dal checkpoint più recente. Se il recupero non è immediatamente possibile, ad esempio a causa dell'insufficiente capacità di riserva, l'operatore può continuare a progredire riducendo temporaneamente le dimensioni mondiali e riducendo il lavoro di formazione elastica.

Quando un processo di training elastico si blocca o perde delle repliche, il sistema si comporta come segue:
+ Fase di ripristino (utilizzando nodi di riserva) Il Training Controller attende che le risorse siano `faultyScaleDownTimeoutInSeconds` disponibili e tenta di recuperare le repliche fallite ridistribuendo i pod sulla capacità di riserva.
+ Elastic scale-down Se il ripristino non è possibile entro la finestra di timeout, l'operatore addetto alla formazione ridimensiona il lavoro fino a renderlo più piccolo (se la politica elastica del lavoro lo consente). L'allenamento riprende quindi con un minor numero di repliche.
+ Scale-up elastico Quando le risorse aggiuntive diventano nuovamente disponibili, l'operatore ridimensiona automaticamente il lavoro di formazione fino alla dimensione mondiale preferita.

Questo meccanismo garantisce che la formazione possa continuare con tempi di inattività minimi, anche in caso di pressione delle risorse o di guasti parziali dell'infrastruttura, sfruttando al contempo la scalabilità elastica.

### Usa l'allenamento elastico con altre funzionalità HyperPod
<a name="sagemaker-eks-elastic-other-features"></a>

Attualmente Elastic Training non supporta funzionalità di formazione senza checkpoint, checkpoint HyperPod gestito a più livelli o istanze Spot.

**Nota**  
Raccogliamo determinate metriche operative di routine aggregate e anonime per fornire la disponibilità essenziale del servizio. La creazione di queste metriche è completamente automatizzata e non prevede la revisione umana del carico di lavoro di formazione del modello sottostante. Queste metriche riguardano un lavoro e la scalabilità delle operazioni, la gestione delle risorse e le funzionalità essenziali del servizio.

# Osservabilità per SageMaker HyperPod cluster Amazon orchestrata da Amazon EKS
<a name="sagemaker-hyperpod-eks-cluster-observability"></a>

[Per ottenere un'osservabilità completa nelle risorse e nei componenti software del cluster Amazon SageMaker HyperPod (SageMaker HyperPod), integra il cluster con [Amazon CloudWatch Container Insights, Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html)[Managed Service for Prometheus](https://docs.aws.amazon.com/prometheus/latest/userguide/what-is-Amazon-Managed-Service-Prometheus.html) e Amazon Managed Grafana.](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html) Questi strumenti forniscono visibilità sull’integrità del cluster, sulle metriche delle prestazioni e sull’utilizzo delle risorse.

L'integrazione con Amazon Managed Service for Prometheus consente l'esportazione di metriche relative alle HyperPod risorse del cluster, fornendo informazioni sulle loro prestazioni, utilizzo e integrità. L’integrazione con Grafana gestito da Amazon consente la visualizzazione di queste metriche attraverso varie dashboard Grafana che offrono un’interfaccia intuitiva per il monitoraggio e l’analisi del comportamento del cluster. Sfruttando questi servizi, ottieni una visione centralizzata e unificata del HyperPod cluster, facilitando il monitoraggio proattivo, la risoluzione dei problemi e l'ottimizzazione dei carichi di lavoro di formazione distribuiti.

**Nota**  
Mentre CloudWatch Amazon Managed Service for Prometheus e Amazon Managed Grafana si concentrano sulle metriche operative (ad esempio, lo stato del sistema, la formazione, le prestazioni lavorative SageMaker HyperPod ), i [report sull'utilizzo completano](sagemaker-hyperpod-eks-operate-console-ui-governance.md) la Task Governance per fornire informazioni sulla responsabilità finanziaria e delle risorse. Questi report monitorano:  
Utilizzo del calcolo (GPU/CPU/Neuron Core hours) across namespaces/teams
Attribuzione dei costi per le risorse allocate e quelle prese in prestito
Tendenze cronologiche (fino a 180 giorni) per audit e ottimizzazione
Per ulteriori informazioni sulla configurazione e la generazione di report sull'utilizzo, consulta [Reporting Compute](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-usage-reporting.html) Usage in. HyperPod 

**Suggerimento**  
Per trovare esempi e soluzioni pratiche, consulta anche la sezione [Osservabilità](https://catalog.us-east-1.prod.workshops.aws/workshops/2433d39e-ccfe-4c00-9d3d-9917b729258e/en-US/06-observability) [nel SageMaker HyperPod workshop Amazon EKS Support](https://catalog.us-east-1.prod.workshops.aws/workshops/2433d39e-ccfe-4c00-9d3d-9917b729258e).

Passa ai seguenti argomenti per configurare l'osservabilità dei SageMaker HyperPod cluster.

**Topics**
+ [Osservabilità dei modelli per i lavori di formazione su SageMaker HyperPod cluster orchestrati da Amazon EKS](sagemaker-hyperpod-eks-cluster-observability-model.md)
+ [Osservabilità di cluster e attività](sagemaker-hyperpod-eks-cluster-observability-cluster.md)

# Osservabilità dei modelli per i lavori di formazione su SageMaker HyperPod cluster orchestrati da Amazon EKS
<a name="sagemaker-hyperpod-eks-cluster-observability-model"></a>

SageMaker HyperPod i cluster orchestrati con Amazon EKS possono integrarsi con l'applicazione [MLflow su Amazon Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html). SageMaker Gli amministratori dei cluster configurano il MLflow server e lo collegano ai cluster. SageMaker HyperPod I Data Scientist possono ottenere informazioni approfondite sul modello.

**Per configurare un MLflow server tramite AWS CLI**

Un amministratore del cluster deve creare un server di MLflow tracciamento.

1. Crea un server di MLflow tracciamento SageMaker AI, seguendo le istruzioni in [Creare un server di tracciamento utilizzando la AWS CLI](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server-cli.html#mlflow-create-tracking-server-cli-infra-setup).

1. Assicurati che l'[https://docs.aws.amazon.com/eks/latest/APIReference/API_auth_AssumeRoleForPodIdentity.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_auth_AssumeRoleForPodIdentity.html)autorizzazione esista nel ruolo di esecuzione IAM per SageMaker HyperPod.

1. Se il componente aggiuntivo `eks-pod-identity-agent` non è già installato sul cluster EKS, esegui l’operazione.

   ```
   aws eks create-addon \
       --cluster-name <eks_cluster_name> \
       --addon-name eks-pod-identity-agent \
       --addon-version vx.y.z-eksbuild.1
   ```

1. Crea un `trust-relationship.json` file per un nuovo ruolo da chiamare per Pod MLflow APIs.

   ```
   cat >trust-relationship.json <<EOF
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
               "Effect": "Allow",
               "Principal": {
                   "Service": "pods.eks.amazonaws.com"
   
               },
               "Action": [
                   "sts:AssumeRole",
                   "sts:TagSession"
               ]
           }
       ]
   }
   EOF
   ```

   Esegui il codice seguente per creare un ruolo e collegare la relazione di attendibilità.

   ```
   aws iam create-role --role-name hyperpod-mlflow-role \
       --assume-role-policy-document file://trust-relationship.json \
       --description "allow pods to emit mlflow metrics and put data in s3"
   ```

1. Crea la policy seguente che concede al pod l’accesso per chiamare tutte le operazioni `sagemaker-mlflow` e inserire gli artefatti del modello in S3. L'autorizzazione S3 esiste già all'interno del server di tracciamento, ma se gli artefatti del modello sono troppo grandi, viene effettuata una chiamata diretta a s3 dal MLflow codice per caricare gli artefatti.

   ```
   cat >hyperpod-mlflow-policy.json <<EOF
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sagemaker-mlflow:AccessUI",
                   "sagemaker-mlflow:CreateExperiment",
                   "sagemaker-mlflow:SearchExperiments",
                   "sagemaker-mlflow:GetExperiment",
                   "sagemaker-mlflow:GetExperimentByName",
                   "sagemaker-mlflow:DeleteExperiment",
                   "sagemaker-mlflow:RestoreExperiment",
                   "sagemaker-mlflow:UpdateExperiment",
                   "sagemaker-mlflow:CreateRun",
                   "sagemaker-mlflow:DeleteRun",
                   "sagemaker-mlflow:RestoreRun",
                   "sagemaker-mlflow:GetRun",
                   "sagemaker-mlflow:LogMetric",
                   "sagemaker-mlflow:LogBatch",
                   "sagemaker-mlflow:LogModel",
                   "sagemaker-mlflow:LogInputs",
                   "sagemaker-mlflow:SetExperimentTag",
                   "sagemaker-mlflow:SetTag",
                   "sagemaker-mlflow:DeleteTag",
                   "sagemaker-mlflow:LogParam",
                   "sagemaker-mlflow:GetMetricHistory",
                   "sagemaker-mlflow:SearchRuns",
                   "sagemaker-mlflow:ListArtifacts",
                   "sagemaker-mlflow:UpdateRun",
                   "sagemaker-mlflow:CreateRegisteredModel",
                   "sagemaker-mlflow:GetRegisteredModel",
                   "sagemaker-mlflow:RenameRegisteredModel",
                   "sagemaker-mlflow:UpdateRegisteredModel",
                   "sagemaker-mlflow:DeleteRegisteredModel",
                   "sagemaker-mlflow:GetLatestModelVersions",
                   "sagemaker-mlflow:CreateModelVersion",
                   "sagemaker-mlflow:GetModelVersion",
                   "sagemaker-mlflow:UpdateModelVersion",
                   "sagemaker-mlflow:DeleteModelVersion",
                   "sagemaker-mlflow:SearchModelVersions",
                   "sagemaker-mlflow:GetDownloadURIForModelVersionArtifacts",
                   "sagemaker-mlflow:TransitionModelVersionStage",
                   "sagemaker-mlflow:SearchRegisteredModels",
                   "sagemaker-mlflow:SetRegisteredModelTag",
                   "sagemaker-mlflow:DeleteRegisteredModelTag",
                   "sagemaker-mlflow:DeleteModelVersionTag",
                   "sagemaker-mlflow:DeleteRegisteredModelAlias",
                   "sagemaker-mlflow:SetRegisteredModelAlias",
                   "sagemaker-mlflow:GetModelVersionByAlias"
               ],
               "Resource": "arn:aws:sagemaker:us-west-2:111122223333:mlflow-tracking-server/<ml tracking server name>"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::<mlflow-s3-bucket_name>"
           }
       ]
   }
   EOF
   ```
**Nota**  
 ARNs [Sono quelle del MLflow server e del bucket S3 configurati con il server durante il MLflow server che hai creato seguendo le istruzioni Configura l'infrastruttura. MLflow ](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server-cli.html#mlflow-create-tracking-server-cli-infra-setup)

1. Collega la policy `mlflow-metrics-emit-policy` a `hyperpod-mlflow-role` utilizzando il documento della policy salvato nella fase precedente.

   ```
   aws iam put-role-policy \
     --role-name hyperpod-mlflow-role \
     --policy-name mlflow-metrics-emit-policy \
     --policy-document file://hyperpod-mlflow-policy.json
   ```

1. Crea un account di servizio Kubernetes per consentire a Pod di accedere al server. MLflow 

   ```
   cat >mlflow-service-account.yaml <<EOF
   apiVersion: v1
   kind: ServiceAccount
   metadata:
     name: mlflow-service-account
     namespace: kubeflow
   EOF
   ```

   Esegui questo comando per applicarlo al cluster EKS.

   ```
   kubectl apply -f mlflow-service-account.yaml
   ```

1. Crea un’associazione Pod Identity.

   ```
   aws eks create-pod-identity-association \
       --cluster-name EKS_CLUSTER_NAME \
       --role-arn arn:aws:iam::111122223333:role/hyperpod-mlflow-role \
       --namespace kubeflow \
       --service-account mlflow-service-account
   ```

**Per raccogliere le metriche dai lavori di formazione al server MLflow**

I data scientist devono configurare lo script di formazione e l'immagine docker per inviare le metriche al server. MLflow 

1. Aggiungi le righe seguenti all’inizio dello script di addestramento.

   ```
   import mlflow
   
   # Set the Tracking Server URI using the ARN of the Tracking Server you created
   mlflow.set_tracking_uri(os.environ['MLFLOW_TRACKING_ARN'])
   # Enable autologging in MLflow
   mlflow.autolog()
   ```

1. Crea un’immagine Docker con lo script di addestramento e inviala ad Amazon ECR. Ottieni l’ARN del container ECR. Per ulteriori informazioni sulla creazione e il push di un’immagine Docker, consulta [Pushing a Docker image](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) in *ECR User Guide*.
**Suggerimento**  
Assicurati di aggiungere l’installazione dei pacchetti mlflow e sagemaker-mlflow al file Docker. Per ulteriori informazioni sull'installazione dei pacchetti, sui requisiti e sulle versioni compatibili dei pacchetti, consulta [Install MLflow e il SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-track-experiments.html#mlflow-track-experiments-install-plugin) plugin AI. MLflow 

1. Aggiungi un account di servizio nei pod del job di addestramento per consentire loro l’accesso a `hyperpod-mlflow-role`. Ciò consente ai Pods di chiamare MLflow APIs. Esegui il seguente modello di invio di lavori SageMaker HyperPod CLI. Crealo con il nome del file `mlflow-test.yaml`.

   ```
   defaults:
    - override hydra/job_logging: stdout
   
   hydra:
    run:
     dir: .
    output_subdir: null
   
   training_cfg:
    entry_script: ./train.py
    script_args: []
    run:
     name: test-job-with-mlflow # Current run name
     nodes: 2 # Number of nodes to use for current training
     # ntasks_per_node: 1 # Number of devices to use per node
   cluster:
    cluster_type: k8s # currently k8s only
    instance_type: ml.c5.2xlarge
    cluster_config:
     # name of service account associated with the namespace
     service_account_name: mlflow-service-account
     # persistent volume, usually used to mount FSx
     persistent_volume_claims: null
     namespace: kubeflow
     # required node affinity to select nodes with SageMaker HyperPod
     # labels and passed health check if burn-in enabled
     label_selector:
         required:
             sagemaker.amazonaws.com/node-health-status:
                 - Schedulable
         preferred:
             sagemaker.amazonaws.com/deep-health-check-status:
                 - Passed
         weights:
             - 100
     pullPolicy: IfNotPresent # policy to pull container, can be Always, IfNotPresent and Never
     restartPolicy: OnFailure # restart policy
   
   base_results_dir: ./result # Location to store the results, checkpoints and logs.
   container: 111122223333.dkr.ecr.us-west-2.amazonaws.com/tag # container to use
   
   env_vars:
    NCCL_DEBUG: INFO # Logging level for NCCL. Set to "INFO" for debug information
    MLFLOW_TRACKING_ARN: arn:aws:sagemaker:us-west-2:11112223333:mlflow-tracking-server/tracking-server-name
   ```

1. Avvia il processo utilizzando il file YAML come segue.

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

1. Genera un URL prefirmato per il MLflow server di tracciamento. Puoi aprire il link sul browser e iniziare a tenere traccia del tuo job di addestramento.

   ```
   aws sagemaker create-presigned-mlflow-tracking-server-url \                          
       --tracking-server-name "tracking-server-name" \
       --session-expiration-duration-in-seconds 1800 \
       --expires-in-seconds 300 \
       --region region
   ```

# Osservabilità di cluster e attività
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster"></a>

Esistono due opzioni per il monitoraggio dei cluster: SageMaker HyperPod 

**Il componente aggiuntivo SageMaker HyperPod Observability**: SageMaker HyperPod fornisce una out-of-the-box dashboard completa che fornisce informazioni dettagliate sulle attività di sviluppo del modello di base (FM) e sulle risorse del cluster. Questa soluzione unificata di osservabilità pubblica automaticamente le metriche chiave in Servizio gestito da Amazon per Prometheus e le visualizza nelle dashboard di Grafana gestito da Amazon. Le dashboard sono ottimizzate specificamente per lo sviluppo di FM con una copertura approfondita dello stato di integrità dell’hardware, dell’utilizzo delle risorse e delle prestazioni a livello di attività. Con questo componente aggiuntivo, puoi consolidare i dati sullo stato e sulle prestazioni di NVIDIA DCGM, degli esportatori di nodi Kubernetes a livello di istanza, Elastic Fabric Adapter, dei file system integrati, di Kubernetes, Kueue e degli operatori di attività. APIs SageMaker HyperPod 

**Amazon CloudWatch Insights**: Amazon CloudWatch Insights raccoglie parametri per le risorse di calcolo, come CPU, memoria, disco e rete. Container Insights fornisce inoltre informazioni diagnostiche, ad esempio errori di riavvio del container, che consentono di isolare i problemi e risolverli in modo rapido. Puoi anche impostare CloudWatch allarmi sui parametri raccolti da Container Insights.

**Topics**
+ [SageMaker HyperPod Osservabilità di Amazon con Amazon Managed Grafana e Amazon Managed Service for Prometheus](sagemaker-hyperpod-observability-addon.md)
+ [Osservabilità con Amazon CloudWatch](sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci.md)

# SageMaker HyperPod Osservabilità di Amazon con Amazon Managed Grafana e Amazon Managed Service for Prometheus
<a name="sagemaker-hyperpod-observability-addon"></a>

Amazon SageMaker HyperPod (SageMaker HyperPod) offre una out-of-the-box dashboard completa che fornisce informazioni dettagliate sulle attività di sviluppo del modello di base (FM) e sulle risorse del cluster. Questa soluzione unificata di osservabilità pubblica automaticamente le metriche chiave in Servizio gestito da Amazon per Prometheus e le visualizza nelle dashboard di Grafana gestito da Amazon. Le dashboard sono ottimizzate specificamente per lo sviluppo di FM con una copertura approfondita dello stato di integrità dell’hardware, dell’utilizzo delle risorse e delle prestazioni a livello di attività. Con questo componente aggiuntivo, puoi consolidare i dati sullo stato e sulle prestazioni provenienti da NVIDIA DCGM, dagli esportatori di nodi Kubernetes a livello di istanza, Elastic Fabric Adapter, dai file system integrati, da Kubernetes, Kueue e dai task operator. APIs SageMaker HyperPod 

## Supporto per Restricted Instance Group (RIG)
<a name="hyperpod-observability-addon-rig-support"></a>

Il componente aggiuntivo di osservabilità supporta anche i cluster che contengono Restricted Instance Groups. Nei cluster RIG, il componente aggiuntivo adatta automaticamente la propria strategia di implementazione per rispettare l'isolamento della rete e i vincoli di sicurezza dei nodi con restrizioni. DaemonSet i componenti (node exporter, DCGM exporter, EFA exporter, Neuron monitor e node collector) funzionano su nodi standard e limitati. I componenti di distribuzione (central collector, Kube State Metrics e Training Metrics Agent) sono pianificati con una logica che riconosce i confini per rispettare l'isolamento della rete tra i gruppi di istanze. La raccolta dei log dei container con Fluent Bit non è disponibile su nodi con restrizioni.

Per informazioni sulla configurazione del componente aggiuntivo su cluster con gruppi di istanze limitati, consulta. [Configurazione del componente aggiuntivo Observability SageMaker HyperPod](hyperpod-observability-addon-setup.md)

**Topics**
+ [Supporto per Restricted Instance Group (RIG)](#hyperpod-observability-addon-rig-support)
+ [Configurazione del componente aggiuntivo Observability SageMaker HyperPod](hyperpod-observability-addon-setup.md)
+ [Dashboard di SageMaker HyperPod osservabilità di Amazon](hyperpod-observability-addon-viewing-dashboards.md)
+ [Esplorazione delle metriche dei SageMaker HyperPod cluster in Amazon Managed Grafana](hyperpod-observability-addon-exploring-metrics.md)
+ [Personalizzazione delle metriche, dei pannelli di controllo e degli avvisi SageMaker HyperPod del cluster.](hyperpod-observability-addon-customizing.md)
+ [Creazione di metriche personalizzate per i cluster SageMaker HyperPod](hyperpod-observability-addon-custom-metrics.md)
+ [SageMaker HyperPod metriche del cluster](hyperpod-observability-cluster-metrics.md)
+ [Avvisi preconfigurati](hyperpod-observability-addon-alerts.md)
+ [Risoluzione dei problemi relativi al componente aggiuntivo Amazon SageMaker HyperPod Observability](hyperpod-observability-addon-troubleshooting.md)

# Configurazione del componente aggiuntivo Observability SageMaker HyperPod
<a name="hyperpod-observability-addon-setup"></a>

L’elenco seguente descrive i prerequisiti per la configurazione del componente aggiuntivo Observability.

Per inviare le metriche per il tuo cluster Amazon SageMaker HyperPod (SageMaker HyperPod) a un'area di lavoro Amazon Managed Service for Prometheus e, facoltativamente, visualizzarle in Amazon Managed Grafana, collega innanzitutto le seguenti politiche e autorizzazioni gestite al tuo ruolo di console.
+ Per utilizzare Amazon Managed Grafana, abilita AWS IAM Identity Center (IAM Identity Center) in un luogo in cui è Regione AWS disponibile Amazon Managed Grafana. Per istruzioni, consulta [Getting started with IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) in *AWS IAM Identity Center User Guide*. Per un elenco delle Regioni AWS in cui è disponibile Grafana gestito da Amazon, consulta [Supported Regions](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html#AMG-supported-Regions) in *Amazon Managed Grafana User Guide*.
+ Crea almeno un utente nel Centro identità IAM.
+ Assicurati che il componente aggiuntivo [Amazon EKS Pod Identity Agent](https://docs.aws.amazon.com/eks/latest/userguide/workloads-add-ons-available-eks.html#add-ons-pod-id) sia installato nel tuo cluster Amazon EKS. Il componente aggiuntivo Amazon EKS Pod Identity Agent consente al componente aggiuntivo di SageMaker HyperPod osservabilità di ottenere le credenziali per interagire con Amazon Managed Service for Prometheus and Logs. CloudWatch Per verificare se il tuo cluster Amazon EKS dispone del componente aggiuntivo, vai alla console di Amazon EKS e controlla la scheda **Componenti aggiuntivi** del cluster. Per informazioni su come installare il componente aggiuntivo, se non è installato, consulta [Create add-on (Console di gestione AWS)](https://docs.aws.amazon.com/eks/latest/userguide/creating-an-add-on.html#_create_add_on_console) in *Amazon EKS User Guide*.
**Nota**  
L'Amazon EKS Pod Identity Agent è necessario per i gruppi di istanze standard. Per i Restricted Instance Groups (RIG), Pod Identity Agent non è disponibile a causa dei vincoli di isolamento della rete. Il ruolo IAM di esecuzione del gruppo di istanze del cluster viene utilizzato per interagire con Amazon Managed Service for Prometheus. Per informazioni su come configurare quel ruolo, consulta. [Prerequisiti aggiuntivi per i gruppi di istanze con restrizioni](#hyperpod-observability-addon-rig-prerequisites)
+ Assicurati di avere almeno un nodo nel SageMaker HyperPod cluster prima di installare il componente aggiuntivo SageMaker HyperPod Observability. Il tipo di istanza Amazon EC2 con le dimensioni più ridotte adatto a questo caso è `4xlarge`. Questo requisito di dimensione minima del nodo garantisce che il nodo possa ospitare tutti i pod creati dal componente aggiuntivo di SageMaker HyperPod osservabilità insieme a tutti gli altri pod già in esecuzione sul cluster.
+ Aggiungi le policy e le autorizzazioni seguenti al tuo ruolo.
  + [AWS politica gestita: AmazonSageMakerHyperPodObservabilityAdminAccess](security-iam-awsmanpol-AmazonSageMakerHyperPodObservabilityAdminAccess.md)
  + [AWS politica gestita: V2 AWSGrafana WorkspacePermissionManagement](https://docs.aws.amazon.com/grafana/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AWSGrafanaWorkspacePermissionManagementV2)
  + [AWS politica gestita: AmazonSageMakerFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html)
  + Autorizzazioni aggiuntive per configurare i ruoli IAM richiesti per l’accesso ai componenti aggiuntivi Grafana gestito da Amazon e Amazon Elastic Kubernetes Service:

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "CreateRoleAccess",
                "Effect": "Allow",
                "Action": [
                    "iam:CreateRole",
                    "iam:CreatePolicy",
                    "iam:AttachRolePolicy",
                    "iam:ListRoles"
                ],
                "Resource": [
                    "arn:aws:iam::*:role/service-role/AmazonSageMakerHyperPodObservabilityGrafanaAccess*",
                    "arn:aws:iam::*:role/service-role/AmazonSageMakerHyperPodObservabilityAddonAccess*",
                    "arn:aws:iam::*:policy/service-role/HyperPodObservabilityAddonPolicy*",
                    "arn:aws:iam::*:policy/service-role/HyperPodObservabilityGrafanaPolicy*"
                ]
            }
        ]
    }
    ```

------
  + Autorizzazioni aggiuntive necessarie per gestire gli utenti del Centro identità IAM per Grafana gestito da Amazon:

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "SSOAccess",
                "Effect": "Allow",
                "Action": [
                    "sso:ListProfileAssociations",
                    "sso-directory:SearchUsers",
                    "sso-directory:SearchGroups",
                    "sso:AssociateProfile",
                    "sso:DisassociateProfile"
                ],
                "Resource": [
                    "*"
                ]
            }
        ]
    }
    ```

------

## Prerequisiti aggiuntivi per i gruppi di istanze con restrizioni
<a name="hyperpod-observability-addon-rig-prerequisites"></a>

Se il cluster contiene gruppi di istanze con restrizioni, il ruolo di esecuzione del gruppo di istanze deve disporre delle autorizzazioni per scrivere metriche su Amazon Managed Service for Prometheus. Quando utilizzi la **configurazione rapida** per creare un cluster con l'osservabilità abilitata, queste autorizzazioni vengono aggiunte automaticamente al ruolo di esecuzione.

Se utilizzi la **configurazione personalizzata** o aggiungi l'osservabilità a un cluster RIG esistente, assicurati che il ruolo di esecuzione per ogni gruppo di istanze ristrette disponga delle seguenti autorizzazioni:

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Sid": "PrometheusAccess",
            "Effect": "Allow",
            "Action": "aps:RemoteWrite",
            "Resource": "arn:aws:aps:us-east-1:account_id:workspace/workspace-ID"
        }
    ]
}
```

Sostituisci *us-east-1* e *workspace-ID* con il tuo Regione AWS ID account e l'ID dell'area di lavoro Amazon Managed Service for Prometheus. *account\$1id*

Una volta soddisfatti i prerequisiti sopra indicati, puoi installare il componente aggiuntivo Observability.

**Per installare rapidamente il componente aggiuntivo Observability**

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 **HyperPod Monitoring & Observability** e scegli **Installazione rapida**.

**Per eseguire un’installazione personalizzata del componente aggiuntivo Observability**

1. Vai alla pagina dei dettagli del cluster.

1. **Nella scheda **Dashboard**, individua il componente aggiuntivo denominato **HyperPod Monitoring & Observability** e scegli Installazione personalizzata.**

1. Specifica le categorie delle metriche da visualizzare. Per ulteriori informazioni su tali categorie, consulta [SageMaker HyperPod metriche del cluster](hyperpod-observability-cluster-metrics.md).

1. Specificate se desiderate abilitare Amazon CloudWatch Logs.

1. Specifica se desideri che il servizio crei un nuovo spazio di lavoro del Servizio gestito da Amazon per Prometheus.

1. Per visualizzare le metriche nelle dashboard di Grafana gestito da Amazon, seleziona la casella **Utilizza uno spazio di lavoro Grafana gestito da Amazon**. Puoi specificare il tuo spazio di lavoro o lasciare che il servizio ne crei uno nuovo per te. 
**Nota**  
Amazon Managed Grafana non è disponibile in tutti gli Regioni AWS ambienti in cui è disponibile Amazon Managed Service for Prometheus. Tuttavia, puoi configurare uno spazio di lavoro Grafana in qualsiasi Regione AWS e impostarlo per ottenere dati metrici da uno spazio di lavoro di Prometheus che si trova in un’altra Regione AWS. Per informazioni, consulta [Use AWS data source configuration to add Amazon Managed Service for Prometheus as a data source](https://docs.aws.amazon.com/grafana/latest/userguide/AMP-adding-AWS-config.html) e [Connect to Amazon Managed Service for Prometheus and open-source Prometheus data sources](https://docs.aws.amazon.com/grafana/latest/userguide/prometheus-data-source.html). 

# Dashboard di SageMaker HyperPod osservabilità di Amazon
<a name="hyperpod-observability-addon-viewing-dashboards"></a>

Questo argomento descrive come visualizzare i dashboard delle metriche per i cluster Amazon SageMaker HyperPod (SageMaker HyperPod) e come aggiungere nuovi utenti a una dashboard. L’argomento descrive inoltre i diversi tipi di dashboard.

## Accesso alle dashboard
<a name="hyperpod-observability-addon-accessing-dashboards"></a>

Per visualizzare i parametri del tuo SageMaker HyperPod cluster in Amazon Managed Grafana, esegui i seguenti passaggi:

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 la sezione **HyperPod Osservabilità** e scegli **Apri dashboard in Grafana**.

## Aggiunta di nuovi utenti a uno spazio di lavoro Grafana gestito da Amazon
<a name="hyperpod-observability-addon-adding-users"></a>

Per informazioni su come aggiungere utenti a uno spazio di lavoro Grafana gestito da Amazon, consulta [Use AWS IAM Identity Center with your Amazon Managed Grafana workspace](https://docs.aws.amazon.com/grafana/latest/userguide/authentication-in-AMG-SSO.html) in *Amazon Managed Grafana User Guide*.

## Dashboard di osservabilità
<a name="hyperpod-observability-addon-dashboards.title"></a>

Il componente aggiuntivo SageMaker HyperPod Observability fornisce sei dashboard interconnesse nell'area di lavoro Amazon Managed Grafana predefinita. Ogni dashboard fornisce informazioni approfondite sulle diverse risorse e attività nei cluster per vari utenti come Data Scientist, ingegneri di machine learning e amministratori.

### Dashboard delle attività
<a name="hyperpod-observability-addon-task-dashboard"></a>

La dashboard Task fornisce il monitoraggio e la visualizzazione completi dei parametri di utilizzo delle risorse per le attività. SageMaker HyperPod Il pannello principale mostra una tabella dettagliata che raggruppa l’utilizzo delle risorse per attività principali, mostrando l’utilizzo di CPU, GPU e memoria nei vari pod. I grafici interattivi delle serie temporali tracciano l’utilizzo della CPU, il consumo di memoria di sistema, le percentuali di utilizzo della GPU e l’utilizzo della memoria GPU per i pod selezionati, consentendoti di monitorare le tendenze delle prestazioni nel tempo. La dashboard offre potenti funzionalità di filtraggio tramite variabili, ad esempio il nome del cluster, il namespace, il tipo di attività e pod specifici, che semplificano l’analisi di determinati carichi di lavoro. Questa soluzione di monitoraggio è essenziale per ottimizzare l'allocazione delle risorse e mantenere le prestazioni dei carichi di lavoro di apprendimento automatico su. SageMaker HyperPod

### Dashboard di addestramento
<a name="hyperpod-observability-addon-training-dashboard"></a>

La dashboard di addestramento fornisce un monitoraggio completo dell’integrità delle attività di addestramento, dell’affidabilità e delle metriche di gestione dei guasti. La dashboard presenta diversi indicatori chiave delle prestazioni, tra cui il numero di attività create, i tassi di successo e le percentuali del tempo di attività, oltre al tracciamento dettagliato degli eventi di riavvio automatici e manuali. Offre visualizzazioni dettagliate dei modelli di guasto tramite grafici a torta e mappe di calore che suddividono gli incidenti per tipo e latenza di correzione, consentendoti di identificare i problemi ricorrenti e ottimizzare l’affidabilità delle attività. L’interfaccia include il monitoraggio in tempo reale delle metriche critiche, ad esempio i tempi di ripristino del sistema e le latenze di rilevamento dei guasti, rendendola uno strumento essenziale per mantenere un’elevata disponibilità dei carichi di lavoro di addestramento. Inoltre, la finestra finale di 24 ore della dashboard fornisce un contesto cronologico per l’analisi delle tendenze e dei modelli nelle prestazioni delle attività di addestramento, aiutando i team a risolvere in modo proattivo i potenziali problemi prima che influiscano sui carichi di lavoro di produzione.

### Dashboard di inferenza
<a name="hyperpod-observability-addon-inference-dashboard"></a>

La dashboard di inferenza offre un monitoraggio completo delle prestazioni di implementazione del modello e delle metriche di integrità su più dimensioni. Offre una panoramica dettagliata delle implementazioni attive, il monitoraggio in tempo reale dei tassi di richiesta, dei tassi di successo e delle metriche di latenza, che consentono di monitorare le prestazioni di servizio dei modelli e di identificare potenziali colli di bottiglia. La dashboard include pannelli specializzati per le metriche di inferenza generali e le metriche specifiche dei token per i modelli linguistici, come il tempo al primo token (Time To First Token, TTFT) e il throughput dei token, il che la rende particolarmente utile per il monitoraggio delle implementazioni di modelli linguistici di grandi dimensioni. Inoltre, fornisce informazioni approfondite sull’infrastruttura grazie al tracciamento dell’allocazione di pod e nodi e offre al tempo stesso funzionalità di analisi dettagliata degli errori che contribuiscono a mantenere elevate la disponibilità e le prestazioni dei carichi di lavoro di inferenza.

### Dashboard del cluster
<a name="hyperpod-observability-addon-cluster-dashboard"></a>

La dashboard del cluster offre una visione completa dello stato e delle prestazioni del cluster, offrendo visibilità in tempo reale sulle risorse di calcolo, memoria, rete e storage nell'ambiente Amazon SageMaker HyperPod (SageMaker HyperPod). Con una sola occhiata, puoi visualizzare metriche critiche come le istanze totali, l’utilizzo della GPU, l’utilizzo della memoria e le prestazioni di rete attraverso un’interfaccia intuitiva che aggiorna automaticamente i dati ogni pochi secondi. La dashboard è organizzata in sezioni logiche: parte da una panoramica generale del cluster che mostra le metriche chiave, come la percentuale di istanze integre e il numero totale di risorse, e prosegue poi con sezioni dettagliate sulle prestazioni della GPU, l’utilizzo della memoria, le statistiche di rete e le metriche di archiviazione. Ogni sezione presenta grafici e pannelli interattivi che consentono di approfondire metriche specifiche, con intervalli di tempo personalizzabili e opzioni di filtraggio per nome del cluster, istanza o ID della GPU.

### Dashboard del file system
<a name="hyperpod-observability-addon-filesystem-dashboard"></a>

La dashboard del file system offre una visibilità completa sulle prestazioni e sui parametri di salute del file system (Amazon FSx for Lustre). La dashboard mostra i parametri di storage critici, tra cui capacità libera, risparmi sulla deduplicazione, CPU/memory utilizzo, IOPS del disco, throughput e connessioni client su più visualizzazioni. Consente di monitorare sia gli indicatori di prestazioni a livello di sistema, come l'utilizzo della CPU e della memoria, sia le metriche specifiche dello storage, come le operazioni e i modelli di utilizzo del disco. read/write L’interfaccia include funzionalità di tracciamento degli avvisi e grafici dettagliati delle serie temporali per tenere traccia delle tendenze delle prestazioni nel tempo, opzioni che la rendono particolarmente utile per la manutenzione proattiva e la pianificazione della capacità. Inoltre, grazie alla copertura completa delle metriche, la dashboard aiuta a identificare potenziali colli di bottiglia, ottimizzare le prestazioni di storage e garantire operazioni affidabili dei file system per i carichi di lavoro. SageMaker HyperPod 

### Dashboard delle partizioni GPU
<a name="hyperpod-observability-addon-gpu-partition-dashboard"></a>

Per monitorare le metriche specifiche della partizione GPU quando si utilizzano configurazioni Multi-Instance GPU (MIG), è necessario installare o eseguire l'aggiornamento alla versione più recente del componente aggiuntivo Observability. SageMaker HyperPod Questo addon offre funzionalità di monitoraggio complete, incluse metriche specifiche per MiG come il numero di partizioni, l'utilizzo della memoria e l'utilizzo del calcolo per partizione GPU.

Se hai già installato SageMaker HyperPod Observability ma hai bisogno del supporto per le metriche MIG, aggiorna semplicemente l'addon alla versione più recente. Questo processo non prevede interruzioni e mantiene la configurazione di monitoraggio esistente.

SageMaker HyperPod espone automaticamente metriche specifiche di MiG, tra cui:
+ `nvidia_mig_instance_count`: Numero di istanze MIG per profilo
+ `nvidia_mig_memory_usage`: utilizzo della memoria per istanza MIG
+ `nvidia_mig_compute_utilization`: utilizzo del calcolo per istanza MIG

### Dashboard Cluster Logs
<a name="hyperpod-observability-addon-cluster-logs-dashboard"></a>

La dashboard Cluster Logs offre una visualizzazione centralizzata dei CloudWatch log per il cluster. SageMaker HyperPod La dashboard interroga il gruppo di `/aws/sagemaker/Clusters/{cluster-name}/{cluster-id}` log e visualizza gli eventi di registro con funzionalità di filtraggio per ID di istanza, nome del flusso di log, livello di registro (ERROR, WARN, INFO, DEBUG) e ricerca a testo libero. La dashboard include una cronologia degli eventi che mostra la distribuzione degli eventi di registro nel tempo, un contatore totale degli eventi, una cronologia degli eventi cercati per i risultati filtrati e un pannello di log dettagliato con messaggi di registro completi, timestamp e metadati del flusso di log. Questa dashboard utilizza CloudWatch come fonte di dati ed è utile per il debug dei problemi del cluster, il monitoraggio degli eventi relativi allo stato delle istanze e l'analisi degli errori dei lavori di formazione.

# Esplorazione delle metriche dei SageMaker HyperPod cluster in Amazon Managed Grafana
<a name="hyperpod-observability-addon-exploring-metrics"></a>

Dopo aver collegato Grafana gestito da Amazon al tuo spazio di lavoro Servizio gestito da Amazon per Prometheus, puoi utilizzare l’editor di query e gli strumenti di visualizzazione di Grafana per esplorare i dati delle metriche. Grafana gestito da Amazon offre diversi modi per interagire con i dati di Prometheus, tra cui un editor di query completo per la creazione di espressioni PromQL, un browser di metriche per rilevare metriche ed etichette disponibili e funzionalità di creazione di modelli per la creazione di dashboard dinamiche. Puoi eseguire query su intervalli per visualizzare i dati di serie temporali per determinati periodi e query istantanee per recuperare i valori più recenti, con opzioni che consentono di formattare i risultati come grafi di serie temporali, tabelle o mappe termiche. Per informazioni dettagliate sulla configurazione delle impostazioni delle query, sull’utilizzo del browser delle metriche e sull’utilizzo delle funzionalità dei modelli, consulta [Using the Prometheus data source](https://docs.aws.amazon.com/grafana/latest/userguide/using-prometheus-datasource.html).

# Personalizzazione delle metriche, dei pannelli di controllo e degli avvisi SageMaker HyperPod del cluster.
<a name="hyperpod-observability-addon-customizing"></a>

Grafana gestito da Amazon ti consente di creare dashboard complete che visualizzano i dati in pannelli con query collegate alle tue origini dati. Puoi creare dashboard da zero, importare dashboard esistenti o esportare le dashboard create per scopi di condivisione e backup. Le dashboard Grafana supportano funzionalità dinamiche grazie a variabili che sostituiscono i valori con codifica fissa nelle query, rendendo le visualizzazioni più flessibili e interattive. Puoi anche migliorare le tue dashboard con funzionalità come annotazioni, pannelli di librerie per la riutilizzabilità, gestione della cronologia delle versioni e link personalizzati per creare una soluzione completa di monitoraggio e osservabilità. [Per step-by-step indicazioni su come creare, importare, configurare e gestire i dashboard, consulta Creazione di dashboard.](https://docs.aws.amazon.com/grafana/latest/userguide/v10-dash-building-dashboards.html)

# Creazione di metriche personalizzate per i cluster SageMaker HyperPod
<a name="hyperpod-observability-addon-custom-metrics"></a>

Il componente aggiuntivo Amazon SageMaker HyperPod (SageMaker HyperPod) observability fornisce centinaia di parametri di salute, prestazioni ed efficienza. out-of-the-box Oltre a queste metriche, potrebbe essere necessario monitorare metriche personalizzate per applicazioni o esigenze aziendali specifiche che non rientrano nelle metriche predefinite, come indicatori di prestazioni specifici del modello, statistiche di elaborazione dei dati o misurazioni specifiche dell’applicazione. Per soddisfare questa esigenza, puoi implementare la raccolta di metriche personalizzate OpenTelemetry integrando un frammento di codice Python nella tua applicazione.

Per creare metriche personalizzate, esegui prima il seguente comando shell per installare i OpenTelemetry componenti principali necessari per strumentare le applicazioni Python per l'osservabilità. Questa installazione consente alle applicazioni Python eseguite su SageMaker HyperPod cluster di emettere dati di telemetria personalizzati. Questi dati vengono raccolti dal OpenTelemetry raccoglitore e inoltrati all'infrastruttura di osservabilità.

```
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpc
```

Lo script di esempio seguente configura una pipeline di OpenTelemetry metriche che contrassegna automaticamente le metriche con informazioni su pod e nodi, garantendo la corretta attribuzione all'interno del cluster e invia queste metriche allo stack di osservabilità integrato ogni secondo. SageMaker HyperPod Lo script stabilisce una connessione al raccoglitore di SageMaker HyperPod metriche, imposta gli attributi di risorsa appropriati per l'identificazione e fornisce un'interfaccia di misurazione tramite la quale è possibile creare vari tipi di metriche (contatori, indicatori o istogrammi) per tenere traccia di qualsiasi aspetto delle prestazioni dell'applicazione. Le metriche personalizzate si integrano con le dashboard di monitoraggio insieme alle metriche di sistema. SageMaker HyperPod Questa integrazione consente un’osservabilità completa attraverso un’unica interfaccia, in cui puoi creare avvisi, visualizzazioni e report personalizzati per monitorare il profilo delle prestazioni completo del carico di lavoro.

```
import os
from opentelemetry import metrics
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
from opentelemetry.sdk.resources import Resource

# Get hostname/pod name
hostname = os.uname()[1]
node_name = os.getenv('NODE_NAME', 'unknown')

collector_endpoint = "hyperpod-otel-collector.hyperpod-observability:4317"

# Configure the OTLP exporter
exporter = OTLPMetricExporter(
    endpoint=collector_endpoint,
    insecure=True,
    timeout=5000  # 5 seconds timeout
)

reader = PeriodicExportingMetricReader(
    exporter,
    export_interval_millis=1000
)

resource = Resource.create({
    "service.name": "metric-test",
    "pod.name": hostname,
    "node.name": node_name
})

meter_provider = MeterProvider(
    metric_readers=[reader],
    resource=resource
)
metrics.set_meter_provider(meter_provider)

# Create a meter
meter = metrics.get_meter("test-meter")

# Create a counter
counter = meter.create_counter(
    name="test.counter",
    description="A test counter"
)

counter.add(1, {"pod": hostname, "node": node_name})
```

# SageMaker HyperPod metriche del cluster
<a name="hyperpod-observability-cluster-metrics"></a>

Amazon SageMaker HyperPod (SageMaker HyperPod) pubblica diverse metriche in 9 categorie distinte nell'area di lavoro Amazon Managed Service for Prometheus. Non tutte le metriche sono abilitate per impostazione predefinita o visualizzate nello spazio di lavoro Grafana gestito da Amazon. La tabella seguente mostra quali metriche sono abilitate per impostazione predefinita quando installi il componente aggiuntivo Observability, quali categorie hanno metriche aggiuntive che possono essere abilitate per ottenere informazioni più granulari sul cluster e dove vengono visualizzate tali metriche nello spazio di lavoro Grafana gestito da Amazon.


| Categoria parametro | Abilitata per impostazione predefinita? | Sono disponibili ulteriori metriche avanzate? | In quali dashboard Grafana è disponibile? | 
| --- | --- | --- | --- | 
| Metriche di addestramento | Sì  | Sì | Addestramento | 
| Metriche di inferenza | Sì | No | Inferenza | 
| Metriche di governance delle attività | No | Sì | Nessuna. Effettua una query sullo spazio di lavoro del Servizio gestito da Amazon per Prometheus per creare la tua dashboard. | 
| Metriche di dimensionamento | No | Sì | Nessuna. Effettua una query sullo spazio di lavoro del Servizio gestito da Amazon per Prometheus per creare la tua dashboard. | 
| Parametri cluster | Sì  | Sì | Cluster | 
| Parametri dell'istanza | Sì  | Sì | Cluster | 
| Metriche di calcolo accelerate | Sì  | Sì | Attività, cluster | 
| Metriche di rete | No | Sì | Cluster | 
| File system | Sì | No | File system | 

Le tabelle seguenti descrivono le metriche disponibili per il monitoraggio del cluster, organizzate per categoria. SageMaker HyperPod 

## Disponibilità delle metriche nei gruppi di istanze con restrizioni
<a name="hyperpod-observability-rig-metrics-availability"></a>

Quando il cluster contiene gruppi di istanze con restrizioni, la maggior parte delle categorie di metriche è disponibile su nodi con restrizioni con le seguenti eccezioni e considerazioni. Puoi anche impostare avvisi in base a qualsiasi metrica di tua scelta.


| Categoria parametro | Disponibile sui nodi RIG? | Note | 
| --- | --- | --- | 
| Metriche di addestramento | Sì | Vengono raccolte le metriche dei pod Kubeflow e Kubernetes. Le metriche dei KPI per la formazione avanzata (fornite da Training Metrics Agent) non sono disponibili nei nodi RIG. | 
| Metriche di inferenza | No | I carichi di lavoro di inferenza non sono supportati nei gruppi di istanze con restrizioni. | 
| Metriche di governance delle attività | No | Le metriche Kueue vengono raccolte solo dai nodi standard, se presenti. | 
| Metriche di dimensionamento | No | Le metriche KEDA vengono raccolte solo dai nodi standard, se presenti. | 
| Parametri cluster | Sì | Sono disponibili le metriche dello stato di Kube e le metriche del server API. Kube State Metrics è pianificato preferibilmente su nodi standard, ma può essere eseguito su nodi con restrizioni in cluster solo Rig. | 
| Parametri dell'istanza | Sì | Le metriche di Node Exporter e CADvisor vengono raccolte su tutti i nodi, compresi i nodi con restrizioni. | 
| Metriche di calcolo accelerate | Sì | DCGM Exporter funziona su nodi limitati abilitati alla GPU. Neuron Monitor funziona su nodi limitati abilitati a Neuron quando è abilitata la modalità avanzata. | 
| Metriche di rete | Sì | EFA Exporter funziona su nodi con restrizioni abilitati per EFA quando è abilitata la modalità avanzata. | 
| Metriche del file system | Sì | FSx le metriche di utilizzo del cluster for Lustre sono supportate su Restricted Instance Groups. | 

**Nota**  
La raccolta dei log dei container con Fluent Bit non viene distribuita su nodi con restrizioni. I log dei cluster provenienti dai nodi con restrizioni sono disponibili attraverso la SageMaker HyperPod piattaforma indipendentemente dal componente aggiuntivo Observability. È possibile visualizzare questi registri nella dashboard Cluster Logs.

## Metriche di addestramento
<a name="hyperpod-observability-training-metrics"></a>

Utilizza queste metriche per tenere traccia delle prestazioni delle attività di formazione eseguite sul cluster. SageMaker HyperPod 


| Nome o tipo di metrica | Description | Abilitata per impostazione predefinita? | Origine metrica | 
| --- | --- | --- | --- | 
| Metriche Kubeflow | [https://github.com/kubeflow/trainer](https://github.com/kubeflow/trainer) | Sì | Kubeflow | 
| Metriche dei pod di Kubernetes | [https://github.com/kubernetes/kube-state-metrics](https://github.com/kubernetes/kube-state-metrics) | Sì | Kubernetes | 
| training\$1uptime\$1percentage | Percentuale di tempo di addestramento rispetto alla finestra di tempo totale | No | SageMaker HyperPod operatore di formazione | 
| training\$1manual\$1recovery\$1count | Numero totale di riavvii manuali eseguiti sul processo | No | SageMaker HyperPod operatore addetto alla formazione | 
| training\$1manual\$1downtime\$1ms | Tempo totale in millisecondi in cui il processo è stato interrotto a causa di interventi manuali | No | SageMaker HyperPod operatore addetto alla formazione | 
| training\$1auto\$1recovery\$1count | Numero totale di ripristini automatici | No | SageMaker HyperPod operatore addetto alla formazione | 
| training\$1auto\$1recovery\$1downtime | Tempo totale di sovraccarico dell’infrastruttura in millisecondi durante il ripristino dei guasti | No | SageMaker HyperPod operatore addetto alla formazione | 
| training\$1fault\$1count | Numero totale di guasti riscontrati durante l’addestramento | No | SageMaker HyperPod operatore addetto alla formazione | 
| training\$1fault\$1type\$1count | Distribuzione dei guasti per tipo | No | SageMaker HyperPod operatore addetto alla formazione | 
| training\$1fault\$1recovery\$1time\$1ms | Tempo di ripristino in millisecondi per ogni tipo di guasto | No | SageMaker HyperPod operatore addetto alla formazione | 
| training\$1time\$1ms | Tempo totale in millisecondi dedicato all’addestramento effettivo | No | SageMaker HyperPod operatore addetto alla formazione | 

## Metriche di inferenza
<a name="hyperpod-observability-inference-metrics"></a>

Utilizza queste metriche per tenere traccia delle prestazioni delle attività di inferenza sul SageMaker HyperPod cluster.


| Nome o tipo di metrica | Description | Abilitata per impostazione predefinita? | Origine metrica | 
| --- | --- | --- | --- | 
| model\$1invocations\$1total | Numero totale di richieste di invocazione al modello | Sì | SageMaker HyperPod operatore di inferenza | 
| model\$1errors\$1total | Numero totale di errori durante l’invocazione del modello | Sì | SageMaker HyperPod operatore di inferenza | 
| model\$1concurrent\$1requests | Richieste di modelli simultanee attive | Sì | SageMaker HyperPod operatore di inferenza | 
| model\$1latency\$1milliseconds | Latenza di invocazione del modello in millisecondi | Sì | SageMaker HyperPod operatore di inferenza | 
| model\$1ttfb\$1milliseconds | Latenza del tempo al primo byte (Time To First Byte, TTFB) del modello in millisecondi | Sì | SageMaker HyperPod operatore di inferenza | 
| TGI | Queste metriche possono essere utilizzate per monitorare le prestazioni del TGI, eseguire il dimensionamento automatico dell’implementazione e identificare i colli di bottiglia. Per un elenco dettagliato delle metriche, vedere [https://github.com/deepjavalibrary/djl](https://github.com/deepjavalibrary/djl-serving/blob/master/prometheus/README.md) - .md. serving/blob/master/prometheus/README | Sì | Container del modello | 
| LMI | Queste metriche possono essere utilizzate per monitorare le prestazioni dell’LMI e identificare i colli di bottiglia. [Per un elenco dettagliato delle metriche, vedere https://github.com/deepjavalibrary/ djl- .md. serving/blob/master/prometheus/README](https://github.com/deepjavalibrary/djl-serving/blob/master/prometheus/README.md) | Sì | Container del modello | 

## Metriche di governance delle attività
<a name="hyperpod-observability-task-governance-metrics"></a>

Utilizza queste metriche per monitorare la governance delle attività e l'allocazione delle risorse nel cluster. SageMaker HyperPod 


| Nome o tipo di metrica | Description | Abilitata per impostazione predefinita? | Origine metrica | 
| --- | --- | --- | --- | 
| Kueue | [Vedi https://kueue.sigs.k8s. io/docs/reference/metrics](https://kueue.sigs.k8s.io/docs/reference/metrics/)/. | No | Kueue | 

## Metriche di dimensionamento
<a name="hyperpod-observability-scaling-metrics"></a>

Utilizza queste metriche per monitorare il comportamento e le prestazioni dell'auto-scaling sul cluster. SageMaker HyperPod 


| Nome o tipo di metrica | Description | Abilitata per impostazione predefinita? | Origine metrica | 
| --- | --- | --- | --- | 
| Metriche dell’operatore KEDA | [Vedi https://keda. sh/docs/2.17/integrations/prometheus/\$1operator](https://keda.sh/docs/2.17/integrations/prometheus/#operator). | No | Kubernetes Event-Driven Autoscaler (KEDA) | 
| Metriche del webhook KEDA | Vedi [https://keda. sh/docs/2.17/integrations/prometheus/\$1admission -webhooks](https://keda.sh/docs/2.17/integrations/prometheus/#admission-webhooks). | No | Kubernetes Event-Driven Autoscaler (KEDA) | 
| Metriche del server di metriche KEDA | [Vedi https://keda. sh/docs/2.17/integrations/prometheus/\$1metrics -server.](https://keda.sh/docs/2.17/integrations/prometheus/#metrics-server) | No | Kubernetes Event-Driven Autoscaler (KEDA) | 

## Parametri cluster
<a name="hyperpod-observability-cluster-health-metrics"></a>

Utilizza queste metriche per monitorare l’integrità complessiva del cluster e l’allocazione delle risorse.


| Nome o tipo di metrica | Description | Abilitata per impostazione predefinita? | Origine metrica | 
| --- | --- | --- | --- | 
| Integrità del cluster | Metriche del server API Kubernetes. Vedi [https://kubernetes. io/docs/reference/instrumentation/metrics](https://kubernetes.io/docs/reference/instrumentation/metrics/)/. | Sì | Kubernetes | 
| KubeState | Vedi [https://github.com/kubernetes/kube-state-metrics/\$1default -resources tree/main/docs](https://github.com/kubernetes/kube-state-metrics/tree/main/docs#default-resources). | Limitato | Kubernetes | 
| KubeState Avanzato | Vedi [https://github.com/kubernetes/kube-state-metrics/tree/main/docs\$1optional -resources](https://github.com/kubernetes/kube-state-metrics/tree/main/docs#optional-resources). | No | Kubernetes | 

## Parametri dell'istanza
<a name="hyperpod-observability-instance-metrics"></a>

Utilizza queste metriche per monitorare le prestazioni e l’integrità delle singole istanze.


| Nome o tipo di metrica | Description | Abilitata per impostazione predefinita? | Origine metrica | 
| --- | --- | --- | --- | 
| Metriche dei nodi | [Vedi node\$1exporter? https://github.com/prometheus/ readme-ov-filetab= \$1 enabled-by-default](https://github.com/prometheus/node_exporter?tab=readme-ov-file#enabled-by-default). | Sì | Kubernetes | 
| Metriche dei container | Metriche dei container esposte da Cadvisor. [Vedi cadvisor. https://github.com/google/](https://github.com/google/cadvisor) | Sì | Kubernetes | 

## Metriche di calcolo accelerate
<a name="hyperpod-observability-accelerated-compute-metrics"></a>

Utilizza queste metriche per monitorare le prestazioni, l’integrità e l’utilizzo dei singoli dispositivi di calcolo accelerati nel tuo cluster.

**Nota**  
Quando il partizionamento della GPU con MIG (Multi-Instance GPU) è abilitato sul cluster, le metriche DCGM forniscono automaticamente la granularità a livello di partizione per il monitoraggio delle singole istanze MIG. Ogni partizione MIG è esposta come un dispositivo GPU separato con parametri propri per temperatura, potenza, utilizzo della memoria e attività di calcolo. Ciò consente di tenere traccia dell'utilizzo e dello stato delle risorse per ciascuna partizione GPU in modo indipendente, consentendo un monitoraggio preciso dei carichi di lavoro in esecuzione su risorse GPU frazionarie. Per ulteriori informazioni sulla configurazione del partizionamento della GPU, consulta. [Utilizzo delle partizioni GPU in Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md)


| Nome o tipo di metrica | Description | Abilitata per impostazione predefinita? | Origine metrica | 
| --- | --- | --- | --- | 
| GPU NVIDIA | Metriche di DCGM. [Vedere dcgm- -metrics-included.csvhttps://github.com/NVIDIA/. exporter/blob/main/etc/dcp](https://github.com/NVIDIA/dcgm-exporter/blob/main/etc/dcp-metrics-included.csv) | Limitato |  NVIDIA Data Center GPU Manager (DCGM)  | 
|  GPU NVIDIA (avanzata)  | Metriche di DCGM disattivate nel seguente file CSV:[https://github.com/NVIDIA/dcgm- -metrics-included.csv exporter/blob/main/etc/dcp](https://github.com/NVIDIA/dcgm-exporter/blob/main/etc/dcp-metrics-included.csv) | No |  NVIDIA Data Center GPU Manager (DCGM)  | 
| AWS Trainium | Metriche di Neuron. Vedi [https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron- monitor-user-guide .html\$1. neuron-monitor-nc-counters](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron-monitor-user-guide.html#neuron-monitor-nc-counters) | No | AWS Monitor neuronale | 

## Metriche di rete
<a name="hyperpod-observability-network-metrics"></a>

Utilizza queste metriche per monitorare le prestazioni e l’integrità degli Elastic Fabric Adapters (EFA) del cluster.


| Nome o tipo di metrica | Description | Abilitata per impostazione predefinita? | Origine metrica | 
| --- | --- | --- | --- | 
| EFA | Vedi [https://github.com/aws-samples/awsome-distributed-training/blob/main/4.validation\$1and\$1observability/3.efa-node-exporter/README.md.](https://github.com/aws-samples/awsome-distributed-training/blob/main/4.validation_and_observability/3.efa-node-exporter/README.md) | No | Elastic Fabric Adapter | 

## Metriche del file system
<a name="hyperpod-observability-file-system-metrics"></a>


| Nome o tipo di metrica | Description | Abilitata per impostazione predefinita? | Origine metrica | 
| --- | --- | --- | --- | 
| File system | Metriche FSx di Amazon for Lustre di Amazon: CloudWatch[Monitoraggio con Amazon CloudWatch](https://docs.aws.amazon.com/fsx/latest/LustreGuide/monitoring-cloudwatch.html). | Sì | Amazon FSx per Lustre | 

# Avvisi preconfigurati
<a name="hyperpod-observability-addon-alerts"></a>

Il componente aggiuntivo Amazon SageMaker HyperPod (SageMaker HyperPod) observability abilita avvisi predefiniti per il cluster e i carichi di lavoro per avvisarti quando il sistema rileva indicatori precoci comuni di prestazioni insufficienti del cluster. Questi avvisi sono definiti all’interno del sistema di avvisi integrato di Grafana gestito da Amazon. Per informazioni su come modificare questi avvisi preconfigurati o crearne di nuovi, consulta [Alerts in Grafana version 10](https://docs.aws.amazon.com/grafana/latest/userguide/v10-alerts.html) in *Amazon Managed Grafana User Guide*. Il file YAML seguente mostra gli avvisi predefiniti.

```
groups:
- name: sagemaker_hyperpod_alerts
  rules:
  # GPU_TEMP_ABOVE_80C
  - alert: GPUHighTemperature
    expr: DCGM_FI_DEV_GPU_TEMP > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "GPU Temperature Above 80C"
      description: "GPU {{ $labels.gpu }} temperature is {{ $value }}°C."

  # GPU_TEMP_ABOVE_85C  
  - alert: GPUCriticalTemperature  
    expr: DCGM_FI_DEV_GPU_TEMP > 85
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "GPU Temperature Above 85C"
      description: "GPU {{ $labels.gpu }} temperature is {{ $value }}°C."

  # GPU_MEMORY_ERROR
  # Any ECC double-bit errors indicate serious memory issues requiring immediate attention
  - alert: GPUMemoryErrorDetected
    expr: DCGM_FI_DEV_ECC_DBE_VOL_TOTAL > 0 or DCGM_FI_DEV_ECC_DBE_AGG_TOTAL > DCGM_FI_DEV_ECC_DBE_AGG_TOTAL offset 5m
    labels:
      severity: critical
    annotations:
      summary: "GPU ECC Double-Bit Error Detected"
      description: "GPU {{ $labels.gpu }} has detected ECC double-bit errors."

  # GPU_POWER_WARNING
  # Sustained power limit violations can impact performance and stability
  - alert: GPUPowerViolation
    expr: DCGM_FI_DEV_POWER_VIOLATION > 100
    for: 5m
    labels:
      severity: warning  
    annotations:
      summary: "GPU Power Violation"
      description: "GPU {{ $labels.gpu }} has been operating at power limit for extended period."

  # GPU_NVLINK_ERROR
  # NVLink errors above threshold indicate interconnect stability issues
  - alert: NVLinkErrorsDetected
    expr: DCGM_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_TOTAL > 0 or DCGM_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_TOTAL > 10
    labels:
      severity: warning
    annotations:
      summary: "NVLink Errors Detected" 
      description: "GPU {{ $labels.gpu }} has detected NVLink errors."

  # GPU_THERMAL_VIOLATION  
  # Immediate alert on thermal violations to prevent hardware damage
  - alert: GPUThermalViolation
    expr: increase(DCGM_FI_DEV_THERMAL_VIOLATION[5m]) > 0
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "GPU Thermal Violation Detected"
      description: "GPU {{ $labels.gpu }} has thermal violations on node {{ $labels.Hostname }}"

  # GPU_XID_ERROR
  # XID errors indicate driver or hardware level GPU issues requiring investigation
  - alert: GPUXidError
    expr: DCGM_FI_DEV_XID_ERRORS > 0
    for: 0m
    labels:
      severity: critical
    annotations:
      summary: "GPU XID Error Detected"
      description: "GPU {{ $labels.gpu }} experienced XID error {{ $value }} on node {{ $labels.Hostname }}"

  # MIG_CONFIG_FAILURE
  # MIG configuration failures indicate issues with GPU partitioning setup
  - alert: MIGConfigFailure
    expr: kubelet_node_name{nvidia_com_mig_config_state="failed"} > 0
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "MIG Configuration Failed"
      description: "MIG configuration failed on node {{ $labels.instance }}"

  # DISK_SPACE_WARNING
  # 90% threshold ensures time to respond before complete disk exhaustion
  - alert: NodeDiskSpaceWarning
    expr: (node_filesystem_size_bytes - node_filesystem_free_bytes) / node_filesystem_size_bytes * 100 > 90
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "High Disk Usage"
      description: "Node {{ $labels.instance }} disk usage is above 90%"

  # FSX_STORAGE_WARNING
  # 80% FSx utilization allows buffer for burst workloads
  - alert: FsxLustreStorageWarning
    expr: fsx_lustre_storage_used_bytes / fsx_lustre_storage_capacity_bytes * 100 > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "High FSx Lustre Usage"
      description: "FSx Lustre storage usage is above 80% on file system {{ $labels.filesystem_id }}"
```

# Risoluzione dei problemi relativi al componente aggiuntivo Amazon SageMaker HyperPod Observability
<a name="hyperpod-observability-addon-troubleshooting"></a>

Utilizza le seguenti linee guida per risolvere problemi comuni con il componente aggiuntivo Amazon SageMaker HyperPod (SageMaker HyperPod) observability.

## Risoluzione dei problemi relativi alle metriche mancanti in Grafana gestito da Amazon
<a name="troubleshooting-missing-metrics"></a>

Se le metriche non compaiono nelle dashboard di Grafana gestito da Amazon, segui queste fasi per identificare e risolvere il problema.

### Verifica della connessione tra il Servizio gestito da Amazon per Prometheus e Grafana gestito da Amazon
<a name="verify-amp-grafana-connection"></a>

1. Accedi alla console di Grafana gestito da Amazon.

1. Nel riquadro a sinistra, scegli **Tutto workspaces**.

1. Nella tabella **Workspace**, scegli il tuo spazio di lavoro.

1. Nella pagina dei dettagli dello spazio di lavoro, scegli la scheda **Origini dati**.

1. Verifica che l’origine dati del Servizio gestito da Amazon per Prometheus esista.

1. Controlla le impostazioni di connessione:
   + Conferma che l’URL dell’endpoint sia corretto.
   + Verifica che l’autenticazione IAM sia configurata correttamente.
   + Scegli **Test Connection (Connessione di prova)**. Verifica che lo stato sia **Origine dati funzionante**.

### Verifica dello stato del componente aggiuntivo Amazon EKS
<a name="verify-eks-addon-status"></a>

1. Apri la console Amazon EKS a [https://console.aws.amazon.com/eks/home\$1/clusters](https://console.aws.amazon.com/eks/home#/clusters).

1. Selezionare il cluster.

1. Selezionare la scheda **Componenti aggiuntivi**.

1. **Verifica che il componente aggiuntivo di SageMaker HyperPod osservabilità sia elencato e che il suo stato sia ATTIVO.**

1. Se lo stato non è **ACTIVE**, consulta [Risoluzione degli errori di installazione del componente aggiuntivo](#troubleshooting-addon-installation-failures).

### Verifica dell’associazione Pod Identity
<a name="verify-pod-identity-association"></a>

1. Apri la console Amazon EKS a [https://console.aws.amazon.com/eks/home\$1/clusters](https://console.aws.amazon.com/eks/home#/clusters).

1. Selezionare il cluster.

1. Nella pagina dei dettagli del cluster, scegli la scheda **Accesso**.

1. Nella tabella **Associazioni Pod Identity**, scegli l’associazione con i valori di proprietà seguenti:
   + **Spazio** dei nomi: `hyperpod-observability`
   + **Account del servizio**: `hyperpod-observability-operator-otel-collector`
   + **Componente aggiuntivo**: `amazon-sagemaker-hyperpod-observability`

1. Assicurati che il ruolo IAM collegato a questa associazione abbia le autorizzazioni seguenti.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PrometheusAccess",
               "Effect": "Allow",
               "Action": "aps:RemoteWrite",
               "Resource": "arn:aws:aps:us-east-1:111122223333:workspace/workspace-ID"
           },
           {
               "Sid": "CloudwatchLogsAccess",
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream",
                   "logs:DescribeLogGroups",
                   "logs:DescribeLogStreams",
                   "logs:PutLogEvents",
                   "logs:GetLogEvents",
                   "logs:FilterLogEvents",
                   "logs:GetLogRecord",
                   "logs:StartQuery",
                   "logs:StopQuery",
                   "logs:GetQueryResults"
               ],
               "Resource": [
                   "arn:aws:logs:us-east-1:111122223333:log-group:/aws/sagemaker/Clusters/*",
                   "arn:aws:logs:us-east-1:111122223333:log-group:/aws/sagemaker/Clusters/*:log-stream:*"
               ]
           }
       ]
   }
   ```

------

1. Assicurati che il ruolo IAM collegato a questa associazione abbia la policy di attendibilità seguente. Verifica che l’ARN di origine e l’account di origine siano corretti.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
               "Effect": "Allow",
               "Principal": {
                   "Service": "pods.eks.amazonaws.com"
               },
               "Action": [
                   "sts:AssumeRole",
                   "sts:TagSession"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:SourceArn": "arn:aws:eks:us-east-1:111122223333:cluster/cluster-name",
                       "aws:SourceAccount": "111122223333"
                   }
               }
           }
       ]
   }
   ```

------

### Verifica della limitazione (della larghezza di banda della rete) del Servizio gestito da Amazon per Prometheus
<a name="check-amp-throttling"></a>

1. Accedi Console di gestione AWS e apri la console Service Quotas all'indirizzo. [https://console.aws.amazon.com/servicequotas/](https://console.aws.amazon.com/servicequotas/)

1. Nella casella **Quote gestite**, cerca e seleziona Servizio gestito da Amazon per Prometheus.

1. Scegli la quota **Serie attiva per spazio di lavoro**.

1. Nella scheda **Quote a livello di risorsa**, seleziona lo spazio di lavoro del Servizio gestito da Amazon per Prometheus.

1. Assicurati che l’utilizzo sia inferiore alla tua quota attuale.

1. Se hai raggiunto il limite di quota, seleziona lo spazio di lavoro scegliendo il pulsante di opzione a sinistra, quindi seleziona **Richiedi un aumento a livello di risorsa**.

### Verifica che la memorizzazione nella cache KV e il routing intelligente siano abilitati
<a name="verify-caching-routing"></a>

Se manca la `KVCache Metrics` dashboard, la funzionalità non è abilitata o la porta non è menzionata nel. `modelMetrics` Per ulteriori informazioni su come abilitarla, consulta i passaggi 1 e 3 di seguito[Configura la memorizzazione nella cache KV e il routing intelligente per migliorare le prestazioni](sagemaker-hyperpod-model-deployment-deploy-ftm.md#sagemaker-hyperpod-model-deployment-deploy-ftm-cache-route). 

Se manca la `Intelligent Router Metrics` dashboard, abilita la funzione per farli apparire. Per ulteriori informazioni su come abilitarla, consulta[Configura la memorizzazione nella cache KV e il routing intelligente per migliorare le prestazioni](sagemaker-hyperpod-model-deployment-deploy-ftm.md#sagemaker-hyperpod-model-deployment-deploy-ftm-cache-route). 

## Risoluzione degli errori di installazione del componente aggiuntivo
<a name="troubleshooting-addon-installation-failures"></a>

Se l’installazione del componente aggiuntivo Observability non riesce, utilizza la procedura seguente per diagnosticare e risolvere il problema.

### Controlla lo stato di integrità della sonda
<a name="check-health-probe-status"></a>

1. Apri la console Amazon EKS a [https://console.aws.amazon.com/eks/home\$1/clusters](https://console.aws.amazon.com/eks/home#/clusters).

1. Selezionare il cluster.

1. Selezionare la scheda **Componenti aggiuntivi**.

1. Scegli il componente aggiuntivo non riuscito.

1. Consulta la sezione **Problemi di integrità**.

1. Se il problema di integrità è correlato alle credenziali o a Pod Identity, consulta [Verifica dell’associazione Pod Identity](#verify-pod-identity-association). Assicurati inoltre che il componente aggiuntivo Pod Identity Agent sia in esecuzione nel cluster.

1. Verifica la presenza di errori nei log del gestore. Per istruzioni, consulta [Revisione dei log del gestore](#review-manager-logs).

1. Contatta l' AWS assistenza per i dettagli del problema.

### Revisione dei log del gestore
<a name="review-manager-logs"></a>

1. Scarica il pod del gestore dei componenti aggiuntivi:

   ```
   kubectl logs -n hyperpod-observability -l control-plane=hyperpod-observability-controller-manager
   ```

1. Per problemi urgenti, contatta Supporto.

## Revisione di tutti i pod di osservabilità
<a name="review-all-observability-pods"></a>

Tutti i pod creati dal componente aggiuntivo SageMaker HyperPod Observability si trovano nel namespace. `hyperpod-observability` Per ottenere lo stato di questi pod, utilizza il comando seguente.

```
kubectl get pods -n hyperpod-observability
```

Cerca i pod il cui stato è `pending` o `crashloopbackoff`. Utilizza il comando seguente per ottenere i log di questi pod in sospeso o in errore.

```
kubectl logs -n hyperpod-observability pod-name
```

Se non trovi errori nei log, utilizza il comando seguente per descrivere i pod e cercare gli errori.

```
kubectl describe -n hyperpod-observability pod pod-name
```

Per ottenere più contesto, esegui questi due comandi per visualizzare le descrizioni delle implementazioni e dei DaemonSet per questi pod.

```
kubectl describe -n hyperpod-observability deployment deployment-name
```

```
kubectl describe -n hyperpod-observability daemonset daemonset-name
```

## Risoluzione dei problemi relativi ai pod bloccati nello stato in sospeso
<a name="pods-stuck-in-pending"></a>

Se vedi che ci sono dei pod bloccati nello stato `pending`, assicurati che il nodo sia abbastanza grande da contenerli tutti. Per verificare che lo sia, procedi come segue.

1. Apri la console Amazon EKS a [https://console.aws.amazon.com/eks/home\$1/clusters](https://console.aws.amazon.com/eks/home#/clusters).

1. Scegli il cluster.

1. Scegli la scheda **Calcolo** del cluster.

1. Scegli il nodo con il tipo di istanza più piccolo.

1. Nella sezione di allocazione della capacità, cerca i pod disponibili.

1. Se non ci sono pod disponibili, devi scegliere un tipo di istanza più grande.

Per problemi urgenti, contatta Supporto AWS.

## Risoluzione dei problemi di osservabilità su gruppi di istanze con restrizioni
<a name="troubleshooting-rig-observability"></a>

Utilizza la seguente guida per risolvere problemi specifici dei cluster con Restricted Instance Groups.

### I pod di osservabilità non iniziano su nodi con restrizioni
<a name="troubleshooting-rig-pods-not-starting"></a>

Se i pod di osservabilità non si avviano su nodi con restrizioni, controlla lo stato e gli eventi dei pod:

```
kubectl get pods -n hyperpod-observability -o wide
kubectl describe pod pod-name -n hyperpod-observability
```

Le cause più comuni includono:
+ **Errori di estrazione delle immagini:** gli eventi del pod possono mostrare errori di estrazione delle immagini se le immagini del contenitore di osservabilità non sono ancora elencate nei nodi con restrizioni. Assicurati di utilizzare la versione più recente del componente aggiuntivo Observability. Se il problema persiste dopo l'aggiornamento, contatta. Supporto
+ **Tolleranze di contaminazione:** verificate che le specifiche del pod includano la tolleranza richiesta per i nodi con restrizioni. Il componente aggiuntivo a partire dalla versione aggiunge `v1.0.5-eksbuild.1` automaticamente questa tolleranza quando il supporto RIG è abilitato. Se utilizzi una versione precedente, esegui l'aggiornamento alla versione più recente.

### Visualizzazione dei log dei pod su nodi con restrizioni
<a name="troubleshooting-rig-viewing-logs"></a>

Il `kubectl logs` comando non funziona per i pod in esecuzione su nodi con restrizioni. Questa è una limitazione prevista perché il percorso di comunicazione richiesto per lo streaming dei log non è disponibile sui nodi con restrizioni.

Per visualizzare i log dai nodi con restrizioni, usa la dashboard **Cluster Logs** in Amazon Managed Grafana, che interroga direttamente i log. CloudWatch Puoi filtrare per ID di istanza, flusso di log, livello di log e ricerca a testo libero per trovare le voci di log pertinenti.

### Errori di risoluzione DNS in cluster con nodi standard e limitati
<a name="troubleshooting-rig-dns-resolution"></a>

Nei cluster ibridi (cluster con gruppi di istanze standard e limitati), i pod sui nodi standard possono subire dei timeout di risoluzione DNS quando cercano di raggiungere AWS endpoint di servizio come Amazon Managed Service for Prometheus o. CloudWatch

**Causa:** il `kube-dns` servizio dispone di endpoint sia da pod CoredNS standard che da pod CoredNS RIG. I node pod standard non possono raggiungere gli endpoint RIG CoredNS a causa dell'isolamento della rete. Quando si `kube-proxy` bilancia il carico di una richiesta DNS da un pod di nodi standard a un endpoint RIG CoredNS, la richiesta scade.

**Risoluzione:** imposta il `kube-dns` servizio `internalTrafficPolicy: Local` in modo che i pod raggiungano CoredNS solo sul loro nodo locale:

```
kubectl patch svc kube-dns -n kube-system -p '{"spec":{"internalTrafficPolicy":"Local"}}'
```

Dopo aver applicato questa patch, riavvia i pod di osservabilità interessati:

```
kubectl delete pods -n hyperpod-observability -l app.kubernetes.io/name=hyperpod-node-collector
```

### Metriche dei nodi con restrizioni che non raggiungono Amazon Managed Service for Prometheus
<a name="troubleshooting-rig-metrics-not-reaching-amp"></a>

Se le metriche dei nodi con restrizioni non vengono visualizzate nel tuo spazio di lavoro Amazon Managed Service for Prometheus:

1. **Verifica le autorizzazioni del ruolo di esecuzione.** Assicurati che il ruolo di esecuzione per il gruppo di istanze ristrette disponga dell'`aps:RemoteWrite`autorizzazione per il tuo spazio di lavoro Prometheus. Per ulteriori informazioni, consulta [Prerequisiti aggiuntivi per i gruppi di istanze con restrizioni](hyperpod-observability-addon-setup.md#hyperpod-observability-addon-rig-prerequisites).

1. **Controlla lo stato del pod node collector.** Esegui il comando seguente e verifica che i pod del collettore di nodi siano in esecuzione su nodi con restrizioni:

   ```
   kubectl get pods -n hyperpod-observability | grep node-collector
   ```

1. **Controlla le implementazioni del collettore centrale.** Nei cluster con nodi limitati, il componente aggiuntivo implementa un collettore centrale per confine di rete. Verifica che esista un raccoglitore centrale per ogni limite:

   ```
   kubectl get deployments -n hyperpod-observability | grep central-collector
   ```

1. **Verifica la presenza di errori negli eventi del pod.** `kubectl describe`Utilizzatelo sui collector pod per cercare gli eventi di errore:

   ```
   kubectl describe pod collector-pod-name -n hyperpod-observability
   ```

Se il problema persiste dopo la verifica di quanto sopra, contatta. Supporto

### La verifica dell'identità del Pod non si applica ai nodi del gruppo di istanze con restrizioni
<a name="troubleshooting-rig-pod-identity"></a>

I [Verifica dell’associazione Pod Identity](#verify-pod-identity-association) passaggi per la risoluzione dei problemi si applicano solo ai nodi standard. Sui nodi con restrizioni, il componente aggiuntivo utilizza il ruolo di esecuzione del gruppo di istanze del cluster per AWS l'autenticazione anziché Amazon EKS Pod Identity. Se nei nodi con restrizioni mancano delle metriche, verifica le autorizzazioni del ruolo di esecuzione anziché l'associazione Pod Identity.

### Fluent Bit non funziona su nodi con restrizioni
<a name="troubleshooting-rig-fluent-bit"></a>

Questo è il comportamento previsto. Fluent Bit non viene intenzionalmente distribuito su nodi con restrizioni. I log dei nodi con restrizioni vengono pubblicati CloudWatch attraverso la SageMaker HyperPod piattaforma indipendentemente dal componente aggiuntivo di osservabilità. Utilizza la dashboard **Cluster Logs** in Amazon Managed Grafana per visualizzare questi log.

# Osservabilità con Amazon CloudWatch
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci"></a>

Usa [Amazon CloudWatch Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html) per raccogliere, aggregare e riepilogare metriche e log dalle applicazioni containerizzate e dai microservizi sul cluster EKS associato a un cluster. HyperPod 

Amazon CloudWatch Insights raccoglie parametri per le risorse di calcolo, come CPU, memoria, disco e rete. Container Insights fornisce inoltre informazioni diagnostiche, ad esempio errori di riavvio del container, che consentono di isolare i problemi e risolverli in modo rapido. Puoi anche impostare CloudWatch allarmi sui parametri raccolti da Container Insights.

Per trovare un elenco completo delle metriche, consulta [Amazon EKS and Kubernetes Container Insights metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-EKS.html) in *Amazon EKS User Guide*.

## Installa Container Insights CloudWatch
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci-setup"></a>

*Gli utenti amministratori del cluster devono configurare CloudWatch Container Insights seguendo le istruzioni in [Installa l' CloudWatch agente utilizzando il componente aggiuntivo Amazon CloudWatch Observability EKS o il grafico Helm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Observability-EKS-addon.html) nella Guida per l'CloudWatch utente.* Per ulteriori informazioni sul componente aggiuntivo Amazon EKS, consulta anche [Installa il componente aggiuntivo Amazon CloudWatch Observability EKS nella Guida](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-EKS-addon.html) per l'utente di *Amazon EKS*.

Una volta completata l'installazione, verifica che il componente aggiuntivo CloudWatch Observability sia visibile nella scheda del componente aggiuntivo del cluster EKS. Il caricamento della dashboard potrebbe richiedere un paio di minuti.

**Nota**  
SageMaker HyperPod richiede CloudWatch Insight v2.0.1-eksbuild.1 o successivo.

![\[CloudWatch Observability service card showing status, version, and IAM role information.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod-eks-CIaddon.png)


# Accedi CloudWatch alla dashboard di Container Insights
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci-access-dashboard"></a>

1. Apri la CloudWatch console all'indirizzo [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Scegli **Informazioni dettagliate** e **Container Insights**.

1. Seleziona il cluster EKS configurato con il HyperPod cluster che stai utilizzando.

1. Visualizza le metriche dei Pod/Cluster livelli.

![\[Performance monitoring dashboard for EKS cluster showing node status, resource utilization, and pod metrics.\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/hyperpod-eks-CIdashboard.png)


## Accedi ai log di CloudWatch Container Insights
<a name="sagemaker-hyperpod-eks-cluster-observability-cluster-cloudwatch-ci-access-log"></a>

1. Apri la CloudWatch console all'indirizzo [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Scegli **Log** e quindi **Gruppi di log**.

Quando HyperPod i cluster sono integrati con Amazon CloudWatch Container Insights, puoi accedere ai gruppi di log pertinenti nel seguente formato:`/aws/containerinsights /<eks-cluster-name>/*`. All’interno di questo gruppo di log, puoi trovare ed esplorare vari tipi di log, ad esempio delle prestazioni, degli host, delle applicazioni e del piano dati.

# Provisioning continuo per operazioni cluster avanzate su Amazon EKS
<a name="sagemaker-hyperpod-scaling-eks"></a>

 SageMaker HyperPod I cluster Amazon creati con l'orchestrazione di Amazon EKS ora supportano il provisioning continuo, una nuova funzionalità che consente una maggiore flessibilità ed efficienza nell'esecuzione di carichi di lavoro su larga scala. AI/ML Il provisioning continuo consente di iniziare rapidamente l’addestramento, scalare senza problemi, eseguire la manutenzione senza interrompere le operazioni e avere una visibilità granulare sulle operazioni del cluster. 

**Nota**  
Il provisioning continuo è disponibile come configurazione opzionale per i cluster creati con l'orchestrazione EKS. HyperPod I cluster creati con l’orchestrazione Slurm utilizzano un modello di dimensionamento diverso.

## Come funziona
<a name="sagemaker-hyperpod-scaling-eks-how"></a>

Il sistema di provisioning continuo introduce un’architettura dello stato desiderato che sostituisce il tradizionale modello basato sulla richiesta. Questa nuova architettura consente operazioni parallele e non bloccanti su diversi livelli di risorse, mantenendo al contempo la stabilità e le prestazioni del sistema. Il sistema di provisioning continuo:
+ **Accetta la richiesta**: registra il numero delle istanze di destinazione per ogni gruppo di istanze
+ **Avvia il provisioning**: avvia le istanze per raggiungere il conteggio previsto

  **Monitora lo stato di avanzamento**: monitora ogni tentativo di avvio dell’istanza e registra lo stato
+ **Gestisce gli errori**: riprova automaticamente gli avvii non riusciti

Il provisioning continuo è disabilitato per impostazione predefinita. Per utilizzare questa funzionalità, imposta `--node-provisioning-mode` su `Continuous`.

Con il provisioning continuo abilitato, puoi avviare più operazioni di dimensionamento contemporaneamente senza attendere il completamento delle operazioni precedenti. Ciò consente di scalare contemporaneamente diversi gruppi di istanze nello stesso cluster e di inviare più richieste di dimensionamento allo stesso gruppo di istanze. 

Il provisioning continuo consente inoltre l'accesso e il monitoraggio dettagliato degli eventi [DescribeClusterEvent](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeClusterEvent.html)e [ListClusterEvent](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusterEvents.html)la visibilità operativa. 

## Misurazione dell’utilizzo
<a name="sagemaker-hyperpod-scaling-eks-metering"></a>

HyperPod i cluster con provisioning continuo utilizzano la misurazione a livello di istanza per fornire una fatturazione accurata che rifletta l'utilizzo effettivo delle risorse. Questo approccio di misurazione si differenzia dalla tradizionale fatturazione a livello di cluster in quanto tiene traccia di ogni istanza in modo indipendente.

**Fatturazione a livello di istanza**

Con il provisioning continuo, la fatturazione inizia e si arresta a livello della singola istanza anziché attendere le modifiche dello stato a livello di cluster. Questa funzionalità fornisce i seguenti vantaggi:
+ **Accuratezza di fatturazione**: la fatturazione inizia quando inizia l’esecuzione dello script del ciclo di vita. Se lo script del ciclo di vita non riesce, l’allocazione dell’istanza verrà ritentata e verrà addebitata la durata del runtime dello script del ciclo di vita.
+ **Misurazione indipendente**: il ciclo di vita della fatturazione di ogni istanza viene gestito separatamente, evitando errori di fatturazione a cascata
+ **Aggiornamenti della fatturazione in tempo reale**: la fatturazione inizia quando un’istanza inizia a eseguire lo script del ciclo di vita e si arresta quando l’istanza entra in uno stato di terminazione

**Ciclo di vita della fatturazione**

Ogni istanza del cluster segue questo ciclo di vita di fatturazione: HyperPod 
+ **La fatturazione inizia**: quando l’istanza viene avviata correttamente e inizia a eseguire lo script di configurazione del ciclo di vita
+ **La fatturazione continua**: per tutta la durata operativa dell’istanza
+ **La fatturazione si arresta**: quando l’istanza entra in uno stato di terminazione, indipendentemente dal motivo della terminazione

**Nota**  
La fatturazione non inizia in caso di errori di avvio delle istanze. Se l’avvio di un’istanza non riesce a causa di una capacità insufficiente o di altri problemi, non verrà addebitato alcun costo per il tentativo non riuscito. La fatturazione viene calcolata a livello di istanza e i costi sono aggregati e riportati nel nome della risorsa Amazon (ARN) del cluster. 

## Creazione di un cluster con provisioning continuo abilitato
<a name="sagemaker-hyperpod-scaling-eks-create"></a>

**Nota**  
È necessario che sia configurato un cluster Amazon EKS esistente con la rete VPC e che sia installato il grafico Helm richiesto. Inoltre, devi preparare uno script di configurazione del ciclo di vita e devi caricarlo in un bucket Amazon S3 a cui può accedere il tuo ruolo di esecuzione. Per ulteriori informazioni, consulta [Gestione dei SageMaker HyperPod cluster orchestrati da Amazon EKS](sagemaker-hyperpod-eks-operate.md).

La seguente AWS CLI operazione crea un HyperPod cluster con un gruppo di istanze e il provisioning continuo abilitato.

```
aws sagemaker create-cluster \ 
--cluster-name $HP_CLUSTER_NAME \
--orchestrator 'Eks={ClusterArn='$EKS_CLUSTER_ARN'}' \
--vpc-config '{
   "SecurityGroupIds": ["'$SECURITY_GROUP'"],
   "Subnets": ["'$SUBNET'"]
}' \
--instance-groups '{
   "InstanceGroupName": "ig-1",
   "InstanceType": "ml.c5.2xlarge",
   "InstanceCount": 2,
   "LifeCycleConfig": {
      "SourceS3Uri": "s3://'$BUCKET_NAME'",
      "OnCreate": "on_create_noop.sh"
   },
   "ExecutionRole": "'$EXECUTION_ROLE'",
   "ThreadsPerCore": 1,
   "TrainingPlanArn": ""
}' \
--node-provisioning-mode Continuous


// Expected Output:
{
    "ClusterArn": "arn:aws:sagemaker:us-west-2:<account-id>:cluster/<cluster-id>"
}
```

Dopo aver creato il cluster, puoi utilizzare [ListClusterNodes](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusterNodes.html)o [DescribeClusterNode](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeClusterNode.html)per trovare ulteriori informazioni sui nodi del cluster. 

La chiamata a queste operazioni restituirà un [ClusterInstanceStatusDetails](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ClusterInstanceStatusDetails.html)oggetto con uno dei seguenti valori: 
+  **Running**: il nodo è integro e registrato con l’orchestratore del cluster (EKS). 
+  **Failure**: il provisioning del nodo non è riuscito, ma il sistema riprova automaticamente a eseguire il provisioning con una nuova istanza EC2. 
+  **Pending**: è in corso il provisioning o il riavvio del nodo. 
+  **ShuttingDown**: La chiusura del nodo è in corso. Il nodo viene rimosso correttamente dal cluster oppure passa in stato di errore se si verificano errori durante la terminazione. 
+  **SystemUpdating**: Il nodo è sottoposto a patch AMI, attivate manualmente o come parte dell'applicazione di patch ai cronjob. 
+  **DeepHealthCheckInProgress**: Sono in corso [controlli sanitari approfonditi () DHCs](sagemaker-hyperpod-eks-resiliency-deep-health-checks.md). Questa operazione potrebbe richiedere da pochi minuti a diverse ore a seconda della natura dei test. I nodi danneggiati vengono sostituiti e i nodi integri passano in stato Running. 
+  **NotFound**: Usato in [BatchAddClusterNodes](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BatchAddClusterNodes.html)risposta a indicare che un nodo è stato eliminato durante la riproduzione idempotente. 

## Requisiti di capacità minima () MinCount
<a name="sagemaker-hyperpod-scaling-eks-mincount"></a>

La MinCount funzionalità consente di specificare il numero minimo di istanze che devono essere fornite correttamente prima che un gruppo di istanze passi allo stato. `InService` Questa funzionalità offre un migliore controllo sulle operazioni di scalabilità e aiuta a prevenire scenari in cui i gruppi di istanze con provisioning parziale non possono essere utilizzati efficacemente per i carichi di lavoro di formazione.

**Importante**  
MinCount non è una garanzia permanente di capacità minima. Assicura che il numero minimo di istanze specificato sia disponibile solo quando il gruppo di istanze diventa `InService` disponibile per la prima volta. Durante le normali operazioni, ad esempio sostituzioni di istanze non funzionanti o attività di manutenzione, MinCount possono verificarsi brevi cali di seguito.

### Come funziona MinCount
<a name="sagemaker-hyperpod-scaling-eks-mincount-how"></a>

Quando si crea o si aggiorna un gruppo di istanze con MinCount enabled, si verifica il seguente comportamento:
+ **Nuovi gruppi di istanze**: il gruppo di istanze rimane `Creating` attivo fino a quando almeno MinCount le istanze non vengono fornite correttamente e sono pronte. Una volta raggiunta questa soglia, il gruppo di istanze passa a. `InService`
+ **Gruppi di istanze esistenti**: quando si MinCount esegue l'aggiornamento su un gruppo di istanze esistente, lo stato cambia `Updating` fino al soddisfacimento del nuovo MinCount requisito.
+ **Scalabilità continua**: se TargetCount è maggiore di MinCount, il sistema di ridimensionamento continuo continua a tentare di avviare istanze aggiuntive finché non viene raggiunto. TargetCount 
+ **Timeout e rollback**: se MinCount non possono essere soddisfatti entro 3 ore, il sistema ripristina automaticamente il gruppo di istanze all'ultimo stato valido conosciuto. Per ulteriori informazioni sul comportamento di rollback, vedete Comportamento [automatico](#sagemaker-hyperpod-scaling-eks-mincount-rollback) del rollback.

### Stato del gruppo di istanze durante le operazioni MinCount
<a name="sagemaker-hyperpod-scaling-eks-mincount-status"></a>

I gruppi di istanze MinCount configurati presentano il seguente comportamento di stato:

Creazione in corso  
Per i nuovi gruppi di istanze quando CurrentCount < MinCount. Il gruppo di istanze rimane in questo stato fino al raggiungimento del requisito di capacità minima.

Aggiornamento in corso  
Per i gruppi di istanze esistenti quando MinCount viene modificato e CurrentCount < MinCount. Il gruppo di istanze rimane in questo stato finché non viene soddisfatto il nuovo requisito di capacità minima.

InService  
Quando MinCount ≤ CurrentCount ≤ TargetCount. Il gruppo di istanze è pronto per l'uso e tutte le operazioni di modifica sono sbloccate.

Durante il `Creating` nostro `Updating` status, si applicano le seguenti restrizioni:
+ Operazioni mutanti come `BatchAddClusterNodes``BatchDeleteClusterNodes`, o `UpdateClusterSoftware` sono bloccate
+ È comunque possibile modificare TargetCount i valori MinCount e per correggere gli errori di configurazione
+ L'eliminazione di gruppi di cluster e istanze è sempre consentita

### Comportamento automatico del rollback
<a name="sagemaker-hyperpod-scaling-eks-mincount-rollback"></a>

Se un gruppo di istanze non riesce a raggiungerlo MinCount entro 3 ore, il sistema avvia automaticamente un rollback per evitare un'attesa indefinita:
+ **Nuovi gruppi di istanze**: MinCount e TargetCount vengono reimpostati su (0, 0)
+ **Gruppi di istanze esistenti**: MinCount e TargetCount vengono ripristinati ai loro valori dall'ultimo `InService` stato
+ **Selezione delle istanze da terminare**: se è necessario terminare le istanze durante il rollback, il sistema seleziona prima le istanze non integre e poi quelle a cui è stato effettuato il provisioning più recente.
+ **Transizione dello stato**: il gruppo di istanze passa immediatamente `InService` allo stato dopo l'avvio del rollback, consentendo al sistema di scalabilità continua di gestire la capacità in base alle impostazioni di rollback

Il timeout di 3 ore si ripristina ogni volta che viene aggiornato. MinCount Ad esempio, se si esegue l'aggiornamento MinCount più volte, il periodo di timeout ricomincia dall'aggiornamento più recente.

### MinCount eventi
<a name="sagemaker-hyperpod-scaling-eks-mincount-events"></a>

Il sistema emette eventi specifici per aiutarvi a tenere traccia MinCount delle operazioni:
+ **Capacità minima raggiunta**: emessa quando un gruppo di istanze raggiunge con successo la propria posizione MinCount e passa a `InService`
+ **Rollback avviato**: emesso quando scade il timeout di 3 ore e inizia il rollback automatico

È possibile monitorare questi eventi utilizzando per tenere traccia dello stato di avanzamento delle [ListClusterEvents](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusterEvents.html)operazioni. MinCount 

### Utilizzo delle API
<a name="sagemaker-hyperpod-scaling-eks-mincount-api"></a>

MinCount viene specificato utilizzando il `MinInstanceCount` parametro nelle configurazioni del gruppo di istanze:

```
aws sagemaker create-cluster \
--cluster-name $HP_CLUSTER_NAME \
--orchestrator 'Eks={ClusterArn='$EKS_CLUSTER_ARN'}' \
--vpc-config '{
   "SecurityGroupIds": ["'$SECURITY_GROUP'"],
   "Subnets": ["'$SUBNET'"]
}' \
--instance-groups '{
   "InstanceGroupName": "worker-group",
   "InstanceType": "ml.p4d.24xlarge",
   "InstanceCount": 64,
   "MinInstanceCount": 50,
   "LifeCycleConfig": {
      "SourceS3Uri": "s3://'$BUCKET_NAME'",
      "OnCreate": "on_create.sh"
   },
   "ExecutionRole": "'$EXECUTION_ROLE'"
}' \
--node-provisioning-mode Continuous
```

Considerazioni chiave per MinCount l'utilizzo:
+ `MinInstanceCount`deve essere compreso tra 0 e il valore `InstanceCount` (incluso) del gruppo di istanze specificato nella [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)nostra richiesta [UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)
+ L'impostazione `MinInstanceCount` su 0 (impostazione predefinita) mantiene il comportamento di ridimensionamento continuo standard
+ L'impostazione `MinInstanceCount` uguale a `InstanceCount` fornisce un comportamento di all-or-nothing ridimensionamento
+ MinCount è disponibile solo per i cluster impostati `NodeProvisioningMode` su `Continuous`

# Scalabilità automatica su EKS SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-autoscaling"></a>

Amazon SageMaker HyperPod fornisce una soluzione gestita di scalabilità automatica dei nodi basata su Karpenter per i cluster creati con l'orchestrazione EKS. [Karpenter](https://karpenter.sh/) è un gestore del ciclo di vita dei nodi Kubernetes open source creato da Kubernetes che ottimizza la scalabilità dei cluster e l'efficienza dei costi. AWS A differenza delle implementazioni Karpenter autogestite, l'implementazione gestita di Karpenter elimina il sovraccarico operativo legato all'installazione, SageMaker HyperPod alla configurazione e alla manutenzione dei controller Karpenter, fornendo al contempo resilienza e tolleranza ai guasti integrate. Questa soluzione di scalabilità automatica gestita si basa sulle funzionalità di [provisioning continuo](sagemaker-hyperpod-scaling-eks.md) di cui dispone e consente di scalare in modo efficiente le risorse HyperPod di calcolo per i carichi di lavoro di addestramento e inferenza con gestione e ripristino automatici degli errori. 

I prezzi sono calcolati solo in base all'uso effettivo. Sei responsabile del pagamento di tutte le istanze di elaborazione il cui provisioning viene eseguito automaticamente tramite la scalabilità automatica in base ai prezzi standard. SageMaker HyperPod Per informazioni dettagliate sui prezzi, consulta [Amazon SageMaker AI](https://aws.amazon.com/sagemaker/ai/pricing/).

Abilitando la scalabilità automatica basata su Karpenter con HyperPod, hai accesso a:
+ **Ciclo di vita gestito dal servizio**: HyperPod gestisce l'installazione, gli aggiornamenti e la manutenzione di Karpenter, eliminando il sovraccarico operativo.
+ **Provisioning just-in-time**: Karpenter osserverà i pod in sospeso e allocherà le risorse di calcolo necessarie per i carichi di lavoro dal pool on demand.
+ **Riduzione verticale a zero**: riduci verticalmente i nodi a zero senza gestire un’infrastruttura di controller dedicata.
+ **Selezione dei nodi in base al carico di lavoro**: Karpenter sceglie i tipi di istanze ottimali in base ai requisiti dei pod, alle zone di disponibilità e ai prezzi per ridurre al minimo i costi.
+ **Consolidamento automatico dei nodi**: Karpenter valuta regolarmente i cluster per individuare opportunità di ottimizzazione, spostando i carichi di lavoro per eliminare i nodi sottoutilizzati.
+ **Resilienza integrata**: sfrutta i meccanismi integrati di tolleranza agli errori e HyperPod ripristino dei nodi.

I seguenti argomenti spiegano come abilitare la scalabilità HyperPod automatica con Karpenter.

**Topics**
+ [Prerequisiti](#sagemaker-hyperpod-eks-autoscaling-prereqs)
+ [Crea un ruolo IAM per la HyperPod scalabilità automatica con Karpenter](sagemaker-hyperpod-eks-autoscaling-iam.md)
+ [Crea e configura un HyperPod cluster con la scalabilità automatica di Karpenter](sagemaker-hyperpod-eks-autoscaling-cluster.md)
+ [Crea un NodeClass](sagemaker-hyperpod-eks-autoscaling-nodeclass.md)
+ [Crea un NodePool](sagemaker-hyperpod-eks-autoscaling-nodepool.md)
+ [Implementazione di un carico di lavoro](sagemaker-hyperpod-eks-autoscaling-workload.md)

## Prerequisiti
<a name="sagemaker-hyperpod-eks-autoscaling-prereqs"></a>
+ Il provisioning continuo è abilitato sul cluster. HyperPod Abilita il provisioning continuo impostando su `--node-provisioning-mode` al `Continuous` momento della creazione del cluster SageMaker HyperPod . Per ulteriori informazioni, consulta [Provisioning continuo per operazioni cluster avanzate su Amazon EKS](sagemaker-hyperpod-scaling-eks.md).
+ Deve essere installata la versione 1.0.742.0\$11.0.241.0 o successiva dell’agente di monitoraggio dell’integrità. Necessario per le operazioni e il monitoraggio del HyperPod cluster. L’agente deve essere configurato prima di abilitare il dimensionamento automatico di Karpenter per garantire la creazione di report corretti sull’integrità del cluster e la gestione del ciclo di vita dei nodi. Per ulteriori informazioni, consulta [Sistema di monitoraggio della salute](sagemaker-hyperpod-eks-resiliency-health-monitoring-agent.md).
+ Solo se sul cluster Amazon EKS è in esecuzione Karpenter, le versioni di `NodePool` e `NodeClaim` di Karpenter devono essere v1.
+ `NodeRecovery` deve essere impostato su automatico. Per ulteriori informazioni, consulta [Ripristino automatico del nodo](sagemaker-hyperpod-eks-resiliency-node-recovery.md).

# Crea un ruolo IAM per la HyperPod scalabilità automatica con Karpenter
<a name="sagemaker-hyperpod-eks-autoscaling-iam"></a>

Nei passaggi seguenti, creerai un ruolo IAM che consenta di gestire i nodi Kubernetes nel tuo cluster SageMaker HyperPod tramite la scalabilità automatica basata su Karpenter. Questo ruolo fornisce le autorizzazioni necessarie per aggiungere e rimuovere automaticamente i nodi del cluster in base HyperPod alla richiesta del carico di lavoro.

**Apertura della console IAM**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo console.aws.amazon.com.

1. Nel pannello di navigazione, seleziona **Roles** (Ruoli).

1. Selezionare **Create role (Crea ruolo)**.

**Configurazione della policy di attendibilità**

1. Per **Trusted entity type** (Tipo di entità attendibile), scegli **Custom trust policy** (Policy di attendibilità personalizzata).

1. Nell’editor **Policy di attendibilità personalizzata**, sostituisci la policy predefinita con la seguente:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "hyperpod.sagemaker.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Scegli **Next (Successivo)**.

**Creazione e collegamento della policy di autorizzazione**

Poiché SageMaker HyperPod richiede autorizzazioni specifiche che non sono disponibili nelle politiche AWS gestite, devi creare una politica personalizzata.

1. Scegli **Crea policy**. Si apre una nuova scheda del browser.

1. Scegli la scheda **JSON**.

1. Sostituisci la policy predefinita con la policy seguente:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sagemaker:BatchAddClusterNodes",
                   "sagemaker:BatchDeleteClusterNodes"
               ],
               "Resource": "arn:aws:sagemaker:*:*:cluster/*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceAccount": "${aws:PrincipalAccount}"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:CreateGrant",
                   "kms:DescribeKey"
               ],
               "Resource": "arn:aws:kms:*:*:key/*",
               "Condition": {
                   "StringLike": {
                       "kms:ViaService": "sagemaker.*.amazonaws.com"
                   },
                   "Bool": {
                       "kms:GrantIsForAWSResource": "true"
                   },
                   "ForAllValues:StringEquals": {
                       "kms:GrantOperations": [
                           "CreateGrant",
                           "Decrypt",
                           "DescribeKey",
                           "GenerateDataKeyWithoutPlaintext",
                           "ReEncryptTo",
                           "ReEncryptFrom",
                           "RetireGrant"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. Scegli **Next (Successivo)**.

1. In **Policy name** (Nome policy), inserisci **SageMakerHyperPodKarpenterPolicy**.

1. (Facoltativo) In **Descrizione**, inserisci una descrizione per la policy.

1. Scegliere **Create Policy (Crea policy)**.

1. Torna alla scheda di creazione del ruolo e aggiorna l’elenco delle policy.

1. Cerca e seleziona **SageMakerHyperPodKarpenterPolicy**quello che hai appena creato.

1. Scegli **Next (Successivo)**.

**Assegnazione di un nome e creazione del ruolo**

1. Per **Nome ruolo**, inserisci `SageMakerHyperPodKarpenterRole`.

1. (Facoltativo) In **Descrizione**, inserisci una descrizione per il ruolo.

1. Nella sezione **Fase 1. Seleziona le entità attendibili**, verifica che la policy di attendibilità indichi i principali dei servizi corretti.

1. Nella sezione **Fase 2. Aggiungi autorizzazioni**, verifica che `SageMakerHyperPodKarpenterPolicy` sia collegato.

1. Scegli **Crea ruolo**.

**Registrazione dell’ARN del ruolo**

Dopo aver creato correttamente il ruolo:

1. Nell’elenco **Ruoli**, seleziona il ruolo chiamato `SageMakerHyperPodKarpenterRole`.

1. Copia l’**ARN del ruolo** dalla sezione **Riepilogo**. Avrai bisogno di questo ARN per creare il tuo HyperPod cluster.

L’ARN del ruolo ha questo formato: `arn:aws:iam::ACCOUNT-ID:role/SageMakerHyperPodKarpenterRole`.

# Crea e configura un HyperPod cluster con la scalabilità automatica di Karpenter
<a name="sagemaker-hyperpod-eks-autoscaling-cluster"></a>

Nei passaggi seguenti, creerai un SageMaker HyperPod cluster con il provisioning continuo abilitato e lo configurerai per utilizzare la scalabilità automatica basata su Karpenter.

**Crea un cluster HyperPod**

1. Carica la configurazione dell'ambiente ed estrai i valori dagli CloudFormation stack.

   ```
   source .env
   SUBNET1=$(cfn-output $VPC_STACK_NAME PrivateSubnet1)
   SUBNET2=$(cfn-output $VPC_STACK_NAME PrivateSubnet2)
   SUBNET3=$(cfn-output $VPC_STACK_NAME PrivateSubnet3)
   SECURITY_GROUP=$(cfn-output $VPC_STACK_NAME NoIngressSecurityGroup)
   EKS_CLUSTER_ARN=$(cfn-output $EKS_STACK_NAME ClusterArn)
   EXECUTION_ROLE=$(cfn-output $SAGEMAKER_STACK_NAME ExecutionRole)
   SERVICE_ROLE=$(cfn-output $SAGEMAKER_STACK_NAME ServiceRole)
   BUCKET_NAME=$(cfn-output $SAGEMAKER_STACK_NAME Bucket)
   HP_CLUSTER_NAME="hyperpod-eks-test-$(date +%s)"
   EKS_CLUSTER_NAME=$(cfn-output $EKS_STACK_NAME ClusterName)
   HP_CLUSTER_ROLE=$(cfn-output $SAGEMAKER_STACK_NAME ClusterRole)
   ```

1. Carica lo script di inizializzazione del nodo sul tuo bucket Amazon S3.

   ```
   aws s3 cp lifecyclescripts/on_create_noop.sh s3://$BUCKET_NAME
   ```

1. Crea un file di configurazione del cluster con le variabili di ambiente.

   ```
   cat > cluster_config.json << EOF
   {
       "ClusterName": "$HP_CLUSTER_NAME",
       "InstanceGroups": [
           {
               "InstanceCount": 1,
               "InstanceGroupName": "system",
               "InstanceType": "ml.c5.xlarge",
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://$BUCKET_NAME",
                   "OnCreate": "on_create_noop.sh"
               },
               "ExecutionRole": "$EXECUTION_ROLE"
           },
           {
               "InstanceCount": 0,
               "InstanceGroupName": "auto-c5-az1",
               "InstanceType": "ml.c5.xlarge",
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://$BUCKET_NAME",
                   "OnCreate": "on_create_noop.sh"
               },
               "ExecutionRole": "$EXECUTION_ROLE"
           },
           {
               "InstanceCount": 0,
               "InstanceGroupName": "auto-c5-4xaz2",
               "InstanceType": "ml.c5.4xlarge",
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://$BUCKET_NAME",
                   "OnCreate": "on_create_noop.sh"
               },
               "ExecutionRole": "$EXECUTION_ROLE",
               "OverrideVpcConfig": {
                   "SecurityGroupIds": [
                       "$SECURITY_GROUP"
                   ],
                   "Subnets": [
                       "$SUBNET2"
                   ]
               }
           },
           {
               "InstanceCount": 0,
               "InstanceGroupName": "auto-g5-az3",
               "InstanceType": "ml.g5.xlarge",
               "LifeCycleConfig": {
                   "SourceS3Uri": "s3://$BUCKET_NAME",
                   "OnCreate": "on_create_noop.sh"
               },
               "ExecutionRole": "$EXECUTION_ROLE",
               "OverrideVpcConfig": {
                   "SecurityGroupIds": [
                       "$SECURITY_GROUP"
                   ],
                   "Subnets": [
                       "$SUBNET3"
                   ]
               }
           }
       ],
       "VpcConfig": {
           "SecurityGroupIds": [
               "$SECURITY_GROUP"
           ],
           "Subnets": [
               "$SUBNET1"
           ]
       },
       "Orchestrator": {
           "Eks": {
               "ClusterArn": "$EKS_CLUSTER_ARN"
           }
       },
       "ClusterRole": "$HP_CLUSTER_ROLE",
       "AutoScaling": {
           "Mode": "Enable",
           "AutoScalerType": "Karpenter"
       },
       "NodeProvisioningMode": "Continuous"
   }
   EOF
   ```

1. Esegui il comando seguente per creare il tuo HyperPod cluster.

   ```
   aws sagemaker create-cluster --cli-input-json file://./cluster_config.json
   ```

1. La procedura di creazione del cluster richiede circa 20 minuti. Monitora lo stato del cluster fino alla visualizzazione sia ClusterStatus di .Status che di AutoScaling .Status. InService

1. Salva l’ARN del cluster per le operazioni successive.

   ```
   HP_CLUSTER_ARN=$(aws sagemaker describe-cluster --cluster-name $HP_CLUSTER_NAME \
      --output text --query ClusterArn)
   ```

**Abilitazione del dimensionamento automatico Karpenter**

1. Utilizza il comando seguente per abilitare il dimensionamento automatico basato su Karpenter su qualsiasi cluster preesistente con la modalità di provisioning continuo dei nodi.

   ```
   aws sagemaker update-cluster \
       --cluster-name $HP_CLUSTER_NAME \
       --auto-scaling Mode=Enable,AutoScalerType=Karpenter \
       --cluster-role $HP_CLUSTER_ROLE
   ```

1. Verifica che Karpenter sia stato abilitato correttamente:

   ```
   aws sagemaker describe-cluster --cluster-name $HP_CLUSTER_NAME --query 'AutoScaling'
   ```

1. Output previsto:

   ```
   {
       "Mode": "Enable",
       "AutoScalerType": "Karpenter",
       "Status": "InService"
   }
   ```

Attendi che `Status` venga visualizzato `InService` prima di procedere alla configurazione NodeClass e. NodePool

# Crea un NodeClass
<a name="sagemaker-hyperpod-eks-autoscaling-nodeclass"></a>

**Importante**  
È necessario iniziare con 0 nodi nel gruppo di istanze e lasciare che Karpenter gestisca il dimensionamento automatico. Se inizi con più di 0 nodi, Karpenter li ridurrà verticalmente fino a 0.

Una classe di nodi (`NodeClass`) definisce le impostazioni a livello di infrastruttura che si applicano ai gruppi di nodi del cluster Amazon EKS, tra cui la configurazione di rete, le impostazioni di archiviazione e il tagging delle risorse. A `HyperPodNodeClass` è una personalizzazione `NodeClass` che si associa a gruppi di istanze precreati e definisce i vincoli relativi ai tipi di istanze e alle zone di disponibilità supportati per le decisioni di scalabilità automatica di Karpenter. SageMaker HyperPod

**Considerazioni sulla creazione di una classe di nodi**
+ Puoi specificare fino a 10 gruppi di istanze in `NodeClass`.
+ Quando si utilizza il partizionamento GPU con MIG (Multi-Instance GPU), Karpenter può fornire automaticamente ai nodi gruppi di istanze abilitati per Mig. Assicurati che i tuoi gruppi di istanze includano tipi di istanze supportati da Mig (ml.p4d.24xlarge, ml.p5.48xlarge o ml.p5e/p5en.48xlarge) e configura le etichette MIG appropriate durante la creazione del cluster. Per ulteriori informazioni sulla [Utilizzo delle partizioni GPU in Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md) configurazione del partizionamento GPU, consulta.
+ Se vengono applicate etichette personalizzate ai gruppi di istanze, è possibile visualizzarle sul `desiredLabels` campo quando si interroga lo stato. `HyperpodNodeClass` Ciò include etichette di configurazione MIG come. `nvidia.com/mig.config` Quando i lavori in entrata richiedono risorse MIG, Karpenter ridimensionerà automaticamente le istanze applicando le etichette MIG appropriate.
+ Se scegli di eliminare un gruppo di istanze, ti consigliamo di rimuoverlo dal tuo `NodeClass` prima di eliminarlo dal cluster. HyperPod Se un gruppo di istanze viene eliminato mentre è utilizzato in `NodeClass`, `NodeClass` viene contrassegnato come non pronto (`Ready`) per il provisioning e non verrà utilizzato per le successive operazioni di dimensionamento finché il gruppo di istanze non viene rimosso da `NodeClass`.
+ Quando rimuovi i gruppi di istanze da `NodeClass`, Karpenter rileva una deriva nei nodi gestiti da Karpenter in uno o più gruppi di istanze e arresta i nodi in base ai controlli del budget di interruzione.
+ Le sottoreti utilizzate dal gruppo di istanze devono appartenere alla stessa AZ. Le sottoreti vengono specificate a livello di cluster o utilizzando `OverrideVpcConfig` a livello di gruppo di istanze. `VpcConfig` viene utilizzato per impostazione predefinita.
+ Al momento è supportata solo la capacità on demand. I gruppi di istanze con piano di addestramento o capacità riservata non sono supportati.
+ I gruppi di istanze con `DeepHealthChecks (DHC)` non sono supportati. Questo dipende dal fatto che un DHC richiede circa 60-90 minuti per essere completato e durante questo periodo i pod restano in sospeso, causando potenzialmente un provisioning eccessivo.

La procedura che segue illustra come creare `NodeClass`.

1. Crea un file YAML (ad esempio, nodeclass.yaml) con la configurazione `NodeClass`.

1. Applica la configurazione al cluster utilizzando kubectl.

1. Fai riferimento a `NodeClass` nella configurazione `NodePool`.

1. Ecco un esempio di `NodeClass` che utilizza i tipi di istanze ml.c5.xlarge e ml.c5.4xlarge:

   ```
   apiVersion: karpenter.sagemaker.amazonaws.com/v1
   kind: HyperpodNodeClass
   metadata:
     name: sample-nc
   spec:
     instanceGroups:
       # name of InstanceGroup in HyperPod cluster. InstanceGroup needs to pre-created
       # MaxItems: 10
       - auto-c5-xaz1
       - auto-c5-4xaz2
   ```

1. Applica la configurazione:

   ```
   kubectl apply -f nodeclass.yaml
   ```

1. Monitora lo NodeClass stato per assicurarti che la condizione Ready in status sia impostata su True:

   ```
   kubectl get hyperpodnodeclass sample-nc -o yaml
   ```

   ```
   apiVersion: karpenter.sagemaker.amazonaws.com/v1
   kind: HyperpodNodeClass
   metadata:
     creationTimestamp: "<timestamp>"
     name: sample-nc
     uid: <resource-uid>
   spec:
     instanceGroups:
     - auto-c5-az1
     - auto-c5-4xaz2
   status:
     conditions:
     // true when all IGs in the spec are present in SageMaker cluster, false otherwise
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 3
       reason: InstanceGroupReady
       status: "True"
       type: InstanceGroupReady
     // true if subnets of IGs are discoverable, false otherwise
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 3
       reason: SubnetsReady
       status: "True"
       type: SubnetsReady
     // true when all dependent resources are Ready [InstanceGroup, Subnets]
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 3
       reason: Ready
       status: "True"
       type: Ready
     instanceGroups:
     - desiredLabels:
       - key: <custom_label_key>
         value: <custom_label_value>
       - key: nvidia.com/mig.config
         value: all-1g.5gb
       instanceTypes:
       - ml.c5.xlarge
       name: auto-c5-az1
       subnets:
       - id: <subnet-id>
         zone: <availability-zone-a>
         zoneId: <zone-id-a>
     - instanceTypes:
       - ml.c5.4xlarge
       name: auto-c5-4xaz2
       subnets:
       - id: <subnet-id>
         zone: <availability-zone-b>
         zoneId: <zone-id-b>
   ```

# Crea un NodePool
<a name="sagemaker-hyperpod-eks-autoscaling-nodepool"></a>

`NodePool` imposta i vincoli sui nodi che possono essere creati da Karpenter e sui pod che possono essere eseguiti su tali nodi. `NodePool` può essere configurato per:
+ Limitare la creazione di nodi a determinate zone, tipi di istanze e architetture informatiche.
+ Definire le etichette o i taint per limitare i pod che possono essere eseguiti sui nodi creati da Karpenter.

**Nota**  
HyperPod il provider supporta una serie limitata di requisiti noti di Kubernetes e Karpenter spiegati di seguito. 

La procedura che segue illustra come creare `NodePool`.

1. Crea un file YAML denominato nodepool.yaml con la configurazione `NodePool` desiderata.

1. Puoi utilizzare la configurazione di esempio seguente.

   Cerca `Ready` in `Conditions` per verificare che tutte le risorse dipendenti funzionino correttamente.

   ```
   apiVersion: karpenter.sh/v1
   kind: NodePool
   metadata:
    name: sample-np
   spec:
    template:
      spec:
        nodeClassRef:
         group: karpenter.sagemaker.amazonaws.com
         kind: HyperpodNodeClass
         name: multiazc5
        expireAfter: Never
        requirements:
           - key: node.kubernetes.io/instance-type
             operator: Exists
   ```

1. Applica `NodePool` al cluster:

   ```
   kubectl apply -f nodepool.yaml
   ```

1. Monitora lo stato di `NodePool` per assicurarti che la condizione `Ready` nello stato sia impostata su `True`:

   ```
   kubectl get nodepool sample-np -oyaml
   ```

   ```
   apiVersion: karpenter.sh/v1
   kind: NodePool
   metadata:
     name: <nodepool-name>
     uid: <resource-uid>
     ...
   spec:
     disruption:
       budgets:
       - nodes: 90%
       consolidateAfter: 0s
       consolidationPolicy: WhenEmptyOrUnderutilized
     template:
       spec:
         expireAfter: 720h
         nodeClassRef:
           group: karpenter.sagemaker.amazonaws.com
           kind: HyperpodNodeClass
           name: <nodeclass-name>
         requirements:
         - key: node.kubernetes.io/instance-type
           operator: Exists
   status:
     conditions:
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 2
       reason: ValidationSucceeded
       status: "True"
       type: ValidationSucceeded
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 2
       reason: NodeClassReady
       status: "True"
       type: NodeClassReady
     - lastTransitionTime: "<timestamp>"
       message: ""
       observedGeneration: 2
       reason: Ready
       status: "True"
       type: Ready
   ```

**Etichette supportate per Karpenter Provider HyperPod**

Questi sono i vincoli e i requisiti facoltativi che puoi specificare nella tua configurazione `NodePool`.


|  Tipo di requisito  |  Scopo  |  Usa valori Case/Supported   |  Raccomandazione  | 
| --- | --- | --- | --- | 
|  Tipi di istanza (`node.kubernetes.io/instance-type`)  |  Controlla i tipi di SageMaker istanza tra cui Karpenter può scegliere  |  Invece di limitarti a ml.c5.xlarge, lascia che Karpenter scelga tra tutti i tipi disponibili nei tuoi gruppi di istanze.  |  Lascia questo campo indefinito o utilizza l’operatore Exists per dare a Karpenter la massima flessibilità nella scelta di tipi di istanze più convenienti.  | 
|  Zone di disponibilità (`topology.kubernetes.io/zone`)  |  Controlla in quali zone di AWS disponibilità possono essere creati i nodi  |  Nomi di zone specifici come us-east-1c. Da utilizzare se i pod devono funzionare in zone specifiche per motivi di latenza o conformità.  | N/A | 
|  Architettura (`kubernetes.io/arch`)  |  Specifica l’architettura della CPU.  |  Solo amd64 (attualmente ARM non è supportato).  |  N/A  | 

# Implementazione di un carico di lavoro
<a name="sagemaker-hyperpod-eks-autoscaling-workload"></a>

Gli esempi seguenti mostrano come la HyperPod scalabilità automatica con Karpenter effettua automaticamente il provisioning dei nodi in risposta alle richieste del carico di lavoro. Questi esempi mostrano il comportamento di dimensionamento di base e i modelli di distribuzione in più zone di disponibilità.

**Implementazione di un carico di lavoro semplice**

1. La seguente implementazione di Kubernetes include pod che richiedono 1 CPU e 256 M di memoria per ogni replica o pod. In questo scenario, i pod non sono ancora stati attivati.

   ```
   kubectl apply -f https://raw.githubusercontent.com/aws/karpenter-provider-aws/refs/heads/main/examples/workloads/inflate.yaml
   ```

1. Per testare il processo di aumento verticale, utilizza il comando seguente. Karpenter aggiungerà nuovi nodi al cluster.

   ```
   kubectl scale deployment inflate --replicas 10
   ```

1. Per testare il processo di riduzione verticale, utilizza il comando seguente. Karpenter rimuoverà i nodi dal cluster.

   ```
   kubectl scale deployment inflate --replicas 0
   ```

**Implementa un carico di lavoro su più AZs**

1. Utilizza il comando seguente per implementare un carico di lavoro che esegua un’implementazione di Kubernetes in cui i pod in fase di implementazione devono essere distribuiti uniformemente tra diverse zone di disponibilità con una differenza massima di 1.

   ```
   kubectl apply -f https://raw.githubusercontent.com/aws/karpenter-provider-aws/refs/heads/main/examples/workloads/spread-zone.yaml
   ```

1. Utilizza il comando seguente per regolare il numero di pod:

   ```
   kubectl scale deployment zone-spread --replicas 15
   ```

   Karpenter aggiungerà nuovi nodi al cluster con almeno un nodo in una zona di disponibilità diversa.

Per altri esempi, consulta [Karpenter](https://github.com/aws/karpenter-provider-aws/tree/main/examples/workloads) example workloads on. GitHub

# Utilizzo della pianificazione basata sulla topologia in Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-topology"></a>

L’efficienza del trasferimento dei dati è un fattore critico nei carichi di lavoro di calcolo ad alte prestazioni e di machine learning. Quando lo utilizzi UltraServers con Amazon SageMaker HyperPod, applica SageMaker HyperPod automaticamente le etichette della topologia alle tue risorse. La pianificazione basata sulla topologia aiuta ad allocare le risorse per ridurre al minimo i costi generali di trasferimento dei dati, considerando sia la topologia delle istanze (come le risorse sono connesse all’interno di un’istanza) che la topologia di rete (come le istanze sono collegate tra loro). Per ulteriori informazioni sulla topologia delle istanze, consulta [ Amazon EC2 instance topology](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-topology.html).

La pianificazione basata sulla topologia funziona sia con i cluster su Slurm che su Amazon EKS. Per informazioni generali su come funziona la topologia con Slurm, consulta la [guida alla topologia nella documentazione di Slurm](https://slurm.schedmd.com/topology.html).

In Amazon SageMaker HyperPod, le spese generali di trasferimento dei dati provengono in genere da tre fonti principali:
+ **GPU-to-GPU trasferimento dati**: tecnologie moderne come gli NVLink NVLink switch consentono il trasferimento di dati ad alta velocità da un paese all'altro GPUs senza coinvolgere altre risorse di elaborazione. Si tratta di un metodo estremamente efficiente, ma di solito limitato a una singola istanza.
+ **GPU-to-CPU trasferimento dati**: i sistemi NUMA (Non-Uniform Memory Access) dispongono di più bus di sistema su un'unica scheda madre. In una tipica architettura di istanze EC2 come p5.48xlarge, ci sono due diversi bus di sistema, ciascuno con una CPU e 4. GPUs Per prestazioni ottimali, i processi che caricano o leggono i dati to/from GPUs devono essere eseguiti su una CPU collegata allo stesso bus di sistema della GPU.
+ **Comunicazioni di rete tra istanze**: le istanze trasferiscono i dati attraverso una catena di switch di rete. Il percorso più breve corrisponde in genere alla latenza più bassa.

## UltraServer architettura
<a name="sagemaker-hyperpod-topology-ultraserver-architecture"></a>

SageMaker HyperPod supporta l' UltraServer architettura con istanze p6e-gb200.36xlarge. An UltraServer contiene fino a 18 istanze p6e-gb200.36xlarge, di cui 4 per ogni istanza. GPUs Tutti i nodi sono interconnessi tramite NVLink switch, che consentono il trasferimento di dati GPUs tra due senza utilizzare interfacce di rete. GPUs 

Questa architettura offre un notevole incremento delle prestazioni rispetto alle singole istanze. Per sfruttare efficacemente questa architettura, i lavori devono essere inviati ai nodi di calcolo da un unico nodo. UltraServer

## Etichetta della topologia EKS
<a name="sagemaker-hyperpod-topology-eks-scheduling"></a>

In base alla topologia delle istanze EC2, etichetta HyperPod automaticamente i nodi con le seguenti etichette:
+ **topology.kubernetes.io/region**: la zona in cui risiede il nodo. Regione AWS 
+ **topology.kubernetes.io/zone**: la zona di disponibilità in cui risiede il nodo.
+ **network-node-layertopology.k8s.aws/**: descrive il set di nodi di rete di un'istanza. NetworkNodes In ogni set di nodi di rete, i nodi sono elencati in ordine gerarchico dall’alto verso il basso. Il nodo di rete connesso all’istanza è l’ultimo nell’elenco. Esistono fino a quattro livelli di nodi di rete e ogni nodo è contrassegnato da un’etichetta. I livelli disponibili sono `topology.k8s.aws/network-node-layer-1`, `topology.k8s.aws/network-node-layer-2` e `topology.k8s.aws/network-node-layer-3`.
+ **topology.k8s.aws/ultraserver-id - Un identificatore utilizzato per etichettare ciascuna delle istanze appartenenti allo stesso dominio in un Ultraserver**. NVLink Per ulteriori informazioni SageMaker HyperPod sull'utilizzo UltraServers con, [Utilizzo UltraServers in Amazon SageMaker HyperPod](sagemaker-hyperpod-ultraserver.md) consulta.

Utilizzando queste etichette, è possibile utilizzare la pianificazione basata sulla topologia nella governance delle HyperPod attività per applicare etichette e annotazioni topologiche per ottimizzare l'efficienza della formazione dei carichi di lavoro. Per ulteriori informazioni, consulta [Utilizzo della pianificazione basata sulla topologia nella governance delle attività di Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-operate-console-ui-governance-tasks-scheduling.md).

## Plugin della topologia di rete Slurm
<a name="sagemaker-hyperpod-topology-slurm-plugins"></a>

Slurm fornisce plugin integrati per il riconoscimento della topologia di rete. UltraServer l'architettura in SageMaker HyperPod supporta il plugin a blocchi.

### Utilizzo del topology/block plugin
<a name="w2aac13c35c39c15b5"></a>

NVIDIA ha sviluppato un topology/block plug-in che fornisce una pianificazione gerarchica su blocchi di nodi con le seguenti caratteristiche:
+ Un blocco è un intervallo consecutivo di nodi
+ I blocchi non possono essere sovrapposti
+ Tutti i nodi di un blocco devono essere assegnati a un processo prima di passare al blocco successivo
+ La dimensione del blocco di pianificazione equivale alla dimensione configurata del blocco più piccolo
+ Ogni livello di blocco superiore ha una dimensione che è una potenza di due rispetto a quella del livello precedente

Questo plugin alloca i nodi in base alla topologia di rete definita.

#### Configurazione
<a name="w2aac13c35c39c15b5b9"></a>

Per configurare la pianificazione basata sulla topologia con il plug-in, topology/block 
+ SageMaker HyperPod configura automaticamente il plugin. topology/block Per configurare il plugin, specifica quanto segue nel file topology.conf nella directory di configurazione Slurm:

  ```
  BlockName=us1 Nodes=ultraserver1-[0-17]
    
  BlockName=us2 Nodes=ultraserver2-[0-17]
    
  BlockSizes=18
  ```
+ Assicurati che `slurm.conf` includa:

  ```
  TopologyPlugin=topology/block
  ```

#### Utilizzo
<a name="w2aac13c35c39c15b5c11"></a>

Quando invii i processi, puoi utilizzare i seguenti argomenti aggiuntivi con i comandi `sbatch` e `srun`:
+ `--segment=N`: specifica il numero di nodi da raggruppare. La dimensione del segmento deve essere minore o uguale alla dimensione del blocco di pianificazione.
+ `--exclusive=topo`: richiedi che nessun altro processo venga inserito nello stesso blocco. Questa operazione è utile per il benchmarking e per le applicazioni sensibili alle prestazioni.

Di seguito sono riportati alcuni scenari di esempio da prendere in considerazione durante l’allocazione dei blocchi.

**Allocazione di un intero blocco di nodi su un sistema vuoto**

```
sbatch -N18
```

**Allocazione di due blocchi di nodi su un sistema vuoto**

```
sbatch -N36
```

**Allocazione di 18 nodi su un blocco con più di 6 nodi su un altro blocco**

```
sbatch -N24
```

**Allocazione di 12 nodi su un blocco e di 12 nodi su un altro blocco**

```
sbatch -N24 —segment=12
```

**Con —exclusive=topo, il processo deve essere inserito sul blocco senza altri processi**

```
sbatch -N12 —exclusive=topo
```

## Le migliori pratiche per la topologia UltraServer
<a name="sagemaker-hyperpod-topology-best-practices"></a>

Per prestazioni ottimali con UltraServer un'architettura in SageMaker HyperPod:
+ **Imposta le dimensioni dei blocchi appropriate**: configura `BlockSizes=18` (o 17 se un nodo è libero) in modo che corrispondano all' UltraServer architettura.
+ **Utilizza i segmenti per una maggiore disponibilità**: utilizza `--segment=16`, `--segment=8` o `--segment=9` con i comandi `srun` e `sbatch` per migliorare la flessibilità della pianificazione dei processi.
+ **Considera le dimensioni del processo e del segmento**:
  + Se`BlockSizes=18`, i lavori con un massimo di 18 istanze verranno sempre eseguiti su una singola UltraServer istanza.
  + Se`BlockSizes=16`, i lavori con meno di 16 istanze verranno sempre eseguiti su una singola istanza UltraServer, mentre i lavori con 18 istanze possono essere eseguiti su una o due istanze. UltraServers

Durante la procedura di segmentazione, considera quanto segue
+ Con`--segment=1`, ogni istanza può essere eseguita su un'istanza separata. UltraServer
+ Con`-N 18 --segment 9`, 9 nodi verranno posizionati su uno UltraServer e altri 9 nodi possono essere posizionati sullo stesso o su un altro UltraServer.
+ Con`-N 24 --segment 8`, il processo può essere eseguito su 2 o 3 UltraServers, con ogni 8 nodi posizionati insieme sullo stesso server.

## Limitazioni nella pianificazione SageMaker HyperPod basata sulla topologia
<a name="sagemaker-hyperpod-topology-limitations"></a>

Il plugin `topology/block` presenta delle limitazioni nel caso di cluster eterogenei (cluster con diversi tipi di istanze):
+ Solo i nodi elencati nei blocchi possono essere pianificati con Slurm
+ Ogni blocco deve avere almeno `BlockSizes[0]` nodi

Per i cluster eterogenei, considera queste alternative:
+ Non utilizzare il plugin a blocchi con i cluster eterogenei. Invece, isola i UltraServer nodi in una partizione diversa.
+ Crea un cluster separato UltraServers solo nello stesso VPC e usa la configurazione multicluster di Slurm.

# Implementazione di modelli su Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-model-deployment"></a>

Amazon SageMaker HyperPod ora va oltre la formazione per offrire una piattaforma di inferenza completa che combina la flessibilità di Kubernetes con l'eccellenza operativa dei servizi gestiti. AWS Implementa, ridimensiona e ottimizza i tuoi modelli di machine learning con affidabilità di livello aziendale utilizzando lo stesso calcolo per l'intero ciclo di vita del modello. HyperPod 

Amazon SageMaker HyperPod offre interfacce di distribuzione flessibili che consentono di distribuire modelli tramite diversi metodi, tra cui kubectl, Python SDK, Amazon SageMaker Studio UI o CLI. HyperPod Il servizio offre funzionalità avanzate di dimensionamento automatico con allocazione dinamica delle risorse, regolata automaticamente in base alla domanda. Inoltre, include funzionalità complete di osservabilità e monitoraggio che tengono traccia di metriche critiche come la latenza e l'utilizzo della GPU per aiutarti a ottimizzare time-to-first-token le prestazioni.

**Nota**  
Quando esegui la distribuzione su istanze abilitate per GPU, puoi utilizzare il partizionamento GPU con la tecnologia Multi-Instance GPU (MIG) per eseguire più carichi di lavoro di inferenza su una singola GPU. Ciò consente un migliore utilizzo della GPU e l'ottimizzazione dei costi. Per ulteriori informazioni sulla configurazione del partizionamento GPU, vedere. [Utilizzo delle partizioni GPU in Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md)

**Infrastruttura unificata per l’addestramento e l’inferenza**

Massimizza l’utilizzo della GPU trasferendo senza problemi le risorse di calcolo tra i carichi di lavoro di addestramento e di inferenza. Questa funzionalità riduce il costo totale di proprietà garantendo al tempo stesso la continuità operativa.

**Opzioni di implementazione pensate per le aziende**

Implementa modelli da più fonti, tra cui modelli open weights e gated di Amazon e modelli personalizzati di Amazon S3 SageMaker JumpStart e Amazon FSx con supporto per architetture di inferenza a nodo singolo e multinodo.

**Caching KV (Key-value) gestito e routing intelligente**

La memorizzazione nella cache KV salva i vettori chiave-valore precalcolati dopo l'elaborazione dei token precedenti. Quando viene elaborato il token successivo, non è necessario ricalcolare i vettori. Tramite un'architettura di caching a due livelli, è possibile configurare una cache L1 che utilizza la memoria della CPU per il riutilizzo locale a bassa latenza e una cache L2 che sfrutta Redis per consentire una condivisione scalabile della cache a livello di nodo.

Il routing intelligente analizza le richieste in entrata e le indirizza all'istanza di inferenza che ha più probabilità di avere coppie chiave-valore memorizzate nella cache. Il sistema esamina la richiesta e quindi la indirizza in base a una delle seguenti strategie di routing:

1. `prefixaware`— Le richieste successive con lo stesso prefisso di prompt vengono indirizzate alla stessa istanza

1. `kvaware`— Le richieste in entrata vengono indirizzate all'istanza con la più alta frequenza di accessi della cache KV.

1. `session`— Le richieste provenienti dalla stessa sessione utente vengono indirizzate alla stessa istanza.

1. `roundrobin`— Distribuzione uniforme delle richieste senza considerare lo stato della cache KV.

Per ulteriori informazioni su come abilitare questa funzionalità, vedere[Configura la memorizzazione nella cache KV e il routing intelligente per migliorare le prestazioni](sagemaker-hyperpod-model-deployment-deploy-ftm.md#sagemaker-hyperpod-model-deployment-deploy-ftm-cache-route).

**Supporto di storage su più livelli con cache L2 integrata per la memorizzazione nella cache KV**

Basandosi sull'infrastruttura di cache KV esistente, HyperPod ora integra lo storage su più livelli come opzione di backend L2 aggiuntiva insieme a Redis. Grazie allo storage SageMaker gestito su più livelli integrato, ciò offre prestazioni migliorate. Questo miglioramento offre ai clienti un'opzione più scalabile ed efficiente per l'offload della cache, particolarmente vantaggiosa per i carichi di lavoro di inferenza LLM ad alto rendimento. L'integrazione mantiene la compatibilità con i server modello VLLm esistenti e le funzionalità di routing, offrendo al contempo prestazioni migliori.

**Nota**  
**Crittografia dei dati:** i dati della cache KV (chiavi e valori di attenzione) vengono archiviati non crittografati quando sono inattivi per ottimizzare la latenza di inferenza e migliorare le prestazioni. Per carichi di lavoro con encryption-at-rest requisiti rigorosi, prendi in considerazione la crittografia a livello di applicazione di richieste e risposte o disabilita la memorizzazione nella cache.  
**Isolamento dei dati:** quando si utilizza lo storage gestito su più livelli come backend della cache L2, più implementazioni di inferenza all'interno di un cluster condividono lo storage della cache senza isolamento. I dati della cache L2 KV (chiavi e valori di attenzione) provenienti da diverse implementazioni non sono separati. Per i carichi di lavoro che richiedono l'isolamento dei dati (scenari multi-tenant, diversi livelli di classificazione dei dati), esegui l'implementazione su cluster separati o utilizza istanze Redis dedicate.

**Implementazione di tipo multiistanza con failover automatico**

HyperPod Inference supporta l'implementazione di tipo multiistanza per migliorare l'affidabilità della distribuzione e l'utilizzo delle risorse. Specificate un elenco prioritario di tipi di istanze nella configurazione di distribuzione e il sistema selezionerà automaticamente tra le alternative disponibili quando il tipo di istanza preferito non ha capacità. Lo scheduler Kubernetes utilizza l'affinità dei `preferredDuringSchedulingIgnoredDuringExecution` nodi per valutare i tipi di istanza in ordine di priorità, posizionando i carichi di lavoro sul tipo di istanza con la priorità più alta disponibile e garantendo al contempo l'implementazione anche quando le risorse preferite non sono disponibili. Questa funzionalità previene gli errori di implementazione dovuti a vincoli di capacità, mantenendo al contempo le preferenze in termini di costi e prestazioni, garantendo la disponibilità continua del servizio anche durante le fluttuazioni della capacità del cluster.

**Affinità dei nodi personalizzata per un controllo granulare della pianificazione**

HyperPod Inference supporta l'affinità dei nodi personalizzata per controllare il posizionamento del carico di lavoro oltre la selezione del tipo di istanza. Specificate i criteri di selezione dei nodi, come la distribuzione delle zone di disponibilità, il filtraggio del tipo di capacità (su richiesta o spot) o le etichette personalizzate dei nodi tramite il campo. `nodeAffinity` Il sistema supporta vincoli di posizionamento obbligatori tramite l'utilizzo di preferenze `requiredDuringSchedulingIgnoredDuringExecution` opzionali`preferredDuringSchedulingIgnoredDuringExecution`, garantendo il pieno controllo sulle decisioni di pianificazione dei pod pur mantenendo la flessibilità di implementazione.

**Nota**  
Raccogliamo determinate metriche operative di routine per fornire la disponibilità essenziale del servizio. La creazione di queste metriche è completamente automatizzata e non prevede la revisione umana del carico di lavoro di inferenza del modello sottostante. Queste metriche riguardano le operazioni di distribuzione, la gestione delle risorse e la registrazione degli endpoint.

**Topics**
+ [Configurazione dei HyperPod cluster per l'implementazione dei modelli](sagemaker-hyperpod-model-deployment-setup.md)
+ [Implementazione di modelli di fondazione e di modelli ottimizzati con fine-tuning personalizzati](sagemaker-hyperpod-model-deployment-deploy.md)
+ [Politiche di scalabilità automatica per l'implementazione del modello di inferenza HyperPod](sagemaker-hyperpod-model-deployment-autoscaling.md)
+ [Implementazione dell'osservabilità inferenziale sui cluster HyperPod](sagemaker-hyperpod-model-deployment-observability.md)
+ [Governance delle attività per l'implementazione del modello su HyperPod](sagemaker-hyperpod-model-deployment-task-gov.md)
+ [HyperPod risoluzione dei problemi di inferenza](sagemaker-hyperpod-model-deployment-ts.md)
+ [Note sulla versione di Amazon SageMaker HyperPod Inference](sagemaker-hyperpod-inference-release-notes.md)

# Configurazione dei HyperPod cluster per l'implementazione dei modelli
<a name="sagemaker-hyperpod-model-deployment-setup"></a>

Questa guida mostra come abilitare le funzionalità di inferenza sui SageMaker HyperPod cluster Amazon. Configurerai l'infrastruttura, le autorizzazioni e gli operatori di cui gli ingegneri di machine learning hanno bisogno per implementare e gestire gli endpoint di inferenza.

**Nota**  
Per creare un cluster con l'operatore di inferenza preinstallato, consulta. [Crea un cluster orchestrato da EKS SageMaker HyperPod](sagemaker-hyperpod-quickstart.md#sagemaker-hyperpod-quickstart-eks) Per installare l'operatore di inferenza su un cluster esistente, continuate con le seguenti procedure.

Puoi installare l'operatore di inferenza utilizzando la console SageMaker AI per un'esperienza semplificata o utilizzare la AWS CLI per un maggiore controllo. Questa guida copre entrambi i metodi di installazione.

## Metodo 1: installa il componente aggiuntivo HyperPod Inference tramite la console SageMaker AI (consigliato)
<a name="sagemaker-hyperpod-model-deployment-setup-ui"></a>

La console SageMaker AI offre l'esperienza più semplificata con due opzioni di installazione:
+ **Installazione rapida:** crea automaticamente tutte le risorse necessarie con impostazioni predefinite ottimizzate, inclusi ruoli IAM, bucket Amazon S3 e componenti aggiuntivi per le dipendenze. Verrà creato un nuovo dominio Studio con le autorizzazioni necessarie per distribuire un modello nel cluster pertinente. JumpStart Questa opzione è ideale per iniziare rapidamente con decisioni di configurazione minime.
+ **Installazione personalizzata:** offre la flessibilità necessaria per specificare le risorse esistenti o personalizzare le configurazioni mantenendo l'esperienza con un solo clic. I clienti possono scegliere di riutilizzare i ruoli IAM esistenti, i bucket Amazon S3 o i componenti aggiuntivi di dipendenza in base ai requisiti organizzativi.

### Prerequisiti
<a name="sagemaker-hyperpod-model-deployment-setup-ui-prereqs"></a>
+ Un HyperPod cluster esistente con orchestrazione Amazon EKS
+ Autorizzazioni IAM per l'amministrazione di cluster Amazon EKS
+ kubectl configurato per l'accesso al cluster

### Fasi di installazione
<a name="sagemaker-hyperpod-model-deployment-setup-ui-steps"></a>

1. Vai alla console SageMaker AI e vai a **HyperPod Clusters** → **Cluster Management**.

1. Seleziona il cluster in cui desideri installare Inference Operator.

1. Vai alla scheda **Inferenza.** Seleziona **Installazione rapida** per la configurazione automatica o Installazione **personalizzata** per la flessibilità di configurazione.

1. Se scegli Installazione personalizzata, specifica le risorse esistenti o personalizza le impostazioni in base alle esigenze.

1. Fate clic su **Installa** per iniziare il processo di installazione automatica.

1. Verifica lo stato dell'installazione tramite la console o eseguendo i seguenti comandi:

   ```
   kubectl get pods -n hyperpod-inference-system
   ```

   ```
   aws eks describe-addon --cluster-name CLUSTER-NAME --addon-name amazon-sagemaker-hyperpod-inference --region REGION
   ```

Dopo aver installato correttamente il componente aggiuntivo, puoi distribuire i modelli utilizzando la documentazione sulla distribuzione del modello o accedere a. [Verifica del funzionamento dell’operatore di inferenza](#sagemaker-hyperpod-model-deployment-setup-verify)

## Metodo 2: installazione dell'operatore di inferenza utilizzando la CLI AWS
<a name="sagemaker-hyperpod-model-deployment-setup-addon"></a>

Il metodo di installazione AWS CLI offre un maggiore controllo sul processo di installazione ed è adatto per l'automazione e le configurazioni avanzate.

### Prerequisiti
<a name="sagemaker-hyperpod-model-deployment-setup-prereq-addon"></a>

L'operatore di inferenza consente l'implementazione e la gestione di endpoint di inferenza di machine learning sul tuo cluster Amazon EKS. Prima dell'installazione, assicurati che il cluster disponga delle configurazioni di sicurezza e dell'infrastruttura di supporto richieste. Completa questi passaggi per configurare i ruoli IAM, installare il AWS Load Balancer Controller, configurare i driver Amazon S3 e FSx Amazon CSI e distribuire KEDA e cert-manager:

1. [Connect al cluster e configura le variabili di ambiente](#sagemaker-hyperpod-model-deployment-setup-connect-addon)

1. [Configura i ruoli IAM per l'operatore di inferenza](#sagemaker-hyperpod-model-deployment-setup-prepare-addon)

1. [Crea il ruolo ALB Controller](#sagemaker-hyperpod-model-deployment-setup-alb-addon)

1. [Creazione del ruolo di operatore KEDA](#sagemaker-hyperpod-model-deployment-setup-keda-addon)

1. [Installa i componenti aggiuntivi EKS di dipendenza](#sagemaker-hyperpod-model-deployment-setup-install-dependencies)

**Nota**  
In alternativa, puoi utilizzare CloudFormation modelli per automatizzare la configurazione dei prerequisiti. Per ulteriori informazioni, consulta [Utilizzo dei CloudFormation modelli per creare lo stack dei prerequisiti](#sagemaker-hyperpod-model-deployment-setup-cfn).

### Connect al cluster e configura le variabili di ambiente
<a name="sagemaker-hyperpod-model-deployment-setup-connect-addon"></a>

Prima di procedere, verifica che AWS le tue credenziali siano configurate correttamente e dispongano delle autorizzazioni necessarie. Esegui i seguenti passaggi utilizzando un principale IAM con privilegi di amministratore e accesso da amministratore del cluster a un cluster Amazon EKS. Assicurati di aver creato un HyperPod cluster con[Creazione di un SageMaker HyperPod cluster con l'orchestrazione di Amazon EKS](sagemaker-hyperpod-eks-operate-console-ui-create-cluster.md). Installa le utilità da riga di comando helm, eksctl e kubectl.

Per l'accesso amministrativo di Kubernetes al cluster Amazon EKS, apri la console Amazon EKS e seleziona il tuo cluster. Nella scheda **Accesso**, seleziona **IAM** Access Entries. Se non esiste alcuna voce per il tuo principale IAM, seleziona **Create Access Entry**. Seleziona il principale IAM desiderato e associalo ad esso. `AmazonEKSClusterAdminPolicy`

1. Configura kubectl per connetterti al cluster appena creato orchestrato dal HyperPod cluster Amazon EKS. Specificare la regione e il nome del cluster. HyperPod 

   ```
   export HYPERPOD_CLUSTER_NAME=<hyperpod-cluster-name>
   export REGION=<region>
   
   # S3 bucket where tls certificates will be uploaded
   export BUCKET_NAME="hyperpod-tls-<your-bucket-suffix>" # Bucket should have prefix: hyperpod-tls-*
   
   export EKS_CLUSTER_NAME=$(aws --region $REGION sagemaker describe-cluster --cluster-name $HYPERPOD_CLUSTER_NAME \
   --query 'Orchestrator.Eks.ClusterArn' --output text | \
   cut -d'/' -f2)
   aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region $REGION
   ```
**Nota**  
Se utilizzi un nome di bucket personalizzato che non inizia con`hyperpod-tls-`, allega la seguente policy al tuo ruolo di esecuzione:  

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "TLSBucketDeleteObjectsPermission",
               "Effect": "Allow",
               "Action": ["s3:DeleteObject"],
               "Resource": ["arn:aws:s3:::${BUCKET_NAME}/*"],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceAccount": "${aws:PrincipalAccount}"
                   }
               }
           },
           {
               "Sid": "TLSBucketGetObjectAccess",
               "Effect": "Allow",
               "Action": ["s3:GetObject"],
               "Resource": ["arn:aws:s3:::${BUCKET_NAME}/*"]
           },
           {
               "Sid": "TLSBucketPutObjectAccess",
               "Effect": "Allow",
               "Action": ["s3:PutObject", "s3:PutObjectTagging"],
               "Resource": ["arn:aws:s3:::${BUCKET_NAME}/*"],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceAccount": "${aws:PrincipalAccount}"
                   }
               }
           }
       ]
   }
   ```

1. Imposta le variabili env predefinite.

   ```
   HYPERPOD_INFERENCE_ROLE_NAME="SageMakerHyperPodInference-$HYPERPOD_CLUSTER_NAME"
   HYPERPOD_INFERENCE_NAMESPACE="hyperpod-inference-system"
   ```

1. Estrai il nome del cluster Amazon EKS dall’ARN del cluster, aggiorna il file kubeconfig locale e verifica la connettività elencando tutti i pod nei namespace.

   ```
   kubectl get pods --all-namespaces
   ```

1. (Facoltativo) Installa il plugin del dispositivo NVIDIA per abilitare il supporto della GPU sul cluster.

   ```
   # Install nvidia device plugin
   kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.5/nvidia-device-plugin.yml
   # Verify that GPUs are visible to k8s
   kubectl get nodes -o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia.com/gpu
   ```

### Configura i ruoli IAM per l'operatore di inferenza
<a name="sagemaker-hyperpod-model-deployment-setup-prepare-addon"></a>

1. Raccogli gli identificatori AWS delle risorse essenziali e ARNs necessari per configurare le integrazioni di servizi tra i componenti Amazon EKS, SageMaker AI e IAM.

   ```
   %%bash -x
   
   export ACCOUNT_ID=$(aws --region $REGION sts get-caller-identity --query 'Account' --output text)
   export OIDC_ID=$(aws --region $REGION eks describe-cluster --name $EKS_CLUSTER_NAME --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
   export EKS_CLUSTER_ROLE=$(aws eks --region $REGION describe-cluster --name $EKS_CLUSTER_NAME --query 'cluster.roleArn' --output text)
   ```

1. Associa un OIDCidentity provider IAM al tuo cluster EKS.

   ```
   eksctl utils associate-iam-oidc-provider --region=$REGION --cluster=$EKS_CLUSTER_NAME --approve
   ```

1. Crea la policy di fiducia richiesta per il ruolo IAM dell'operatore di HyperPod inferenza. Queste policy consentono una comunicazione sicura tra diversi servizi tra Amazon EKS, SageMaker AI e altri AWS servizi.

   ```
   %%bash -x
   
   # Create trust policy JSON
   cat << EOF > trust-policy.json
   {
   "Version": "2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Principal": {
               "Service": [
                   "sagemaker.amazonaws.com"
               ]
           },
           "Action": "sts:AssumeRole"
       },
       {
           "Effect": "Allow",
           "Principal": {
               "Federated": "arn:aws:iam::${ACCOUNT_ID}:oidc-provider/oidc.eks.${REGION}.amazonaws.com/id/${OIDC_ID}"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
               "StringLike": {
                   "oidc.eks.${REGION}.amazonaws.com/id/${OIDC_ID}:aud": "sts.amazonaws.com",
                   "oidc.eks.${REGION}.amazonaws.com/id/${OIDC_ID}:sub": "system:serviceaccount:hyperpod-inference-system:hyperpod-inference-controller-manager"
               }
           }
       }
   ]
   }
   EOF
   ```

1. Crea il ruolo di esecuzione per l’operatore di inferenza.

   ```
   aws iam create-role --role-name $HYPERPOD_INFERENCE_ROLE_NAME --assume-role-policy-document file://trust-policy.json
   aws iam attach-role-policy --role-name $HYPERPOD_INFERENCE_ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerHyperPodInferenceAccess
   ```

1. Crea uno spazio dei nomi per le risorse degli operatori di inferenza

   ```
   kubectl create namespace $HYPERPOD_INFERENCE_NAMESPACE
   ```

### Crea il ruolo ALB Controller
<a name="sagemaker-hyperpod-model-deployment-setup-alb-addon"></a>

1. Crea la policy di attendibilità e la policy di autorizzazione.

   ```
   # Create trust policy
   cat <<EOF > /tmp/alb-trust-policy.json
   {
   "Version": "2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Principal": {
               "Federated": "arn:aws:iam::$ACCOUNT_ID:oidc-provider/oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
               "StringLike": {
                   "oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID:sub": "system:serviceaccount:hyperpod-inference-system:aws-load-balancer-controller",
                   "oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID:aud": "sts.amazonaws.com"
               }
           }
       }
   ]
   }
   EOF
   
   # Create permissions policy
   export ALBController_IAM_POLICY_NAME=HyperPodInferenceALBControllerIAMPolicy
   curl -o AWSLoadBalancerControllerIAMPolicy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.13.0/docs/install/iam_policy.json
   
   # Create the role
   aws iam create-role \
       --role-name alb-role \
       --assume-role-policy-document file:///tmp/alb-trust-policy.json 
   
   # Create the policy
   ALB_POLICY_ARN=$(aws iam create-policy \
       --policy-name $ALBController_IAM_POLICY_NAME \
       --policy-document file://AWSLoadBalancerControllerIAMPolicy.json \
       --query 'Policy.Arn' \
       --output text)
   
   # Attach the policy to the role
   aws iam attach-role-policy \
       --role-name alb-role \
       --policy-arn $ALB_POLICY_ARN
   ```

1. Applica i tag (`kubernetes.io.role/elb`) a tutte le sottoreti del cluster Amazon EKS (sia pubbliche che private).

   ```
   export VPC_ID=$(aws --region $REGION eks describe-cluster --name $EKS_CLUSTER_NAME --query 'cluster.resourcesVpcConfig.vpcId' --output text)
   
   # Add Tags
   aws ec2 describe-subnets \
   --filters "Name=vpc-id,Values=${VPC_ID}" "Name=map-public-ip-on-launch,Values=true" \
   --query 'Subnets[*].SubnetId' --output text | \
   tr '\t' '\n' | \
   xargs -I{} aws ec2 create-tags --resources {} --tags Key=kubernetes.io/role/elb,Value=1
   
   # Verify Tags are added
   aws ec2 describe-subnets \
   --filters "Name=vpc-id,Values=${VPC_ID}" "Name=map-public-ip-on-launch,Values=true" \
   --query 'Subnets[*].SubnetId' --output text | \
   tr '\t' '\n' |
   xargs -n1 -I{} aws ec2 describe-tags --filters "Name=resource-id,Values={}" "Name=key,Values=kubernetes.io/role/elb" --query "Tags[0].Value" --output text
   ```

1. Creare un endpoint VPC Amazon S3.

   ```
   aws ec2 create-vpc-endpoint \
       --region ${REGION} \
       --vpc-id ${VPC_ID} \
       --vpc-endpoint-type Gateway \
       --service-name "com.amazonaws.${REGION}.s3" \
       --route-table-ids $(aws ec2 describe-route-tables --region $REGION --filters "Name=vpc-id,Values=${VPC_ID}" --query 'RouteTables[].Associations[].RouteTableId' --output text | tr ' ' '\n' | sort -u | tr '\n' ' ')
   ```

### Creazione del ruolo di operatore KEDA
<a name="sagemaker-hyperpod-model-deployment-setup-keda-addon"></a>

1. Crea la policy di attendibilità e la policy di autorizzazione.

   ```
   # Create trust policy
   cat <<EOF > /tmp/keda-trust-policy.json
   {
   "Version": "2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Principal": {
               "Federated": "arn:aws:iam::$ACCOUNT_ID:oidc-provider/oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
               "StringLike": {
                   "oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID:sub": "system:serviceaccount:hyperpod-inference-system:keda-operator",
                   "oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID:aud": "sts.amazonaws.com"
               }
           }
       }
   ]
   }
   EOF
   
   # Create permissions policy
   cat <<EOF > /tmp/keda-policy.json
   {
   "Version": "2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "cloudwatch:GetMetricData",
               "cloudwatch:GetMetricStatistics",
               "cloudwatch:ListMetrics"
           ],
           "Resource": "*"
       },
       {
           "Effect": "Allow",
           "Action": [
               "aps:QueryMetrics",
               "aps:GetLabels",
               "aps:GetSeries",
               "aps:GetMetricMetadata"
           ],
           "Resource": "*"
       }
   ]
   }
   EOF
   
   # Create the role
   aws iam create-role \
       --role-name keda-operator-role \
       --assume-role-policy-document file:///tmp/keda-trust-policy.json
   
   # Create the policy
   KEDA_POLICY_ARN=$(aws iam create-policy \
       --policy-name KedaOperatorPolicy \
       --policy-document file:///tmp/keda-policy.json \
       --query 'Policy.Arn' \
       --output text)
   
   # Attach the policy to the role
   aws iam attach-role-policy \
       --role-name keda-operator-role \
       --policy-arn $KEDA_POLICY_ARN
   ```

1. Se utilizzi modelli gated, crea un ruolo IAM per accedervi.

   1. Creare una policy IAM

      ```
      %%bash -s $REGION
      
      JUMPSTART_GATED_ROLE_NAME="JumpstartGatedRole-${REGION}-${HYPERPOD_CLUSTER_NAME}"
      
      cat <<EOF > /tmp/trust-policy.json
      {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Federated": "arn:aws:iam::$ACCOUNT_ID:oidc-provider/oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID"
              },
              "Action": "sts:AssumeRoleWithWebIdentity",
              "Condition": {
                  "StringLike": {
                      "oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID:sub": "system:serviceaccount:*:hyperpod-inference-service-account*",
                      "oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID:aud": "sts.amazonaws.com"
                  }
              }
          },
              {
              "Effect": "Allow",
              "Principal": {
                  "Service": "sagemaker.amazonaws.com"
              },
              "Action": "sts:AssumeRole"
          }
      ]
      }
      EOF
      ```

   1. Crea un ruolo IAM.

      ```
      # Create the role using existing trust policy
      aws iam create-role \
      --role-name $JUMPSTART_GATED_ROLE_NAME \
      --assume-role-policy-document file:///tmp/trust-policy.json
      
      aws iam attach-role-policy \
      --role-name $JUMPSTART_GATED_ROLE_NAME \
      --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerHyperPodGatedModelAccess
      ```

      ```
      JUMPSTART_GATED_ROLE_ARN_LIST= !aws iam get-role --role-name=$JUMPSTART_GATED_ROLE_NAME --query "Role.Arn" --output text
      JUMPSTART_GATED_ROLE_ARN = JUMPSTART_GATED_ROLE_ARN_LIST[0]
      !echo $JUMPSTART_GATED_ROLE_ARN
      ```

### Installa i componenti aggiuntivi EKS di dipendenza
<a name="sagemaker-hyperpod-model-deployment-setup-install-dependencies"></a>

Prima di installare l'operatore di inferenza, è necessario installare i seguenti componenti aggiuntivi EKS richiesti sul cluster. L'operatore di inferenza non verrà installato se manca una di queste dipendenze. Ogni componente aggiuntivo ha un requisito minimo di versione per la compatibilità con il componente aggiuntivo Inference.

**Importante**  
Installa tutti i componenti aggiuntivi di dipendenza prima di tentare di installare l'operatore di inferenza. Le dipendenze mancanti causeranno errori di installazione con messaggi di errore specifici.

#### Componenti aggiuntivi richiesti
<a name="sagemaker-hyperpod-model-deployment-setup-required-addons"></a>

1. **Driver CSI Amazon S3 Mountpoint** (versione minima: v1.14.1-eksbuild.1)

   Necessario per montare i bucket S3 come volumi persistenti nei carichi di lavoro di inferenza.

   ```
   aws eks create-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name aws-mountpoint-s3-csi-driver \
       --region $REGION \
       --service-account-role-arn $S3_CSI_ROLE_ARN
   ```

   Per istruzioni di installazione dettagliate, incluse le autorizzazioni IAM richieste, consulta il driver CSI [Mountpoint for Amazon S3](https://docs.aws.amazon.com/eks/latest/userguide/workloads-add-ons-available-eks.html#mountpoint-for-s3-add-on).

1. **Amazon FSx CSI Driver** (versione minima: v1.6.0-eksbuild.1)

   Necessario per il montaggio di file system per lo storage di modelli ad alte prestazioni. FSx 

   ```
   aws eks create-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name aws-fsx-csi-driver \
       --region $REGION \
       --service-account-role-arn $FSX_CSI_ROLE_ARN
   ```

   Per istruzioni di installazione dettagliate, incluse le autorizzazioni IAM richieste, consulta il driver [CSI di Amazon FSx for Lustre](https://docs.aws.amazon.com/eks/latest/userguide/workloads-add-ons-available-eks.html#add-ons-aws-fsx-csi-driver).

1. **Metrics Server** (versione minima: v0.7.2-eksbuild.4)

   Necessario per la funzionalità di scalabilità automatica e la raccolta delle metriche delle risorse.

   ```
   aws eks create-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name metrics-server \
       --region $REGION
   ```

   [Per istruzioni dettagliate sull'installazione, consulta Metrics Server.](https://docs.aws.amazon.com/eks/latest/userguide/metrics-server.html)

1. **Cert Manager** (versione minima: v1.18.2-eksbuild.2)

   Necessario per la gestione dei certificati TLS per endpoint di inferenza sicuri.

   ```
   aws eks create-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name cert-manager \
       --region $REGION
   ```

   [Per istruzioni dettagliate sull'installazione, consulta cert-manager.](https://docs.aws.amazon.com/eks/latest/userguide/community-addons.html#addon-cert-manager)

#### Verifica l'installazione del componente aggiuntivo
<a name="sagemaker-hyperpod-model-deployment-setup-verify-dependencies"></a>

Dopo aver installato i componenti aggiuntivi richiesti, verifica che funzionino correttamente:

```
# Check add-on status
aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION
aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION
aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name metrics-server --region $REGION
aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION

# Verify pods are running
kubectl get pods -n kube-system | grep -E "(mountpoint|fsx|metrics-server)"
kubectl get pods -n cert-manager
```

Tutti i componenti aggiuntivi devono mostrare lo stato «ATTIVO» e tutti i pod devono essere in stato «In esecuzione» prima di procedere con l'installazione dell'operatore di inferenza.

**Nota**  
Se hai creato il HyperPod cluster utilizzando le opzioni di configurazione rapida o di configurazione personalizzata, è possibile che FSx CSI Driver e Cert Manager siano già installati. Verifica la loro presenza utilizzando i comandi precedenti.

### Installazione del componente aggiuntivo Inference Operator with EKS
<a name="sagemaker-hyperpod-model-deployment-setup-install-inference-operator-addon"></a>

Il metodo di installazione del componente aggiuntivo EKS offre un'esperienza gestita con aggiornamenti automatici e convalida delle dipendenze integrata. Questo è l'approccio consigliato per l'installazione dell'operatore di inferenza.

**Installa il componente aggiuntivo Inference Operator**

1. Prepara la configurazione del componente aggiuntivo raccogliendo tutto il necessario ARNs e creando il file di configurazione:

   ```
   # Gather required ARNs
   export EXECUTION_ROLE_ARN=$(aws iam get-role --role-name $HYPERPOD_INFERENCE_ROLE_NAME --query "Role.Arn" --output text)
   export HYPERPOD_CLUSTER_ARN=$(aws sagemaker describe-cluster --cluster-name $HYPERPOD_CLUSTER_NAME --region $REGION --query "ClusterArn" --output text)
   export KEDA_ROLE_ARN=$(aws iam get-role --role-name keda-operator-role --query 'Role.Arn' --output text)
   export ALB_ROLE_ARN=$(aws iam get-role --role-name alb-role --query 'Role.Arn' --output text)
   
   # Verify all ARNs are set correctly
   echo "Execution Role ARN: $EXECUTION_ROLE_ARN"
   echo "HyperPod Cluster ARN: $HYPERPOD_CLUSTER_ARN"
   echo "KEDA Role ARN: $KEDA_ROLE_ARN"
   echo "ALB Role ARN: $ALB_ROLE_ARN"
   echo "TLS S3 Bucket: $BUCKET_NAME"
   ```

1. Crea il file di configurazione del componente aggiuntivo con tutte le impostazioni richieste:

   ```
   cat > addon-config.json << EOF
   {
     "executionRoleArn": "$EXECUTION_ROLE_ARN",
     "tlsCertificateS3Bucket": "$BUCKET_NAME",
     "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN",
     "jumpstartGatedModelDownloadRoleArn": "$JUMPSTART_GATED_ROLE_ARN",
     "alb": {
       "serviceAccount": {
         "create": true,
         "roleArn": "$ALB_ROLE_ARN"
       }
     },
     "keda": {
       "auth": {
         "aws": {
           "irsa": {
             "roleArn": "$KEDA_ROLE_ARN"
           }
         }
       }
     }
   }
   EOF
   
   # Verify the configuration file
   cat addon-config.json
   ```

1. Installa il componente aggiuntivo dell'operatore di inferenza (versione minima: v1.0.0-eksbuild.1):

   ```
   aws eks create-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --configuration-values file://addon-config.json \
       --region $REGION
   ```

1. Monitora lo stato di avanzamento dell'installazione e verifica il corretto completamento:

   ```
   # Check installation status (repeat until status shows "ACTIVE")
   aws eks describe-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --region $REGION \
       --query "addon.{Status:status,Health:health}" \
       --output table
   
   # Verify pods are running
   kubectl get pods -n hyperpod-inference-system
   
   # Check operator logs for any issues
   kubectl logs -n hyperpod-inference-system deployment/hyperpod-inference-controller-manager --tail=50
   ```

Per la risoluzione dettagliata dei problemi di installazione, vedere[HyperPod risoluzione dei problemi di inferenza](sagemaker-hyperpod-model-deployment-ts.md).

Per verificare che l'operatore di inferenza funzioni correttamente, continuate con[Verifica del funzionamento dell’operatore di inferenza](#sagemaker-hyperpod-model-deployment-setup-verify).

### Utilizzo dei CloudFormation modelli per creare lo stack dei prerequisiti
<a name="sagemaker-hyperpod-model-deployment-setup-cfn"></a>

In alternativa alla configurazione manuale dei prerequisiti, puoi utilizzare i CloudFormation modelli per automatizzare la creazione dei ruoli e delle policy IAM richiesti per l'operatore di inferenza.

1. Imposta le variabili di input. Sostituisci i valori segnaposto con i tuoi:

   ```
   #!/bin/bash
   set -e
   
   # ===== INPUT VARIABLES =====
   HP_CLUSTER_NAME="my-hyperpod-cluster"  # Replace with your HyperPod cluster name
   REGION="us-east-1"  # Replace with your AWS region
   PREFIX="my-prefix"  # Replace with your resource prefix
   SHORT_PREFIX="12a34d56"  # Replace with your short prefix (maximum 8 characters)
   CREATE_DOMAIN="true"  # Set to "false" if you don't need a SageMaker Studio domain
   STACK_NAME="hyperpod-inference-prerequisites"  # Replace with your stack name
   TEMPLATE_URL="https://aws-sagemaker-hyperpod-cluster-setup-${REGION}-prod.s3.${REGION}.amazonaws.com/templates/main-stack-inference-operator-addon-template.yaml"
   ```

1. Ricava informazioni su cluster e rete:

   ```
   # ===== DERIVE EKS CLUSTER NAME =====
   EKS_CLUSTER_NAME=$(aws sagemaker describe-cluster --cluster-name $HP_CLUSTER_NAME --region $REGION --query 'Orchestrator.Eks.ClusterArn' --output text | awk -F'/' '{print $NF}')
   echo "EKS_CLUSTER_NAME=$EKS_CLUSTER_NAME"
   
   # ===== GET VPC AND OIDC =====
   VPC_ID=$(aws eks describe-cluster --name $EKS_CLUSTER_NAME --region $REGION --query 'cluster.resourcesVpcConfig.vpcId' --output text)
   echo "VPC_ID=$VPC_ID"
   
   OIDC_PROVIDER=$(aws eks describe-cluster --name $EKS_CLUSTER_NAME --region $REGION --query 'cluster.identity.oidc.issuer' --output text | sed 's|https://||')
   echo "OIDC_PROVIDER=$OIDC_PROVIDER"
   
   # ===== GET PRIVATE ROUTE TABLES =====
   ALL_ROUTE_TABLES=$(aws ec2 describe-route-tables --region $REGION --filters "Name=vpc-id,Values=$VPC_ID" --query 'RouteTables[].RouteTableId' --output text)
   EKS_PRIVATE_ROUTE_TABLES=""
   for rtb in $ALL_ROUTE_TABLES; do
       HAS_IGW=$(aws ec2 describe-route-tables --region $REGION --route-table-ids $rtb --query 'RouteTables[0].Routes[?GatewayId && starts_with(GatewayId, `igw-`)]' --output text 2>/dev/null)
       if [ -z "$HAS_IGW" ]; then
           EKS_PRIVATE_ROUTE_TABLES="${EKS_PRIVATE_ROUTE_TABLES:+$EKS_PRIVATE_ROUTE_TABLES,}$rtb"
       fi
   done
   echo "EKS_PRIVATE_ROUTE_TABLES=$EKS_PRIVATE_ROUTE_TABLES"
   
   # ===== CHECK S3 VPC ENDPOINT =====
   S3_ENDPOINT_EXISTS=$(aws ec2 describe-vpc-endpoints --region $REGION --filters "Name=vpc-id,Values=$VPC_ID" "Name=service-name,Values=com.amazonaws.$REGION.s3" --query 'VpcEndpoints[0].VpcEndpointId' --output text)
   CREATE_S3_ENDPOINT_STACK=$([ "$S3_ENDPOINT_EXISTS" == "None" ] && echo "true" || echo "false")
   echo "CREATE_S3_ENDPOINT_STACK=$CREATE_S3_ENDPOINT_STACK"
   
   # ===== GET HYPERPOD DETAILS =====
   HYPERPOD_CLUSTER_ARN=$(aws sagemaker describe-cluster --cluster-name $HP_CLUSTER_NAME --region $REGION --query 'ClusterArn' --output text)
   echo "HYPERPOD_CLUSTER_ARN=$HYPERPOD_CLUSTER_ARN"
   
   # ===== GET DEFAULT VPC FOR DOMAIN =====
   DOMAIN_VPC_ID=$(aws ec2 describe-vpcs --region $REGION --filters "Name=isDefault,Values=true" --query 'Vpcs[0].VpcId' --output text)
   echo "DOMAIN_VPC_ID=$DOMAIN_VPC_ID"
   
   DOMAIN_SUBNET_IDS=$(aws ec2 describe-subnets --region $REGION --filters "Name=vpc-id,Values=$DOMAIN_VPC_ID" --query 'Subnets[0].SubnetId' --output text)
   echo "DOMAIN_SUBNET_IDS=$DOMAIN_SUBNET_IDS"
   
   # ===== GET INSTANCE GROUPS =====
   INSTANCE_GROUPS=$(aws sagemaker describe-cluster --cluster-name $HP_CLUSTER_NAME --region $REGION --query 'InstanceGroups[].InstanceGroupName' --output json | python3 -c "import sys, json; groups = json.load(sys.stdin); print('[' + ','.join([f'\\\\\\\"' + g + '\\\\\\\"' for g in groups]) + ']')")
   echo "INSTANCE_GROUPS=$INSTANCE_GROUPS"
   ```

1. Crea un file di parametri e distribuisci lo stack:

   ```
   # ===== CREATE PARAMETERS JSON =====
   cat > /tmp/cfn-params.json << EOF
   [
     {"ParameterKey":"ResourceNamePrefix","ParameterValue":"$PREFIX"},
     {"ParameterKey":"ResourceNameShortPrefix","ParameterValue":"$SHORT_PREFIX"},
     {"ParameterKey":"VpcId","ParameterValue":"$VPC_ID"},
     {"ParameterKey":"EksPrivateRouteTableIds","ParameterValue":"$EKS_PRIVATE_ROUTE_TABLES"},
     {"ParameterKey":"EKSClusterName","ParameterValue":"$EKS_CLUSTER_NAME"},
     {"ParameterKey":"OIDCProviderURLWithoutProtocol","ParameterValue":"$OIDC_PROVIDER"},
     {"ParameterKey":"HyperPodClusterArn","ParameterValue":"$HYPERPOD_CLUSTER_ARN"},
     {"ParameterKey":"HyperPodClusterName","ParameterValue":"$HP_CLUSTER_NAME"},
     {"ParameterKey":"CreateDomain","ParameterValue":"$CREATE_DOMAIN"},
     {"ParameterKey":"DomainVpcId","ParameterValue":"$DOMAIN_VPC_ID"},
     {"ParameterKey":"DomainSubnetIds","ParameterValue":"$DOMAIN_SUBNET_IDS"},
     {"ParameterKey":"CreateS3EndpointStack","ParameterValue":"$CREATE_S3_ENDPOINT_STACK"},
     {"ParameterKey":"TieredStorageConfig","ParameterValue":"{\"Mode\":\"Enable\",\"InstanceMemoryAllocationPercentage\":20}"},
     {"ParameterKey":"TieredKVCacheConfig","ParameterValue":"{\"KVCacheMode\":\"Enable\",\"InstanceGroup\":$INSTANCE_GROUPS,\"NVMeMode\":\"Enable\"}"}
   ]
   EOF
   
   echo -e "\n===== CREATING CLOUDFORMATION STACK ====="
   aws cloudformation create-stack \
       --region $REGION \
       --stack-name $STACK_NAME \
       --template-url $TEMPLATE_URL \
       --parameters file:///tmp/cfn-params.json \
       --capabilities CAPABILITY_NAMED_IAM
   ```

1. Monitora lo stato di creazione dello stack:

   ```
   aws cloudformation describe-stacks \
       --stack-name $STACK_NAME \
       --region $REGION \
       --query 'Stacks[0].StackStatus'
   ```

1. Una volta creato correttamente lo stack, recupera i valori di output da utilizzare nell'installazione dell'operatore di inferenza:

   ```
   aws cloudformation describe-stacks \
       --stack-name $STACK_NAME \
       --region $REGION \
       --query 'Stacks[0].Outputs'
   ```

Dopo aver creato lo CloudFormation stack, continuate con l'installazione dell'operatore [Installazione del componente aggiuntivo Inference Operator with EKS](#sagemaker-hyperpod-model-deployment-setup-install-inference-operator-addon) di inferenza.

## Metodo 3: installazione di Helm chart
<a name="sagemaker-hyperpod-model-deployment-setup-helm"></a>

**Nota**  
Per un'esperienza di installazione più semplice, si consiglia di utilizzare [Metodo 1: installa il componente aggiuntivo HyperPod Inference tramite la console SageMaker AI (consigliato)](#sagemaker-hyperpod-model-deployment-setup-ui) o[Metodo 2: installazione dell'operatore di inferenza utilizzando la CLI AWS](#sagemaker-hyperpod-model-deployment-setup-addon). L'installazione di Helm chart potrebbe essere obsoleta in una versione futura.

### Prerequisiti
<a name="sagemaker-hyperpod-model-deployment-setup-prereq"></a>

Prima di procedere, verifica che AWS le tue credenziali siano configurate correttamente e dispongano delle autorizzazioni necessarie. I seguenti passaggi devono essere eseguiti da un responsabile IAM con privilegi di amministratore e accesso di amministratore del cluster a un cluster Amazon EKS. Verifica di aver creato un HyperPod cluster con[Creazione di un SageMaker HyperPod cluster con l'orchestrazione di Amazon EKS](sagemaker-hyperpod-eks-operate-console-ui-create-cluster.md). Verifica di aver installato le utilità a riga di comando helm, eksctl e kubectl. 

Per l'accesso amministrativo di Kubernetes al cluster Amazon EKS, vai alla console Amazon EKS e seleziona il cluster che stai utilizzando. Seleziona Voci di accesso IAM nella scheda **Accesso**. Se la voce per il tuo principale IAM non è presente, seleziona **Crea voce di accesso**. Quindi seleziona il principale IAM desiderato e associalo a `AmazonEKSClusterAdminPolicy`.

1. Configura kubectl per connetterti al cluster appena creato orchestrato dal HyperPod cluster Amazon EKS. Specificare la regione e il nome del cluster. HyperPod 

   ```
   export HYPERPOD_CLUSTER_NAME=<hyperpod-cluster-name>
   export REGION=<region>
   
   # S3 bucket where tls certificates will be uploaded
   BUCKET_NAME="<Enter name of your s3 bucket>" # This should be bucket name, not URI
   
   export EKS_CLUSTER_NAME=$(aws --region $REGION sagemaker describe-cluster --cluster-name $HYPERPOD_CLUSTER_NAME \
   --query 'Orchestrator.Eks.ClusterArn' --output text | \
   cut -d'/' -f2)
   aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region $REGION
   ```

1. Imposta le variabili env predefinite.

   ```
   LB_CONTROLLER_POLICY_NAME="AWSLoadBalancerControllerIAMPolicy-$HYPERPOD_CLUSTER_NAME"
   LB_CONTROLLER_ROLE_NAME="aws-load-balancer-controller-$HYPERPOD_CLUSTER_NAME"
   S3_MOUNT_ACCESS_POLICY_NAME="S3MountpointAccessPolicy-$HYPERPOD_CLUSTER_NAME"
   S3_CSI_ROLE_NAME="SM_HP_S3_CSI_ROLE-$HYPERPOD_CLUSTER_NAME"
   KEDA_OPERATOR_POLICY_NAME="KedaOperatorPolicy-$HYPERPOD_CLUSTER_NAME"
   KEDA_OPERATOR_ROLE_NAME="keda-operator-role-$HYPERPOD_CLUSTER_NAME"
   HYPERPOD_INFERENCE_ROLE_NAME="HyperpodInferenceRole-$HYPERPOD_CLUSTER_NAME"
   HYPERPOD_INFERENCE_SA_NAME="hyperpod-inference-operator-controller"
   HYPERPOD_INFERENCE_SA_NAMESPACE="hyperpod-inference-system"
   JUMPSTART_GATED_ROLE_NAME="JumpstartGatedRole-$HYPERPOD_CLUSTER_NAME"
   FSX_CSI_ROLE_NAME="AmazonEKSFSxLustreCSIDriverFullAccess-$HYPERPOD_CLUSTER_NAME"
   ```

1. Estrai il nome del cluster Amazon EKS dall’ARN del cluster, aggiorna il file kubeconfig locale e verifica la connettività elencando tutti i pod nei namespace.

   ```
   kubectl get pods --all-namespaces
   ```

1. (Facoltativo) Installa il plugin del dispositivo NVIDIA per abilitare il supporto della GPU sul cluster.

   ```
   #Install nvidia device plugin
   kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.5/nvidia-device-plugin.yml
   # Verify that GPUs are visible to k8s
   kubectl get nodes -o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia.com/gpu
   ```

### Preparazione dell’ambiente per l’installazione dell’operatore di inferenza
<a name="sagemaker-hyperpod-model-deployment-setup-prepare"></a>

1. Raccogli gli identificatori AWS delle risorse essenziali e ARNs necessari per configurare le integrazioni di servizi tra i componenti Amazon EKS, SageMaker AI e IAM.

   ```
   %%bash -x
   
   export ACCOUNT_ID=$(aws --region $REGION sts get-caller-identity --query 'Account' --output text)
   export OIDC_ID=$(aws --region $REGION eks describe-cluster --name $EKS_CLUSTER_NAME --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
   export EKS_CLUSTER_ROLE=$(aws eks --region $REGION describe-cluster --name $EKS_CLUSTER_NAME --query 'cluster.roleArn' --output text)
   ```

1. Associa un OIDCidentity provider IAM al tuo cluster EKS.

   ```
   eksctl utils associate-iam-oidc-provider --region=$REGION --cluster=$EKS_CLUSTER_NAME --approve
   ```

1. Crea la policy di fiducia richiesta per il ruolo IAM dell'operatore di HyperPod inferenza. Questa policy consente una comunicazione sicura tra diversi servizi tra Amazon EKS, SageMaker AI e altri AWS servizi.

   ```
   %%bash -x
   
   # Create trust policy JSON
   cat << EOF > trust-policy.json
   {
   "Version": "2012-10-17",		 	 	 
   "Statement": [
   {
       "Effect": "Allow",
       "Principal": {
           "Service": [
               "sagemaker.amazonaws.com"
           ]
       },
       "Action": "sts:AssumeRole"
   },
   {
       "Effect": "Allow",
       "Principal": {
           "Federated": "arn:aws:iam::${ACCOUNT_ID}:oidc-provider/oidc.eks.${REGION}.amazonaws.com/id/${OIDC_ID}"
       },
       "Action": "sts:AssumeRoleWithWebIdentity",
       "Condition": {
           "StringLike": {
               "oidc.eks.${REGION}.amazonaws.com/id/${OIDC_ID}:aud": "sts.amazonaws.com",
               "oidc.eks.${REGION}.amazonaws.com/id/${OIDC_ID}:sub": "system:serviceaccount:hyperpod-inference-system:hyperpod-inference-controller-manager"
           }
       }
   }
   ]
   }
   EOF
   ```

1. Crea il ruolo di esecuzione per l'operatore di inferenza e allega la policy gestita.

   ```
   aws iam create-role --role-name $HYPERPOD_INFERENCE_ROLE_NAME --assume-role-policy-document file://trust-policy.json
   aws iam attach-role-policy --role-name $HYPERPOD_INFERENCE_ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerHyperPodInferenceAccess
   ```

1. Scarica e crea la policy IAM richiesta al AWS Load Balancer Controller per gestire Application Load Balancer e Network Load Balancer nel tuo cluster EKS.

   ```
   %%bash -x 
   
   export ALBController_IAM_POLICY_NAME=HyperPodInferenceALBControllerIAMPolicy
   
   curl -o AWSLoadBalancerControllerIAMPolicy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.13.0/docs/install/iam_policy.json
   aws iam create-policy --policy-name $ALBController_IAM_POLICY_NAME --policy-document file://AWSLoadBalancerControllerIAMPolicy.json
   ```

1. Crea un account di servizio IAM che colleghi l'account del servizio Kubernetes alla policy IAM, permettendo al Load AWS Balancer Controller di assumere le AWS autorizzazioni necessarie tramite IRSA (IAM Roles for Service Accounts).

   ```
   %%bash -x 
   
   export ALB_POLICY_ARN="arn:aws:iam::$ACCOUNT_ID:policy/$ALBController_IAM_POLICY_NAME"
   
   # Create IAM service account with gathered values
   eksctl create iamserviceaccount \
   --approve \
   --override-existing-serviceaccounts \
   --name=aws-load-balancer-controller \
   --namespace=kube-system \
   --cluster=$EKS_CLUSTER_NAME \
   --attach-policy-arn=$ALB_POLICY_ARN \
   --region=$REGION
   
   # Print the values for verification
   echo "Cluster Name: $EKS_CLUSTER_NAME"
   echo "Region: $REGION"
   echo "Policy ARN: $ALB_POLICY_ARN"
   ```

1. Applica i tag (`kubernetes.io.role/elb`) a tutte le sottoreti del cluster Amazon EKS (sia pubbliche che private).

   ```
   export VPC_ID=$(aws --region $REGION eks describe-cluster --name $EKS_CLUSTER_NAME --query 'cluster.resourcesVpcConfig.vpcId' --output text)
   
   # Add Tags
   aws ec2 describe-subnets \
   --filters "Name=vpc-id,Values=${VPC_ID}" "Name=map-public-ip-on-launch,Values=true" \
   --query 'Subnets[*].SubnetId' --output text | \
   tr '\t' '\n' | \
   xargs -I{} aws ec2 create-tags --resources {} --tags Key=kubernetes.io/role/elb,Value=1
   
   # Verify Tags are added
   aws ec2 describe-subnets \
   --filters "Name=vpc-id,Values=${VPC_ID}" "Name=map-public-ip-on-launch,Values=true" \
   --query 'Subnets[*].SubnetId' --output text | \
   tr '\t' '\n' |
   xargs -n1 -I{} aws ec2 describe-tags --filters "Name=resource-id,Values={}" "Name=key,Values=kubernetes.io/role/elb" --query "Tags[0].Value" --output text
   ```

1. Crea un namespace per KEDA e Gestione certificati.

   ```
   kubectl create namespace keda
   kubectl create namespace cert-manager
   ```

1. Creare un endpoint VPC Amazon S3.

   ```
   aws ec2 create-vpc-endpoint \
   --vpc-id ${VPC_ID} \
   --vpc-endpoint-type Gateway \
   --service-name "com.amazonaws.${REGION}.s3" \
   --route-table-ids $(aws ec2 describe-route-tables --filters "Name=vpc-id,Values=${VPC_ID}" --query 'RouteTables[].Associations[].RouteTableId' --output text | tr ' ' '\n' | sort -u | tr '\n' ' ')
   ```

1. Configura l’accesso all’archiviazione S3:

   1. Crea una policy IAM che conceda le autorizzazioni S3 necessarie per l’utilizzo di Mountpoint per Amazon S3 e che consenta l’accesso del file system ai bucket S3 dall’interno del cluster.

      ```
      %%bash -x
      
      export S3_CSI_BUCKET_NAME=“<bucketname_for_mounting_through_filesystem>”
      
      cat <<EOF> s3accesspolicy.json
      {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          
          {
              "Sid": "MountpointAccess",
              "Effect": "Allow",
              "Action": [
                  "s3:ListBucket",
                  "s3:GetObject",
                  "s3:PutObject",
                  "s3:AbortMultipartUpload",
                  "s3:DeleteObject"
              ],
              "Resource": [
                      "arn:aws:s3:::${S3_CSI_BUCKET_NAME}",
                      "arn:aws:s3:::${S3_CSI_BUCKET_NAME}/*"
              ]
          }
      ]
      }
      EOF
      
      aws iam create-policy \
      --policy-name S3MountpointAccessPolicy \
      --policy-document file://s3accesspolicy.json
      
      cat <<EOF> s3accesstrustpolicy.json
      {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Federated": "arn:aws:iam::$ACCOUNT_ID:oidc-provider/oidc.eks.$REGION.amazonaws.com/id/${OIDC_ID}"
              },
              "Action": "sts:AssumeRoleWithWebIdentity",
              "Condition": {
                  "StringEquals": {
                      "oidc.eks.$REGION.amazonaws.com/id/${OIDC_ID}:aud": "sts.amazonaws.com",
                      "oidc.eks.$REGION.amazonaws.com/id/${OIDC_ID}:sub": "system:serviceaccount:kube-system:${s3-csi-driver-sa}"
                  }
              }
          }
      ]
      }
      EOF
      
      aws iam create-role --role-name $S3_CSI_ROLE_NAME --assume-role-policy-document file://s3accesstrustpolicy.json
      
      aws iam attach-role-policy --role-name $S3_CSI_ROLE_NAME --policy-arn "arn:aws:iam::$ACCOUNT_ID:policy/S3MountpointAccessPolicy"
      ```

   1. (Facoltativo) Crea un account di servizio IAM per il driver CSI di Amazon S3. Il driver Amazon S3 CSI richiede un account di servizio IAM con le autorizzazioni appropriate per montare i bucket S3 come volumi persistenti nel cluster Amazon EKS. Questa fase crea il ruolo IAM e l’account di servizio Kubernetes necessari con la policy di accesso S3 richiesta.

      ```
      %%bash -x 
      
      export S3_CSI_ROLE_NAME="SM_HP_S3_CSI_ROLE-$REGION"
      export S3_CSI_POLICY_ARN=$(aws iam list-policies --query 'Policies[?PolicyName==`S3MountpointAccessPolicy`]' | jq '.[0].Arn' |  tr -d '"')
      
      eksctl create iamserviceaccount \
      --name s3-csi-driver-sa \
      --namespace kube-system \
      --cluster $EKS_CLUSTER_NAME \
      --attach-policy-arn $S3_CSI_POLICY_ARN \
      --approve \
      --role-name $S3_CSI_ROLE_NAME \
      --region $REGION 
      
      kubectl label serviceaccount s3-csi-driver-sa app.kubernetes.io/component=csi-driver app.kubernetes.io/instance=aws-mountpoint-s3-csi-driver app.kubernetes.io/managed-by=EKS app.kubernetes.io/name=aws-mountpoint-s3-csi-driver -n kube-system --overwrite
      ```

   1. (Facoltativo) Installa il componente aggiuntivo del driver CSI di Amazon S3. Questo driver consente ai pod di montare i bucket S3 come volumi persistenti, fornendo un accesso diretto all’archiviazione S3 dall’interno dei carichi di lavoro Kubernetes.

      ```
      %%bash -x
      
      export S3_CSI_ROLE_ARN=$(aws iam get-role --role-name $S3_CSI_ROLE_NAME  --query 'Role.Arn' --output text)
      eksctl create addon --name aws-mountpoint-s3-csi-driver --cluster $EKS_CLUSTER_NAME --service-account-role-arn $S3_CSI_ROLE_ARN --force
      ```

   1. (Facoltativo) Crea una richiesta di volumi persistenti (PVC) per l’archiviazione S3. Questo PVC consente ai pod di richiedere e utilizzare l’archiviazione S3 con le stesse modalità di un file system tradizionale.

      ```
      %%bash -x 
      
      cat <<EOF> pvc_s3.yaml
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
      name: s3-claim
      spec:
      accessModes:
      - ReadWriteMany # supported options: ReadWriteMany / ReadOnlyMany
      storageClassName: "" # required for static provisioning
      resources:
      requests:
          storage: 1200Gi # ignored, required
      volumeName: s3-pv
      EOF
      
      kubectl apply -f pvc_s3.yaml
      ```

1. (Facoltativo) Configura l'accesso allo storage. FSx Crea un account di servizio IAM per il driver Amazon FSx CSI. Questo account di servizio verrà utilizzato dal driver FSx CSI per interagire con il FSx servizio Amazon per conto del tuo cluster.

   ```
   %%bash -x 
   
   
   eksctl create iamserviceaccount \
   --name fsx-csi-controller-sa \
   --namespace kube-system \
   --cluster $EKS_CLUSTER_NAME \
   --attach-policy-arn arn:aws:iam::aws:policy/AmazonFSxFullAccess \
   --approve \
   --role-name FSXLCSI-${EKS_CLUSTER_NAME}-${REGION} \
   --region $REGION
   ```

### Creazione del ruolo di operatore KEDA
<a name="sagemaker-hyperpod-model-deployment-setup-keda"></a>

1. Crea la policy di attendibilità e la policy di autorizzazione.

   ```
   # Create trust policy
   cat <<EOF > /tmp/keda-trust-policy.json
   {
   "Version": "2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Principal": {
               "Federated": "arn:aws:iam::$ACCOUNT_ID:oidc-provider/oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
               "StringLike": {
                   "oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID:sub": "system:serviceaccount:kube-system:keda-operator",
                   "oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID:aud": "sts.amazonaws.com"
               }
           }
       }
   ]
   }
   EOF
   # Create permissions policy
   cat <<EOF > /tmp/keda-policy.json
   {
   "Version": "2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "cloudwatch:GetMetricData",
               "cloudwatch:GetMetricStatistics",
               "cloudwatch:ListMetrics"
           ],
           "Resource": "*"
       },
       {
           "Effect": "Allow",
           "Action": [
               "aps:QueryMetrics",
               "aps:GetLabels",
               "aps:GetSeries",
               "aps:GetMetricMetadata"
           ],
           "Resource": "*"
       }
   ]
   }
   EOF
   # Create the role
   aws iam create-role \
   --role-name keda-operator-role \
   --assume-role-policy-document file:///tmp/keda-trust-policy.json
   # Create the policy
   KEDA_POLICY_ARN=$(aws iam create-policy \
   --policy-name KedaOperatorPolicy \
   --policy-document file:///tmp/keda-policy.json \
   --query 'Policy.Arn' \
   --output text)
   # Attach the policy to the role
   aws iam attach-role-policy \
   --role-name keda-operator-role \
   --policy-arn $KEDA_POLICY_ARN
   ```

1. Se utilizzi modelli gated, crea un ruolo IAM per accedervi.

   1. Crea la policy di fiducia e il ruolo IAM per l'accesso controllato ai modelli.

      ```
      %%bash -s $REGION
      
      JUMPSTART_GATED_ROLE_NAME="JumpstartGatedRole-${REGION}-${HYPERPOD_CLUSTER_NAME}"
      
      cat <<EOF > /tmp/trust-policy.json
      {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Federated": "arn:aws:iam::$ACCOUNT_ID:oidc-provider/oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID"
              },
              "Action": "sts:AssumeRoleWithWebIdentity",
              "Condition": {
                  "StringLike": {
                      "oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID:sub": "system:serviceaccount:*:hyperpod-inference-service-account*",
                      "oidc.eks.$REGION.amazonaws.com/id/$OIDC_ID:aud": "sts.amazonaws.com"
                  }
              }
          },
              {
              "Effect": "Allow",
              "Principal": {
                  "Service": "sagemaker.amazonaws.com"
              },
              "Action": "sts:AssumeRole"
          }
      ]
      }
      EOF
      
      # Create the role and attach the managed policy
      aws iam create-role \
      --role-name $JUMPSTART_GATED_ROLE_NAME \
      --assume-role-policy-document file:///tmp/trust-policy.json
      
      aws iam attach-role-policy \
      --role-name $JUMPSTART_GATED_ROLE_NAME \
      --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerHyperPodGatedModelAccess
      ```

      ```
      JUMPSTART_GATED_ROLE_ARN_LIST= !aws iam get-role --role-name=$JUMPSTART_GATED_ROLE_NAME --query "Role.Arn" --output text
      JUMPSTART_GATED_ROLE_ARN = JUMPSTART_GATED_ROLE_ARN_LIST[0]
      !echo $JUMPSTART_GATED_ROLE_ARN
      ```

### Installazione dell’operatore di inferenza
<a name="sagemaker-hyperpod-model-deployment-setup-install"></a>

1. Installa l'operatore di HyperPod inferenza. Questa fase raccoglie gli identificatori delle risorse AWS richiesti e genera il comando di installazione Helm con i parametri di configurazione appropriati.

   Accedi al grafico di timone da [https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart)\$1chart.

   ```
   git clone https://github.com/aws/sagemaker-hyperpod-cli
   cd sagemaker-hyperpod-cli
   cd helm_chart/HyperPodHelmChart
   helm dependencies update charts/inference-operator
   ```

   ```
   %%bash -x
   
   HYPERPOD_INFERENCE_ROLE_ARN=$(aws iam get-role --role-name=$HYPERPOD_INFERENCE_ROLE_NAME --query "Role.Arn" --output text)
   echo $HYPERPOD_INFERENCE_ROLE_ARN
   
   S3_CSI_ROLE_ARN=$(aws iam get-role --role-name=$S3_CSI_ROLE_NAME --query "Role.Arn" --output text)
   echo $S3_CSI_ROLE_ARN
   
   HYPERPOD_CLUSTER_ARN=$(aws sagemaker describe-cluster --cluster-name $HYPERPOD_CLUSTER_NAME --query "ClusterArn")
   
   # Verify values
   echo "Cluster Name: $EKS_CLUSTER_NAME"
   echo "Execution Role: $HYPERPOD_INFERENCE_ROLE_ARN"
   echo "Hyperpod ARN: $HYPERPOD_CLUSTER_ARN"
   # Run the the HyperPod inference operator installation. 
   
   helm install hyperpod-inference-operator charts/inference-operator \
   -n kube-system \
   --set region=$REGION \
   --set eksClusterName=$EKS_CLUSTER_NAME \
   --set hyperpodClusterArn=$HYPERPOD_CLUSTER_ARN \
   --set executionRoleArn=$HYPERPOD_INFERENCE_ROLE_ARN \
   --set s3.serviceAccountRoleArn=$S3_CSI_ROLE_ARN \
   --set s3.node.serviceAccount.create=false \
   --set keda.podIdentity.aws.irsa.roleArn="arn:aws:iam::$ACCOUNT_ID:role/keda-operator-role" \
   --set tlsCertificateS3Bucket="s3://$BUCKET_NAME" \
   --set alb.region=$REGION \
   --set alb.clusterName=$EKS_CLUSTER_NAME \
   --set alb.vpcId=$VPC_ID
   
   # For JumpStart Gated Model usage, Add
   # --set jumpstartGatedModelDownloadRoleArn=$UMPSTART_GATED_ROLE_ARN
   ```

1. Configura le annotazioni degli account di servizio per l’integrazione con IAM. Questa annotazione consente all’account di servizio dell’operatore di assumere le autorizzazioni IAM necessarie per gestire gli endpoint di inferenza e interagire con i servizi AWS .

   ```
   %%bash -x 
   
   EKS_CLUSTER_ROLE_NAME=$(echo $EKS_CLUSTER_ROLE | sed 's/.*\///')
   
   # Annotate service account
   kubectl annotate serviceaccount hyperpod-inference-operator-controller-manager \
   -n hyperpod-inference-system \
   eks.amazonaws.com/role-arn=arn:aws:iam::${ACCOUNT_ID}:role/${EKS_CLUSTER_ROLE_NAME} \
   --overwrite
   ```

## Verifica del funzionamento dell’operatore di inferenza
<a name="sagemaker-hyperpod-model-deployment-setup-verify"></a>

Segui questi passaggi per verificare che l'installazione dell'operatore di inferenza funzioni correttamente implementando e testando un modello semplice.

**Implementa un modello di test per verificare l'operatore**

1. Crea un file di configurazione dell’implementazione del modello. Questo crea un file manifest Kubernetes che definisce una distribuzione del JumpStart modello per l'operatore di inferenza. HyperPod

   ```
   cat <<EOF>> simple_model_install.yaml
   ---
   apiVersion: inference.sagemaker.aws.amazon.com/v1
   kind: JumpStartModel
   metadata:
   name: testing-deployment-bert
   namespace: default
   spec:
   model:
   modelId: "huggingface-eqa-bert-base-cased"
   sageMakerEndpoint:
   name: "hp-inf-ep-for-testing"
   server:
   instanceType: "ml.c5.2xlarge"
   environmentVariables:
   - name: SAMPLE_ENV_VAR
       value: "sample_value"
   maxDeployTimeInSeconds: 1800
   EOF
   ```

1. Implementa il modello e pulisci il file di configurazione.

   ```
   kubectl create -f simple_model_install.yaml
   rm -f simple_model_install.yaml
   ```

1. Verifica la configurazione dell'account di servizio per assicurarti che l'operatore possa assumere le autorizzazioni. AWS 

   ```
   # Get the service account details
   kubectl get serviceaccount -n hyperpod-inference-system
   
   # Check if the service account has the AWS annotations
   kubectl describe serviceaccount hyperpod-inference-operator-controller-manager -n hyperpod-inference-system
   ```

**Configura le impostazioni di distribuzione (se utilizzi l'interfaccia utente di Studio)**

1. Controlla il tipo di istanza consigliato in **Impostazioni di distribuzione**.

1. Se modifichi il **tipo di istanza**, verifica la compatibilità con il HyperPod cluster. Contatta l'amministratore se le istanze compatibili non sono disponibili.

1. Per le istanze partizionate da GPU con MIG abilitato, seleziona una **partizione GPU appropriata dai profili MIG disponibili per ottimizzare l'utilizzo della GPU**. Per ulteriori informazioni, consulta [Utilizzo delle partizioni GPU in Amazon SageMaker HyperPod](sagemaker-hyperpod-eks-gpu-partitioning.md).

1. Se utilizzi la governance delle attività, configura le impostazioni di priorità per le funzionalità di priorità della distribuzione dei modelli.

1. Inserisci lo spazio dei nomi fornito dal tuo amministratore. Se necessario, contatta l'amministratore per il namespace corretto.

## (Facoltativo) Configura l'accesso degli utenti tramite l' JumpStart interfaccia utente in SageMaker AI Studio Classic
<a name="sagemaker-hyperpod-model-deployment-setup-optional-js"></a>

Per ulteriori informazioni sulla configurazione dell' SageMaker HyperPod accesso per gli utenti di Studio Classic e sulla configurazione delle autorizzazioni RBAC di Kubernetes dettagliate per gli utenti di data scientist, leggi e. [Configurazione di un cluster Amazon EKS in Studio](sagemaker-hyperpod-studio-setup-eks.md) [Configurazione del controllo degli accessi basato su ruoli Kubernetes](sagemaker-hyperpod-eks-setup-rbac.md)

1. Identifica il ruolo IAM che gli utenti di Data Scientist utilizzeranno per gestire e implementare modelli da AI Studio Classic. SageMaker HyperPod SageMaker Di solito, si tratta del ruolo di esecuzione del profilo utente o del ruolo di esecuzione del dominio per l’utente di Studio Classic.

   ```
   %%bash -x
   
   export DATASCIENTIST_ROLE_NAME="<Execution Role Name used in SageMaker Studio Classic>"
   
   export DATASCIENTIST_POLICY_NAME="HyperPodUIAccessPolicy"
   export EKS_CLUSTER_ARN=$(aws --region $REGION sagemaker describe-cluster --cluster-name $HYPERPOD_CLUSTER_NAME \
     --query 'Orchestrator.Eks.ClusterArn' --output text)
   
   export DATASCIENTIST_HYPERPOD_NAMESPACE="team-namespace"
   ```

1. Collega una policy di identità che abiliti l’accesso all’implementazione del modello.

   ```
   %%bash -x
   
   # Create access policy
   cat << EOF > hyperpod-deployment-ui-access-policy.json
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "DescribeHyerpodClusterPermissions",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:DescribeCluster"
               ],
               "Resource": "$HYPERPOD_CLUSTER_ARN"
           },
           {
               "Sid": "UseEksClusterPermissions",
               "Effect": "Allow",
               "Action": [
                   "eks:DescribeCluster",
                   "eks:AccessKubernetesApi",
                   "eks:MutateViaKubernetesApi",
                   "eks:DescribeAddon"
               ],
               "Resource": "$EKS_CLUSTER_ARN"
           },
           {
               "Sid": "ListPermission",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:ListClusters",
                   "sagemaker:ListEndpoints"
               ],
               "Resource": "*"
           },
           {
               "Sid": "SageMakerEndpointAccess",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:DescribeEndpoint",
                   "sagemaker:InvokeEndpoint"
               ],
               "Resource": "arn:aws:sagemaker:$REGION:$ACCOUNT_ID:endpoint/*"
           }
       ]
   }
   EOF
   
   aws iam put-role-policy --role-name DATASCIENTIST_ROLE_NAME --policy-name HyperPodDeploymentUIAccessInlinePolicy --policy-document file://hyperpod-deployment-ui-access-policy.json
   ```

1. Crea una voce di accesso EKS per l’utente che lo mappa a un gruppo Kubernetes.

   ```
   %%bash -x
   
   aws eks create-access-entry --cluster-name $EKS_CLUSTER_NAME \
       --principal-arn "arn:aws:iam::$ACCOUNT_ID:role/$DATASCIENTIST_ROLE_NAME" \
       --kubernetes-groups '["hyperpod-scientist-user-namespace-level","hyperpod-scientist-user-cluster-level"]'
   ```

1. Crea policy RBAC Kubernetes per l’utente.

   ```
   %%bash -x
   
   cat << EOF > cluster_level_config.yaml
   kind: ClusterRole
   apiVersion: rbac.authorization.k8s.io/v1
   metadata:
     name: hyperpod-scientist-user-cluster-role
   rules:
   - apiGroups: [""]
     resources: ["pods"]
     verbs: ["list"]
   - apiGroups: [""]
     resources: ["nodes"]
     verbs: ["list"]
   - apiGroups: [""]
     resources: ["namespaces"]
     verbs: ["list"]
   ---
   apiVersion: rbac.authorization.k8s.io/v1
   kind: ClusterRoleBinding
   metadata:
     name: hyperpod-scientist-user-cluster-role-binding
   subjects:
   - kind: Group
     name: hyperpod-scientist-user-cluster-level
     apiGroup: rbac.authorization.k8s.io
   roleRef:
     kind: ClusterRole
     name: hyperpod-scientist-user-cluster-role
     apiGroup: rbac.authorization.k8s.io
   EOF
   
   
   kubectl apply -f cluster_level_config.yaml
   
   
   cat << EOF > namespace_level_role.yaml
   kind: Role
   apiVersion: rbac.authorization.k8s.io/v1
   metadata:
     namespace: $DATASCIENTIST_HYPERPOD_NAMESPACE
     name: hyperpod-scientist-user-namespace-level-role
   rules:
   - apiGroups: [""]
     resources: ["pods"]
     verbs: ["create", "get"]
   - apiGroups: [""]
     resources: ["nodes"]
     verbs: ["get", "list"]
   - apiGroups: [""]
     resources: ["pods/log"]
     verbs: ["get", "list"]
   - apiGroups: [""]
     resources: ["pods/exec"]
     verbs: ["get", "create"]
   - apiGroups: ["kubeflow.org"]
     resources: ["pytorchjobs", "pytorchjobs/status"]
     verbs: ["get", "list", "create", "delete", "update", "describe"]
   - apiGroups: [""]
     resources: ["configmaps"]
     verbs: ["create", "update", "get", "list", "delete"]
   - apiGroups: [""]
     resources: ["secrets"]
     verbs: ["create", "get", "list", "delete"]
   - apiGroups: [ "inference.sagemaker.aws.amazon.com" ]
     resources: [ "inferenceendpointconfig", "inferenceendpoint", "jumpstartmodel" ]
     verbs: [ "get", "list", "create", "delete", "update", "describe" ]
   - apiGroups: [ "autoscaling" ]
     resources: [ "horizontalpodautoscalers" ]
     verbs: [ "get", "list", "watch", "create", "update", "patch", "delete" ]
   ---
   apiVersion: rbac.authorization.k8s.io/v1
   kind: RoleBinding
   metadata:
     namespace: $DATASCIENTIST_HYPERPOD_NAMESPACE
     name: hyperpod-scientist-user-namespace-level-role-binding
   subjects:
   - kind: Group
     name: hyperpod-scientist-user-namespace-level
     apiGroup: rbac.authorization.k8s.io
   roleRef:
     kind: Role
     name: hyperpod-scientist-user-namespace-level-role
     apiGroup: rbac.authorization.k8s.io
   EOF
   
   
   kubectl apply -f namespace_level_role.yaml
   ```

# Implementazione di modelli di fondazione e di modelli ottimizzati con fine-tuning personalizzati
<a name="sagemaker-hyperpod-model-deployment-deploy"></a>

Che tu stia implementando modelli open weight di base preformati o modelli gated di Amazon o i tuoi modelli personalizzati o SageMaker JumpStart ottimizzati archiviati in Amazon S3 FSx o SageMaker HyperPod Amazon, offre l'infrastruttura flessibile e scalabile di cui hai bisogno per i carichi di lavoro di inferenza di produzione.




****  

|  | Implementa modelli di base aperti e controllati da JumpStart | Implementa modelli personalizzati e ottimizzati da Amazon S3 e Amazon FSx | 
| --- | --- | --- | 
| Descrizione |  Implementa da un catalogo completo di modelli di fondazione preaddestrati con policy di ottimizzazione e dimensionamento automatiche personalizzate per ogni famiglia di modelli.  | Crea modelli personalizzati e ottimizzati e sfrutta l'infrastruttura aziendale per l'inferenza su scala di produzione. SageMaker HyperPod Scegli tra uno storage conveniente con Amazon S3 o un file system ad alte prestazioni con Amazon. FSx | 
| Vantaggi principali | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-model-deployment-deploy.html) |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-model-deployment-deploy.html)  | 
| Opzioni di implementazione |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-model-deployment-deploy.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-model-deployment-deploy.html)  | 

Le seguenti sezioni illustrano la distribuzione di modelli da Amazon SageMaker JumpStart e da Amazon S3 e Amazon. FSx

**Topics**
+ [Distribuisci modelli JumpStart utilizzando Amazon Studio SageMaker](sagemaker-hyperpod-model-deployment-deploy-js-ui.md)
+ [Distribuisci modelli utilizzando JumpStart kubectl](sagemaker-hyperpod-model-deployment-deploy-js-kubectl.md)
+ [Distribuisci modelli personalizzati e ottimizzati da Amazon S3 e Amazon utilizzando kubectl FSx](sagemaker-hyperpod-model-deployment-deploy-ftm.md)
+ [Implementazione di modelli ottimizzati con fine-tuning personalizzati con Python SDK e HPCLI](deploy-trained-model.md) 
+ [Distribuisci modelli da Amazon SageMaker JumpStart utilizzando Python SDK e HPCLI](deploy-jumpstart-model.md) 

# Distribuisci modelli JumpStart utilizzando Amazon Studio SageMaker
<a name="sagemaker-hyperpod-model-deployment-deploy-js-ui"></a>

I passaggi seguenti illustrano come distribuire modelli JumpStart utilizzando Amazon SageMaker Studio.

## Prerequisiti
<a name="sagemaker-hyperpod-model-deployment-deploy-js-ui-prereqs"></a>

Verifica di aver configurato le funzionalità di inferenza sui tuoi SageMaker HyperPod cluster Amazon. Per ulteriori informazioni, consulta [Configurazione dei HyperPod cluster per l'implementazione dei modelli](sagemaker-hyperpod-model-deployment-setup.md). 

## Crea una distribuzione HyperPod
<a name="sagemaker-hyperpod-model-deployment-deploy-js-ui-create"></a>

1. In Amazon SageMaker Studio, apri la pagina di **JumpStart**destinazione dal riquadro di navigazione a sinistra. 

1. In **Tutti i modelli pubblici**, scegli un modello da implementare.
**Nota**  
Se hai selezionato un modello gated, dovrai accettare il Contratto di licenza con l’utente finale (EULA).

1. Scegli **SageMaker HyperPod**.

1. In **Impostazioni di distribuzione**, JumpStart consiglierà un'istanza per la distribuzione. Se necessario, puoi modificare queste impostazioni.

   1. Se modifichi il **tipo di istanza**, assicurati che sia compatibile con il **HyperPod cluster** scelto. Se non ci sono istanze compatibili, dovrai selezionare un nuovo **HyperPod cluster** o contattare l'amministratore per aggiungere istanze compatibili al cluster.

   1. Per dare priorità all’implementazione del modello, installa il componente aggiuntivo per la governance delle attività, crea allocazioni delle risorse di calcolo e imposta le classificazioni delle attività per la policy del cluster. Una volta completata questa operazione, dovrebbe apparire un’opzione per selezionare una priorità per l’implementazione del modello, che può essere utilizzata per la prelazione di altre implementazioni e attività nel cluster. 

   1. Inserisci il namespace al quale l’amministratore ti ha fornito l’accesso. Potrebbe essere necessario contattare direttamente l’amministratore per ottenere il namespace esatto. Una volta fornito un namespace valido, il pulsante **Implementa** dovrebbe diventare attivo per implementare il modello.

   1. **Se il tipo di istanza è partizionato (abilitato per MIG), seleziona un tipo di partizione GPU.**

   1. Se desideri abilitare il routing L2 KVCache o Intelligent per velocizzare l'inferenza LLM, abilitalo. Per impostazione predefinita, è abilitata solo la cache L1 KV. [Per maggiori dettagli sul KVCache routing intelligente, consulta SageMaker HyperPod Model Deployment.](sagemaker-hyperpod-model-deployment.md)

1. Scegli **Implementa** e attendi la creazione dell’**endpoint**.

1. Dopo aver creato l’**endpoint**, seleziona **Testa inferenza**.

## Modifica una distribuzione HyperPod
<a name="sagemaker-hyperpod-model-deployment-deploy-js-ui-edit"></a>

1. In Amazon SageMaker Studio, seleziona **Compute** e poi **HyperPodCluster dal riquadro** di navigazione a sinistra. 

1. In **Implementazioni**, scegli la distribuzione del HyperPod cluster che desideri modificare.

1. Dall’icona con tre puntini verticali (⋮), scegli **Modifica**.

1. In **Impostazioni di implementazione**, puoi abilitare o disabilitare il **dimensionamento automatico** e modificare il **numero massimo di repliche**.

1. Seleziona **Salva**.

1. Lo **stato** diventa **Aggiornamento in corso**. Quando viene visualizzato di nuovo lo stato **In servizio**, le modifiche sono complete e viene visualizzato un messaggio di conferma.

## Eliminare una distribuzione HyperPod
<a name="sagemaker-hyperpod-model-deployment-deploy-js-ui-delete"></a>

1. In Amazon SageMaker Studio, seleziona **Compute** e poi **HyperPodCluster dal riquadro** di navigazione a sinistra. 

1. In **Implementazioni**, scegli la distribuzione del HyperPod cluster che desideri modificare.

1. Dall’icona con tre puntini verticali (⋮), scegli **Elimina**.

1. Nella **finestra Elimina HyperPod distribuzione**, seleziona la casella di controllo.

1. Scegli **Elimina**.

1. Lo **stato** diventa **Eliminazione in corso**. Una volta eliminata la HyperPod distribuzione, verrà visualizzato un messaggio di conferma.

# Distribuisci modelli utilizzando JumpStart kubectl
<a name="sagemaker-hyperpod-model-deployment-deploy-js-kubectl"></a>

I passaggi seguenti mostrano come distribuire un JumpStart modello in un cluster usando kubectl. HyperPod 

Le istruzioni seguenti contengono celle di codice e comandi progettati per essere eseguiti in un terminale. Assicurati di aver configurato il tuo ambiente con le AWS credenziali prima di eseguire questi comandi. 

## Prerequisiti
<a name="kubectl-prerequisites"></a>

Prima di iniziare, verifica di aver: 
+ Configura funzionalità di inferenza sui tuoi SageMaker HyperPod cluster Amazon. Per ulteriori informazioni, consulta [Configurazione dei HyperPod cluster per l'implementazione dei modelli](sagemaker-hyperpod-model-deployment-setup.md).
+ Installato l’utilità [kubectl](https://kubernetes.io/docs/reference/kubectl/) e configurato [jq](https://jqlang.org/) nel terminale.

## Installazione e configurazione
<a name="kubectl-prerequisites-setup-and-configuration"></a>

1. Scegli la tua Regione.

   ```
   export REGION=<region>
   ```

1. Visualizza tutti i modelli e HyperPod i cluster di hub SageMaker pubblici.

1. Seleziona un `JumpstartModel` da JumpstartPublic Hub. JumpstartPublic hub dispone di un gran numero di modelli, che puoi utilizzare `NextToken` per elencare in modo iterativo tutti i modelli disponibili nell'hub pubblico.

   ```
   aws sagemaker list-hub-contents --hub-name SageMakerPublicHub --hub-content-type Model --query '{Models: HubContentSummaries[].{ModelId:HubContentName,Version:HubContentVersion}, NextToken: NextToken}' --output json
   ```

   ```
   export MODEL_ID="deepseek-llm-r1-distill-qwen-1-5b"
   export MODEL_VERSION="2.0.4"
   ```

1. Configura l’ID del modello e il nome del cluster che hai selezionato nelle variabili seguenti.
**Nota**  
Rivolgiti all’amministratore del cluster per assicurarti di ottenere le autorizzazioni per questo ruolo o utente. Puoi eseguire `!aws sts get-caller-identity --query "Arn"` per verificare quale ruolo o utente stai utilizzando nel terminale.

   ```
   aws sagemaker list-clusters --output table
   
   # Select the cluster name where you want to deploy the model.
   export HYPERPOD_CLUSTER_NAME="<insert cluster name here>"
   
   # Select the instance that is relevant for your model deployment and exists within the selected cluster.
   # List availble instances in your HyperPod cluster
   aws sagemaker describe-cluster --cluster-name=$HYPERPOD_CLUSTER_NAME --query "InstanceGroups[].{InstanceType:InstanceType,Count:CurrentCount}" --output table
   
   # List supported instance types for the selected model
   aws sagemaker describe-hub-content --hub-name SageMakerPublicHub --hub-content-type Model --hub-content-name "$MODEL_ID" --output json | jq -r '.HubContentDocument | fromjson | {Default: .DefaultInferenceInstanceType, Supported: .SupportedInferenceInstanceTypes}'
   
   
   # Select and instance type from the cluster that is compatible with the model. 
   # Make sure that the selected instance is either default or supported instance type for the jumpstart model 
   export INSTANCE_TYPE="<Instance_type_In_cluster"
   ```

1. Rivolgiti all’amministratore del cluster per sapere quale namespace utilizzare. L’amministratore dovrebbe aver creato un account di servizio `hyperpod-inference` nel tuo namespace.

   ```
   export CLUSTER_NAMESPACE="default"
   ```

1. Imposta un nome per l’endpoint e l’oggetto personalizzato da creare.

   ```
   export SAGEMAKER_ENDPOINT_NAME="deepsek-qwen-1-5b-test"
   ```

1. Di seguito è riportato un esempio di implementazione del modello `deepseek-llm-r1-distill-qwen-1-5b` da JumpStart. Crea un file yaml di implementazione simile, basato sul modello selezionato nella fase precedente.
**Nota**  
Se il cluster utilizza il partizionamento GPU con MIG, è possibile richiedere profili MIG specifici aggiungendo il campo alle specifiche del `acceleratorPartitionType` server. Per ulteriori informazioni, consulta [Invio di attività con MIG](sagemaker-hyperpod-eks-gpu-partitioning-task-submission.md).

   ```
   cat << EOF > jumpstart_model.yaml
   ---
   apiVersion: inference.sagemaker.aws.amazon.com/v1
   kind: JumpStartModel
   metadata:
     name: $SAGEMAKER_ENDPOINT_NAME
     namespace: $CLUSTER_NAMESPACE 
   spec:
     sageMakerEndpoint:
       name: $SAGEMAKER_ENDPOINT_NAME
     model:
       modelHubName: SageMakerPublicHub
       modelId: $MODEL_ID
       modelVersion: $MODEL_VERSION
     server:
       instanceType: $INSTANCE_TYPE
       # Optional: Specify GPU partition profile for MIG-enabled instances
       # acceleratorPartitionType: "1g.10gb"
     metrics:
       enabled: true
     environmentVariables:
       - name: SAMPLE_ENV_VAR
         value: "sample_value"
     maxDeployTimeInSeconds: 1800
     autoScalingSpec:
       cloudWatchTrigger:
         name: "SageMaker-Invocations"
         namespace: "AWS/SageMaker"
         useCachedMetrics: false
         metricName: "Invocations"
         targetValue: 10
         minValue: 0.0
         metricCollectionPeriod: 30
         metricStat: "Sum"
         metricType: "Average"
         dimensions:
           - name: "EndpointName"
             value: "$SAGEMAKER_ENDPOINT_NAME"
           - name: "VariantName"
             value: "AllTraffic"
   EOF
   ```

## Distribuzione del modello
<a name="kubectl-deploy-your-model"></a>

**Aggiornamento della configurazione Kubernetes e implementazione del modello**

1. Configura kubectl per la connessione al HyperPod cluster orchestrato da Amazon EKS.

   ```
   export EKS_CLUSTER_NAME=$(aws --region $REGION sagemaker describe-cluster --cluster-name $HYPERPOD_CLUSTER_NAME \
     --query 'Orchestrator.Eks.ClusterArn' --output text | \
     cut -d'/' -f2)
   aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region $REGION
   ```

1.  JumpStart Implementa il tuo modello.

   ```
   kubectl apply -f jumpstart_model.yaml
   ```

**Monitoraggio dello stato di implementazione del modello**

1. Verifica che il modello sia stato implementato correttamente.

   ```
   kubectl describe JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
   ```

1. Verifica che l’endpoint sia stato creato correttamente.

   ```
   aws sagemaker describe-endpoint --endpoint-name=$SAGEMAKER_ENDPOINT_NAME --output table
   ```

1. Invoca l’endpoint del modello. Puoi recuperare in modo programmatico i payload di esempio dall’oggetto `JumpStartModel`.

   ```
   aws sagemaker-runtime invoke-endpoint \
     --endpoint-name $SAGEMAKER_ENDPOINT_NAME \
     --content-type "application/json" \
     --body '{"inputs": "What is AWS SageMaker?"}' \
     --region $REGION \
     --cli-binary-format raw-in-base64-out \
     /dev/stdout
   ```

## Gestione dell’implementazione
<a name="kubectl-manage-your-deployment"></a>

Elimina la distribuzione JumpStart del modello quando non è più necessaria.

```
kubectl delete JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
```

**Risoluzione dei problemi**

Utilizza questi comandi di debug se l’implementazione non funziona come previsto.

1. Controlla lo stato dell’implementazione Kubernetes. Questo comando ispeziona l’oggetto di implementazione Kubernetes sottostante che gestisce i pod che eseguono il modello. Usalo per risolvere i problemi di pianificazione dei pod, allocazione delle risorse e avvio dei container.

   ```
   kubectl describe deployment $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
   ```

1. Controlla lo stato della risorsa del JumpStart modello. Questo comando esamina la risorsa `JumpStartModel` personalizzata che gestisce la configurazione generale del modello e il ciclo di vita dell’implementazione. Usalo per risolvere problemi specifici del modello come errori di configurazione o problemi di creazione di endpoint SageMaker AI.

   ```
   kubectl describe JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
   ```

1. Controlla lo stato di tutti gli oggetti Kubernetes. Questo comando fornisce una panoramica completa di tutte le risorse correlate a Kubernetes nel tuo namespace. Usalo per un rapido controllo dell’integrità per conoscere lo stato generale dei pod, dei servizi, delle implementazioni e delle risorse personalizzate associati all’implementazione del modello.

   ```
   kubectl get pods,svc,deployment,JumpStartModel,sagemakerendpointregistration -n $CLUSTER_NAMESPACE
   ```

# Distribuisci modelli personalizzati e ottimizzati da Amazon S3 e Amazon utilizzando kubectl FSx
<a name="sagemaker-hyperpod-model-deployment-deploy-ftm"></a>

I passaggi seguenti mostrano come distribuire modelli archiviati su Amazon S3 o Amazon su un cluster FSx SageMaker HyperPod Amazon utilizzando kubectl. 

Le istruzioni seguenti contengono celle di codice e comandi progettati per essere eseguiti in un terminale. Assicurati di aver configurato il tuo ambiente con le AWS credenziali prima di eseguire questi comandi.

## Prerequisiti
<a name="sagemaker-hyperpod-model-deployment-deploy-ftm-prereqs"></a>

Prima di iniziare, verifica di aver: 
+ Configura funzionalità di inferenza sui tuoi SageMaker HyperPod cluster Amazon. Per ulteriori informazioni, consulta [Configurazione dei HyperPod cluster per l'implementazione dei modelli](sagemaker-hyperpod-model-deployment-setup.md).
+ Installato l’utilità [kubectl](https://kubernetes.io/docs/reference/kubectl/) e configurato [jq](https://jqlang.org/) nel terminale.

## Installazione e configurazione
<a name="sagemaker-hyperpod-model-deployment-deploy-ftm-setup"></a>

Sostituisci tutti i valori segnaposto con gli tuoi identificatori delle risorse effettivi.

1. Seleziona la tua Regione nell’ambiente.

   ```
   export REGION=<region>
   ```

1. Inizializza il nome del cluster. Questo identifica il HyperPod cluster in cui verrà distribuito il tuo modello.
**Nota**  
Rivolgiti all’amministratore del cluster per assicurarti di ottenere le autorizzazioni per questo ruolo o utente. Puoi eseguire `!aws sts get-caller-identity --query "Arn"` per verificare quale ruolo o utente stai utilizzando nel terminale.

   ```
   # Specify your hyperpod cluster name here
   HYPERPOD_CLUSTER_NAME="<Hyperpod_cluster_name>"
   
   # NOTE: For sample deployment, we use g5.8xlarge for deepseek-r1 1.5b model which has sufficient memory and GPU
   instance_type="ml.g5.8xlarge"
   ```

1. Inizializza il namespace del cluster. L’amministratore del cluster dovrebbe aver già creato un account di servizio hyperpod-inference nel tuo namespace.

   ```
   cluster_namespace="<namespace>"
   ```

1. Crea una CRD utilizzando una delle seguenti opzioni:

------
#### [ Using Amazon FSx as the model source ]

   1. Imposta un nome per l' SageMaker endpoint.

      ```
      export SAGEMAKER_ENDPOINT_NAME="deepseek15b-fsx"
      ```

   1. Configura l'ID del FSx file system Amazon da utilizzare.

      ```
      export FSX_FILE_SYSTEM_ID="fs-1234abcd"
      ```

   1. Di seguito è riportato un file yaml di esempio per la creazione di un endpoint con Amazon FSx e un modello. DeepSeek 
**Nota**  
Per i cluster con il partizionamento GPU abilitato, sostituiscilo con il nome della risorsa MIG appropriato, `nvidia.com/gpu` ad esempio. `nvidia.com/mig-1g.10gb` Per ulteriori informazioni, consulta [Invio di attività con MIG](sagemaker-hyperpod-eks-gpu-partitioning-task-submission.md).

      ```
      cat <<EOF> deploy_fsx_cluster_inference.yaml
      ---
      apiVersion: inference.sagemaker.aws.amazon.com/v1
      kind: InferenceEndpointConfig
      metadata:
        name: lmcache-test
        namespace: inf-update
      spec:
        modelName: Llama-3.1-8B-Instruct
        instanceType: ml.g5.24xlarge
        invocationEndpoint: v1/chat/completions
        replicas: 2
        modelSourceConfig:
          fsxStorage:
            fileSystemId: $FSX_FILE_SYSTEM_ID
          modelLocation: deepseek-1-5b
          modelSourceType: fsx
        worker:
          environmentVariables:
          - name: HF_MODEL_ID
            value: /opt/ml/model
          - name: SAGEMAKER_PROGRAM
            value: inference.py
          - name: SAGEMAKER_SUBMIT_DIRECTORY
            value: /opt/ml/model/code
          - name: MODEL_CACHE_ROOT
            value: /opt/ml/model
          - name: SAGEMAKER_ENV
            value: '1'
          image: 763104351884.dkr.ecr.us-east-2.amazonaws.com/huggingface-pytorch-tgi-inference:2.4.0-tgi2.3.1-gpu-py311-cu124-ubuntu22.04-v2.0
          modelInvocationPort:
            containerPort: 8080
            name: http
          modelVolumeMount:
            mountPath: /opt/ml/model
            name: model-weights
          resources:
            limits:
              nvidia.com/gpu: 1
              # For MIG-enabled instances, use: nvidia.com/mig-1g.10gb: 1
            requests:
              cpu: 30000m
              memory: 100Gi
              nvidia.com/gpu: 1
              # For MIG-enabled instances, use: nvidia.com/mig-1g.10gb: 1
      EOF
      ```

------
#### [ Using Amazon S3 as the model source ]

   1. Imposta un nome per l'endpoint. SageMaker 

      ```
      export SAGEMAKER_ENDPOINT_NAME="deepseek15b-s3"
      ```

   1. Configura la posizione del bucket Amazon S3 in cui si trova il modello.

      ```
      export S3_MODEL_LOCATION="deepseek-qwen-1-5b"
      ```

   1. Di seguito è riportato un file yaml di esempio per la creazione di un endpoint con Amazon S3 e un modello. DeepSeek 
**Nota**  
Per i cluster con il partizionamento GPU abilitato, sostituiscilo con il nome della risorsa MIG appropriato, ad `nvidia.com/gpu` esempio. `nvidia.com/mig-1g.10gb` Per ulteriori informazioni, consulta [Invio di attività con MIG](sagemaker-hyperpod-eks-gpu-partitioning-task-submission.md).

      ```
      cat <<EOF> deploy_s3_inference.yaml
      ---
      apiVersion: inference.sagemaker.aws.amazon.com/v1alpha1
      kind: InferenceEndpointConfig
      metadata:
        name: $SAGEMAKER_ENDPOINT_NAME
        namespace: $CLUSTER_NAMESPACE
      spec:
        modelName: deepseek15b
        endpointName: $SAGEMAKER_ENDPOINT_NAME
        instanceType: ml.g5.8xlarge
        invocationEndpoint: invocations
        modelSourceConfig:
          modelSourceType: s3
          s3Storage:
            bucketName: $S3_MODEL_LOCATION
            region: $REGION
          modelLocation: deepseek15b
          prefetchEnabled: true
        worker:
          resources:
            limits:
              nvidia.com/gpu: 1
              # For MIG-enabled instances, use: nvidia.com/mig-1g.10gb: 1
            requests:
              nvidia.com/gpu: 1
              # For MIG-enabled instances, use: nvidia.com/mig-1g.10gb: 1
              cpu: 25600m
              memory: 102Gi
          image: 763104351884.dkr.ecr.us-east-2.amazonaws.com/djl-inference:0.32.0-lmi14.0.0-cu124
          modelInvocationPort:
            containerPort: 8000
            name: http
          modelVolumeMount:
            name: model-weights
            mountPath: /opt/ml/model
          environmentVariables:
            - name: PYTHONHASHSEED
              value: "123"
            - name: OPTION_ROLLING_BATCH
              value: "vllm"
            - name: SERVING_CHUNKED_READ_TIMEOUT
              value: "480"
            - name: DJL_OFFLINE
              value: "true"
            - name: NUM_SHARD
              value: "1"
            - name: SAGEMAKER_PROGRAM
              value: "inference.py"
            - name: SAGEMAKER_SUBMIT_DIRECTORY
              value: "/opt/ml/model/code"
            - name: MODEL_CACHE_ROOT
              value: "/opt/ml/model"
            - name: SAGEMAKER_MODEL_SERVER_WORKERS
              value: "1"
            - name: SAGEMAKER_MODEL_SERVER_TIMEOUT
              value: "3600"
            - name: OPTION_TRUST_REMOTE_CODE
              value: "true"
            - name: OPTION_ENABLE_REASONING
              value: "true"
            - name: OPTION_REASONING_PARSER
              value: "deepseek_r1"
            - name: SAGEMAKER_CONTAINER_LOG_LEVEL
              value: "20"
            - name: SAGEMAKER_ENV
              value: "1"
            - name: MODEL_SERVER_TYPE
              value: "vllm"
            - name: SESSION_KEY
              value: "x-user-id"
      EOF
      ```

------
#### [ Using Amazon S3 as the model source ]

   1. Imposta un nome per l'endpoint. SageMaker 

      ```
      export SAGEMAKER_ENDPOINT_NAME="deepseek15b-s3"
      ```

   1. Configura la posizione del bucket Amazon S3 in cui si trova il modello.

      ```
      export S3_MODEL_LOCATION="deepseek-qwen-1-5b"
      ```

   1. Di seguito è riportato un file yaml di esempio per la creazione di un endpoint con Amazon S3 e un modello. DeepSeek 

      ```
      cat <<EOF> deploy_s3_inference.yaml
      ---
      apiVersion: inference.sagemaker.aws.amazon.com/v1
      kind: InferenceEndpointConfig
      metadata:
        name: lmcache-test
        namespace: inf-update
      spec:
        modelName: Llama-3.1-8B-Instruct
        instanceType: ml.g5.24xlarge
        invocationEndpoint: v1/chat/completions
        replicas: 2
        modelSourceConfig:
          modelSourceType: s3
          s3Storage:
            bucketName: bugbash-ada-resources
            region: us-west-2
          modelLocation: models/Llama-3.1-8B-Instruct
          prefetchEnabled: false
        kvCacheSpec:
          enableL1Cache: true
      #    enableL2Cache: true
      #    l2CacheSpec:
      #      l2CacheBackend: redis/sagemaker
      #      l2CacheLocalUrl: redis://redis.redis-system.svc.cluster.local:6379
        intelligentRoutingSpec:
          enabled: true
        tlsConfig:
          tlsCertificateOutputS3Uri: s3://sagemaker-lmcache-fceb9062-tls-6f6ee470
        metrics:
          enabled: true
          modelMetrics:
            port: 8000
        loadBalancer:
          healthCheckPath: /health
        worker:
          resources:
            limits:
              nvidia.com/gpu: "4"
            requests:
              cpu: "6"
              memory: 30Gi
              nvidia.com/gpu: "4"
          image: lmcache/vllm-openai:latest
          args:
            - "/opt/ml/model"
            - "--max-model-len"
            - "20000"
            - "--tensor-parallel-size"
            - "4"
          modelInvocationPort:
            containerPort: 8000
            name: http
          modelVolumeMount:
            name: model-weights
            mountPath: /opt/ml/model
          environmentVariables:
            - name: PYTHONHASHSEED
              value: "123"
            - name: OPTION_ROLLING_BATCH
              value: "vllm"
            - name: SERVING_CHUNKED_READ_TIMEOUT
              value: "480"
            - name: DJL_OFFLINE
              value: "true"
            - name: NUM_SHARD
              value: "1"
            - name: SAGEMAKER_PROGRAM
              value: "inference.py"
            - name: SAGEMAKER_SUBMIT_DIRECTORY
              value: "/opt/ml/model/code"
            - name: MODEL_CACHE_ROOT
              value: "/opt/ml/model"
            - name: SAGEMAKER_MODEL_SERVER_WORKERS
              value: "1"
            - name: SAGEMAKER_MODEL_SERVER_TIMEOUT
              value: "3600"
            - name: OPTION_TRUST_REMOTE_CODE
              value: "true"
            - name: OPTION_ENABLE_REASONING
              value: "true"
            - name: OPTION_REASONING_PARSER
              value: "deepseek_r1"
            - name: SAGEMAKER_CONTAINER_LOG_LEVEL
              value: "20"
            - name: SAGEMAKER_ENV
              value: "1"
            - name: MODEL_SERVER_TYPE
              value: "vllm"
            - name: SESSION_KEY
              value: "x-user-id"
      EOF
      ```

------

## Configura la memorizzazione nella cache KV e il routing intelligente per migliorare le prestazioni
<a name="sagemaker-hyperpod-model-deployment-deploy-ftm-cache-route"></a>

1. Abilita la memorizzazione nella cache KV impostando `enableL1Cache` e `enableL2Cache` su `true` .Quindi, imposta `redis` e aggiorna `l2CacheLocalUrl` con l'URL del `l2CacheSpec` cluster Redis.

   ```
     kvCacheSpec:
       enableL1Cache: true
       enableL2Cache: true
       l2CacheSpec:
         l2CacheBackend: <redis | tieredstorage>
         l2CacheLocalUrl: <redis cluster URL if l2CacheBackend is redis >
   ```
**Nota**  
Se il cluster redis non si trova all'interno dello stesso Amazon VPC HyperPod del cluster, la crittografia dei dati in transito non è garantita.
**Nota**  
Non è necessario l2 CacheLocalUrl se è selezionato lo storage su più livelli.

1. Abilita il routing intelligente impostando su under. `enabled` `true` `intelligentRoutingSpec` È possibile specificare la strategia di routing da utilizzare. `routingStrategy` Se non viene specificata alcuna strategia di routing, l'impostazione predefinita è. `prefixaware`

   ```
   intelligentRoutingSpec:
       enabled: true
       routingStrategy: <routing strategy to use>
   ```

1. Abilita le metriche del router e le metriche di memorizzazione nella cache impostando su under. `enabled` `true` `metrics` Il `port` valore deve essere lo stesso del valore inferiore. `containerPort` `modelInvocationPort`

   ```
   metrics:
       enabled: true
       modelMetrics:
         port: <port value>
       ...
       modelInvocationPort:
         containerPort: <port value>
   ```

## Implementa il tuo modello da Amazon S3 o Amazon FSx
<a name="sagemaker-hyperpod-model-deployment-deploy-ftm-deploy"></a>

1. Ottieni il nome del cluster Amazon EKS dall'ARN del HyperPod cluster per l'autenticazione kubectl.

   ```
   export EKS_CLUSTER_NAME=$(aws --region $REGION sagemaker describe-cluster --cluster-name $HYPERPOD_CLUSTER_NAME \
     --query 'Orchestrator.Eks.ClusterArn' --output text | \
     cut -d'/' -f2)
   aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region $REGION
   ```

1. Implementa il tuo InferenceEndpointConfig modello con una delle seguenti opzioni:

------
#### [ Deploy with Amazon FSx as a source ]

   ```
   kubectl apply -f deploy_fsx_luster_inference.yaml
   ```

------
#### [ Deploy with Amazon S3 as a source ]

   ```
   kubectl apply -f deploy_s3_inference.yaml
   ```

------

## Verifica dello stato dell’implementazione
<a name="sagemaker-hyperpod-model-deployment-deploy-ftm-verify"></a>

1. Verifica se il modello è stato implementato correttamente.

   ```
   kubectl describe InferenceEndpointConfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
   ```

1. Verifica che l’endpoint sia stato creato correttamente.

   ```
   kubectl describe SageMakerEndpointRegistration $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
   ```

1. Testa l’endpoint implementato per verificare che funzioni correttamente. Questa fase conferma che il modello è stato implementato correttamente e può elaborare le richieste di inferenza.

   ```
   aws sagemaker-runtime invoke-endpoint \
     --endpoint-name $SAGEMAKER_ENDPOINT_NAME \
     --content-type "application/json" \
     --body '{"inputs": "What is AWS SageMaker?"}' \
     --region $REGION \
     --cli-binary-format raw-in-base64-out \
     /dev/stdout
   ```

## Gestione dell’implementazione
<a name="sagemaker-hyperpod-model-deployment-deploy-ftm-manage"></a>

Al termine dei test sull’implementazione, utilizza i comandi seguenti per pulire le risorse.

**Nota**  
Verifica di non aver più bisogno del modello implementato o dei dati archiviati prima di procedere.

**Pulizia delle risorse**

1. Elimina l’implementazione dell’inferenza e le risorse Kubernetes associate. Ciò interrompe l'esecuzione dei contenitori del modello e rimuove l' SageMakerendpoint.

   ```
   kubectl delete inferenceendpointconfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
   ```

1. Verifica che la pulizia sia stata eseguita correttamente.

   ```
   # # Check that Kubernetes resources are removed
   kubectl get pods,svc,deployment,InferenceEndpointConfig,sagemakerendpointregistration -n $CLUSTER_NAMESPACE
   ```

   ```
   # Verify SageMaker endpoint is deleted (should return error or empty)
   aws sagemaker describe-endpoint --endpoint-name $SAGEMAKER_ENDPOINT_NAME --region $REGION
   ```

**Risoluzione dei problemi**

Utilizza questi comandi di debug se l’implementazione non funziona come previsto.

1. Controlla lo stato dell’implementazione di Kubernetes.

   ```
   kubectl describe deployment $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
   ```

1. Controlla lo InferenceEndpointConfig stato per vedere lo stato di implementazione di alto livello e gli eventuali problemi di configurazione.

   ```
   kubectl describe InferenceEndpointConfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
   ```

1. Controlla lo stato di tutti gli oggetti Kubernetes. Ottieni una visione completa di tutte le risorse Kubernetes correlate nel tuo namespace. Questa funzionalità ti offre una panoramica rapida su tutto ciò che è in esecuzione e sugli eventuali elementi mancanti.

   ```
   kubectl get pods,svc,deployment,InferenceEndpointConfig,sagemakerendpointregistration -n $CLUSTER_NAMESPACE
   ```

# Politiche di scalabilità automatica per l'implementazione del modello di inferenza HyperPod
<a name="sagemaker-hyperpod-model-deployment-autoscaling"></a>

Le seguenti informazioni forniscono esempi pratici e configurazioni per l'implementazione di politiche di scalabilità automatica nelle implementazioni di modelli di inferenza Amazon SageMaker HyperPod . 

Scoprirai come configurare il dimensionamento automatico utilizzando `autoScalingSpec` integrato nei file YAML di implementazione e come creare configurazioni `ScaledObject` KEDA standalone per scenari di dimensionamento avanzati. Gli esempi riguardano i trigger di scalabilità basati su CloudWatch parametri, lunghezze delle code di Amazon SQS, query Prometheus e parametri di utilizzo delle risorse come CPU e memoria. 

## Utilizzo di YAML nella distribuzione autoScalingSpec
<a name="sagemaker-hyperpod-model-deployment-autoscaling-yaml"></a>

Amazon SageMaker HyperPod Inference Operator offre funzionalità di scalabilità automatica integrate per le implementazioni di modelli utilizzando i parametri di CloudWatch Amazon Managed Prometheus (AMP). Il file YAML di implementazione di esempio seguente include una sezione `autoScalingSpec` che definisce i valori di configurazione per scalare l’implementazione del modello.

```
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: JumpStartModel
metadata:
  name: deepseek-sample624
  namespace: ns-team-a
spec:
  sageMakerEndpoint:
    name: deepsek7bsme624
  model:
    modelHubName: SageMakerPublicHub
    modelId: deepseek-llm-r1-distill-qwen-1-5b
    modelVersion: 2.0.4
  server:
    instanceType: ml.g5.8xlarge
  metrics:
    enabled: true
  environmentVariables:
    - name: SAMPLE_ENV_VAR
      value: "sample_value"
  maxDeployTimeInSeconds: 1800
  tlsConfig:
    tlsCertificateOutputS3Uri: "s3://{USER}-tls-bucket-{REGION}/certificates"
  autoScalingSpec:
    minReplicaCount: 0
    maxReplicaCount: 5
    pollingInterval: 15
    initialCooldownPeriod: 60
    cooldownPeriod: 120
    scaleDownStabilizationTime: 60
    scaleUpStabilizationTime: 0
    cloudWatchTrigger:
        name: "SageMaker-Invocations"
        namespace: "AWS/SageMaker"
        useCachedMetrics: false
        metricName: "Invocations"
        targetValue: 10.5
        activationTargetValue: 5.0
        minValue: 0.0
        metricCollectionStartTime: 300
        metricCollectionPeriod: 30
        metricStat: "Sum"
        metricType: "Average"
        dimensions:
          - name: "EndpointName"
            value: "deepsek7bsme624"
          - name: "VariantName"
            value: "AllTraffic"
    prometheusTrigger: 
        name: "Prometheus-Trigger"
        useCachedMetrics: false
        serverAddress: http://<prometheus-host>:9090
        query: sum(rate(http_requests_total{deployment="my-deployment"}[2m]))
        targetValue: 10.0
        activationTargetValue: 5.0
        namespace: "namespace"
        customHeaders: "X-Client-Id=cid"
        metricType: "Value"
```

### Spiegazione dei campi utilizzati nel file YAML di implementazione
<a name="sagemaker-hyperpod-model-deployment-autoscaling-fields"></a>

`minReplicaCount` (Facoltativo, Numero intero)  
Specifica il numero minimo di repliche di implementazione del modello da mantenere nel cluster. Durante gli eventi di riduzione verticale, l’implementazione si riduce fino al numero minimo di pod indicato. Il valore deve essere maggiore o uguale a 0. Default: 1.

`maxReplicaCount` (Facoltativo, Numero intero)  
Specifica il numero massimo di repliche di implementazione del modello da mantenere nel cluster. Il valore deve essere maggiore o uguale a `minReplicaCount`. Durante gli eventi di aumento verticale, l’implementazione aumenta fino al numero massimo di pod indicato. Impostazione predefinita: 5.

`pollingInterval` (Facoltativo, Numero intero)  
L’intervallo di tempo in secondi per le query sulle metriche. Minimo: 0 Valore predefinito: 30 secondi.

`cooldownPeriod` (Facoltativo, Numero intero)  
Il tempo di attesa in secondi prima di passare da 1 a 0 pod durante un evento di riduzione verticale. Si applica solo quando `minReplicaCount` è impostato su 0. Minimo: 0 Impostazione predefinita: 300 secondi.

`initialCooldownPeriod` (Facoltativo, Numero intero)  
Il tempo di attesa in secondi prima di passare da 1 a 0 pod durante l’implementazione iniziale. Si applica solo quando `minReplicaCount` è impostato su 0. Minimo: 0 Impostazione predefinita: 300 secondi.

`scaleDownStabilizationTime` (Facoltativo, Numero intero)  
La finestra temporale di stabilizzazione in secondi tra l’attivazione di un trigger di riduzione verticale e l’effettiva riduzione verticale. Minimo: 0 Impostazione predefinita: 300 secondi.

`scaleUpStabilizationTime` (Facoltativo, Numero intero)  
La finestra temporale di stabilizzazione in secondi tra l’attivazione di un trigger di aumento verticale e l’effettivo aumento verticale. Minimo: 0 Impostazione predefinita: 0 secondi.

`cloudWatchTrigger`  
La configurazione di attivazione per le metriche utilizzate nelle decisioni di scalabilità automatica. CloudWatch In `cloudWatchTrigger` sono disponibili i seguenti campi:  
+ `name`(Facoltativo, stringa): nome del trigger. CloudWatch Se non viene fornito, utilizza il formato predefinito: < model-deployment-name >-scaled-object-cloudwatch-trigger.
+ `useCachedMetrics` (Facoltativo, Booleano): determina se memorizzare nella cache le metriche richieste da KEDA. KEDA esegue query sulle metriche utilizzando pollingInterval, mentre Horizontal Pod Autoscaler (HPA) richiede le metriche da KEDA ogni 15 secondi. Se impostata su true, le metriche sottoposte a query vengono memorizzate nella cache e utilizzate per soddisfare le richieste HPA. Default: true.
+ `namespace`(Obbligatorio, String) - Lo spazio dei CloudWatch nomi per la metrica da interrogare.
+ `metricName`(Obbligatorio, String): il nome della metrica. CloudWatch 
+ `dimensions` (Facoltativo, Elenco): l’elenco delle dimensioni per la metrica. Ogni dimensione include un nome (nome della dimensione - Stringa) e un valore (valore della dimensione - Stringa).
+ `targetValue`(Obbligatorio, Float): il valore target per la CloudWatch metrica utilizzata nelle decisioni di scalabilità automatica.
+ `activationTargetValue`(Facoltativo, Float): il valore target per la CloudWatch metrica utilizzata durante la scalatura da 0 a 1 pod. Si applica solo quando `minReplicaCount` è impostato su 0. Impostazione predefinita: 0.
+ `minValue`(Facoltativo, Float): il valore da utilizzare quando la CloudWatch query non restituisce dati. Impostazione predefinita: 0.
+ `metricCollectionStartTime`(Facoltativo, Integer): l'ora di inizio della query metrica, calcolata come T-Time. metricCollectionStart Deve essere maggiore o uguale a. metricCollectionPeriod Impostazione predefinita: 300 secondi.
+ `metricCollectionPeriod` (Facoltativo, Numero intero): la durata della query della metrica in secondi. Deve essere un valore CloudWatch supportato (1, 5, 10, 30 o un multiplo di 60). Impostazione predefinita: 300 secondi.
+ `metricStat`(Facoltativo, String): il tipo di statistica per la CloudWatch query. Default: `Average`.
+ `metricType` (Facoltativo, Stringa): definisce il modo in cui la metrica viene utilizzata per i calcoli di dimensionamento. Default: `Average`. Valori consentiti: `Average` e `Value`.
  + **Media**: repliche desiderate = ceil (valore metrica)/(targetValue)
  + **Valore**: repliche desiderate = (repliche correnti) × ceil (valore metrica)/(targetValue)

`prometheusTrigger`  
La configurazione dei trigger per le metriche di Amazon Managed Prometheus (AMP) utilizzate nelle decisioni di dimensionamento automatico. In `prometheusTrigger` sono disponibili i seguenti campi:  
+ `name`(Facoltativo, String): nome del CloudWatch trigger. Se non viene fornito, utilizza il formato predefinito: < model-deployment-name >-scaled-object-cloudwatch-trigger.
+ `useCachedMetrics` (Facoltativo, Booleano): determina se memorizzare nella cache le metriche richieste da KEDA. KEDA esegue query sulle metriche utilizzando pollingInterval, mentre Horizontal Pod Autoscaler (HPA) richiede le metriche da KEDA ogni 15 secondi. Se impostata su true, le metriche sottoposte a query vengono memorizzate nella cache e utilizzate per soddisfare le richieste HPA. Default: true.
+ `serverAddress` (Obbligatorio, Stringa): l’indirizzo del server AMP. È necessario utilizzare il formato: <https://aps-workspaces.<region>.amazonaws.com/workspaces/<workspace\$1id>
+ `query` (Obbligatorio, Stringa): la query PromQL utilizzata per la metrica. Deve restituire un valore scalare.
+ `targetValue`(Obbligatorio, Float): il valore target per la CloudWatch metrica utilizzata nelle decisioni di scalabilità automatica.
+ `activationTargetValue`(Facoltativo, Float): il valore target per la CloudWatch metrica utilizzata durante la scalatura da 0 a 1 pod. Si applica solo quando `minReplicaCount` è impostato su 0. Impostazione predefinita: 0.
+ `namespace` (Facoltativo, Stringa): il namespace da utilizzare per le query con namespace. Impostazione predefinita: stringa vuota (`""`).
+ `customHeaders` (Facoltativo, Stringa): intestazioni personalizzate da includere quando si esegue una query sull’endpoint Prometheus. Impostazione predefinita: stringa vuota (“”).
+ `metricType` (Facoltativo, Stringa): definisce il modo in cui la metrica viene utilizzata per i calcoli di dimensionamento. Default: `Average`. Valori consentiti: `Average` e `Value`.
  + **Media**: repliche desiderate = ceil (valore metrica)/(targetValue)
  + **Valore**: repliche desiderate = (repliche correnti) × ceil (valore metrica)/(targetValue)

## Utilizzo delle definizioni yaml KEDA ScaledObject tramite kubectl
<a name="sagemaker-hyperpod-model-deployment-autoscaling-kubectl"></a>

Oltre a configurare la scalabilità automatica tramite la autoScalingSpec sezione YAML della distribuzione, è possibile creare e applicare definizioni KEDA YAML autonome utilizzando kubectl. `ScaledObject`

Questo approccio offre una maggiore flessibilità in scenari di dimensionamento complessi e consente di gestire le policy di dimensionamento automatico indipendentemente dalle implementazioni dei modelli. `ScaledObject`Le configurazioni KEDA supportano un'[ampia gamma di trigger di scalabilità tra cui metriche](https://keda.sh/docs/2.17/scalers/), lunghezze delle code Amazon SQS CloudWatch , query Prometheus e metriche basate sulle risorse come l'utilizzo della CPU e della memoria. È possibile applicare queste configurazioni alle implementazioni di modelli esistenti facendo riferimento al nome della distribuzione nella sezione delle specifiche. scaleTargetRef ScaledObject 

**Nota**  
Assicurati che il ruolo di operatore keda fornito durante l'installazione dell'operatore HyperPod Inference disponga delle autorizzazioni adeguate per interrogare le metriche definite nei trigger degli oggetti in scala.

### CloudWatch metriche
<a name="sagemaker-hyperpod-model-deployment-autoscaling-kubectl-cw"></a>

La seguente policy KEDA yaml utilizza le CloudWatch metriche come trigger per eseguire la scalabilità automatica su una distribuzione Kubernetes. La policy esegue query sul numero di invocazioni per un endpoint SageMaker e dimensiona il numero di pod di implementazione. [L'elenco completo dei parametri supportati da KEDA per il trigger è disponibile all'indirizzo https://keda. `aws-cloudwatch` sh/docs/2.17/scalers/aws](https://keda.sh/docs/2.17/scalers/aws-cloudwatch/)-cloudwatch/.

```
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: invocations-scaledobject # name of the scaled object that will be created by this
  namespace: ns-team-a # namespace that this scaled object targets
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: $DEPLOYMENT_NAME # name of the model deployment
  minReplicaCount: 1 # minimum number of pods to be maintained
  maxReplicaCount: 4 # maximum number of pods to scale to
  pollingInterval: 10
  triggers:
  - type: aws-cloudwatch
    metadata:
      namespace: AWS/SageMaker
      metricName: Invocations
      targetMetricValue: "1"
      minMetricValue: "1"
      awsRegion: "us-west-2"
      dimensionName: EndpointName;VariantName
      dimensionValue: $ENDPOINT_NAME;$VARIANT_NAME
      metricStatPeriod: "30" # seconds
      metricStat: "Sum"
      identityOwner: operator
```

### Metriche Amazon SQS
<a name="sagemaker-hyperpod-model-deployment-autoscaling-kubectl-sqs"></a>

La policy yaml KEDA seguente utilizza le metriche di Amazon SQS come trigger per eseguire il dimensionamento automatico su un’implementazione Kubernetes. La policy esegue query sul numero di invocazioni per un endpoint SageMaker e dimensiona il numero di pod di implementazione. [L'elenco completo dei parametri supportati da KEDA per il `aws-cloudwatch` trigger è disponibile all'indirizzo https://keda. sh/docs/2.17/scalers/aws](https://keda.sh/docs/2.17/scalers/aws-sqs/)-sqs/.

```
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: invocations-scaledobject # name of the scaled object that will be created by this
  namespace: ns-team-a # namespace that this scaled object targets
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: $DEPLOYMENT_NAME # name of the model deployment
  minReplicaCount: 1 # minimum number of pods to be maintained
  maxReplicaCount: 4 # maximum number of pods to scale to
  pollingInterval: 10
  triggers:
  - type: aws-sqs-queue
    metadata:
      queueURL: https://sqs.eu-west-1.amazonaws.com/account_id/QueueName
      queueLength: "5"  # Default: "5"
      awsRegion: "us-west-1"
      scaleOnInFlight: true
      identityOwner: operator
```

### Parametri Prometheus
<a name="sagemaker-hyperpod-model-deployment-autoscaling-kubectl-prometheus"></a>

La policy yaml KEDA seguente utilizza le metriche di Prometheus come trigger per eseguire il dimensionamento automatico su un’implementazione Kubernetes. La policy esegue query sul numero di invocazioni per un endpoint SageMaker e dimensiona il numero di pod di implementazione. [L'elenco completo dei parametri supportati da KEDA per il `aws-cloudwatch` trigger è disponibile all'indirizzo https://keda. sh/docs/2.17/scalers/prometheus](https://keda.sh/docs/2.17/scalers/prometheus/)/.

```
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: invocations-scaledobject # name of the scaled object that will be created by this
  namespace: ns-team-a # namespace that this scaled object targets
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: $DEPLOYMENT_NAME # name of the model deployment
  minReplicaCount: 1 # minimum number of pods to be maintained
  maxReplicaCount: 4 # maximum number of pods to scale to
  pollingInterval: 10
  triggers:
  - type: prometheus
    metadata:
      serverAddress: http://<prometheus-host>:9090
      query: avg(rate(http_requests_total{deployment="$DEPLOYMENT_NAME"}[2m])) # Note: query must return a vector/scalar single element response
      threshold: '100.50'
      namespace: example-namespace  # for namespaced queries, eg. Thanos
      customHeaders: X-Client-Id=cid,X-Tenant-Id=tid,X-Organization-Id=oid # Optional. Custom headers to include in query. In case of auth header, use the custom authentication or relevant authModes.
      unsafeSsl: "false" #  Default is `false`, Used for skipping certificate check when having self-signed certs for Prometheus endpoint    
      timeout: 1000 # Custom timeout for the HTTP client used in this scaler
      identityOwner: operator
```

### Parametri CPU
<a name="sagemaker-hyperpod-model-deployment-autoscaling-kubectl-cpu"></a>

La policy yaml KEDA seguente utilizza le metriche cpu come trigger per eseguire il dimensionamento automatico su un’implementazione Kubernetes. La policy esegue query sul numero di invocazioni per un endpoint SageMaker e dimensiona il numero di pod di implementazione. L'elenco completo dei parametri supportati da KEDA per il `aws-cloudwatch` trigger è disponibile all'[indirizzo https://keda. sh/docs/2.17/scalers/prometheus](https://keda.sh/docs/2.17/scalers/prometheus/)/.

```
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: invocations-scaledobject # name of the scaled object that will be created by this
  namespace: ns-team-a # namespace that this scaled object targets
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: $DEPLOYMENT_NAME # name of the model deployment
  minReplicaCount: 1 # minimum number of pods to be maintained
  maxReplicaCount: 4 # maximum number of pods to scale to
  pollingInterval: 10
  triggers:
  - type: cpu
    metricType: Utilization # Allowed types are 'Utilization' or 'AverageValue'
    metadata:
        value: "60"
        containerName: "" # Optional. You can use this to target a specific container
```

### Parametri della memoria
<a name="sagemaker-hyperpod-model-deployment-autoscaling-kubectl-memory"></a>

La policy yaml KEDA seguente utilizza la query delle metriche Prometheus come trigger per eseguire il dimensionamento automatico su un’implementazione Kubernetes. La policy esegue query sul numero di invocazioni per un endpoint SageMaker e dimensiona il numero di pod di implementazione. L'elenco completo dei parametri supportati da KEDA per il `aws-cloudwatch` trigger è disponibile all'[indirizzo https://keda. sh/docs/2.17/scalers/prometheus](https://keda.sh/docs/2.17/scalers/prometheus/)/.

```
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: invocations-scaledobject # name of the scaled object that will be created by this
  namespace: ns-team-a # namespace that this scaled object targets
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: $DEPLOYMENT_NAME # name of the model deployment
  minReplicaCount: 1 # minimum number of pods to be maintained
  maxReplicaCount: 4 # maximum number of pods to scale to
  pollingInterval: 10
  triggers:
  - type: memory
    metricType: Utilization # Allowed types are 'Utilization' or 'AverageValue'
    metadata:
        value: "60"
        containerName: "" # Optional. You can use this to target a specific container in a pod
```

## Policy Prometheus di esempio per la riduzione verticale a 0 pod
<a name="sagemaker-hyperpod-model-deployment-autoscaling-kubectl-sample"></a>

La policy yaml KEDA seguente utilizza la query delle metriche Prometheus come trigger per eseguire il dimensionamento automatico su un’implementazione Kubernetes. Questa policy utilizza `minReplicaCount` pari a 0 che consente a KEDA di ridurre verticalmente l’implementazione fino a 0 pod. Quando `minReplicaCount` è impostato su 0, è necessario fornire un criterio di attivazione per far apparire il primo pod, dopo che i pod sono stati ridotti verticalmente a 0. Per il trigger Prometheus, questo valore è fornito da `activationThreshold`. Per la coda SQS, il valore proviene da `activationQueueLength`.

**Nota**  
Quando utilizzi `minReplicaCount` pari a 0, assicurati che l’attivazione non dipenda da una metrica generata dai pod. Quando i pod vengono ridotti verticalmente a 0, tale metrica non verrà mai generata e i pod non verranno più aumentati verticalmente.

```
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: invocations-scaledobject # name of the scaled object that will be created by this
  namespace: ns-team-a # namespace that this scaled object targets
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: $DEPLOYMENT_NAME # name of the model deployment
  minReplicaCount: 0 # minimum number of pods to be maintained
  maxReplicaCount: 4 # maximum number of pods to scale to
  pollingInterval: 10
  cooldownPeriod:  30
  initialCooldownPeriod:  180 # time before scaling down the pods after initial deployment
  triggers:
  - type: prometheus
    metadata:
      serverAddress: http://<prometheus-host>:9090
      query: sum(rate(http_requests_total{deployment="my-deployment"}[2m])) # Note: query must return a vector/scalar single element response
      threshold: '100.50'
      activationThreshold: '5.5' # Required if minReplicaCount is 0 for initial scaling
      namespace: example-namespace
      timeout: 1000
      identityOwner: operator
```

**Nota**  
I trigger della CPU e della memoria possono essere ridotti a 0 solo quando viene definito almeno uno scaler aggiuntivo non di tipo CPU o memoria (ad esempio SQS \$1 CPU o Prometheus \$1 CPU). 

# Implementazione dell'osservabilità inferenziale sui cluster HyperPod
<a name="sagemaker-hyperpod-model-deployment-observability"></a>

Amazon SageMaker HyperPod offre funzionalità complete di osservabilità dell'inferenza che consentono ai data scientist e agli ingegneri di machine learning di monitorare e ottimizzare i modelli distribuiti. [https://prometheus.io/](https://prometheus.io/)

Con le metriche abilitate per impostazione predefinita, la piattaforma acquisisce i dati essenziali sulle prestazioni del modello, tra cui latenza di invocazione, richieste simultanee, tassi di errore e metriche a livello di token, fornendo al contempo endpoint Prometheus standard per i clienti che preferiscono implementare soluzioni di osservabilità personalizzate.

**Nota**  
Questo argomento contiene un'analisi approfondita dell'implementazione dell'osservabilità inferenziale sui cluster. HyperPod Per una panoramica più generale, consulta [Osservabilità di cluster e attività](sagemaker-hyperpod-eks-cluster-observability-cluster.md).

Questa guida fornisce step-by-step istruzioni per implementare e utilizzare l'osservabilità inferenziale sui cluster. HyperPod Scoprirai come configurare le metriche nei file YAML di implementazione, accedere alle dashboard di monitoraggio in base al tuo ruolo (amministratore, Data Scientist o ingegnere di machine learning), integrarti con soluzioni di osservabilità personalizzate che utilizzano gli endpoint Prometheus e risolvere i problemi di monitoraggio più comuni.

## Metriche di inferenza supportate
<a name="sagemaker-hyperpod-model-deployment-observability-metrics"></a>

**Parametri di invocazione**

Queste metriche acquisiscono i dati di richiesta e risposta per l’inferenza del modello, fornendo una visibilità universale indipendentemente dal tipo di modello o dal framework di servizio. Quando le metriche di inferenza sono abilitate, queste metriche vengono calcolate al momento dell’invocazione ed esportate nell’infrastruttura di monitoraggio.
+ `model_invocations_total`: numero totale di richieste di invocazione al modello 
+ `model_errors_total`: numero totale di errori durante l’invocazione del modello
+ `model_concurrent_requests`: richieste di modelli simultanee attive
+ `model_latency_milliseconds`: latenza di invocazione del modello in millisecondi
+ `model_ttfb_milliseconds`: latenza del tempo al primo byte (Time To First Byte, TTFB) del modello in millisecondi

**Metriche del container del modello**

Queste metriche forniscono informazioni approfondite sulle operazioni interne dei container del modello, tra cui l’elaborazione dei token, la gestione delle code e gli indicatori di prestazione specifici del framework. Le metriche disponibili dipendono dal framework di servizio del modello:
+ [Metriche dei container TGI](https://huggingface.co/docs/text-generation-inference/en/reference/metrics) 
+ [Metriche dei container LMI](https://github.com/deepjavalibrary/djl-serving/blob/master/prometheus/README.md) 

**Dimensioni metrica**

Tutte le metriche di inferenza includono etichette complete che consentono di filtrare e analizzare in dettaglio tutte le implementazioni:
+ **Identità del cluster:**
  + `cluster_id`- L'ID univoco del cluster HyperPod
  + `cluster_name`- Il nome del HyperPod cluster
+ **Identità della risorsa:**
  + `resource_name`- Nome della distribuzione (ad esempio, "jumpstart-model-deployment«)
  + `resource_type`: tipo di implementazione (jumpstart, inference-endpoint)
  + `namespace`: namespace Kubernetes per multi-tenancy
+ **Caratteristiche del modello:**
  + `model_name`: identificatore specifico del modello (ad esempio, “llama-2-7b-chat”)
  + `model_version`- Versione del modello per A/B test e rollback
  + `model_container_type`: framework di servizio (TGI, LMI, -)
+ **Contesto dell’infrastruttura:**
  + `pod_name`: identificatore di pod individuale per il debug
  + `node_name`: nodo Kubernetes per la correlazione delle risorse
  + `instance_type`: tipo di istanza EC2 per l’analisi dei costi
+ **Contesto operativo:**
  + `metric_source`: punto di raccolta (reverse-proxy, model-container)
  + `task_type`: classificazione del carico di lavoro (inferenza)

## Configurazione delle metriche nel file YAML di implementazione
<a name="sagemaker-hyperpod-model-deployment-observability-yaml"></a>

Amazon SageMaker HyperPod abilita le metriche di inferenza per impostazione predefinita per tutte le implementazioni di modelli, fornendo un'osservabilità immediata senza configurazioni aggiuntive. Puoi personalizzare il comportamento delle metriche modificando la configurazione YAML di implementazione per abilitare o disabilitare la raccolta delle metriche in base ai tuoi requisiti specifici.

**Implementa un modello da JumpStart**

Utilizza la seguente configurazione YAML per distribuire un JuJumpStartmpStart modello con le metriche abilitate:

```
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: JumpStartModel
metadata:
  name:mistral-model
  namespace: ns-team-a
spec:
  model:
    modelId: "huggingface-llm-mistral-7b-instruct"
    modelVersion: "3.19.0"
  metrics:
    enabled:true # Default: true (can be set to false to disable)
  replicas: 2
  sageMakerEndpoint:
    name: "mistral-model-sm-endpoint"
  server:
    instanceType: "ml.g5.12xlarge"
    executionRole: "arn:aws:iam::123456789:role/SagemakerRole"
  tlsConfig:
    tlsCertificateOutputS3Uri: s3://hyperpod/mistral-model/certs/
```

**Distribuisci modelli personalizzati e ottimizzati da Amazon S3 o Amazon FSx**

Configura endpoint di inferenza personalizzati con impostazioni delle metriche dettagliate utilizzando il file YAML seguente:

```
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: JumpStartModel
metadata:
  name:mistral-model
  namespace: ns-team-a
spec:
  model:
    modelId: "huggingface-llm-mistral-7b-instruct"
    modelVersion: "3.19.0"
  metrics:
    enabled:true # Default: true (can be set to false to disable)
  replicas: 2
  sageMakerEndpoint:
    name: "mistral-model-sm-endpoint"
  server:
    instanceType: "ml.g5.12xlarge"
    executionRole: "arn:aws:iam::123456789:role/SagemakerRole"
  tlsConfig:
    tlsCertificateOutputS3Uri: s3://hyperpod/mistral-model/certs/

Deploy a custom inference endpoint

Configure custom inference endpoints with detailed metrics settings using the following YAML:

apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: InferenceEndpointConfig
metadata:
  name: inferenceendpoint-deepseeks
  namespace: ns-team-a
spec:
  modelName: deepseeks
  modelVersion: 1.0.1
  metrics:
    enabled: true # Default: true (can be set to false to disable)
    metricsScrapeIntervalSeconds: 30 # Optional: if overriding the default 15s
    modelMetricsConfig:
        port: 8000 # Optional: if overriding, it defaults to the WorkerConfig.ModelInvocationPort.ContainerPort within the InferenceEndpointConfig spec 8080
        path: "/custom-metrics" # Optional: if overriding the default "/metrics"
  endpointName: deepseek-sm-endpoint
  instanceType: ml.g5.12xlarge
  modelSourceConfig:
    modelSourceType: s3
    s3Storage:
      bucketName: model-weights
      region: us-west-2
    modelLocation: deepseek
    prefetchEnabled: true
  invocationEndpoint: invocations
  worker:
    resources:
      limits:
        nvidia.com/gpu: 1
      requests:
        nvidia.com/gpu: 1
        cpu: 25600m
        memory: 102Gi
    image: 763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:0.32.0-lmi14.0.0-cu124
    modelInvocationPort:
      containerPort: 8080
      name: http
    modelVolumeMount:
      name: model-weights
      mountPath: /opt/ml/model
    environmentVariables: ...
  tlsConfig:
    tlsCertificateOutputS3Uri: s3://hyperpod/inferenceendpoint-deepseeks4/certs/
```

**Nota**  
Per disabilitare le metriche per implementazioni specifiche, imposta `metrics.enabled: false` nella configurazione YAML.

## Monitoraggio e risoluzione dei problemi relativi ai carichi di lavoro di inferenza per ruolo
<a name="sagemaker-hyperpod-model-deployment-observability-role"></a>

Amazon SageMaker HyperPod offre funzionalità di osservabilità complete che supportano diversi flussi di lavoro degli utenti, dalla configurazione iniziale del cluster alla risoluzione avanzata dei problemi delle prestazioni. Utilizza le indicazioni seguenti in base al tuo ruolo e ai requisiti di monitoraggio.

**HyperPod amministratore**

**Responsabilità:** abilita l’infrastruttura di osservabilità e garantisci l’integrità del sistema nell’intero cluster.

**Cosa devi sapere:**
+ L’osservabilità a livello di cluster fornisce metriche dell’infrastruttura per tutti i carichi di lavoro
+ La configurazione con un solo clic implementa lo stack di monitoraggio con dashboard preconfigurate
+ Le metriche dell’infrastruttura sono separate dalle metriche di inferenza specifiche del modello

**Cosa devi fare:**

1. Vai alla HyperPod console.

1. Selezionare il cluster.

1. Vai alla pagina dei dettagli del HyperPod cluster che hai appena creato. Vedrai una nuova opzione per installare il componente aggiuntivo HyperPod observability.

1. Fai clic sull’opzione **Installazione rapida**. Dopo 1-2 minuti, una volta completate tutte le fasi, vedrai la dashboard di Grafana e i dettagli dello spazio di lavoro di Prometheus.

Questa singola azione implementa automaticamente il componente aggiuntivo EKS, configura gli operatori di osservabilità e alloca dashboard predefinite in Grafana.

**Data Scientist**

**Responsabilità:** implementa i modelli in modo efficiente e monitora le loro prestazioni di base.

**Cosa devi sapere:**
+ Le metriche vengono abilitate automaticamente quando si distribuiscono i modelli
+ Le dashboard Grafana offrono una visibilità immediata sulle prestazioni del modello
+ Puoi filtrare le dashboard per concentrarti sulle tue implementazioni specifiche

**Cosa devi fare:**

1. Implementa il modello con il tuo metodo preferito:

   1. Interfaccia utente di Amazon SageMaker Studio

   1. HyperPod Comandi CLI

   1. Python SDK nei notebook

   1. kubectl con configurazioni YAML

1. Accedi alle metriche del modello:

   1. Apri Amazon SageMaker Studio

   1. Vai a HyperPod Cluster e apri Grafana Dashboard

   1. Seleziona Dashboard di inferenza

   1. Applica i filtri per visualizzare l’implementazione del tuo modello specifico

1. Monitora gli indicatori chiave delle prestazioni:

   1. Monitora la latenza e il throughput del modello

   1. Monitora i tassi di errore e la disponibilità

   1. Esamina le tendenze di utilizzo delle risorse

Al termine, avrai una visibilità immediata sulle prestazioni del modello senza configurazioni aggiuntive, che ti consente di identificare rapidamente i problemi di implementazione o le modifiche alle prestazioni.

**Ingegnere di machine learning engineer**

**Responsabilità:** mantieni le prestazioni del modello di produzione e risolvi i problemi di prestazioni complessi.

**Cosa devi sapere:**
+ Le metriche avanzate includono dettagli sul container del modello, come la profondità della coda e le metriche dei token
+ L’analisi di correlazione tra più tipi di metriche rivela le cause principali
+ Le configurazioni con dimensionamento automatico influiscono direttamente sulle prestazioni durante i picchi di traffico

**Scenario ipotetico:** il modello di chat di un cliente dà risposte lente e intermittenti. Gli utenti lamentano ritardi di 5-10 secondi. MLE può sfruttare l’osservabilità dell’inferenza per un’indagine sistematica delle prestazioni.

**Cosa devi fare:**

1. Esamina la dashboard Grafana per comprendere la portata e la gravità del problema relativo alle prestazioni:

   1. Avviso di alta latenza attivo dalle 9:30

   1. Latenza P99: 8,2 s (normale: 2,1 s)

   1. Finestra di tempo interessata: 9:30-10:15 (45 minuti)

1. Correla più metriche per comprendere il comportamento del sistema durante l’incidente:

   1. Richieste simultanee: picco di 45 (normale: 15-20)

   1. Dimensionamento dei pod: KEDA ha aumentato i pod da 2 a 5 durante l’incidente

   1. Utilizzo della GPU: è rimasto normale (85-90%)

   1. Utilizzo della memoria: normale (24 GB/32 GB)

1. Esamina il comportamento del sistema distribuito, visto che le metriche dell’infrastruttura sembrano normali:

   1. Visualizzazione a livello di nodo: tutti i pod sono concentrati sullo stesso nodo (distribuzione scadente)

   1. Metriche del container del modello: la profondità della coda TGI mostra 127 richieste (normale: 5-10)

   ```
   Available in Grafana dashboard under "Model Container Metrics" panel
           Metric: tgi_queue_size{resource_name="customer-chat-llama"}
           Current value: 127 requests queued (indicates backlog)
   ```

1. Identifica i problemi di configurazione interconnessi:

   1. Policy di dimensionamento KEDA: troppo lenta (intervallo di polling di 30 secondi)

   1. Cronologia di dimensionamento: la risposta di dimensionamento è rimasta indietro rispetto al picco di traffico di oltre 45 secondi

1. Implementa correzioni mirate basate sull’analisi:

   1. Intervallo di polling KEDA aggiornato: da 30 s a 15 s

   1. maxReplicas aumentato nella configurazione di dimensionamento

   1. Soglie di dimensionamento regolate per anticipare il dimensionamento (15 richieste simultanee invece di 20)

Puoi diagnosticare sistematicamente problemi complessi relativi alle prestazioni utilizzando metriche complete, implementare correzioni mirate e stabilire misure preventive per garantire prestazioni costanti del modello di produzione.

## Implementazione della tua integrazione dell’osservabilità
<a name="sagemaker-hyperpod-model-deployment-observability-diy"></a>

Amazon SageMaker HyperPod espone i parametri di inferenza tramite endpoint Prometheus standard del settore, abilitando l'integrazione con l'infrastruttura di osservabilità esistente. Utilizza questo approccio quando preferisci implementare soluzioni di monitoraggio personalizzate o integrare piattaforme di osservabilità di terze parti invece di utilizzare lo stack Grafana e Prometheus integrato.

**Accesso agli endpoint delle metriche di inferenza**

**Cosa devi sapere:**
+ Le metriche di inferenza vengono esposte automaticamente su endpoint Prometheus standardizzati
+ Le metriche sono disponibili indipendentemente dal tipo di modello o dal framework di servizio
+ Per la raccolta dei dati si applicano le procedure di scraping standard di Prometheus

**Configurazione degli endpoint per le metriche di inferenza:**
+ **Porta**: 9113
+ **Percorso:** /metrics
+ **Endpoint completo:** http://pod-ip:9113/metrics

**Metriche di inferenza disponibili:**
+ `model_invocations_total`: numero totale di richieste di invocazione al modello
+ `model_errors_total`: numero totale di errori durante l’invocazione del modello
+ `model_concurrent_requests`: richieste simultanee attive per modello
+ `model_latency_milliseconds`: latenza di invocazione del modello in millisecondi
+ `model_ttfb_milliseconds`: latenza del tempo al primo byte (Time To First Byte, TTFB) del modello in millisecondi

**Accesso alle metriche del container del modello**

**Cosa devi sapere:**
+ I container del modello espongono metriche aggiuntive specifiche per il proprio framework di servizio
+ Queste metriche forniscono informazioni interne sui container, come l’elaborazione dei token e la profondità della coda
+ La configurazione degli endpoint varia in base al tipo di container del modello

**Per JumpStart le implementazioni di modelli utilizzando contenitori Text Generation Inference (TGI):**
+ **Porta:** 8080 (porta del container del modello)
+ **Percorso:** /metrics
+ **Documentazione: https://huggingface.** [ co/docs/text-generation-inference/en/reference/metrics](https://huggingface.co/docs/text-generation-inference/en/reference/metrics)

**Per le implementazioni di JumpStart modelli che utilizzano contenitori Large Model Inference (LMI):**
+ **Porta:** 8080 (porta del container del modello)
+ **Percorso:** /server/metrics
+ **Documentazione**[: djl- .md https://github.com/deepjavalibrary/ serving/blob/master/prometheus/README](https://github.com/deepjavalibrary/djl-serving/blob/master/prometheus/README.md)

**Per gli endpoint di inferenza personalizzati (BYOD):**
+ **Porta:** configurata dal cliente (impostazione predefinita: 8080. Il valore predefinito è. WorkerConfig ModelInvocationPort. ContainerPort all'interno delle InferenceEndpointConfig specifiche.)
+ **Percorso:** configurato dal cliente (default/metrics)

**Implementazione dell’integrazione personalizzata dell’osservabilità**

Con un’integrazione dell’osservabilità personalizzata, sei responsabile di:

1. **Scraping metriche:** implementa lo scraping compatibile con Prometheus dagli endpoint precedenti

1. **Esportazione dei dati:** configura l’esportazione verso la piattaforma di osservabilità prescelta

1. **Avvisi:** imposta le regole di avviso in base ai tuoi requisiti operativi

1. **Dashboard:** crea dashboard di visualizzazione per le tue esigenze di monitoraggio

## Risoluzione dei problemi di osservabilità dell’inferenza
<a name="sagemaker-hyperpod-model-deployment-observability-troubleshoot"></a>

**La dashboard non mostra dati**

Se la dashboard Grafana è vuota e tutti i pannelli mostrano il messaggio “Nessun dato”, procedi come segue per indagare:

1. Verifica che l’amministratore abbia installato l’osservabilità dell’inferenza:

   1. Passa a HyperPod Console > Seleziona cluster > Controlla se lo stato «Osservabilità» mostra «Abilitato»

   1. Verifica che il link allo spazio di lavoro Grafana sia accessibile dalla panoramica del cluster

   1. Verifica che lo spazio di lavoro Amazon Managed Prometheus sia configurato e riceva dati

1. Verifica che l' HyperPod osservabilità sia abilitata:

   ```
   hyp observability view      
   ```

1. Verifica che le metriche del modello siano abilitate:

   ```
   kubectl get jumpstartmodel -n <namespace> customer-chat-llama -o jsonpath='{.status.metricsStatus}' # Expected: enabled: true, state:Enabled       
   ```

   ```
   kubectl get jumpstartmodel -n <namespace> customer-chat-llama -o jsonpath='{.status.metricsStatus}' # Expected: enabled: true, state:Enabled        
   ```

1. Controlla l’endpoint delle metriche:

   ```
   kubectl port-forward pod/customer-chat-llama-xxx 9113:9113
   curl localhost:9113/metrics | grep model_invocations_total# Expected: model_invocations_total{...} metrics
   ```

1. Controlla i log:

   ```
   # Model Container
   kubectl logs customer-chat-llama-xxx -c customer-chat-llama# Look for: OOM errors, CUDA errors, model loading failures
   
   # Proxy/SideCar
   kubectl logs customer-chat-llama-xxx -c sidecar-reverse-proxy# Look for: DNS resolution issues, upstream connection failures
   
   # Metrics Exporter Sidecar
   kubectl logs customer-chat-llama-xxx -c otel-collector# Look for: Metrics collection issues, export failures
   ```

**Altri problemi comuni**


| Problema | Soluzione | Azione | 
| --- | --- | --- | 
|  L’osservabilità dell’inferenza non è installata  |  Installa l’osservabilità dell’inferenza dalla console  |  «Abilita l'osservabilità» nella console HyperPod   | 
|  Metriche disabilitate nel modello  |  Aggiorna la configurazione del modello  |  Aggiungi `metrics: {enabled: true}` alle specifiche del modello  | 
|  Spazio di lavoro AMP non configurato  |  Correggi la connessione all’origine dati  |  Verifica l’ID dello spazio di lavoro AMP nelle origini dati Grafana  | 
|  La connettività di rete  |  Controlla i gruppi di sicurezza/ NACLs  |  Assicurati che i pod possano raggiungere gli endpoint AMP  | 

# Governance delle attività per l'implementazione del modello su HyperPod
<a name="sagemaker-hyperpod-model-deployment-task-gov"></a>

Questa sezione spiega come ottimizzare i cluster Amazon SageMaker HyperPod EKS condivisi per carichi di lavoro di inferenza in tempo reale. Imparerai a configurare le funzionalità di governance delle attività di Kueue, tra cui la gestione delle quote, la pianificazione delle priorità e le policy di condivisione delle risorse, per garantire che i carichi di lavoro di inferenza ottengano le risorse GPU di cui hanno bisogno durante i picchi di traffico, mantenendo al tempo stesso un’equa allocazione tra le attività di addestramento, valutazione e test dei tuoi team. Per informazioni più generali sulla governance delle attività, consulta [SageMaker HyperPod governance delle attività](sagemaker-hyperpod-eks-operate-console-ui-governance.md).

## Come funziona la gestione dei carichi di lavoro di inferenza
<a name="sagemaker-hyperpod-model-deployment-task-gov-how"></a>

Per gestire efficacemente i picchi di traffico di inferenza in tempo reale nei cluster HyperPod EKS condivisi, implementa le seguenti strategie di governance delle attività utilizzando le funzionalità esistenti di Kueue.

**Configurazione della classe di priorità**

Definisci classi di priorità dedicate per i carichi di lavoro di inferenza con pesi elevati (ad esempio 100) per garantire che i pod di inferenza siano ammessi e pianificati prima di altri tipi di attività. Questa configurazione consente ai carichi di lavoro di inferenza di rendere prerilasciabili i processi con priorità più bassa durante il caricamento del cluster, il che è fondamentale per mantenere i requisiti di bassa latenza durante i picchi di traffico.

**Dimensionamento e allocazione delle quote**

Riserva al tuo team risorse GPU sufficienti in `ClusterQueue` per gestire i picchi di inferenza previsti. Durante i periodi con poco traffico di inferenza, le quote di risorse inutilizzate possono essere temporaneamente allocate alle attività di altri team. Quando la domanda di inferenza aumenta, le risorse prese in prestito possono essere recuperate per dare priorità ai pod di inferenza in sospeso. Per ulteriori informazioni, consulta [Cluster Queue](https://kueue.sigs.k8s.io/docs/concepts/cluster_queue/).

**Strategie di condivisione delle risorse**

Scegli tra due approcci di condivisione delle quote in base alle tue esigenze:

1. **Controllo rigoroso delle risorse:** disabilita la funzionalità per prendere e dare in prestito le quote per garantire che la capacità GPU riservata sia sempre disponibile per i tuoi carichi di lavoro. Questo approccio richiede quote con dimensioni piuttosto ampie per gestire in modo indipendente i picchi di domanda e può comportare l’inattività dei nodi durante i periodi di traffico ridotto.

1. **Condivisione flessibile delle risorse:** abilita la funzionalità per prendere in prestito le quote per utilizzare le risorse inattive di altri team quando necessario. I pod presi in prestito sono contrassegnati come prerilasciabili e possono essere eliminati se il team che li ha prestati reclama la capacità.

**Prelazione all’interno del team**

Abilita la prelazione all’interno del team quando esegui carichi di lavoro misti (valutazione, addestramento e inferenza) nell’ambito della stessa quota. Ciò consente a Kueue di prerilasciare i processi a bassa priorità all’interno del team per ospitare pod di inferenza ad alta priorità, garantendo che l’inferenza in tempo reale possa essere eseguita senza dipendere dal prestito di quote esterne. Per ulteriori informazioni, consulta [Prelazione](https://kueue.sigs.k8s.io/docs/concepts/preemption/).

## Esempio di configurazione del carico di lavoro di inferenza
<a name="sagemaker-hyperpod-model-deployment-task-gov-example"></a>

L'esempio seguente mostra come Kueue gestisce le risorse GPU in un cluster Amazon condiviso. SageMaker HyperPod 

**Configurazione del cluster e impostazione delle policy**  
Il tuo cluster ha la configurazione seguente:
+ **Team A**: quota di 10 GPU P4
+ **Team B**: quota di 20 GPU P4
+ **Provisioning statico**: nessun dimensionamento automatico
+ **Capacità totale: 30** P4 GPUs

Il pool di GPU condiviso utilizza questa policy di priorità:

1. **Inferenza in tempo reale**: priorità 100

1. **Addestramento**: priorità 75

1. **Valutazione**: priorità 50

Kueue applica le quote del team e le classi di priorità, con la prelazione e il prestito di quote abilitati.

**Stato iniziale: utilizzo normale del cluster**  
Durante il normale funzionamento:
+ Il team A svolge attività di formazione e valutazione su tutti i 10 P4 GPUs
+ Il Team B esegue l’inferenza (10 P4) e la valutazione (10 P4) in tempo reale all’interno della sua quota di 20 GPU
+ Il cluster è completamente utilizzato e tutti i processi sono ammessi e in esecuzione

**Picco di inferenza: il Team B ne richiede altri GPUs**  
Quando il Team B subisce un picco di traffico, i pod di inferenza aggiuntivi richiedono altri 5 P4. GPUs Kueue rileva che i nuovi pod:
+ Sono all’interno del namespace del Team B
+ Hanno priorità 100 (inferenza in tempo reale)
+ Hanno l’ammissione in sospeso a causa di vincoli di quota

**Per la risposta, Kueue può scegliere tra due opzioni:**  
**Opzione 1: prestito di quote**. Se il Team A utilizza solo 6 dei suoi 10 P4, Kueue può ammettere i pod del Team B utilizzando i 4 P4 inattivi. Tuttavia, queste risorse prese in prestito sono prerilasciabili: se il Team A invia processi per raggiungere la sua quota massima, Kueue rilascia i pod di inferenza presi in prestito dal Team B.

**Opzione 2: auto-prelazione (consigliata)**. Il Team B esegue processi di valutazione a bassa priorità (priorità 50). Quando sono in attesa pod di inferenza ad alta priorità, Kueue interrompe i processi di valutazione inclusi nella quota del Team B e ammette i pod di inferenza. Questo approccio offre un’allocazione sicura delle risorse senza rischi esterni di espulsione.

Kueue segue un processo in tre fasi per l’allocazione delle risorse:

1. **Controllo delle quote**

   Domanda: il Team B ha una quota inutilizzata?
   + Sì → Ammetti i pod
   + No → Procedi alla Fase 2

1. **Auto-prelazione all’interno del Team B**

   Domanda: è possibile prerilasciare i processi del Team B con priorità più bassa?
   + Sì → Rendi prerilasciabili i processi di valutazione (priorità 50), libera 5 P4 e ammetti i pod di inferenza
   + No → Procedi alla Fase 3

   Questo approccio mantiene i carichi di lavoro entro la quota garantita del Team B, evitando rischi esterni di espulsione.

1. **Prestito da altri team**

   Domanda: c’è una quota inattiva che può essere presa in prestito da altri team?
   + Sì → Consenti l’utilizzo di una quota presa in prestito (contrassegnata come prerilasciabile)
   + No → Il pod rimane nello stato `NotAdmitted`

# HyperPod risoluzione dei problemi di inferenza
<a name="sagemaker-hyperpod-model-deployment-ts"></a>

Questa guida alla risoluzione dei problemi più comuni che possono verificarsi durante la distribuzione e il funzionamento di Amazon SageMaker HyperPod Inference. Questi problemi riguardano in genere la configurazione della rete VPC, le autorizzazioni IAM, la gestione delle risorse Kubernetes e i problemi di connettività degli operatori che possono impedire la corretta implementazione del modello o causare il fallimento delle implementazioni o il mantenimento di stati in sospeso.

**Questa guida alla risoluzione dei problemi utilizza la seguente terminologia: le procedure di **risoluzione dei problemi sono procedure** diagnostiche per identificare e analizzare i problemi, **Resolution** fornisce le azioni specifiche per risolvere i problemi identificati e Verification conferma che la soluzione ha funzionato correttamente.**

**Topics**
+ [Inferenza gli errori di installazione dell'operatore tramite la console AI SageMaker](sagemaker-hyperpod-model-deployment-ts-console-cfn-failures.md)
+ [Errori di installazione dell'operatore di inferenza tramite CLI AWS](sagemaker-hyperpod-model-deployment-ts-cli.md)
+ [Timeout per il download del certificato](sagemaker-hyperpod-model-deployment-ts-certificate.md)
+ [Problemi di distribuzione del modello](sagemaker-hyperpod-model-deployment-ts-deployment-issues.md)
+ [Rilascio dell'autorizzazione VPC ENI](sagemaker-hyperpod-model-deployment-ts-permissions.md)
+ [Problema di relazione fiduciaria IAM](sagemaker-hyperpod-model-deployment-ts-trust.md)
+ [Errore mancante del plug-in GPU NVIDIA](sagemaker-hyperpod-model-deployment-ts-gpu.md)
+ [L'operatore di inferenza non si avvia](sagemaker-hyperpod-model-deployment-ts-startup.md)

# Inferenza gli errori di installazione dell'operatore tramite la console AI SageMaker
<a name="sagemaker-hyperpod-model-deployment-ts-console-cfn-failures"></a>

**Panoramica:** quando si installa l'operatore di inferenza tramite la console SageMaker AI utilizzando Quick Install o Custom Install, gli CloudFormation stack sottostanti potrebbero non funzionare a causa di vari problemi. Questa sezione descrive gli scenari di errore più comuni e le relative risoluzioni.

## Errore di installazione del componente aggiuntivo Inference Operator tramite installazione rapida o personalizzata
<a name="sagemaker-hyperpod-model-deployment-ts-console-cfn-stack-failed"></a>

**Problema:** la creazione del HyperPod cluster viene completata correttamente, ma l'installazione del componente aggiuntivo dell'operatore di inferenza non riesce.

Cause comuni:
+ I limiti di capacità dei pod sono stati superati nei nodi del cluster. L'installazione dell'operatore di inferenza richiede un minimo di 13 pod. Il tipo di istanza minimo consigliato è. `ml.c5.4xlarge`
+ Problemi di autorizzazione IAM
+ Vincoli relativi alle quote di risorse
+ Problemi di configurazione della rete o del VPC

### Sintomi e diagnosi
<a name="sagemaker-hyperpod-model-deployment-ts-console-cfn-symptoms"></a>

**Caratteristiche:**
+ Il componente aggiuntivo dell'operatore di inferenza mostra lo stato CREATE\$1FAILED o DEGRADED nella console
+ CloudFormation lo stack associato al componente aggiuntivo è nello stato CREATE\$1FAILED
+ L'avanzamento dell'installazione si interrompe o mostra messaggi di errore

**Fasi di diagnostica:**

1. Controlla lo stato del componente aggiuntivo dell'operatore di inferenza:

   ```
   aws eks describe-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --region $REGION \
       --query "addon.{Status:status,Health:health,Issues:issues}" \
       --output json
   ```

1. Verifica la presenza di problemi relativi al limite dei pod:

   ```
   # Check current pod count per node
   kubectl get nodes -o json | jq '.items[] | {name: .metadata.name, allocatable: .status.allocatable.pods, capacity: .status.capacity.pods}'
   
   # Check pods running on each node
   kubectl get pods --all-namespaces -o wide | awk '{print $8}' | sort | uniq -c
   
   # Check for pod evictions or failures
   kubectl get events --all-namespaces --sort-by='.lastTimestamp' | grep -i "pod\|limit\|quota"
   ```

1. Controlla lo stato dello CloudFormation stack (se usi l'installazione della console):

   ```
   # List CloudFormation stacks related to the cluster
   aws cloudformation list-stacks \
       --region $REGION \
       --query "StackSummaries[?contains(StackName, '$EKS_CLUSTER_NAME') && StackStatus=='CREATE_FAILED'].{Name:StackName,Status:StackStatus,Reason:StackStatusReason}" \
       --output table
   
   # Get detailed stack events
   aws cloudformation describe-stack-events \
       --stack-name <stack-name> \
       --region $REGION \
       --query "StackEvents[?ResourceStatus=='CREATE_FAILED']" \
       --output table
   ```

### Risoluzione
<a name="sagemaker-hyperpod-model-deployment-ts-console-cfn-resolution"></a>

Per risolvere l'errore di installazione, salva la configurazione corrente, elimina il componente aggiuntivo non riuscito, correggi il problema sottostante e quindi reinstalla l'operatore di inferenza tramite la console SageMaker AI (consigliato) o la CLI. AWS 

**Passaggio 1: salvare la configurazione corrente**
+ Estrai e salva la configurazione del componente aggiuntivo prima dell'eliminazione:

  ```
  # Save the current configuration
  aws eks describe-addon \
      --cluster-name $EKS_CLUSTER_NAME \
      --addon-name amazon-sagemaker-hyperpod-inference \
      --region $REGION \
      --query 'addon.configurationValues' \
      --output text > addon-config-backup.json
  
  # Verify the configuration was saved
  cat addon-config-backup.json
  
  # Pretty print for readability
  cat addon-config-backup.json | jq '.'
  ```

**Passaggio 2: Eliminare il componente aggiuntivo non riuscito**
+ Elimina il componente aggiuntivo dell'operatore di inferenza:

  ```
  aws eks delete-addon \
      --cluster-name $EKS_CLUSTER_NAME \
      --addon-name amazon-sagemaker-hyperpod-inference \
      --region $REGION
  
  # Wait for deletion to complete
  echo "Waiting for add-on deletion..."
  aws eks wait addon-deleted \
      --cluster-name $EKS_CLUSTER_NAME \
      --addon-name amazon-sagemaker-hyperpod-inference \
      --region $REGION 2>/dev/null || sleep 60
  ```

**Passaggio 3: Risolvi il problema sottostante**

Scegli la risoluzione appropriata in base alla causa dell'errore:

Se il problema è il superamento del limite del pod:

```
# The inference operator requires a minimum of 13 pods.
# The minimum recommended instance type is ml.c5.4xlarge.
#
# Option 1: Add instance group with higher pod capacity
# Different instance types support different maximum pod counts
# For example: m5.large (29 pods), m5.xlarge (58 pods), m5.2xlarge (58 pods)
aws sagemaker update-cluster \
    --cluster-name $HYPERPOD_CLUSTER_NAME \
    --region $REGION \
    --instance-groups '[{"InstanceGroupName":"worker-group-2","InstanceType":"ml.m5.xlarge","InstanceCount":2}]'

# Option 2: Scale existing node group to add more nodes
aws eks update-nodegroup-config \
    --cluster-name $EKS_CLUSTER_NAME \
    --nodegroup-name <nodegroup-name> \
    --scaling-config minSize=2,maxSize=10,desiredSize=5 \
    --region $REGION

# Option 3: Clean up unused pods
kubectl delete pods --field-selector status.phase=Failed --all-namespaces
kubectl delete pods --field-selector status.phase=Succeeded --all-namespaces
```

**Fase 4: Reinstallare l'operatore di inferenza**

Dopo aver risolto il problema sottostante, reinstalla l'operatore di inferenza utilizzando uno dei seguenti metodi:
+ **SageMaker Console AI con installazione personalizzata (consigliata):** riutilizza i ruoli IAM e il bucket TLS esistenti dall'installazione precedente. Per le fasi, consulta [Metodo 1: installa il componente aggiuntivo HyperPod Inference tramite la console SageMaker AI (consigliato)](sagemaker-hyperpod-model-deployment-setup.md#sagemaker-hyperpod-model-deployment-setup-ui).
+ **AWS CLI con configurazione salvata: utilizza la configurazione** di cui hai eseguito il backup nel passaggio 1 per reinstallare il componente aggiuntivo. Per la procedura completa di installazione della CLI, consulta. [Metodo 2: installazione dell'operatore di inferenza utilizzando la CLI AWS](sagemaker-hyperpod-model-deployment-setup.md#sagemaker-hyperpod-model-deployment-setup-addon)

  ```
  aws eks create-addon \
      --cluster-name $EKS_CLUSTER_NAME \
      --addon-name amazon-sagemaker-hyperpod-inference \
      --addon-version v1.0.0-eksbuild.1 \
      --configuration-values file://addon-config-backup.json \
      --region $REGION
  ```
+ **SageMaker Console AI con installazione rapida:** crea automaticamente nuovi ruoli IAM, bucket TLS e componenti aggiuntivi di dipendenza. Per le fasi, consulta [Metodo 1: installa il componente aggiuntivo HyperPod Inference tramite la console SageMaker AI (consigliato)](sagemaker-hyperpod-model-deployment-setup.md#sagemaker-hyperpod-model-deployment-setup-ui).

**Fase 5: Verificare la corretta installazione**

```
# Check add-on status
aws eks describe-addon \
    --cluster-name $EKS_CLUSTER_NAME \
    --addon-name amazon-sagemaker-hyperpod-inference \
    --region $REGION \
    --query "addon.{Status:status,Health:health}" \
    --output table

# Verify pods are running
kubectl get pods -n hyperpod-inference-system

# Check operator logs
kubectl logs -n hyperpod-inference-system deployment/hyperpod-inference-controller-manager --tail=50
```

## L'installazione di Cert-Manager non è riuscita perché il webhook Kueue non è pronto
<a name="sagemaker-hyperpod-model-deployment-ts-console-kueue-webhook-race"></a>

**Problema:** l'installazione del componente aggiuntivo cert-manager fallisce con un errore webhook perché il servizio webhook Task Governance (Kueue) non ha endpoint disponibili. Questa è una condizione di gara che si verifica quando cert-manager tenta di creare risorse prima che i pod webhook di Task Governance siano completamente funzionanti. Ciò può accadere quando il componente aggiuntivo Task Governance viene installato insieme all'operatore Inference durante la creazione del cluster.

### Sintomi e diagnosi
<a name="sagemaker-hyperpod-model-deployment-ts-console-kueue-symptoms"></a>

**Messaggio di errore:**

```
AdmissionRequestDenied
Internal error occurred: failed calling webhook "mdeployment.kb.io": failed to call webhook: 
Post "https://kueue-webhook-service.kueue-system.svc:443/mutate-apps-v1-deployment?timeout=10s": 
no endpoints available for service "kueue-webhook-service"
```

**Causa principale:**
+ Il componente aggiuntivo Task Governance installa e registra un webhook mutante che intercetta tutte le creazioni di Deployment
+ Il componente aggiuntivo Cert-Manager tenta di creare risorse di distribuzione prima che i pod webhook di Task Governance siano pronti
+ Il controllo di ammissione di Kubernetes richiama il webhook Task Governance, ma non ha endpoint (i pod non sono ancora in esecuzione)

**Fase diagnostica:**

1. Controlla lo stato del componente aggiuntivo cert-manager:

   ```
   aws eks describe-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name cert-manager \
       --region $REGION \
       --query "addon.{Status:status,Health:health,Issues:issues}" \
       --output json
   ```

### Risoluzione
<a name="sagemaker-hyperpod-model-deployment-ts-console-kueue-resolution"></a>

**Soluzione: elimina e reinstalla cert-manager**

Il webhook Task Governance diventa pronto entro 60 secondi. Basta eliminare e reinstallare il componente aggiuntivo cert-manager:

1. Elimina il componente aggiuntivo cert-manager non riuscito:

   ```
   aws eks delete-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name cert-manager \
       --region $REGION
   ```

1. Attendi 30-60 secondi che il webhook Task Governance sia pronto, quindi reinstalla il componente aggiuntivo cert-manager:

   ```
   sleep 60
   
   aws eks create-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name cert-manager \
       --region $REGION
   ```

# Errori di installazione dell'operatore di inferenza tramite CLI AWS
<a name="sagemaker-hyperpod-model-deployment-ts-cli"></a>

**Panoramica:** quando si installa l'operatore di inferenza tramite la AWS CLI, l'installazione del componente aggiuntivo potrebbe non riuscire a causa della mancanza di dipendenze. Questa sezione descrive i più comuni scenari di errore di installazione della CLI e le relative risoluzioni.

## L'installazione del componente aggiuntivo Inference non è riuscita a causa della mancanza di driver CSI
<a name="sagemaker-hyperpod-model-deployment-ts-missing-csi-drivers"></a>

**Problema:** la creazione del componente aggiuntivo dell'operatore di inferenza non riesce perché le dipendenze dei driver CSI richieste non sono installate nel cluster EKS.

**Sintomi e diagnosi:**

**Messaggi di errore:**

I seguenti errori vengono visualizzati nei registri di creazione dei componenti aggiuntivi o nei registri degli operatori di inferenza:

```
S3 CSI driver not installed (missing CSIDriver s3.csi.aws.com). 
Please install the required CSI driver and see the troubleshooting guide for more information.

FSx CSI driver not installed (missing CSIDriver fsx.csi.aws.com). 
Please install the required CSI driver and see the troubleshooting guide for more information.
```

**Fasi diagnostiche:**

1. Controlla se i driver CSI sono installati:

   ```
   # Check for S3 CSI driver
   kubectl get csidriver s3.csi.aws.com
   kubectl get pods -n kube-system | grep mountpoint
   
   # Check for FSx CSI driver  
   kubectl get csidriver fsx.csi.aws.com
   kubectl get pods -n kube-system | grep fsx
   ```

1. Controlla lo stato del componente aggiuntivo EKS:

   ```
   # List all add-ons
   aws eks list-addons --cluster-name $EKS_CLUSTER_NAME --region $REGION
   
   # Check specific CSI driver add-ons
   aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION 2>/dev/null || echo "S3 CSI driver not installed"
   aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION 2>/dev/null || echo "FSx CSI driver not installed"
   ```

1. Controlla lo stato del componente aggiuntivo dell'operatore di inferenza:

   ```
   aws eks describe-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --region $REGION \
       --query "addon.{Status:status,Health:health,Issues:issues}" \
       --output json
   ```

**Risoluzione:**

**Passaggio 1: installa il driver S3 CSI mancante**

1. Crea il ruolo IAM per il driver S3 CSI (se non è già stato creato):

   ```
   # Set up service account role ARN (from installation steps)
   export S3_CSI_ROLE_ARN=$(aws iam get-role --role-name $S3_CSI_ROLE_NAME --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found")
   echo "S3 CSI Role ARN: $S3_CSI_ROLE_ARN"
   ```

1. Installa il componente aggiuntivo del driver S3 CSI:

   ```
   aws eks create-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name aws-mountpoint-s3-csi-driver \
       --addon-version v1.14.1-eksbuild.1 \
       --service-account-role-arn $S3_CSI_ROLE_ARN \
       --region $REGION
   ```

1. Verifica l'installazione del driver S3 CSI:

   ```
   # Wait for add-on to be active
   aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION
   
   # Verify CSI driver is available
   kubectl get csidriver s3.csi.aws.com
   kubectl get pods -n kube-system | grep mountpoint
   ```

**Fase 2: Installare il driver CSI mancante FSx **

1. Crea il ruolo IAM per il driver FSx CSI (se non è già stato creato):

   ```
   # Set up service account role ARN (from installation steps)
   export FSX_CSI_ROLE_ARN=$(aws iam get-role --role-name $FSX_CSI_ROLE_NAME --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found")
   echo "FSx CSI Role ARN: $FSX_CSI_ROLE_ARN"
   ```

1. Installa il FSx componente aggiuntivo del driver CSI:

   ```
   aws eks create-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name aws-fsx-csi-driver \
       --addon-version v1.6.0-eksbuild.1 \
       --service-account-role-arn $FSX_CSI_ROLE_ARN \
       --region $REGION
   
   # Wait for add-on to be active
   aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION
   
   # Verify FSx CSI driver is running
   kubectl get pods -n kube-system | grep fsx
   ```

**Fase 3: Verifica tutte le dipendenze**

Dopo aver installato le dipendenze mancanti, verifica che funzionino correttamente prima di riprovare l'installazione dell'operatore di inferenza:

```
# Check all required add-ons are active
aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION
aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION
aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name metrics-server --region $REGION
aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION

# Verify all pods are running
kubectl get pods -n kube-system | grep -E "(mountpoint|fsx|metrics-server)"
kubectl get pods -n cert-manager
```

## Durante la distribuzione del modello mancano le definizioni di risorse personalizzate di inferenza
<a name="sagemaker-hyperpod-model-deployment-ts-crd-not-exist"></a>

**Problema:** le definizioni di risorse personalizzate (CRDs) mancano quando si tenta di creare distribuzioni di modelli. Questo problema si verifica quando in precedenza hai installato ed eliminato il componente aggiuntivo di inferenza senza ripulire le distribuzioni di modelli che dispongono di finalizzatori.

**Sintomi e diagnosi:**

**Causa principale:**

Se si elimina il componente aggiuntivo di inferenza senza prima rimuovere tutte le distribuzioni del modello, le risorse personalizzate con i finalizzatori rimangono nel cluster. Questi finalizzatori devono essere completati prima di poter eliminare il. CRDs Il processo di eliminazione dei componenti aggiuntivi non attende il completamento dell'eliminazione del CRD, il che fa sì che il componente CRDs rimanga in uno stato terminale e impedisca nuove installazioni.

**Per diagnosticare questo problema**

1. Controlla se CRDs esistono.

   ```
   kubectl get crd | grep inference.sagemaker.aws.amazon.com
   ```

1. Verifica la presenza di risorse personalizzate bloccate.

   ```
   # Check for JumpStartModel resources
   kubectl get jumpstartmodels -A
   
   # Check for InferenceEndpointConfig resources
   kubectl get inferenceendpointconfigs -A
   ```

1. Ispeziona i finalizzatori sulle risorse bloccate.

   ```
   # Example for a specific JumpStartModel
   kubectl get jumpstartmodels <model-name> -n <namespace> -o jsonpath='{.metadata.finalizers}'
   
   # Example for a specific InferenceEndpointConfig
   kubectl get inferenceendpointconfigs <config-name> -n <namespace> -o jsonpath='{.metadata.finalizers}'
   ```

**Risoluzione:**

Rimuovi manualmente i finalizzatori da tutte le implementazioni del modello che non sono state eliminate quando hai rimosso il componente aggiuntivo di inferenza. Completa i seguenti passaggi per ogni risorsa personalizzata bloccata.

**Per rimuovere i finalizzatori dalle risorse JumpStartModel **

1. Elenca tutte le JumpStartModel risorse in tutti i namespace.

   ```
   kubectl get jumpstartmodels -A
   ```

1. Per ogni JumpStartModel risorsa, rimuovi i finalizzatori applicando una patch alla risorsa per impostare metadata.finalizers su un array vuoto.

   ```
   kubectl patch jumpstartmodels <model-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=merge
   ```

   L'esempio seguente mostra come applicare una patch a una risorsa denominata kv-l1-only.

   ```
   kubectl patch jumpstartmodels kv-l1-only -n default -p '{"metadata":{"finalizers":[]}}' --type=merge
   ```

1. Verificate che l'istanza del modello sia eliminata.

   ```
   kubectl get jumpstartmodels -A
   ```

   Quando tutte le risorse vengono ripulite, dovresti vedere il seguente output.

   ```
   Error from server (NotFound): Unable to list "inference.sagemaker.aws.amazon.com/v1, Resource=jumpstartmodels": the server could not find the requested resource (get jumpstartmodels.inference.sagemaker.aws.amazon.com)
   ```

1. Verificate che il JumpStartModel CRD sia stato rimosso.

   ```
   kubectl get crd | grep jumpstartmodels.inference.sagemaker.aws.amazon.com
   ```

   Se il CRD viene rimosso correttamente, questo comando non restituisce alcun output.

**Per rimuovere i finalizzatori dalle risorse InferenceEndpointConfig **

1. Elenca tutte le InferenceEndpointConfig risorse in tutti i namespace.

   ```
   kubectl get inferenceendpointconfigs -A
   ```

1. Per ogni InferenceEndpointConfig risorsa, rimuovi i finalizzatori.

   ```
   kubectl patch inferenceendpointconfigs <config-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=merge
   ```

   L'esempio seguente mostra come applicare una patch a una risorsa denominata. my-inference-config

   ```
   kubectl patch inferenceendpointconfigs my-inference-config -n default -p '{"metadata":{"finalizers":[]}}' --type=merge
   ```

1. Verifica che l'istanza di configurazione sia eliminata.

   ```
   kubectl get inferenceendpointconfigs -A
   ```

   Quando tutte le risorse vengono ripulite, dovresti vedere il seguente output.

   ```
   Error from server (NotFound): Unable to list "inference.sagemaker.aws.amazon.com/v1, Resource=inferenceendpointconfigs": the server could not find the requested resource (get inferenceendpointconfigs.inference.sagemaker.aws.amazon.com)
   ```

1. Verificate che il InferenceEndpointConfig CRD sia stato rimosso.

   ```
   kubectl get crd | grep inferenceendpointconfigs.inference.sagemaker.aws.amazon.com
   ```

   Se il CRD viene rimosso correttamente, questo comando non restituisce alcun output.

**Per reinstallare il componente aggiuntivo di inferenza**

Dopo aver ripulito tutte le risorse bloccate e verificato che siano CRDs state rimosse, reinstallate il componente aggiuntivo di inferenza. Per ulteriori informazioni, consulta [Installazione del componente aggiuntivo Inference Operator with EKS](sagemaker-hyperpod-model-deployment-setup.md#sagemaker-hyperpod-model-deployment-setup-install-inference-operator-addon).

**Verifica:**

1. Verifica che il componente aggiuntivo di inferenza sia installato correttamente.

   ```
   aws eks describe-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --region $REGION \
       --query "addon.{Status:status,Health:health}" \
       --output table
   ```

   Lo Status deve essere ATTIVO e l'Health deve essere SANO.

1. Verifica che CRDs siano installati correttamente.

   ```
   kubectl get crd | grep inference.sagemaker.aws.amazon.com
   ```

   Dovresti vedere i dati relativi all'inferenza CRDs elencati nell'output.

1. Prova a creare un nuovo modello di distribuzione per confermare che il problema è stato risolto.

   ```
   # Create a test deployment using your preferred method
   kubectl apply -f <your-model-deployment.yaml>
   ```

**Prevenzione:**

Per evitare questo problema, completa i seguenti passaggi prima di disinstallare il componente aggiuntivo di inferenza.

1. Eliminare tutte le distribuzioni dei modelli.

   ```
   # Delete all JumpStartModel resources
   kubectl delete jumpstartmodels --all -A
   
   # Delete all InferenceEndpointConfig resources
   kubectl delete inferenceendpointconfigs --all -A
   
   # Wait for all resources to be fully deleted
   kubectl get jumpstartmodels -A
   kubectl get inferenceendpointconfigs -A
   ```

1. Verifica che tutte le risorse personalizzate vengano eliminate.

1. Dopo aver confermato che tutte le risorse sono state ripulite, elimina il componente aggiuntivo di inferenza.

## L'installazione del componente aggiuntivo Inference non è riuscita a causa della mancanza di cert-manager
<a name="sagemaker-hyperpod-model-deployment-ts-missing-cert-manager"></a>

**Problema:** la creazione del componente aggiuntivo per l'operatore di inferenza non riesce perché il componente aggiuntivo EKS cert-manager non è installato, pertanto mancano le Custom Resource Definitions (). CRDs

**Sintomi e diagnosi:**

**Messaggi di errore:**

I seguenti errori vengono visualizzati nei registri di creazione dei componenti aggiuntivi o nei registri degli operatori di inferenza:

```
Missing required CRD: certificaterequests.cert-manager.io. 
The cert-manager add-on is not installed. Please install cert-manager and see the troubleshooting guide for more information.
```

**Fasi diagnostiche:**

1. Controlla se cert-manager è installato:

   ```
   # Check for cert-manager CRDs
   kubectl get crd | grep cert-manager
   kubectl get pods -n cert-manager
   
   # Check EKS add-on status
   aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION 2>/dev/null || echo "Cert-manager not installed"
   ```

1. Controlla lo stato del componente aggiuntivo dell'operatore di inferenza:

   ```
   aws eks describe-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --region $REGION \
       --query "addon.{Status:status,Health:health,Issues:issues}" \
       --output json
   ```

**Risoluzione:**

**Passaggio 1: installa il componente aggiuntivo cert-manager**

1. Installa il componente aggiuntivo cert-manager EKS:

   ```
   aws eks create-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name cert-manager \
       --addon-version v1.18.2-eksbuild.2 \
       --region $REGION
   ```

1. Verifica l'installazione di cert-manager:

   ```
   # Wait for add-on to be active
   aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION
   
   # Verify cert-manager pods are running
   kubectl get pods -n cert-manager
   
   # Verify CRDs are installed
   kubectl get crd | grep cert-manager | wc -l
   # Expected: Should show multiple cert-manager CRDs
   ```

**Fase 2: Riprovare l'installazione dell'operatore di inferenza**

1. Dopo aver installato cert-manager, riprova a installare l'operatore di inferenza:

   ```
   # Delete the failed add-on if it exists
   aws eks delete-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation"
   
   # Wait for deletion to complete
   sleep 30
   
   # Reinstall the inference operator add-on
   aws eks create-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --addon-version v1.0.0-eksbuild.1 \
       --configuration-values file://addon-config.json \
       --region $REGION
   ```

1. Monitora l'installazione:

   ```
   # Check installation status
   aws eks describe-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --region $REGION \
       --query "addon.{Status:status,Health:health}" \
       --output table
   
   # Verify inference operator pods are running
   kubectl get pods -n hyperpod-inference-system
   ```

## L'installazione del componente aggiuntivo Inference non è riuscita a causa della mancanza del controller ALB
<a name="sagemaker-hyperpod-model-deployment-ts-missing-alb"></a>

**Problema:** la creazione del componente aggiuntivo dell'operatore di inferenza non riesce perché il Load AWS Balancer Controller non è installato o non è configurato correttamente per il componente aggiuntivo di inferenza.

**Sintomi e diagnosi:**

**Messaggi di errore:**

I seguenti errori vengono visualizzati nei registri di creazione dei componenti aggiuntivi o nei registri degli operatori di inferenza:

```
ALB Controller not installed (missing aws-load-balancer-controller pods). 
Please install the Application Load Balancer Controller and see the troubleshooting guide for more information.
```

**Fasi diagnostiche:**

1. Controlla se ALB Controller è installato:

   ```
   # Check for ALB Controller pods
   kubectl get pods -n kube-system | grep aws-load-balancer-controller
   kubectl get pods -n hyperpod-inference-system | grep aws-load-balancer-controller
   
   # Check ALB Controller service account
   kubectl get serviceaccount aws-load-balancer-controller -n kube-system 2>/dev/null || echo "ALB Controller service account not found"
   kubectl get serviceaccount aws-load-balancer-controller -n hyperpod-inference-system 2>/dev/null || echo "ALB Controller service account not found in inference namespace"
   ```

1. Controlla la configurazione del componente aggiuntivo dell'operatore di inferenza:

   ```
   aws eks describe-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --region $REGION \
       --query "addon.{Status:status,Health:health,ConfigurationValues:configurationValues}" \
       --output json
   ```

**Risoluzione:**

Scegliete una delle seguenti opzioni in base alla vostra configurazione:

**Opzione 1: consenti al componente aggiuntivo di inferenza di installare ALB Controller (consigliato)**
+ Assicurati che il ruolo ALB sia creato e configurato correttamente nella configurazione del componente aggiuntivo:

  ```
  # Verify ALB role exists
  export ALB_ROLE_ARN=$(aws iam get-role --role-name alb-role --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found")
  echo "ALB Role ARN: $ALB_ROLE_ARN"
  
  # Update your addon-config.json to enable ALB
  cat > addon-config.json << EOF
  {
    "executionRoleArn": "$EXECUTION_ROLE_ARN",
    "tlsCertificateS3Bucket": "$BUCKET_NAME",
    "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN",
    "alb": {
      "enabled": true,
      "serviceAccount": {
        "create": true,
        "roleArn": "$ALB_ROLE_ARN"
      }
    },
    "keda": {
      "auth": {
        "aws": {
          "irsa": {
            "roleArn": "$KEDA_ROLE_ARN"
          }
        }
      }
    }
  }
  EOF
  ```

**Opzione 2: utilizzare l'installazione esistente del controller ALB**
+ Se hai già installato ALB Controller, configura il componente aggiuntivo per utilizzare l'installazione esistente:

  ```
  # Update your addon-config.json to disable ALB installation
  cat > addon-config.json << EOF
  {
    "executionRoleArn": "$EXECUTION_ROLE_ARN",
    "tlsCertificateS3Bucket": "$BUCKET_NAME",
    "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN",
    "alb": {
      "enabled": false
    },
    "keda": {
      "auth": {
        "aws": {
          "irsa": {
            "roleArn": "$KEDA_ROLE_ARN"
          }
        }
      }
    }
  }
  EOF
  ```

**Fase 3: Riprovare l'installazione dell'operatore di inferenza**

1. Reinstalla il componente aggiuntivo dell'operatore di inferenza con la configurazione aggiornata:

   ```
   # Delete the failed add-on if it exists
   aws eks delete-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation"
   
   # Wait for deletion to complete
   sleep 30
   
   # Reinstall with updated configuration
   aws eks create-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --addon-version v1.0.0-eksbuild.1 \
       --configuration-values file://addon-config.json \
       --region $REGION
   ```

1. Verifica che il controller ALB funzioni:

   ```
   # Check ALB Controller pods
   kubectl get pods -n hyperpod-inference-system | grep aws-load-balancer-controller
   kubectl get pods -n kube-system | grep aws-load-balancer-controller
   
   # Check service account annotations
   kubectl describe serviceaccount aws-load-balancer-controller -n hyperpod-inference-system 2>/dev/null
   kubectl describe serviceaccount aws-load-balancer-controller -n kube-system 2>/dev/null
   ```

## L'installazione del componente aggiuntivo Inference non è riuscita a causa della mancanza dell'operatore KEDA
<a name="sagemaker-hyperpod-model-deployment-ts-missing-keda"></a>

**Problema:** la creazione del componente aggiuntivo dell'operatore di inferenza non riesce perché l'operatore KEDA (Kubernetes Event Driven Autoscaler) non è installato o non è configurato correttamente per il componente aggiuntivo di inferenza.

**Sintomi e diagnosi:**

**Messaggi di errore:**

I seguenti errori vengono visualizzati nei registri di creazione dei componenti aggiuntivi o nei registri degli operatori di inferenza:

```
KEDA operator not installed (missing keda-operator pods). 
KEDA can be installed separately in any namespace or via the Inference addon.
```

**Fasi diagnostiche:**

1. Controlla se l'operatore KEDA è installato:

   ```
   # Check for KEDA operator pods in common namespaces
   kubectl get pods -n keda-system | grep keda-operator 2>/dev/null || echo "KEDA not found in keda-system namespace"
   kubectl get pods -n kube-system | grep keda-operator 2>/dev/null || echo "KEDA not found in kube-system namespace"
   kubectl get pods -n hyperpod-inference-system | grep keda-operator 2>/dev/null || echo "KEDA not found in inference namespace"
   
   # Check for KEDA CRDs
   kubectl get crd | grep keda 2>/dev/null || echo "KEDA CRDs not found"
   
   # Check KEDA service account
   kubectl get serviceaccount keda-operator -A 2>/dev/null || echo "KEDA service account not found"
   ```

1. Controlla la configurazione del componente aggiuntivo dell'operatore di inferenza:

   ```
   aws eks describe-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --region $REGION \
       --query "addon.{Status:status,Health:health,ConfigurationValues:configurationValues}" \
       --output json
   ```

**Risoluzione:**

Scegliete una delle seguenti opzioni in base alla vostra configurazione:

**Opzione 1: consenti al componente aggiuntivo di inferenza di installare KEDA (consigliato)**
+ Assicurati che il ruolo KEDA sia creato e configurato correttamente nella configurazione del componente aggiuntivo:

  ```
  # Verify KEDA role exists
  export KEDA_ROLE_ARN=$(aws iam get-role --role-name keda-operator-role --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found")
  echo "KEDA Role ARN: $KEDA_ROLE_ARN"
  
  # Update your addon-config.json to enable KEDA
  cat > addon-config.json << EOF
  {
    "executionRoleArn": "$EXECUTION_ROLE_ARN",
    "tlsCertificateS3Bucket": "$BUCKET_NAME",
    "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN",
    "alb": {
      "serviceAccount": {
        "create": true,
        "roleArn": "$ALB_ROLE_ARN"
      }
    },
    "keda": {
      "enabled": true,
      "auth": {
        "aws": {
          "irsa": {
            "roleArn": "$KEDA_ROLE_ARN"
          }
        }
      }
    }
  }
  EOF
  ```

**Opzione 2: utilizza l'installazione KEDA esistente**
+ Se hai già installato KEDA, configura il componente aggiuntivo per utilizzare l'installazione esistente:

  ```
  # Update your addon-config.json to disable KEDA installation
  cat > addon-config.json << EOF
  {
    "executionRoleArn": "$EXECUTION_ROLE_ARN",
    "tlsCertificateS3Bucket": "$BUCKET_NAME",
    "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN",
    "alb": {
      "serviceAccount": {
        "create": true,
        "roleArn": "$ALB_ROLE_ARN"
      }
    },
    "keda": {
      "enabled": false
    }
  }
  EOF
  ```

**Fase 3: Riprovare l'installazione dell'operatore di inferenza**

1. Reinstalla il componente aggiuntivo dell'operatore di inferenza con la configurazione aggiornata:

   ```
   # Delete the failed add-on if it exists
   aws eks delete-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation"
   
   # Wait for deletion to complete
   sleep 30
   
   # Reinstall with updated configuration
   aws eks create-addon \
       --cluster-name $EKS_CLUSTER_NAME \
       --addon-name amazon-sagemaker-hyperpod-inference \
       --addon-version v1.0.0-eksbuild.1 \
       --configuration-values file://addon-config.json \
       --region $REGION
   ```

1. Verifica che KEDA funzioni:

   ```
   # Check KEDA pods
   kubectl get pods -n hyperpod-inference-system | grep keda
   kubectl get pods -n kube-system | grep keda
   kubectl get pods -n keda-system | grep keda 2>/dev/null
   
   # Check KEDA CRDs
   kubectl get crd | grep scaledobjects
   kubectl get crd | grep scaledjobs
   
   # Check KEDA service account annotations
   kubectl describe serviceaccount keda-operator -n hyperpod-inference-system 2>/dev/null
   kubectl describe serviceaccount keda-operator -n kube-system 2>/dev/null
   kubectl describe serviceaccount keda-operator -n keda-system 2>/dev/null
   ```

# Timeout per il download del certificato
<a name="sagemaker-hyperpod-model-deployment-ts-certificate"></a>

Quando si implementa un endpoint SageMaker AI, il processo di creazione fallisce a causa dell'impossibilità di scaricare il certificato dell'autorità di certificazione (CA) in un ambiente VPC. [Per i passaggi di configurazione dettagliati, consulta la guida per l'amministratore.](https://github.com/aws-samples/sagemaker-genai-hosting-examples/blob/main/SageMakerHyperpod/hyperpod-inference/Hyperpod_Inference_Admin_Notebook.ipynb)

**Messaggio di errore:**

Il seguente errore appare nei CloudWatch log degli endpoint SageMaker AI: 

```
Error downloading CA certificate: Connect timeout on endpoint URL: "https://****.s3.<REGION>.amazonaws.com/****/***.pem"
```

**Causa principale:**
+ Questo problema si verifica quando l'operatore di inferenza non può accedere al certificato autofirmato in Amazon S3 all'interno del tuo VPC
+ La corretta configurazione dell'endpoint VPC Amazon S3 è essenziale per l'accesso ai certificati.

**Risoluzione:**

1. Se non disponi di un endpoint VPC Amazon S3:
   + [Crea un endpoint VPC Amazon S3 seguendo la configurazione nella sezione 5.3 della guida per l'amministratore.](https://github.com/aws-samples/sagemaker-genai-hosting-examples/blob/main/SageMakerHyperpod/hyperpod-inference/Hyperpod_Inference_Admin_Notebook.ipynb)

1. Se disponi già di un endpoint VPC Amazon S3:
   + Assicurati che la tabella di routing della sottorete sia configurata per puntare all'endpoint VPC (se si utilizza un endpoint gateway) o che il DNS privato sia abilitato per l'endpoint di interfaccia.
   + L'endpoint VPC di Amazon S3 dovrebbe essere simile alla configurazione menzionata nella sezione 5.3 (fase di creazione dell'endpoint)

# Problemi di distribuzione del modello
<a name="sagemaker-hyperpod-model-deployment-ts-deployment-issues"></a>

**Panoramica:** questa sezione descrive i problemi più comuni che si verificano durante la distribuzione del modello, inclusi gli stati in sospeso, le distribuzioni non riuscite e il monitoraggio dell'avanzamento della distribuzione.

## Distribuzione del modello bloccata in stato di sospeso
<a name="sagemaker-hyperpod-model-deployment-ts-pending"></a>

Quando si distribuisce un modello, la distribuzione rimane nello stato «In sospeso» per un periodo prolungato. Ciò indica che l'operatore di inferenza non è in grado di avviare la distribuzione del modello nel cluster. HyperPod 

**Componenti interessati:**

Durante la normale implementazione, l'operatore di inferenza deve:
+ Implementare un pod modello
+ Creazione di un sistema di bilanciamento del carico
+ Crea un SageMaker endpoint AI

**Fasi di risoluzione dei problemi:**

1. Controlla lo stato del pod dell'operatore di inferenza:

   ```
   kubectl get pods -n hyperpod-inference-system
   ```

   Esempio di output previsto:

   ```
   NAME                                                           READY   STATUS    RESTARTS   AGE
   hyperpod-inference-operator-controller-manager-65c49967f5-894fg   1/1     Running   0         6d13h
   ```

1. Esamina i registri degli operatori di inferenza ed esamina i registri degli operatori per verificare la presenza di messaggi di errore:

   ```
   kubectl logs hyperpod-inference-operator-controller-manager-5b5cdd7757-txq8f -n hyperpod-inference-operator-system
   ```

**Cosa cercare:**
+ Messaggi di errore nei registri degli operatori
+ Stato del pod dell'operatore
+ Eventuali avvisi o guasti relativi all'implementazione

**Nota**  
Una distribuzione efficace dovrebbe andare oltre lo stato «In sospeso» entro un periodo di tempo ragionevole. Se i problemi persistono, esamina i registri degli operatori di inferenza per individuare messaggi di errore specifici per determinare la causa principale.

## Risoluzione dei problemi relativi allo stato di distribuzione del modello
<a name="sagemaker-hyperpod-model-deployment-ts-failed"></a>

Quando l'implementazione di un modello entra in uno stato «Non riuscito», l'errore può verificarsi in uno dei tre componenti:
+ Implementazione del modello pod
+ Creazione di sistemi di bilanciamento del carico
+ SageMaker Creazione di endpoint AI

**Fasi di risoluzione dei problemi:**

1. Controlla lo stato dell'operatore di inferenza:

   ```
   kubectl get pods -n hyperpod-inference-system
   ```

   Output previsto:

   ```
   NAME                                                           READY   STATUS    RESTARTS   AGE
   hyperpod-inference-operator-controller-manager-65c49967f5-894fg   1/1     Running   0         6d13h
   ```

1. Esamina i registri dell'operatore:

   ```
   kubectl logs hyperpod-inference-operator-controller-manager-5b5cdd7757-txq8f -n hyperpod-inference-operator-system
   ```

**Cosa cercare:**

I registri dell'operatore indicheranno quale componente è guasto:
+ Errori di distribuzione del pod del modello
+ Problemi di creazione del sistema di bilanciamento del carico
+ SageMaker Errori degli endpoint AI

## Verifica dell'avanzamento dell'implementazione del modello
<a name="sagemaker-hyperpod-model-deployment-ts-progress"></a>

Per monitorare l'avanzamento della distribuzione del modello e identificare potenziali problemi, è possibile utilizzare i comandi kubectl per controllare lo stato dei vari componenti. Questo aiuta a determinare se l'implementazione sta procedendo normalmente o se ha riscontrato problemi durante la creazione del pod modello, la configurazione del load balancer o SageMaker le fasi di configurazione degli endpoint AI.

**Metodo 1: verifica dello stato del modello JumpStart **

```
kubectl describe jumpstartmodel.inference.sagemaker.aws.amazon.com/<model-name> -n <namespace>
```

**Principali indicatori di stato da monitorare:**

1. Stato dell'implementazione
   + Cerca`Status.State`: Dovrebbe mostrare `DeploymentComplete`
   + Controlla `Status.Deployment Status.Available Replicas`
   + Monitora `Status.Conditions` l'avanzamento dell'implementazione

1. SageMaker Stato dell'endpoint AI
   + Verifica`Status.Endpoints.Sagemaker.State`: dovrebbe apparire `CreationCompleted`
   + Verifica `Status.Endpoints.Sagemaker.Endpoint Arn`

1. Stato del certificato TLS
   + Visualizza dettagli `Status.Tls Certificate`
   + Verifica la scadenza del certificato in `Last Cert Expiry Time`

**Metodo 2: verifica la configurazione dell'endpoint di inferenza**

```
kubectl describe inferenceendpointconfig.inference.sagemaker.aws.amazon.com/<deployment_name> -n <namespace>
```

**Stati di stato comuni:**
+ `DeploymentInProgress`: Fase iniziale di implementazione
+ `DeploymentComplete`: Implementazione riuscita
+ `Failed`: Implementazione non riuscita

**Nota**  
Monitora la sezione Eventi per eventuali avvisi o errori. Verifica che il numero di repliche corrisponda alla configurazione prevista. Verifica tutte le condizioni indicate `Status: True` per una distribuzione corretta.

# Rilascio dell'autorizzazione VPC ENI
<a name="sagemaker-hyperpod-model-deployment-ts-permissions"></a>

SageMaker La creazione di endpoint AI non riesce a causa delle autorizzazioni insufficienti per la creazione di interfacce di rete in VPC.

**Messaggio di errore:**

```
Please ensure that the execution role for variant AllTraffic has sufficient permissions for creating an endpoint variant within a VPC
```

**Causa principale:**

Il ruolo di esecuzione dell'operatore di inferenza non dispone dell'autorizzazione Amazon EC2 richiesta per creare interfacce di rete (ENI) in VPC.

**Risoluzione:**

Aggiungi la seguente autorizzazione IAM al ruolo di esecuzione dell'operatore di inferenza:

```
{
    "Effect": "Allow",
    "Action": [
        "ec2:CreateNetworkInterfacePermission",
        "ec2:DeleteNetworkInterfacePermission"
     ],
    "Resource": "*"
}
```

**Verifica:**

Dopo aver aggiunto l'autorizzazione:

1. Elimina l'endpoint fallito (se esiste)

1. Riprova a creare l'endpoint

1. Monitora lo stato della distribuzione per garantirne il corretto completamento

**Nota**  
Questa autorizzazione è essenziale per gli endpoint SageMaker AI in esecuzione in modalità VPC. Assicurati che il ruolo di esecuzione disponga anche di tutte le altre autorizzazioni necessarie relative al VPC.

# Problema di relazione fiduciaria IAM
<a name="sagemaker-hyperpod-model-deployment-ts-trust"></a>

HyperPod l'operatore di inferenza non riesce a iniziare con un AssumeRoleWithWebIdentity errore STS, il che indica un problema di configurazione della relazione di fiducia IAM.

**Messaggio di errore:**

```
failed to enable inference watcher for HyperPod cluster *****: operation error SageMaker: UpdateClusterInference, 
get identity: get credentials: failed to refresh cached credentials, failed to retrieve credentials, 
operation error STS: AssumeRoleWithWebIdentity, https response error StatusCode: 403, RequestID: ****, 
api error AccessDenied: Not authorized to perform sts:AssumeRoleWithWebIdentity
```

**Risoluzione:**

Aggiorna la relazione di trust del ruolo di esecuzione IAM dell'operatore di inferenza con la seguente configurazione.

Sostituire i seguenti segnaposto:
+ `<ACCOUNT_ID>`: L'ID del tuo AWS account
+ `<REGION>`: La tua AWS regione
+ `<OIDC_ID>`: ID provider OIDC del tuo cluster Amazon EKS

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
            "Federated": "arn:aws:iam::<ACCOUNT_ID>:oidc-provider/oidc.eks.<REGION>.amazonaws.com/id/<OIDC_ID>"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringLike": {
                    "oidc.eks.<REGION>.amazonaws.com/id/<OIDC_ID>:sub": "system:serviceaccount:<namespace>:<service-account-name>",
                    "oidc.eks.<REGION>.amazonaws.com/id/<OIDC_ID>:aud": "sts.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "sagemaker.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

**Verifica:**

Dopo aver aggiornato la relazione di fiducia:

1. Verifica la configurazione del ruolo nella console IAM

1. Se necessario, riavvia l'operatore di inferenza

1. Monitora i registri degli operatori per un avvio corretto

# Errore mancante del plug-in GPU NVIDIA
<a name="sagemaker-hyperpod-model-deployment-ts-gpu"></a>

L'implementazione del modello non riesce a causa di un errore di insufficienza della GPU nonostante siano disponibili nodi GPU. Ciò si verifica quando il plug-in del dispositivo NVIDIA non è installato nel cluster. HyperPod

**Messaggio di errore:**

```
0/15 nodes are available: 10 node(s) didn't match Pod's node affinity/selector, 
5 Insufficient nvidia.com/gpu. preemption: 0/15 nodes are available: 
10 Preemption is not helpful for scheduling, 5 No preemption victims found for incoming pod.
```

**Causa principale:**
+ Kubernetes non è in grado di rilevare le risorse della GPU senza il plug-in del dispositivo NVIDIA
+ Provoca errori di pianificazione per i carichi di lavoro della GPU

**Risoluzione:**

Installa il plug-in GPU NVIDIA eseguendo:

```
kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/refs/tags/v0.17.1/deployments/static/nvidia-device-plugin.yml
```

**Passaggi di verifica:**

1. Controlla lo stato di distribuzione del plugin:

   ```
   kubectl get pods -n kube-system | grep nvidia-device-plugin
   ```

1. Verifica che le risorse della GPU siano ora visibili:

   ```
   kubectl get nodes -o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\\.com/gpu
   ```

1. Riprova la distribuzione del modello

**Nota**  
Assicurati che i driver NVIDIA siano installati sui nodi GPU. L'installazione del plugin è una configurazione unica per cluster. L'installazione può richiedere i privilegi di amministratore del cluster.

# L'operatore di inferenza non si avvia
<a name="sagemaker-hyperpod-model-deployment-ts-startup"></a>

Il pod dell'operatore di inferenza non è stato avviato e causa il seguente messaggio di errore. Questo errore è dovuto alla politica di autorizzazione relativa al ruolo di esecuzione dell'operatore che non è autorizzato a svolgere`sts:AssumeRoleWithWebIdentity`. Per questo motivo, la parte dell'operatore che gira sul piano di controllo non viene avviata.

**Messaggio di errore:**

```
Warning Unhealthy 5m46s (x22 over 49m) kubelet Startup probe failed: Get "http://10.1.100.59:8081/healthz": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
```

**Causa principale:**
+ La politica di autorizzazione del ruolo di esecuzione dell'operatore di inferenza non è impostata per accedere al token di autorizzazione per le risorse.

**Risoluzione:**

Imposta la seguente politica del ruolo di esecuzione di `EXECUTION_ROLE_ARN` per l'operatore di HyperPod inferenza:

```
HyperpodInferenceAccessPolicy-ml-cluster to include all resources
```

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**Fasi di verifica:**

1. Modificare la politica.

1. Termina il pod dell'operatore di HyperPod inferenza.

1. Il pod verrà riavviato senza generare eccezioni.

# Note sulla versione di Amazon SageMaker HyperPod Inference
<a name="sagemaker-hyperpod-inference-release-notes"></a>

Questo argomento tratta le note di rilascio che tengono traccia di aggiornamenti, correzioni e nuove funzionalità per Amazon SageMaker HyperPod Inference. SageMaker HyperPod Inference ti consente di distribuire e scalare modelli di machine learning sui tuoi HyperPod cluster con un'affidabilità di livello aziendale. Per le versioni, gli aggiornamenti e i miglioramenti generali della SageMaker HyperPod piattaforma Amazon, consulta[Note di SageMaker HyperPod rilascio di Amazon](sagemaker-hyperpod-release-notes.md).

Per informazioni sulle funzionalità di SageMaker HyperPod inferenza e sulle opzioni di distribuzione, consulta[Implementazione di modelli su Amazon SageMaker HyperPod](sagemaker-hyperpod-model-deployment.md).

## SageMaker HyperPod Note sulla versione di Inference: v3.0
<a name="sagemaker-hyperpod-inference-release-notes-20260223"></a>

**Data di uscita:** 23 febbraio 2026

**Riepilogo**

Inference Operator 3.0 introduce l'integrazione del componente aggiuntivo EKS per una gestione semplificata del ciclo di vita, il supporto Node Affinity per il controllo granulare della pianificazione e una migliore etichettatura delle risorse. Le installazioni esistenti basate su Helm possono essere migrate al componente aggiuntivo EKS utilizzando lo script di migrazione fornito. Aggiorna il tuo ruolo di esecuzione di Inference Operator con nuove autorizzazioni di tagging prima dell'aggiornamento.

**Caratteristiche principali**
+ **EKS Add-on Integration**: gestione del ciclo di vita di livello aziendale con esperienza di installazione semplificata
+ **Node Affinity**: controllo granulare della pianificazione per escludere le istanze spot, preferire le zone di disponibilità o indirizzare i nodi con etichette personalizzate

Per informazioni dettagliate, tra cui prerequisiti, istruzioni di aggiornamento e linee guida sulla migrazione, consulta le sezioni seguenti.

### Prerequisiti
<a name="sagemaker-hyperpod-inference-v3-0-prerequisites"></a>

Prima di aggiornare la versione Helm alla 3.0, i clienti devono aggiungere ulteriori autorizzazioni di tagging al proprio ruolo di operatore di esecuzione di Inference. Nell'ambito del miglioramento della codifica e della sicurezza delle risorse, Inference Operator ora tagga le risorse ALB, S3 e ACM. Questo miglioramento richiede autorizzazioni aggiuntive nel ruolo di esecuzione di Inference Operator. Aggiungi le seguenti autorizzazioni al tuo ruolo di esecuzione Inference Operator:

```
{  
    "Sid": "CertificateTagginPermission",  
    "Effect": "Allow",  
    "Action": [  
        "acm:AddTagsToCertificate"  
    ],  
    "Resource": "arn:aws:acm:*:*:certificate/*",  
},  
{  
    "Sid": "S3PutObjectTaggingAccess",  
    "Effect": "Allow",  
    "Action": [  
        "s3:PutObjectTagging"  
    ],  
    "Resource": [  
        "arn:aws:s3:::<TLS_BUCKET>/*" # Replace * with your TLS bucket  
    ]  
}
```

### Aggiornamento alla versione 3.0
<a name="sagemaker-hyperpod-inference-v3-0-upgrade"></a>

Se hai già installato Inference Operator tramite Helm, usa i seguenti comandi per eseguire l'aggiornamento:

```
helm get values -n kube-system hyperpod-inference-operator \
> current-values.yaml

cd sagemaker-hyperpod-cli/helm_chart/HyperPodHelmChart/\
charts/inference-operator

helm upgrade hyperpod-inference-operator . -n kube-system \
  -f current-values.yaml --set image.tag=v3.0
    
# Verification
kubectl get deployment hyperpod-inference-operator-controller-manager \
  -n hyperpod-inference-system \
  -o jsonpath='{.spec.template.spec.containers[0].image}'
```

### Migrazione del componente aggiuntivo da Helm a EKS
<a name="sagemaker-hyperpod-inference-v3-0-migration"></a>

Se Inference operator è installato tramite Helm prima della versione 3.0, consigliamo di migrare a EKS Add-on per ottenere aggiornamenti tempestivi sulle nuove funzionalità che verranno rilasciate per Inference Operator. Questo script migra l' SageMaker HyperPod Inference Operator dall'installazione basata su Helm all'installazione del componente aggiuntivo EKS.

**Panoramica:** lo script accetta un nome e una regione del cluster come parametri, recupera la configurazione di installazione di Helm esistente e migra alla distribuzione di EKS Add-on. Crea nuovi ruoli IAM per Inference Operator, ALB Controller e KEDA Operator.

Prima di migrare l'Inference Operator, lo script garantisce l'esistenza delle dipendenze richieste (driver CSI S3, driver CSI, cert-manager e FSx metrics-server). Se non esistono, li distribuisce come componenti aggiuntivi.

Una volta completata la migrazione del componente aggiuntivo Inference Operator, lo script migra anche S3 e altre dipendenze (ALB FSx, KEDA, cert-manager, metrics-server) se originariamente installate tramite il grafico Inference Operator Helm. Utilizzatelo per saltare questo passaggio per il driver S3 `--skip-dependencies-migration` CSI, il driver CSI, il cert-manager e il metrics-server. FSx Tieni presente che ALB e KEDA vengono installati come parte del componente aggiuntivo nello stesso spazio dei nomi di Inference Operator e verranno migrati come parte del componente aggiuntivo Inference Operator.

**Importante**  
Durante la migrazione, non distribuite nuovi modelli poiché non verranno distribuiti fino al completamento della migrazione. Una volta che il componente aggiuntivo Inference Operator è in stato ATTIVO, è possibile implementare nuovi modelli. Il tempo di migrazione richiede in genere da 15 a 20 minuti e può essere completata entro 30 minuti se al momento sono installati solo pochi modelli.

**Prerequisiti per la migrazione:**
+ AWS CLI configurato con credenziali appropriate
+ kubectl configurato con accesso al cluster EKS
+ Helm installato
+ Installazione Helm esistente di hyperpod-inference-operator

**Nota**  
Gli endpoint già in esecuzione non verranno interrotti durante il processo di migrazione. Gli endpoint esistenti continueranno a servire il traffico senza interruzioni durante tutta la migrazione.

**Ottenere lo script di migrazione:**

```
git clone https://github.com/aws/sagemaker-hyperpod-cli.git
cd sagemaker-hyperpod-cli/helm_chart/HyperPodHelmChart/\
charts/inference-operator/migration
```

**Utilizzo:**

```
./helm_to_addon.sh [OPTIONS] \
  --cluster-name <cluster-name> (Required) \
  --region <region> (Required) \
  --helm-namespace kube-system (Optional) \
  --auto-approve (Optional) \
  --skip-dependencies-migration (Optional) \
  --s3-mountpoint-role-arn <s3-mountpoint-role-arn> (Optional) \
  --fsx-role-arn <fsx-role-arn> (Optional)
```

**Opzioni:**
+ `--cluster-name NAME`— nome del cluster EKS (richiesto)
+ `--region REGION`— AWS regione (richiesto)
+ `--helm-namespace NAMESPACE`— Namespace in cui è installato Helm chart (impostazione predefinita: kube-system) (opzionale)
+ `--s3-mountpoint-role-arn ARN`— ARN del ruolo IAM del driver S3 Mountpoint CSI (opzionale)
+ `--fsx-role-arn ARN`— ARN del ruolo IAM del driver FSx CSI (opzionale)
+ `--auto-approve`— Ignora le richieste di conferma se questo flag è abilitato. `step-by-step`e `auto-approve` si escludono a vicenda, se fornite, `--auto-approve` non specificate (opzionale) `--step-by-step`
+ `--step-by-step`— Fai una pausa dopo ogni passaggio principale per la revisione. Questo non dovrebbe essere menzionato se `--auto-approve` è già stato aggiunto (opzionale)
+ `--skip-dependencies-migration`— Salta la migrazione delle dipendenze installate da Helm su Add-on. Perché le dipendenze NON sono state installate tramite il grafico Inference Operator Helm o se si desidera gestirle separatamente. (opzionale)

**Esempi:**

Migrazione di base (migra le dipendenze):

```
./helm_to_addon.sh \
  --cluster-name my-cluster \
  --region us-east-1
```

Approvazione automatica senza richieste:

```
./helm_to_addon.sh \
  --cluster-name my-cluster \
  --region us-east-1 \
  --auto-approve
```

Salta la migrazione delle dipendenze per S3 mountpoint FSx, cert manager e Metrics server:

```
./helm_to_addon.sh \
  --cluster-name my-cluster \
  --region us-east-1 \
  --skip-dependencies-migration
```

Fornisci ruoli S3 e IAM esistenti: FSx 

```
./helm_to_addon.sh \
  --cluster-name my-cluster \
  --region us-east-1 \
  --s3-mountpoint-role-arn arn:aws:iam::123456789012:role/s3-csi-role \
  --fsx-role-arn arn:aws:iam::123456789012:role/fsx-csi-role
```

**Posizione di backup:**

I backup sono archiviati in `/tmp/hyperpod-migration-backup-<timestamp>/`

I backup consentono la migrazione e il ripristino sicuri:
+ **Rollback in caso di errore**: se la migrazione fallisce, lo script può ripristinare automaticamente il cluster allo stato precedente alla migrazione utilizzando le configurazioni di backup
+ **Audit Trail**: fornisce una registrazione completa di ciò che esisteva prima della migrazione per la risoluzione dei problemi e la conformità
+ **Riferimento alla configurazione**: consente di confrontare le configurazioni precedenti e successive alla migrazione
+ **Ripristino manuale**: se necessario, è possibile ispezionare e ripristinare manualmente risorse specifiche dalla directory di backup

**Ripristino:**

Se la migrazione fallisce, lo script richiede la conferma dell'utente prima di avviare il rollback per ripristinare lo stato precedente.

## SageMaker HyperPod Note sulla versione di Inference: v2.3
<a name="sagemaker-hyperpod-inference-release-notes-20260203"></a>

**Cosa c'è di nuovo**

Questa versione introduce nuovi campi opzionali nelle Custom Resource Definitions (CRDs) per migliorare la flessibilità di configurazione della distribuzione.

**Funzionalità**
+ **Tipi di istanze multiple**
  + **Maggiore affidabilità di implementazione**: supporta configurazioni di tipo multiistanza con failover automatico su tipi di istanza alternativi quando le opzioni preferite non dispongono di capacità
  + **Pianificazione intelligente delle risorse: utilizza l'**affinità dei nodi Kubernetes per dare priorità ai tipi di istanze garantendo al contempo l'implementazione anche quando le risorse preferite non sono disponibili
  + **Costi e prestazioni ottimizzati: mantiene le preferenze relative al tipo di istanza e previene** i guasti legati alla capacità durante le fluttuazioni del cluster

**Correzioni di bug**

Le modifiche al campo `invocationEndpoint` nelle specifiche di ora avranno effetto: `InferenceEndpointConfig`
+ Se il `invocationEndpoint` campo è patchato o aggiornato, le risorse dipendenti, come Load Balancer SageMaker ed Endpoint`SageMakerEndpointRegistration`, verranno aggiornate con la normalizzazione. `Ingress`
+ Il valore `invocationEndpoint` fornito verrà memorizzato così com'è nelle specifiche stesse. `InferenceEndpointConfig` Quando questo valore viene utilizzato per creare un Load Balancer e, se abilitato, un SageMaker Endpoint, verrà normalizzato in modo da avere una barra anteriore.
  + `v1/chat/completions`verrà normalizzato a `/v1/chat/completions` for the`Ingress`, AWS Load Balancer ed Endpoint. SageMaker Per il`SageMakerEndpointRegistration`, verrà visualizzato nelle sue specifiche come. `v1/chat/completions`
  + `///invoke`verrà normalizzato a `/invoke` for the`Ingress`, AWS Load Balancer ed Endpoint. SageMaker Per il`SageMakerEndpointRegistration`, verrà visualizzato nelle sue specifiche come. `invoke`

**Installazione di Helm:**

Segui: [https://github.com/aws/sagemaker-hyperpod-cli/\$1chart tree/main/helm](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart)

Se ti concentri solo sull'installazione dell'operatore di inferenza, dopo il passaggio 1, ad esempio`Set Up Your Helm Environment`, fallo. `cd HyperPodHelmChart/charts/inference-operator` Poiché ti trovi nella stessa directory del grafico degli operatori di inferenza, nei comandi, ovunque tu veda`helm_chart/HyperPodHelmChart`, sostituisci con. `.`

**Aggiorna Operator alla versione 2.3 nel caso in cui sia già installato:**

```
cd sagemaker-hyperpod-cli/helm_chart/HyperPodHelmChart/\
charts/inference-operator

helm get values -n kube-system hyperpod-inference-operator \
> current-values.yaml

helm upgrade hyperpod-inference-operator . \
  -n kube-system \
  -f current-values.yaml \
  --set image.tag=v2.3
```

# HyperPod in Studio
<a name="sagemaker-hyperpod-studio"></a>

Puoi avviare carichi di lavoro di machine learning sui SageMaker HyperPod cluster Amazon e visualizzare le informazioni sui HyperPod cluster in Amazon SageMaker Studio. La maggiore visibilità dei dettagli del cluster e delle metriche hardware può aiutare il team a identificare il candidato giusto per i carichi di lavoro di preaddestramento o fine-tuning. 

È disponibile una serie di comandi per aiutarti a iniziare quando avvii Studio IDEs su un HyperPod cluster. Puoi lavorare sugli script di formazione, utilizzare i contenitori Docker per gli script di formazione e inviare lavori al cluster, il tutto dall'interno di Studio. IDEs Le sezioni seguenti forniscono informazioni su come configurarlo, come individuare i cluster e monitorarne le attività, come visualizzare le informazioni sui cluster e come connettersi ai HyperPod cluster all'interno di Studio. IDEs 

**Topics**
+ [Configurazione in Studio HyperPod](sagemaker-hyperpod-studio-setup.md)
+ [HyperPod schede in Studio](sagemaker-hyperpod-studio-tabs.md)
+ [Connessione ai HyperPod cluster e invio di attività ai cluster](sagemaker-hyperpod-studio-open.md)
+ [Risoluzione dei problemi](sagemaker-hyperpod-studio-troubleshoot.md)

# Configurazione in Studio HyperPod
<a name="sagemaker-hyperpod-studio-setup"></a>

È necessario configurare i cluster in base alla scelta dell'orchestratore del cluster per accedere ai cluster tramite Amazon Studio. SageMaker Nelle sezioni seguenti, scegli la configurazione più adatta al tuo orchestratore.

Le istruzioni presuppongono che il cluster sia già stato configurato. Per informazioni sugli orchestratori di cluster e su come configurarli, inizia con le pagine relative agli orchestrator: HyperPod 
+  [Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md) 
+  [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md) 

**Topics**
+ [Configurazione di un cluster Slurm in Studio](sagemaker-hyperpod-studio-setup-slurm.md)
+ [Configurazione di un cluster Amazon EKS in Studio](sagemaker-hyperpod-studio-setup-eks.md)

# Configurazione di un cluster Slurm in Studio
<a name="sagemaker-hyperpod-studio-setup-slurm"></a>

Le seguenti istruzioni descrivono come configurare un cluster HyperPod Slurm in Studio.

1. Crea un dominio o tienine uno pronto. Per informazioni sulla creazione di un dominio, consulta [Guida alla configurazione con Amazon SageMaker AI](gs.md).

1. (Facoltativo) Crea e allega un volume personalizzato FSx per Lustre al tuo dominio. 

   1. Assicurati che il tuo file system FSx Lustre esista nello stesso VPC del dominio previsto e si trovi in una delle sottoreti presenti nel dominio.

   1. Puoi seguire le istruzioni in [Aggiunta di un file system personalizzato a un dominio](domain-custom-file-system.md). 

1. (Facoltativo) Consigliamo di aggiungere tag ai cluster per garantire un flusso di lavoro più fluido. Per informazioni su come aggiungere tag, consulta [Modifica un SageMaker HyperPod cluster](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-edit-clusters) Aggiornare il cluster utilizzando la console AI. SageMaker 

   1. Aggiungi il tuo file system FSx for Lustre al tuo dominio Studio. Questo consente di identificare il file system durante l’avvio degli spazi di Studio. A tale scopo, aggiungi il seguente tag al cluster per identificarlo con l'ID del FSx filesystem,. `fs-id` 

      Chiave tag = “`hyperpod-cluster-filesystem`”, valore tag = “`fs-id`”.

   1. Tagga lo spazio di lavoro [Grafana gestito da Amazon](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html) al tuo dominio Studio. Così facendo, puoi collegare in modo rapido e diretto lo spazio di lavoro Grafana dal cluster in Studio. A tale scopo, aggiungi il tag seguente al cluster per identificarlo con l’ID dello spazio di lavoro Grafana, `ws-id`.

      Chiave tag = “`grafana-workspace`”, valore tag = “`ws-id`”.

1. Aggiungi l’autorizzazione seguente al tuo ruolo di esecuzione. 

   Per informazioni sui ruoli di esecuzione dell' SageMaker IA e su come modificarli, consulta. [Informazioni sulle autorizzazioni e sui ruoli di esecuzione dello spazio del dominio](execution-roles-and-spaces.md) 

   Per informazioni su come collegare le policy a un utente o a un gruppo IAM, consulta [Adding and removing IAM identity permissions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ssm:StartSession",
                   "ssm:TerminateSession"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "sagemaker:CreateCluster",
                   "sagemaker:ListClusters"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "cloudwatch:PutMetricData",
                   "cloudwatch:GetMetricData"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "sagemaker:DescribeCluster",
                   "sagemaker:DescribeClusterNode",
                   "sagemaker:ListClusterNodes",
                   "sagemaker:UpdateCluster",
                   "sagemaker:UpdateClusterSoftware"
               ],
               "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/*"
           }
       ]
   }
   ```

------

1. Aggiungi un tag a questo ruolo IAM, con Chiave tag = “`SSMSessionRunAs`” e valore tag = “`os user`”. `os user` qui corrisponde allo stesso utente configurato per il cluster Slurm. Gestisci l'accesso ai SageMaker HyperPod cluster a livello di ruolo o utente IAM utilizzando la funzionalità Run As in [AWS Systems Manager Agent (SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html)). Con questa funzionalità, puoi avviare ogni sessione SSM utilizzando l’utente del sistema operativo (OS) associato al ruolo o all’utente IAM. 

   Per informazioni su come aggiungere tag al ruolo di esecuzione, consulta [Tag IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_roles.html).

1. [Attiva il supporto per Esegui come per i nodi gestiti di Linux e macOS](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-preferences-run-as.html). Le impostazioni Esegui come sono valide per l’intero account e sono necessarie per avviare correttamente tutte le sessioni SSM.

1. (Facoltativo) [Limitazione della visualizzazione delle attività nei cluster Studio per Slurm](#sagemaker-hyperpod-studio-setup-slurm-restrict-tasks-view). Per informazioni sulle attività visibili in Studio, consulta [Processi](sagemaker-hyperpod-studio-tabs.md#sagemaker-hyperpod-studio-tabs-tasks).

In Amazon SageMaker Studio puoi navigare per visualizzare i tuoi cluster in HyperPod cluster (in Compute).

## Limitazione della visualizzazione delle attività nei cluster Studio per Slurm
<a name="sagemaker-hyperpod-studio-setup-slurm-restrict-tasks-view"></a>

Puoi impostare una limitazione che consente agli utenti di visualizzare solo le attività Slurm per le quali dispongono di autorizzazioni, senza richiedere l’immissione manuale di namespace o ulteriori controlli delle autorizzazioni. La limitazione viene applicata in base al ruolo IAM degli utenti, fornendo loro un’esperienza semplificata e sicura. La sezione seguente fornisce informazioni su come limitare la visualizzazione delle attività nei cluster Studio per Slurm. Per informazioni sulle attività visibili in Studio, consulta [Processi](sagemaker-hyperpod-studio-tabs.md#sagemaker-hyperpod-studio-tabs-tasks). 

Per impostazione predefinita, tutti gli utenti di Studio possono visualizzare, gestire e interagire con tutte le attività del cluster Slurm. Per limitare questo limite, puoi gestire l'accesso ai SageMaker HyperPod cluster a livello di ruolo o utente IAM utilizzando la funzionalità **Run As in AWS Systems Manager Agent (SSM** [Agent)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html).

Puoi farlo taggando i ruoli IAM con identificatori specifici, come il nome utente o il gruppo. Quando un utente accede a Studio, Gestione sessioni utilizza la funzionalità Esegui come per eseguire i comandi come account utente Slurm specifico che corrisponde ai tag del ruolo IAM. La configurazione Slurm può essere impostata per limitare la visibilità delle attività in base all’account utente. L’interfaccia utente di Studio filtrerà automaticamente le attività visibili all’account dell’utente specifico quando i comandi vengono eseguiti con la funzionalità Esegui come. Al termine della configurazione, Una ogni utente che assume il ruolo con gli identificatori specificati vedrà le attività Slurm filtrate in base alla configurazione Slurm. Per informazioni su come aggiungere tag al ruolo di esecuzione, consulta [Tag IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_roles.html).

# Configurazione di un cluster Amazon EKS in Studio
<a name="sagemaker-hyperpod-studio-setup-eks"></a>

Nelle istruzioni seguenti viene descritto come configurare un cluster Amazon EKS in Studio.

1. Crea un dominio o tienine uno pronto. Per informazioni sulla creazione di un dominio, consulta [Guida alla configurazione con Amazon SageMaker AI](gs.md).

1. Aggiungi l’autorizzazione seguente al tuo ruolo di esecuzione. 

   Per informazioni sui ruoli di esecuzione dell' SageMaker IA e su come modificarli, consulta[Informazioni sulle autorizzazioni e sui ruoli di esecuzione dello spazio del dominio](execution-roles-and-spaces.md). 

   Per informazioni su come collegare le policy a un utente o a un gruppo IAM, consulta [Adding and removing IAM identity permissions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "DescribeHyerpodClusterPermissions",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:DescribeCluster"
               ],
               "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/cluster-name"
           },
           {
               "Effect": "Allow",
               "Action": "ec2:Describe*",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:CompleteLayerUpload",
                   "ecr:GetAuthorizationToken",
                   "ecr:UploadLayerPart",
                   "ecr:InitiateLayerUpload",
                   "ecr:BatchCheckLayerAvailability",
                   "ecr:PutImage"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
                   "Action": [
                       "cloudwatch:PutMetricData",
                       "cloudwatch:GetMetricData"
                       ],
               "Resource": "*"
           },
           {
               "Sid": "UseEksClusterPermissions",
               "Effect": "Allow",
               "Action": [
                   "eks:DescribeCluster",
                   "eks:AccessKubernetesApi",
                   "eks:DescribeAddon"
               ],
               "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/cluster-name"
           },
           {
               "Sid": "ListClustersPermission",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:ListClusters"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ssm:StartSession",
                   "ssm:TerminateSession"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. [Concedi agli utenti IAM l’accesso a Kubernetes con le voci di accesso EKS](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html).

   1. Passa al cluster Amazon EKS associato al tuo HyperPod cluster.

   1. Scegli la scheda **Accesso** e [crea una voce di accesso](https://docs.aws.amazon.com/eks/latest/userguide/creating-access-entries.html) per il ruolo di esecuzione che hai creato. 

      1. Nella Fase 1, seleziona il ruolo di esecuzione che hai creato sopra nell’elenco a discesa del principale **IAM**.

      1. Nella Fase 2, seleziona il nome di una policy e la portata dell’accesso che intendi concedere agli utenti. 

1. (Facoltativo) Per garantire un’esperienza più fluida, ti consigliamo di aggiungere tag ai tuoi cluster. Per informazioni su come aggiungere tag, consulta come [Modifica un SageMaker HyperPod cluster](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-edit-clusters) aggiornare il cluster utilizzando la console SageMaker AI.

   1. Tagga lo spazio di lavoro [Grafana gestito da Amazon](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html) al tuo dominio Studio. Così facendo, puoi collegare in modo rapido e diretto lo spazio di lavoro Grafana dal cluster in Studio. A tale scopo, aggiungi il tag seguente al cluster per identificarlo con l’ID dello spazio di lavoro Grafana, `ws-id`.

     Chiave tag = “`grafana-workspace`”, valore tag = “`ws-id`”.

1. (Facoltativo) [Limitazione della visualizzazione delle attività in Studio per i cluster EKS](#sagemaker-hyperpod-studio-setup-eks-restrict-tasks-view). Per informazioni sulle attività visibili in Studio, consulta [Processi](sagemaker-hyperpod-studio-tabs.md#sagemaker-hyperpod-studio-tabs-tasks).

## Limitazione della visualizzazione delle attività in Studio per i cluster EKS
<a name="sagemaker-hyperpod-studio-setup-eks-restrict-tasks-view"></a>

Puoi limitare le autorizzazioni dei namespace Kubernetes per gli utenti, in modo che possano visualizzare solo le attività appartenenti a un namespace specificato. Di seguito vengono fornite informazioni su come limitare la visualizzazione delle attività in Studio per i cluster EKS. Per informazioni sulle attività visibili in Studio, consulta [Processi](sagemaker-hyperpod-studio-tabs.md#sagemaker-hyperpod-studio-tabs-tasks). 

Per impostazione predefinita, gli utenti avranno visibilità su tutte le attività del cluster EKS. Puoi limitare la visibilità degli utenti sulle attività del cluster EKS in base a namespace specifici. In questo modo, gli utenti possono accedere alle risorse di cui hanno bisogno, ma al tempo stesso vengono garantiti rigorosi controlli di accesso. Per consentire la visualizzazione dei processi in un namespace a un utente, devi specificare il namespace dopo aver impostato quanto segue.

Una volta applicata la limitazione, dovrai fornire il namespace agli utenti che assumono il ruolo. Studio mostrerà i processi del namespace solo dopo che l’utente fornirà il namespace per il quale dispone delle autorizzazioni per la visualizzazione nella scheda **Attività**. 

La configurazione seguente consente agli amministratori di concedere un accesso specifico e limitato ai Data Scientist per la visualizzazione delle attività all’interno del cluster. La configurazione concede le autorizzazioni seguenti:
+ Elenca e ottieni i pod
+ Elenca e ottieni gli eventi
+ Ottieni definizioni di risorse personalizzate (CRDs)

Configurazione YAML

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pods-events-crd-cluster-role
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list"]
- apiGroups: [""]
  resources: ["events"]
  verbs: ["get", "list"]
- apiGroups: ["apiextensions.k8s.io"]
  resources: ["customresourcedefinitions"]
  verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: pods-events-crd-cluster-role-binding
subjects:
- kind: Group
  name: pods-events-crd-cluster-level
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: pods-events-crd-cluster-role
  apiGroup: rbac.authorization.k8s.io
```

1. Salva la configurazione YAML in un file denominato `cluster-role.yaml`.

1. Applica la configurazione utilizzando [https://kubernetes.io/docs/reference/kubectl/](https://kubernetes.io/docs/reference/kubectl/):

   ```
   kubectl apply -f cluster-role.yaml
   ```

1. Verifica la configurazione:

   ```
   kubectl get clusterrole pods-events-crd-cluster-role
   kubectl get clusterrolebinding pods-events-crd-cluster-role-binding
   ```

1. Assegna gli utenti al gruppo `pods-events-crd-cluster-level` tramite il tuo gestore dell’identità digitale o IAM.

# HyperPod schede in Studio
<a name="sagemaker-hyperpod-studio-tabs"></a>

In Amazon SageMaker Studio puoi accedere a uno dei tuoi cluster all'interno dei **HyperPodcluster** (in **Compute**) e visualizzare l'elenco dei cluster. I cluster visualizzati contengono informazioni come attività, metriche hardware, impostazioni e dettagli sui metadati. Questa visibilità può aiutare il team a identificare il candidato giusto per i carichi di lavoro di preaddestramento o di fine-tuning. Nelle sezioni seguenti vengono approfonditi i vari tipi di informazioni.

## Processi
<a name="sagemaker-hyperpod-studio-tabs-tasks"></a>

Amazon SageMaker HyperPod fornisce una visualizzazione delle attività del cluster. Le attività sono operazioni o processi che vengono inviati al cluster. Queste possono essere operazioni di machine learning, come addestramento, esecuzione di esperimenti o inferenza. La sezione seguente fornisce informazioni sulle attività HyperPod del cluster.

In Amazon SageMaker Studio, puoi accedere a uno dei tuoi cluster nei **HyperPodcluster** (in **Compute**) e visualizzare le informazioni sulle **attività** sul tuo cluster. Se riscontri problemi con la visualizzazione delle attività, consulta [Risoluzione dei problemi](sagemaker-hyperpod-studio-troubleshoot.md).

La tabella delle attività include:

------
#### [ For Slurm clusters ]

Per i cluster Slurm, le attività attualmente presenti nella coda dello scheduler dei processi Slurm sono mostrate nella tabella. Le informazioni mostrate per ogni attività includono il nome dell’attività, lo stato, l’ID del processo, la partizione, il runtime, i nodi, l’autore e le azioni.

Per un elenco e dettagli sui lavori precedenti, usa il [https://slurm.schedmd.com/sacct.html](https://slurm.schedmd.com/sacct.html)comando in JupyterLab o un terminale Code Editor. Il comando `sacct` viene utilizzato per visualizzare *informazioni cronologiche* sui processi *terminati* o *completati* nel sistema. Fornisce informazioni sull’accounting, incluso l’utilizzo delle risorse del processo come la memoria e lo stato di uscita. 

Per impostazione predefinita, tutti gli utenti di Studio possono visualizzare, gestire e interagire con tutte le attività Slurm disponibili. Per limitare le attività visibili agli utenti di Studio, consulta [Limitazione della visualizzazione delle attività nei cluster Studio per Slurm](sagemaker-hyperpod-studio-setup-slurm.md#sagemaker-hyperpod-studio-setup-slurm-restrict-tasks-view).

------
#### [ For Amazon EKS clusters ]

Per i cluster Amazon EKS, le attività kubeflow (PyTorch, MPI, TensorFlow) sono mostrate nella tabella. PyTorch le attività sono mostrate per impostazione predefinita. È possibile ordinare per PyTorch, MPI e TensorFlow in **Tipo di attività**. Le informazioni mostrate per ogni attività includono il nome dell’attività, lo stato, il namespace, la classe di priorità e l’ora di creazione. 

Per impostazione predefinita, tutti gli utenti possono visualizzare i processi in tutti i namespace. Per limitare i namespace Kubernetes visualizzabili dagli utenti di Studio, consulta [Limitazione della visualizzazione delle attività in Studio per i cluster EKS](sagemaker-hyperpod-studio-setup-eks.md#sagemaker-hyperpod-studio-setup-eks-restrict-tasks-view). Se un utente non visualizza alcuna attività e riceve un messaggio che chiede di fornire un namespace, deve ottenere tali informazioni dall’amministratore. 

------

## Metriche
<a name="sagemaker-hyperpod-studio-tabs-metrics"></a>

Amazon SageMaker HyperPod fornisce una visualizzazione delle metriche di utilizzo del cluster Slurm o Amazon EKS. Di seguito vengono fornite informazioni sui parametri del cluster. HyperPod 

Devi installare il componente aggiuntivo Amazon EKS per visualizzare le seguenti metriche. Per ulteriori informazioni, consulta [Installare il componente aggiuntivo Amazon CloudWatch Observability EKS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-EKS-addon.html).

In Amazon SageMaker Studio, puoi accedere a uno dei tuoi cluster all'interno dei **HyperPodcluster** (in **Compute**) e visualizzare i dettagli delle **metriche** sul tuo cluster. In Metriche puoi ottenere una visione completa delle metriche di utilizzo dei cluster, ad esempio quelle relative all’hardware, al team e alle attività. Sono inclusi la disponibilità e l’utilizzo delle risorse di calcolo, l’allocazione e l’utilizzo del team e le informazioni sull’esecuzione delle attività e sui tempi di attesa. 

## Settings
<a name="sagemaker-hyperpod-studio-tabs-settings"></a>

Amazon SageMaker HyperPod fornisce una visualizzazione delle impostazioni del cluster. Di seguito vengono fornite informazioni sulle impostazioni del HyperPod cluster.

In Amazon SageMaker Studio puoi accedere a uno dei tuoi cluster all'interno dei **HyperPodcluster** (in **Compute**) e visualizzare **le informazioni sulle impostazioni** del cluster. Vengono fornite le informazioni seguenti:
+ Dettagli sulle **istanze**, tra cui ID dell’istanza, stato, tipo di istanza e gruppo di istanze
+ Dettagli sui **gruppi di istanze**, tra cui nome, tipo, conteggi e informazioni sulle risorse di calcolo
+ Dettagli sull’**orchestrazione**, inclusi l’orchestratore, la versione e l’autorità di certificazione
+ Dettagli sulla **resilienza del cluster**
+ Dettagli sulla **sicurezza**, ad esempio relativi a sottoreti e gruppi di sicurezza

## Informazioni
<a name="sagemaker-hyperpod-studio-tabs-details"></a>

Amazon SageMaker HyperPod fornisce una visualizzazione dei dettagli dei metadati del cluster. Il paragrafo seguente fornisce informazioni su come ottenere i dettagli HyperPod del cluster.

In Amazon SageMaker Studio, puoi accedere a uno dei tuoi cluster all'interno dei **HyperPodcluster** (in **Compute**) e visualizzare **i dettagli** sul tuo cluster. Questi includono tag, log e metadati.

# Connessione ai HyperPod cluster e invio di attività ai cluster
<a name="sagemaker-hyperpod-studio-open"></a>

Puoi avviare carichi di lavoro di machine learning su HyperPod cluster all'interno di Amazon SageMaker Studio. IDEs Quando avvii Studio IDEs su un HyperPod cluster, è disponibile una serie di comandi per aiutarti a iniziare. Puoi lavorare sugli script di formazione, utilizzare i contenitori Docker per gli script di formazione e inviare lavori al cluster, il tutto dall'interno di Studio. IDEs La sezione seguente fornisce informazioni su come connettere il cluster a Studio. IDEs

In Amazon SageMaker Studio puoi accedere a uno dei tuoi cluster all'interno dei **HyperPodcluster** (in **Compute**) e visualizzare l'elenco dei cluster. Puoi connettere il tuo cluster a un IDE elencato in **Azioni**. 

Puoi anche scegliere un file system personalizzato dall’elenco delle opzioni. Per informazioni su come eseguire la configurazione, consulta [Configurazione in Studio HyperPod](sagemaker-hyperpod-studio-setup.md).

In alternativa, puoi creare uno spazio e avviare un IDE utilizzando la AWS CLI. A tale scopo, utilizza i comandi seguenti. L'esempio seguente crea uno `Private` `JupyterLab` spazio per `user-profile-name` con il file system `fs-id` FSx for Lustre allegato.

1. Create uno spazio utilizzando. [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/create-space.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/create-space.html) AWS CLI

   ```
   aws sagemaker create-space \
   --region your-region \
   --ownership-settings "OwnerUserProfileName=user-profile-name" \
   --space-sharing-settings "SharingType=Private" \
   --space-settings "AppType=JupyterLab,CustomFileSystems=[{FSxLustreFileSystem={FileSystemId=fs-id}}]"
   ```

1. Crea l'app utilizzando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/create-app.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/create-app.html) AWS CLI.

   ```
   aws sagemaker create-app \
   --region your-region \
   --space-name space-name \
   --resource-spec '{"ec2InstanceType":"'"instance-type"'","appEnvironmentArn":"'"image-arn"'"}'
   ```

Una volta aperte le applicazioni, puoi inviare le attività direttamente ai cluster connessi. 

# Risoluzione dei problemi
<a name="sagemaker-hyperpod-studio-troubleshoot"></a>

La sezione seguente elenca le soluzioni per la risoluzione dei problemi HyperPod in Studio.

**Topics**
+ [Scheda Attività](#sagemaker-hyperpod-studio-troubleshoot-tasks)
+ [Scheda dei parametri](#sagemaker-hyperpod-studio-troubleshoot-metrics)

## Scheda Attività
<a name="sagemaker-hyperpod-studio-troubleshoot-tasks"></a>

Se visualizzi Definizione di risorse personalizzate (CRD) non configurata nel cluster quando sei nella scheda **Attività**.
+ Concedi le policy `EKSAdminViewPolicy` e `ClusterAccessRole` al ruolo di esecuzione del dominio. 

  Per informazioni su come aggiungere tag al ruolo di esecuzione, consulta [Tag IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_roles.html).

  Per informazioni su come collegare le policy a un utente o a un gruppo IAM, consulta [Adding and removing IAM identity permissions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).

Se la griglia delle attività per le metriche Slurm non smette di caricarsi nella scheda **Attività**.
+ Assicurati che `RunAs` sia abilitato nelle preferenze di [Gestione sessioni AWS](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) e che il ruolo in uso abbia il tag `SSMSessionRunAs` collegato. 
  + Per abilitare `RunAs`, vai alla scheda **Preferenze** nella [console Systems Manager](https://console.aws.amazon.com/systems-manager/session-manager). 
  +  [Attiva il supporto per Esegui come per i nodi gestiti di Linux e macOS](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-preferences-run-as.html). 

Per la visualizzazione limitata delle attività in Studio per i cluster EKS:
+ Se il tuo ruolo di esecuzione non dispone delle autorizzazioni per elencare i namespace per i cluster EKS.
  + Per informazioni, consulta [Limitazione della visualizzazione delle attività in Studio per i cluster EKS](sagemaker-hyperpod-studio-setup-eks.md#sagemaker-hyperpod-studio-setup-eks-restrict-tasks-view).
+ Se gli utenti riscontrano problemi con l’accesso ai cluster EKS.

  1. Verifica che RBAC sia abilitato eseguendo il comando seguente AWS CLI .

     ```
     kubectl api-versions | grep rbac
     ```

     Questo dovrebbe restituire rbac.authorization.k8s.io/v1.

  1. Controlla se `ClusterRole` e `ClusterRoleBinding` esistono eseguendo i comandi seguenti.

     ```
     kubectl get clusterrole pods-events-crd-cluster-role
     kubectl get clusterrolebinding pods-events-crd-cluster-role-binding
     ```

  1. Verifica l’appartenenza al gruppo di utenti. Assicurati che l’utente sia assegnato correttamente al gruppo `pods-events-crd-cluster-level` nel tuo gestore dell’identità digitale o IAM.
+ Se l’utente non visualizza alcuna risorsa.
  + Verifica l’appartenenza al gruppo e assicurati che `ClusterRoleBinding` sia applicato correttamente.
+ Se gli utenti possono visualizzare le risorse in tutti i namespace.
  + Se è richiesta una limitazione del namespace, valuta la possibilità di utilizzare `Role` e `RoleBinding` invece di `ClusterRole` e `ClusterRoleBinding`.
+ Se la configurazione sembra corretta, ma le autorizzazioni non vengono applicate.
  + Controlla se `NetworkPolicies` o `PodSecurityPolicies` interferiscono con l’accesso.

## Scheda dei parametri
<a name="sagemaker-hyperpod-studio-troubleshoot-metrics"></a>

Se non ci sono CloudWatch parametri Amazon, vengono visualizzati nella scheda **Metrics**.
+ La `Metrics` sezione dei dettagli del HyperPod cluster viene utilizzata CloudWatch per recuperare i dati. Per visualizzare le metriche in questa sezione, [Osservabilità di cluster e attività](sagemaker-hyperpod-eks-cluster-observability-cluster.md) deve essere abilitato. Contatta l’amministratore per configurare le metriche.

# SageMaker HyperPod riferimenti
<a name="sagemaker-hyperpod-ref"></a>

Per ulteriori informazioni e riferimenti sull'utilizzo, SageMaker HyperPod consulta i seguenti argomenti.

**Topics**
+ [SageMaker HyperPod prezzi](#sagemaker-hyperpod-ref-pricing)
+ [SageMaker HyperPod APIs](#sagemaker-hyperpod-ref-api)
+ [SageMaker HyperPod Configurazione Slurm](#sagemaker-hyperpod-ref-slurm-configuration)
+ [SageMaker HyperPod DLAMI](#sagemaker-hyperpod-ref-hyperpod-ami)
+ [SageMaker HyperPod Riferimento alle autorizzazioni API](#sagemaker-hyperpod-ref-api-permissions)
+ [SageMaker HyperPod comandi in AWS CLI](#sagemaker-hyperpod-ref-cli)
+ [SageMaker HyperPod Moduli Python in AWS SDK per Python (Boto3)](#sagemaker-hyperpod-ref-boto3)

## SageMaker HyperPod prezzi
<a name="sagemaker-hyperpod-ref-pricing"></a>

Negli argomenti seguenti vengono fornite informazioni sui SageMaker HyperPod prezzi. Per ulteriori dettagli sul prezzo orario per l'utilizzo SageMaker HyperPod delle istanze, consulta anche [ SageMaker i prezzi di Amazon](https://aws.amazon.com/sagemaker/pricing/). 

**Richieste di capacità**

Puoi allocare capacità di calcolo su richiesta o riservata con SageMaker AI da utilizzare su. SageMaker HyperPod La creazione di cluster su richiesta alloca la capacità disponibile dal pool di capacità on-demand AI SageMaker . In alternativa, puoi richiedere una capacità riservata per garantire l’accesso inviando un ticket per un aumento della quota. L' SageMaker IA assegna la priorità alle richieste di capacità in entrata e l'utente riceve un tempo stimato per l'allocazione della capacità.

**Fatturazione del servizio**

Quando effettui il provisioning di una capacità di elaborazione attiva SageMaker HyperPod, ti viene fatturata la durata dell'allocazione della capacità. SageMaker HyperPod la fatturazione viene visualizzata nelle fatture relative all'anniversario con una voce relativa al tipo di allocazione della capacità (su richiesta, riservata), al tipo di istanza e al tempo impiegato per l'utilizzo dell'istanza. 

Per inviare un ticket per un aumento della quota, consulta [SageMaker HyperPod quote](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-quotas).

## SageMaker HyperPod APIs
<a name="sagemaker-hyperpod-ref-api"></a>

L'elenco seguente è un set completo SageMaker HyperPod APIs per l'invio di richieste di azione in formato JSON all'IA tramite o. SageMaker AWS CLI AWS SDK per Python (Boto3)
+ [BatchDeleteClusterNodes](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BatchDeleteClusterNodes.html)
+ [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)
+ [DeleteCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteCluster.html)
+ [DescribeCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html)
+ [DescribeClusterNode](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeClusterNode.html)
+ [ListClusterNodes](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusterNodes.html)
+ [ListClusters](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusters.html)
+ [UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)
+ [UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)

## SageMaker HyperPod Configurazione Slurm
<a name="sagemaker-hyperpod-ref-slurm-configuration"></a>

HyperPod supporta due approcci per configurare Slurm sul tuo cluster. Scegliete l'approccio più adatto alle vostre esigenze.


|  |  |  | 
| --- |--- |--- |
| Approccio | Descrizione | Consigliato per | 
| Configurazione basata su API | Definisci la configurazione di Slurm direttamente nelle richieste e API CreateCluster UpdateCluster  | Nuovi cluster; gestione semplificata | 
| Configurazione legacy | Usa un provisioning\$1parameters.json file separato archiviato in Amazon S3 | Cluster esistenti; compatibilità con le versioni precedenti | 

### Configurazione Slurm basata su API (consigliata)
<a name="sagemaker-hyperpod-ref-slurm-api-driven"></a>

Con la configurazione basata su API, puoi definire i tipi di nodi Slurm, le assegnazioni delle partizioni e i montaggi dei file system direttamente nelle richieste API. CreateCluster UpdateCluster Questo approccio fornisce:
+ **Un'unica fonte di verità**: tutta la configurazione nella richiesta API
+ **Nessuna gestione dei file S3**: non è necessario creare o mantenere `provisioning_parameters.json`
+ **Convalida integrata: l'**API convalida la topologia Slurm prima della creazione del cluster
+ Rilevamento delle **deviazioni**: rileva le modifiche non autorizzate a `slurm.conf`
+ **Per-instance-group storage**: configura diversi FSx file system per diversi gruppi di istanze
+ **FSx per il supporto di OpenZFS**: monta i filesystem OpenZFS oltre a Lustre FSx 

#### SlurmConfig (per gruppo di istanze)
<a name="sagemaker-hyperpod-ref-slurm-config"></a>

Aggiungi `SlurmConfig` a ciascun gruppo di istanze per definire il tipo di nodo Slurm e l'assegnazione della partizione.

```
"SlurmConfig": {
    "NodeType": "Controller | Login | Compute",
    "PartitionNames": ["string"]
}
```

**Parametri:**
+ `NodeType`: obbligatorio Il tipo di nodo Slurm per questo gruppo di istanze. Valori validi:
  + `Controller`— Nodo controller Slurm (head). Esegue il demone. `slurmctld` Esattamente un gruppo di istanze deve avere questo tipo di nodo.
  + `Login`— Nodo di accesso per l'accesso degli utenti. Opzionale. Al massimo un gruppo di istanze può avere questo tipo di nodo.
  + `Compute`— Nodi di lavoro che eseguono lavori. Può avere più gruppi di istanze con questo tipo di nodo.
**Importante**  
`NodeType`è immutabile. Una volta impostato durante la creazione del cluster, non può essere modificato. Per utilizzare un tipo di nodo diverso, crea un nuovo gruppo di istanze.
+ `PartitionNames`— Condizionale. Un array di nomi di partizioni Slurm. Obbligatorio per i tipi di `Compute` nodo; non consentito per i tipi di nodo `Controller` o 2`Login`. Attualmente supporta un singolo nome di partizione per gruppo di istanze.
**Nota**  
Tutti i nodi vengono aggiunti automaticamente alla `dev` partizione universale oltre alla partizione specificata.

**Esempio**:

```
{
    "InstanceGroupName": "gpu-compute",
    "InstanceType": "ml.p4d.24xlarge",
    "InstanceCount": 8,
    "SlurmConfig": {
        "NodeType": "Compute",
        "PartitionNames": ["gpu-training"]
    },
    "LifeCycleConfig": {
        "SourceS3Uri": "s3://sagemaker-bucket/lifecycle/src/",
        "OnCreate": "on_create.sh"
    },
    "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole"
}
```

#### Orchestrator.Slurm (a livello di cluster)
<a name="sagemaker-hyperpod-ref-slurm-orchestrator"></a>

Aggiungi `Orchestrator.Slurm` alla configurazione del cluster per specificare la modalità di gestione del file. HyperPod `slurm.conf`

```
"Orchestrator": {
    "Slurm": {
        "SlurmConfigStrategy": "Managed | Overwrite | Merge"
    }
}
```

**Parametri:**
+ `SlurmConfigStrategy`— Richiesto quando `Orchestrator.Slurm` viene fornito. Controlla come HyperPod gestisce il `slurm.conf` file sul nodo del controller. Valori validi:
  + `Managed`(impostazione predefinita): controlla HyperPod completamente la mappatura dei nodi di partizione in. `slurm.conf` Il rilevamento della deriva è abilitato: se la corrente è `slurm.conf` diversa dalla configurazione prevista, fallisce e restituisce un errore. UpdateCluster Usa questa strategia quando vuoi essere l'unica fonte di verità HyperPod per la configurazione di Slurm.
  + `Overwrite`— HyperPod impone l'applicazione della configurazione dell'API, sovrascrivendo eventuali modifiche manuali apportate a. `slurm.conf` Il rilevamento della deriva è disabilitato. Utilizzate questa strategia per ripristinare dopo una deriva o ripristinare il cluster a uno stato noto.
  + `Merge`— HyperPod conserva le `slurm.conf` modifiche manuali e le unisce alla configurazione dell'API. Il rilevamento della deriva è disabilitato. Utilizza questa strategia se devi apportare modifiche manuali alla configurazione di Slurm che dovrebbero persistere tra gli aggiornamenti.

**Nota**  
Se `Orchestrator.Slurm` viene omesso dalla richiesta, il comportamento predefinito è la strategia. `Managed`

**Suggerimento**  
È possibile modificare `SlurmConfigStrategy` in qualsiasi momento utilizzando UpdateCluster. Non è previsto alcun vincolo a una strategia specifica.

**Esempio**:

```
{
    "ClusterName": "my-hyperpod-cluster",
    "InstanceGroups": [...],
    "Orchestrator": {
        "Slurm": {
            "SlurmConfigStrategy": "Managed"
        }
    }
}
```

#### SlurmConfigStrategy confronto
<a name="sagemaker-hyperpod-ref-slurm-strategy-comparison"></a>


|  |  |  |  | 
| --- |--- |--- |--- |
| Strategia | Rilevamento della deriva | Modifiche manuali | Caso d'uso | 
| Managed | Abilitato: blocca gli aggiornamenti se viene rilevata una deriva | Bloccato | HyperPod gestito | 
| Overwrite | Disabilitato | sovrascritto | Ripristino dalla deriva; ripristino allo stato noto | 
| Merge | Disabilitato | Conservato | Utenti avanzati con slurm.conf esigenze personalizzate | 

#### FSx configurazione tramite InstanceStorageConfigs
<a name="sagemaker-hyperpod-ref-slurm-fsx-config"></a>

Con la configurazione basata su API, è possibile configurare i FSx file system per gruppo di istanze utilizzando. `InstanceStorageConfigs` Ciò consente a diversi gruppi di istanze di montare file system diversi.

**Prerequisiti:**
+ Il cluster deve utilizzare un VPC personalizzato (via`VpcConfig`). FSx i file system risiedono nel tuo VPC e il VPC gestito dalla piattaforma non può raggiungerli.
+ Almeno un gruppo di istanze deve avere with. `SlurmConfig` `NodeType: Controller`

##### FsxLustreConfig
<a name="sagemaker-hyperpod-ref-slurm-fsx-lustre"></a>

Configura FSx per il montaggio del file system Lustre per un gruppo di istanze.

```
"InstanceStorageConfigs": [
    {
        "FsxLustreConfig": {
            "DnsName": "string",
            "MountPath": "string",
            "MountName": "string"
        }
    }
]
```

**Parametri:**
+ `DnsName`: obbligatorio Il nome DNS del filesystem for Lustre. FSx Ad esempio: `fs-0abc123def456789.fsx.us-west-2.amazonaws.com`
+ `MountPath` : Opzionale. Il percorso di montaggio locale sull'istanza. Impostazione predefinita: `/fsx`
+ `MountName`: obbligatorio Il nome di montaggio del FSx filesystem for Lustre. Puoi trovarlo nella FSx console Amazon o eseguendolo`aws fsx describe-file-systems`.

##### FsxOpenZfsConfig
<a name="sagemaker-hyperpod-ref-slurm-fsx-openzfs"></a>

Configura FSx per il montaggio del filesystem OpenZFS per un gruppo di istanze.

```
"InstanceStorageConfigs": [
    {
        "FsxOpenZfsConfig": {
            "DnsName": "string",
            "MountPath": "string"
        }
    }
]
```

**Parametri:**
+ `DnsName`: obbligatorio Il nome DNS del filesystem for OpenZFS. FSx Ad esempio: `fs-0xyz987654321.fsx.us-west-2.amazonaws.com`
+ `MountPath` : Opzionale. Il percorso di montaggio locale sull'istanza. Impostazione predefinita: `/home`

**Nota**  
Ogni gruppo di istanze può avere al massimo una `FsxLustreConfig` alla volta`FsxOpenZfsConfig`.

**Esempio con più filesystem:**

```
{
    "InstanceGroupName": "gpu-compute",
    "InstanceType": "ml.p4d.24xlarge",
    "InstanceCount": 4,
    "SlurmConfig": {
        "NodeType": "Compute",
        "PartitionNames": ["gpu-training"]
    },
    "InstanceStorageConfigs": [
        {
            "FsxLustreConfig": {
                "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com",
                "MountPath": "/fsx",
                "MountName": "abcdefgh"
            }
        },
        {
            "FsxOpenZfsConfig": {
                "DnsName": "fs-0xyz987654321.fsx.us-west-2.amazonaws.com",
                "MountPath": "/shared"
            }
        },
        {
            "EbsVolumeConfig": {
                "VolumeSizeInGB": 500
            }
        }
    ],
    "LifeCycleConfig": {
        "SourceS3Uri": "s3://sagemaker-bucket/lifecycle/src/",
        "OnCreate": "on_create.sh"
    },
    "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole"
}
```

**Importante**  
FSx le modifiche alla configurazione si applicano solo durante il provisioning dei nodi. I nodi esistenti mantengono la FSx configurazione originale. Per applicare una nuova FSx configurazione a tutti i nodi, riduci il gruppo di istanze a 0, quindi esegui il backup verso l'alto.

#### Esempio di configurazione completo basato su API
<a name="sagemaker-hyperpod-ref-slurm-complete-example"></a>

L'esempio seguente mostra una CreateCluster richiesta completa che utilizza la configurazione Slurm basata su API:

```
{
    "ClusterName": "ml-training-cluster",
    "InstanceGroups": [
        {
            "InstanceGroupName": "controller",
            "InstanceType": "ml.c5.xlarge",
            "InstanceCount": 1,
            "SlurmConfig": {
                "NodeType": "Controller"
            },
            "LifeCycleConfig": {
                "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/",
                "OnCreate": "on_create.sh"
            },
            "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole",
            "ThreadsPerCore": 2
        },
        {
            "InstanceGroupName": "login",
            "InstanceType": "ml.m5.xlarge",
            "InstanceCount": 1,
            "SlurmConfig": {
                "NodeType": "Login"
            },
            "LifeCycleConfig": {
                "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/",
                "OnCreate": "on_create.sh"
            },
            "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole",
            "ThreadsPerCore": 2
        },
        {
            "InstanceGroupName": "gpu-compute",
            "InstanceType": "ml.p4d.24xlarge",
            "InstanceCount": 8,
            "SlurmConfig": {
                "NodeType": "Compute",
                "PartitionNames": ["gpu-training"]
            },
            "InstanceStorageConfigs": [
                {
                    "FsxLustreConfig": {
                        "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com",
                        "MountPath": "/fsx",
                        "MountName": "abcdefgh"
                    }
                }
            ],
            "LifeCycleConfig": {
                "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/",
                "OnCreate": "on_create.sh"
            },
            "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole",
            "ThreadsPerCore": 2,
            "OnStartDeepHealthChecks": ["InstanceStress", "InstanceConnectivity"]
        },
        {
            "InstanceGroupName": "cpu-compute",
            "InstanceType": "ml.c5.18xlarge",
            "InstanceCount": 4,
            "SlurmConfig": {
                "NodeType": "Compute",
                "PartitionNames": ["cpu-preprocessing"]
            },
            "InstanceStorageConfigs": [
                {
                    "FsxLustreConfig": {
                        "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com",
                        "MountPath": "/fsx",
                        "MountName": "abcdefgh"
                    }
                }
            ],
            "LifeCycleConfig": {
                "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/",
                "OnCreate": "on_create.sh"
            },
            "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole",
            "ThreadsPerCore": 2
        }
    ],
    "Orchestrator": {
        "Slurm": {
            "SlurmConfigStrategy": "Managed"
        }
    },
    "VpcConfig": {
        "SecurityGroupIds": ["sg-0abc123def456789a"],
        "Subnets": ["subnet-0abc123def456789a", "subnet-0abc123def456789b"]
    },
    "Tags": [
        {
            "Key": "Project",
            "Value": "ML-Training"
        }
    ]
}
```

Per ulteriori informazioni sull'utilizzo della configurazione basata su API, consulta. [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md)

### Configurazione precedente: provisioning\$1parameters.json
<a name="sagemaker-hyperpod-ref-provisioning-forms"></a>

**Nota**  
L'`provisioning_parameters.json`approccio è il metodo legacy per configurare Slurm on. HyperPod Per i nuovi cluster, consigliamo di utilizzare l'approccio di configurazione basato sulle API descritto sopra. L'approccio legacy rimane pienamente supportato per la compatibilità con le versioni precedenti.

Con l'approccio legacy, crei un file di configurazione Slurm denominato `provisioning_parameters.json` e lo carichi su Amazon S3 come parte degli script del ciclo di vita. HyperPod legge questo file durante la creazione del cluster per configurare i nodi Slurm.

#### Modulo di configurazione per provisioning\$1parameters.json
<a name="sagemaker-hyperpod-ref-provisioning-forms-slurm"></a>

Il codice seguente è il modulo di configurazione Slurm da preparare per configurare correttamente i nodi Slurm sul cluster. HyperPod Devi compilare questo modulo e caricarlo insieme a un set di script del ciclo di vita durante la creazione del cluster. Per sapere come preparare questo modulo durante i processi di creazione dei HyperPod cluster, vedi. [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md)

```
// Save as provisioning_parameters.json.
{
    "version": "1.0.0",
    "workload_manager": "slurm",
    "controller_group": "string",
    "login_group": "string",
    "worker_groups": [
        {
            "instance_group_name": "string",
            "partition_name": "string"
        }
    ],
    "fsx_dns_name": "string",
    "fsx_mountname": "string"
}
```

**Parametri:**
+ `version`: obbligatorio Questa è la versione del modulo dei parametri di HyperPod provisioning. Lascia il valore su `1.0.0`.
+ `workload_manager`: obbligatorio Serve a specificare quale gestore del carico di lavoro configurare nel cluster. HyperPod Lascia il valore su `slurm`.
+ `controller_group`: obbligatorio Serve a specificare il nome del gruppo di istanze del HyperPod cluster che si desidera assegnare al nodo Slurm controller (head).
+ `login_group` : Opzionale. Serve a specificare il nome del gruppo di istanze del HyperPod cluster che si desidera assegnare al nodo di accesso Slurm.
+ `worker_groups`: obbligatorio Serve per configurare i nodi di lavoro (calcolo) Slurm sul cluster. HyperPod 
  + `instance_group_name`: obbligatorio Serve a specificare il nome del gruppo di HyperPod istanze che si desidera assegnare al nodo Slurm worker (calcolo).
  + `partition_name`: obbligatorio Serve per specificare il nome della partizione per il nodo.
+ `fsx_dns_name` : Opzionale. Se desideri configurare i tuoi nodi Slurm sul HyperPod cluster per comunicare con Amazon FSx, specifica il nome FSx DNS.
+ `fsx_mountname` : Opzionale. Se desideri configurare i tuoi nodi Slurm sul HyperPod cluster per comunicare con Amazon FSx, specifica il nome di FSx montaggio.

### Confronto: configurazione basata su API e configurazione legacy
<a name="sagemaker-hyperpod-ref-slurm-comparison"></a>


|  |  |  | 
| --- |--- |--- |
| Funzionalità | Basato su API (consigliato) | Legacy (provisioning\$1parameters.json) | 
| Posizione di configurazione | CreateCluster Richiesta API | File S3 | 
| FSx per Lustre | Sì, gruppo per istanza | Sì, solo a livello di cluster | 
| FSx per OpenZFS | Sì, per gruppo di istanze | No, non supportato | 
| Validazione integrata | Sì | No | 
| Rilevamento delle deviazioni | Sì — (Strategia gestita) | No | 
| Gestione dei file S3 | Campo non obbligatorio | Richiesto | 
| Complessità degli script del ciclo di vita | Semplificato | È richiesta la configurazione SLURM completa | 

## SageMaker HyperPod DLAMI
<a name="sagemaker-hyperpod-ref-hyperpod-ami"></a>

SageMaker HyperPod esegue un DLAMI basato su:
+ [AWS AMI GPU Deep Learning Base (Ubuntu 20.04)](https://aws.amazon.com/releasenotes/aws-deep-learning-base-gpu-ami-ubuntu-20-04/) per l'orchestrazione con Slurm.
+ AMI basata su Amazon Linux 2 per l’orchestrazione con Amazon EKS.

Il SageMaker HyperPod DLAMI è fornito in bundle con pacchetti aggiuntivi per supportare strumenti open source come Slurm, Kubernetes, dipendenze e pacchetti software SageMaker HyperPod cluster per supportare funzionalità di resilienza come il controllo dello stato del cluster e il ripristino automatico. Per seguire gli aggiornamenti software distribuiti dal team di assistenza, consulta HyperPod . HyperPod DLAMIs [Note di SageMaker HyperPod rilascio di Amazon](sagemaker-hyperpod-release-notes.md)

## SageMaker HyperPod Riferimento alle autorizzazioni API
<a name="sagemaker-hyperpod-ref-api-permissions"></a>

**Importante**  
Le politiche IAM personalizzate che consentono ad Amazon SageMaker Studio o Amazon SageMaker Studio Classic di creare SageMaker risorse Amazon devono inoltre concedere le autorizzazioni per aggiungere tag a tali risorse. L’autorizzazione per aggiungere tag alle risorse è necessaria perché Studio e Studio Classic applicano automaticamente tag a tutte le risorse che creano. Se una policy IAM consente a Studio e Studio Classic di creare risorse ma non consente l'etichettatura, possono verificarsi errori AccessDenied "" durante il tentativo di creare risorse. Per ulteriori informazioni, consulta [Fornisci le autorizzazioni per etichettare SageMaker le risorse AI](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS politiche gestite per Amazon SageMaker AI](security-iam-awsmanpol.md)che danno i permessi per creare SageMaker risorse includono già le autorizzazioni per aggiungere tag durante la creazione di tali risorse.

Quando configuri il controllo degli accessi per consentire l'esecuzione di operazioni SageMaker HyperPod API e scrivi una politica di autorizzazioni da allegare agli utenti IAM per gli amministratori del cloud, utilizza la seguente tabella come riferimento.


|  |  |  | 
| --- |--- |--- |
| Operazioni delle SageMaker API Amazon | Autorizzazioni necessarie (azioni API) | Risorse | 
| CreateCluster | sagemaker:CreateCluster | arn:aws:sagemaker:region:account-id:cluster/cluster-id | 
| DeleteCluster | sagemaker:DeleteCluster | arn:aws:sagemaker:region:account-id:cluster/cluster-id | 
| DescribeCluster | sagemaker:DescribeCluster | arn:aws:sagemaker:region:account-id:cluster/cluster-id | 
| DescribeClusterNode | sagemaker:DescribeClusterNode | arn:aws:sagemaker:region:account-id:cluster/cluster-id | 
| ListClusterNodes | sagemaker:ListClusterNodes | arn:aws:sagemaker:region:account-id:cluster/cluster-id | 
| ListClusters | sagemaker:ListClusters | arn:aws:sagemaker:region:account-id:cluster/cluster-id | 
| UpdateCluster | sagemaker:UpdateCluster | arn:aws:sagemaker:region:account-id:cluster/cluster-id | 
| UpdateClusterSoftware | sagemaker:UpdateClusterSoftware | arn:aws:sagemaker:region:account-id:cluster/cluster-id | 

Per un elenco completo delle autorizzazioni e dei tipi di risorse per SageMaker APIs, consulta [Azioni, risorse e chiavi di condizione per Amazon SageMaker AI](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsagemaker.html) nel *AWS Service Authorization Reference*.

## SageMaker HyperPod comandi in AWS CLI
<a name="sagemaker-hyperpod-ref-cli"></a>

Di seguito sono riportati i AWS CLI comandi SageMaker HyperPod per eseguire le [operazioni HyperPod API](#sagemaker-hyperpod-ref-api) principali.
+ [batch-delete-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/batch-delete-cluster-nodes.html)
+ [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-cluster.html)
+ [delete-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-cluster.html)
+ [describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster.html)
+ [describe-cluster-node](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-cluster-node.html)
+ [list-cluster-nodes](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-cluster-nodes.html)
+ [list-clusters](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-clusters.html)
+ [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster.html)
+ [update-cluster-software](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-cluster-software.html)

## SageMaker HyperPod Moduli Python in AWS SDK per Python (Boto3)
<a name="sagemaker-hyperpod-ref-boto3"></a>

Di seguito sono riportati i metodi del AWS SDK per Python (Boto3) client per l' SageMaker intelligenza artificiale per eseguire le [operazioni HyperPod API](#sagemaker-hyperpod-ref-api) principali.
+ [batch\$1delete\$1cluster\$1nodes](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/batch_delete_cluster_nodes.html#)
+ [create\$1cluster](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_cluster.html)
+ [delete\$1cluster](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/delete_cluster.html)
+ [describe\$1cluster](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/describe_cluster.html)
+ [describe\$1cluster\$1node](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/describe_cluster_node.html)
+ [list\$1cluster\$1nodes](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/list_cluster_nodes.html)
+ [list\$1clusters](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/list_clusters.html)
+ [update\$1cluster](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/update_cluster.html)
+ [update\$1cluster\$1software](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/update_cluster_software.html)

# Note di SageMaker HyperPod rilascio di Amazon
<a name="sagemaker-hyperpod-release-notes"></a>

Questo argomento tratta le note di rilascio che tengono traccia degli aggiornamenti, delle correzioni e delle nuove funzionalità per Amazon SageMaker HyperPod. Se stai cercando versioni, aggiornamenti e miglioramenti di funzionalità generali per Amazon SageMaker HyperPod, potresti trovare utile questa pagina.

Le versioni HyperPod AMI sono documentate separatamente per includere informazioni sui componenti chiave, comprese le versioni generali dell'AMI, le versioni e le dipendenze. Se stai cercando queste informazioni relative alle versioni HyperPod AMI, consulta[SageMaker HyperPod AMI Amazon](sagemaker-hyperpod-release-ami.md).

## SageMaker HyperPod note di rilascio: 25 gennaio 2026
<a name="sagemaker-hyperpod-release-notes-20260125"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**Nuove funzionalità**
+ Rilasciata la nuova SageMaker HyperPod AMI per Amazon EKS 1.34. Per ulteriori informazioni, consulta [SageMaker Rilasci AMI Hyperpod per Amazon EKS: 25 gennaio 2026](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20260125).

Per ulteriori informazioni, consulta [Kubernetes](https://kubernetes.io/blog/2025/08/27/kubernetes-v1-34-release/) v1.34.

## SageMaker HyperPod note di rilascio: 7 novembre 2025
<a name="sagemaker-hyperpod-release-notes-20251107"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**Nuove funzionalità**
+ [SageMaker HyperPod Versioni AMI per Amazon EKS: 7 novembre 2025](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20251107)Patch di sicurezza aggiornate.

## SageMaker HyperPod note di rilascio: 29 settembre 2025
<a name="sagemaker-hyperpod-release-notes-20250929"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**Nuove funzionalità**
+ Rilasciata la nuova SageMaker HyperPod AMI per Amazon EKS 1.33. Per ulteriori informazioni, consulta [SageMaker HyperPod Versioni AMI per Amazon EKS: 29 settembre 2025](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20250929).
**Importante**  
L'API Kubernetes beta di Dynamic Resource Allocation è abilitata per impostazione predefinita in questa versione.  
Questa API migliora la pianificazione e il monitoraggio dei carichi di lavoro che richiedono risorse come. GPUs
Questa API è stata sviluppata dalla community open source di Kubernetes e potrebbe cambiare nelle future versioni di Kubernetes. Prima di utilizzare l'API, consulta la documentazione di [Kubernetes](https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/) e scopri come influisce sui tuoi carichi di lavoro.
HyperPod non sta rilasciando un'AMI HyperPod Amazon Linux 2 per Kubernetes 1.33. AWS consiglia di eseguire la migrazione a. AL2023 Per ulteriori informazioni, consulta [Eseguire l'aggiornamento da Amazon Linux 2 a AL2023](https://docs.aws.amazon.com/eks/latest/userguide/al2023.html).

Per ulteriori informazioni, consulta [Kubernetes](https://kubernetes.io/blog/2025/04/23/kubernetes-v1-33-release/) v1.33.

## SageMaker HyperPod note di rilascio: 4 agosto 2025
<a name="sagemaker-hyperpod-release-notes-20250804"></a>

SageMaker HyperPod rilascia un nuovo pubblico AMIs per l'orchestrazione EKS. AMIs I pubblici possono essere utilizzati da soli o possono essere utilizzati per creare contenuti personalizzati. AMIs Per ulteriori informazioni sul pubblico AMIs, vedere[Rilasci di AMI pubbliche](sagemaker-hyperpod-release-public-ami.md). Per ulteriori informazioni sulla creazione di un’AMI personalizzata, consulta [Amazon Machine Images personalizzate (AMIs) per SageMaker HyperPod cluster](hyperpod-custom-ami-support.md). 

## SageMaker HyperPod note di rilascio: 31 luglio 2025
<a name="sagemaker-hyperpod-release-notes-20250731"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**Nuove funzionalità e miglioramenti**
+ È stata rilasciata una nuova AMI che aggiorna il sistema operativo da Amazon Linux 2 ad Amazon Linux 2023 per i cluster EKS. Gli aggiornamenti principali includono il kernel Linux 6.1, Python 3.10, NVIDIA Driver 560.35.03 e il gestore dei pacchetti DNF che sostituisce YUM.
**Importante**  
L'aggiornamento di Amazon Linux 2 AL2023 introduce modifiche significative che potrebbero influire sulla compatibilità con software e configurazioni progettati per. AL2 Ti consigliamo vivamente di testare le tue applicazioni AL2023 prima di aggiornare completamente i cluster.

  Per ulteriori informazioni sulla nuova AMI e su come aggiornare i cluster, consulta [SageMaker HyperPod Versioni AMI per Amazon EKS: 31 luglio 2025](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20250731).

## SageMaker HyperPod note di rilascio: 13 maggio 2025
<a name="sagemaker-hyperpod-release-notes-20250513"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md).

**Nuove funzionalità e miglioramenti**
+ È stata rilasciata un’AMI aggiornata che supporta Ubuntu 22.04 LTS per cluster Slurm. Questo rilascio include diversi aggiornamenti dei componenti di sistema e software che offrono prestazioni migliorate, funzionalità aggiornate e maggiore sicurezza.
**Importante**  
L’aggiornamento da Ubuntu 20.04 LTS a Ubuntu 22.04 LTS introduce modifiche che potrebbero influire sulla compatibilità con il software e le configurazioni progettate per Ubuntu 20.04.

  Per ulteriori informazioni, consulta:
  + [Aggiornamenti chiave nell’AMI Ubuntu 22.04](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-ami-slurm-ubuntu22-updates)
  + [Aggiornamento all’AMI Ubuntu 22.04](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-ami-slurm-ubuntu22-upgrade)
  + [Risoluzione dei problemi di aggiornamento](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-ami-slurm-ubuntu22-troubleshoot)

## SageMaker HyperPod note di rilascio: 1 maggio 2025
<a name="sagemaker-hyperpod-release-notes-20250501"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**Nuove funzionalità**
+ È stata aggiunta la creazione di report di utilizzo per i cluster orchestrati da EKS, che consente alle organizzazioni di implementare allocazioni dei costi trasparenti e basate sull’utilizzo in team, progetti o reparti. Questa funzionalità integra HyperPod la funzionalità [Task Governance](sagemaker-hyperpod-eks-operate-console-ui-governance.md) per garantire un'equa distribuzione dei costi in ambienti AI/ML multi-tenant condivisi. Per ulteriori informazioni, consulta [Reporting Compute](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-usage-reporting.html) Usage in. HyperPod

## SageMaker HyperPod note di versione: 28 aprile 2025
<a name="sagemaker-hyperpod-release-notes-20250428"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md) e[Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**Nuove funzionalità e miglioramenti**
+ Driver NVIDIA aggiornato dalla versione 550.144.03 alla 550.163.01. Questo aggiornamento è destinato a risolvere le vulnerabilità e le esposizioni comuni (CVEs) presenti nel [NVIDIA GPU Display Security](https://nvidia.custhelp.com/app/answers/detail/a_id/5630) Bulletin di aprile 2025.

Per ulteriori informazioni sui rilasci di AMI correlati, consulta [SageMaker HyperPod Versioni AMI per Slurm: 28 aprile 2025](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-release-ami-slurm-20250428) e [SageMaker HyperPod Versioni AMI per Amazon EKS: 28 aprile 2025](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20250428).

## SageMaker HyperPod note di rilascio: 18 aprile 2025
<a name="sagemaker-hyperpod-release-notes-20250418"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**Nuove funzionalità**
+ Rilasciata una nuova SageMaker HyperPod AMI per Amazon EKS 1.32.1. Per ulteriori informazioni, consulta [SageMaker HyperPod Versioni AMI per Amazon EKS: 18 aprile 2025](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20250418).

## SageMaker HyperPod note di rilascio: 10 aprile 2025
<a name="sagemaker-hyperpod-release-notes-20250410"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md).

**Nuove funzionalità e miglioramenti**
+ È stato aggiunto un tutorial sulle ricette di Direct Preference Optimization (DPO) per l'orchestrazione SageMaker HyperPod di Slurm. Questo tutorial di ottimizzazione fornisce step-by-step indicazioni per ottimizzare l'allineamento dei modelli utilizzando il metodo DPO sui cluster Slurm alimentati da GPU. SageMaker HyperPod Per ulteriori informazioni, consulta [HyperPod Tutorial Slurm Cluster DPO (GPU)](hyperpod-gpu-slurm-dpo-tutorial.md).

## SageMaker HyperPod note di rilascio: 3 aprile 2025
<a name="sagemaker-hyperpod-release-notes-20250403"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md) e[Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**Nuove funzionalità e miglioramenti**
+ Aggiunta una pagina [Quickstart](sagemaker-hyperpod-quickstart.md) per la distribuzione dei cluster. SageMaker HyperPod La pagina sfrutta i flussi di lavoro di configurazione semplificati dei workshop specializzati e automatizza SageMaker HyperPod l'implementazione utilizzando modelli predefiniti. AWS CloudFormation Supporta preferenze di infrastruttura come Slurm o Amazon EKS, per semplificare la configurazione e l’implementazione dei cluster baseline.
+ SageMaker HyperPod ora supporta i seguenti tipi di istanza per i cluster Slurm e Amazon EKS.
  + Nuovi tipi di istanze: istanze I3en, M7i e R7i. Per l’elenco completo delle istanze supportate, consulta il campo `InstanceType` in `[ClusterInstanceGroupDetails](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ClusterInstanceGroupDetails.html)`.

## SageMaker HyperPod note di rilascio: 16 marzo 2025
<a name="sagemaker-hyperpod-release-notes-20250316"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md) e[Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**Nuove funzionalità e miglioramenti**
+ Sono state aggiunte le seguenti chiavi di condizione IAM per un controllo più granulare degli accessi nelle operazioni API [https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_CreateCluster.html](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_CreateCluster.html) e [https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_UpdateCluster.html).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-release-notes.html)

## SageMaker HyperPod note di rilascio: 20 febbraio 2025
<a name="sagemaker-hyperpod-release-notes-20250220"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md) e[Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**Nuove funzionalità e miglioramenti**
+ È stato aggiunto il supporto per l'eliminazione dei gruppi di istanze dal SageMaker HyperPod cluster. Per ulteriori informazioni, consulta [Eliminazione di gruppi di istanze](smcluster-scale-down.md#smcluster-remove-instancegroup) per i cluster orchestrati da EKS e [Riduzione verticale di un cluster](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-scale-down) per i cluster orchestrati da Slurm. 

## SageMaker HyperPod note di rilascio: 18 febbraio 2025
<a name="sagemaker-hyperpod-release-notes-20250218"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md) e[Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**Nuove funzionalità**
+ Questa versione di SageMaker HyperPod incorpora un aggiornamento di sicurezza del toolkit contenitore Nvidia (dalla versione 1.17.3 alla versione 1.17.4). Per ulteriori informazioni, consulta le [note di rilascio v1.17.4](https://github.com/NVIDIA/nvidia-container-toolkit/releases/tag/v1.17.4). 
**Nota**  
Per tutti i carichi di lavoro dei container nel Kit di strumenti per container Nvidia versione 1.17.4, il montaggio delle librerie di compatibilità CUDA ora è disabilitato. Per garantire la compatibilità con più versioni CUDA nei flussi di lavoro dei container, aggiorna `LD_LIBRARY_PATH` per includere le tue librerie di compatibilità CUDA. Puoi trovare le fasi specifiche in [Se utilizzi un livello di compatibilità CUDA](inference-gpu-drivers.md#collapsible-cuda-compat).

Per ulteriori informazioni sui rilasci di AMI correlati, consulta [SageMaker HyperPod Versioni AMI per Slurm: 18 febbraio 2025](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-release-ami-slurm-20250218) e [SageMaker HyperPod Versioni AMI per Amazon EKS: 18 febbraio 2025](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20250218).

## SageMaker HyperPod note di rilascio: 6 febbraio 2025
<a name="sagemaker-hyperpod-release-notes-20250206"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md) e[Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).

**Nuove funzionalità e miglioramenti**
+ Supporto SageMaker HyperPod Multi-AZ migliorato: è possibile specificare diverse sottoreti e gruppi di sicurezza, appartenenti a diverse zone di disponibilità, per singoli gruppi di istanze all'interno del cluster. Per ulteriori informazioni sul supporto SageMaker HyperPod Multi-AZ, vedere. [Configurazione di cluster su più cluster SageMaker HyperPod AZs](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-multiple-availability-zones)

## SageMaker HyperPod note di rilascio: 22 gennaio 2025
<a name="sagemaker-hyperpod-release-notes-20250122"></a>

**Rilasci dell’AMI**
+ [SageMaker HyperPod Versioni AMI per Amazon EKS: 22 gennaio 2025](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20250122)

## SageMaker HyperPod note di rilascio: 09 gennaio 2025
<a name="sagemaker-hyperpod-release-notes-20250109"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md) e[Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md).

**Nuove funzionalità e miglioramenti**
+  IPv6 Supporto aggiunto: i cluster possono utilizzare l' IPv6 indirizzamento se configurati con IPv6 VPC e sottoreti abilitati. Per ulteriori informazioni, consulta [Configurazione SageMaker HyperPod con un Amazon VPC personalizzato](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-optional-vpc).

## SageMaker HyperPod note di rilascio: 21 dicembre 2024
<a name="sagemaker-hyperpod-release-notes-20241221"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md) e[Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md).

**Nuove funzionalità**
+ SageMaker HyperPod ora supporta i seguenti tipi di istanza per i cluster Slurm e Amazon EKS.
  + Nuovi tipi di istanze: C6gn, C6i, M6i e R6i.
  + Nuovi tipi di istanze Trainium: Trn1 e Trn1n.

**Miglioramenti**
+ È stata migliorata la visibilità della registrazione di log degli errori quando Slurm arresta i processi e il blocco non necessario delle fasi dei processi durante gli annullamenti dei processi avviati da Slurm.
+ DLAMI di base aggiornata per p5en per i cluster Slurm e Amazon EKS.

**Rilasci dell’AMI**
+ [SageMaker HyperPod Versioni AMI per Slurm: 21 dicembre 2024](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-release-ami-slurm-20241221)
+ [SageMaker HyperPod Versioni AMI per Amazon EKS: 21 dicembre 2024](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20241221)

## SageMaker HyperPod note di rilascio: 13 dicembre 2024
<a name="sagemaker-hyperpod-release-notes-20241213"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md) e[Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md).

**Nuova funzionalità**
+ SageMaker HyperPod rilascia una serie di CloudWatch parametri Amazon per monitorare lo stato e le prestazioni dei cluster SageMaker HyperPod Slurm. Queste metriche si riferiscono a CPU, GPU, utilizzo della memoria e informazioni sulle istanze del cluster, come il numero di nodi e i nodi difettosi. Questa funzionalità di monitoraggio è abilitata per impostazione predefinita ed è possibile accedere alle metriche nel namespace. `/aws/sagemaker/Clusters` CloudWatch Puoi anche impostare CloudWatch allarmi basati su queste metriche per rilevare e risolvere in modo proattivo potenziali problemi all'interno dei cluster basati su Slurm. HyperPod Per ulteriori informazioni, consulta [Metriche di Amazon SageMaker HyperPod Slurm](smcluster-slurm-metrics.md).

**Rilasci dell’AMI**
+ [SageMaker HyperPod Versioni AMI per Amazon EKS: 13 dicembre 2024](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20241213)

## SageMaker HyperPod note di rilascio: 24 novembre 2024
<a name="sagemaker-hyperpod-release-notes-20241124"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md) e[Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md).

**Nuove funzionalità**
+ È stato aggiunto il supporto per la configurazione di SageMaker HyperPod cluster su più zone di disponibilità. Per ulteriori informazioni sul supporto SageMaker HyperPod Multi-AZ, vedere. [Configurazione di cluster su più cluster SageMaker HyperPod AZs](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-multiple-availability-zones)

**Rilasci dell’AMI**
+ [SageMaker HyperPod Versioni AMI per Slurm: 24 novembre 2024](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-release-ami-slurm-20241124)
+ [SageMaker HyperPod Versioni AMI per Amazon EKS: 24 novembre 2024](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20241124)

## SageMaker HyperPod note di rilascio: 15 novembre 2024
<a name="sagemaker-hyperpod-release-notes-20241115"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md) e[Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md). Per ulteriori informazioni, consulta [SageMaker HyperPod Versioni AMI per Amazon EKS: 15 novembre 2024](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20241115).

**Nuove funzionalità e miglioramenti**
+ È stato aggiunto il supporto per i tipi di istanze trn1 e trn1n per i cluster orchestrati Amazon EKS e Slurm.
+ Gestione dei log migliorata per i cluster Slurm:
  +  Rotazione dei log implementata: settimanale o giornaliera in base alle dimensioni.
  +  Imposta la conservazione dei log su 3 settimane.
  +  Log compressi per ridurre l’impatto sull’archiviazione.
  +  Continua a caricare i log CloudWatch per la conservazione a lungo termine.
**Nota**  
Alcuni log sono ancora archiviati in syslogs.
+ Impostazioni Fluent Bit modificate per evitare problemi di tracciamento nei file che contengono righe lunghe.

**Correzioni di bug**
+ È stato impedito il troncamento involontario con gli aggiornamenti del nodo controller Slurm nel file di configurazione `slurm.config`.

**Rilasci dell’AMI**
+ [SageMaker HyperPod Versioni AMI per Slurm: 15 novembre 2024](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-release-ami-slurm-20241115)
+ [SageMaker HyperPod Versioni AMI per Amazon EKS: 15 novembre 2024](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20241115)

## SageMaker HyperPod note di rilascio: 11 novembre 2024
<a name="sagemaker-hyperpod-release-notes-20241111"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md) e[Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md). 

**Nuova funzionalità**
+ SageMaker HyperPod L'AMI ora supporta i tipi di istanza G6e.

**Rilasci dell’AMI**
+ [SageMaker HyperPod Versioni AMI per Slurm: 11 novembre 2024](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-release-ami-slurm-20241111)
+ [SageMaker HyperPod Versioni AMI per Amazon EKS: 11 novembre 2024](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20241111)

## SageMaker HyperPod note di rilascio: 31 ottobre 2024
<a name="sagemaker-hyperpod-release-notes-20241031"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md) e[Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md).

**Nuove funzionalità**
+ Aggiunti SageMaker HyperPod cluster con ridimensionamento a livello di gruppo di istanze e a livello di istanza per i cluster orchestrati Amazon EKS e Slurm. Per ulteriori informazioni sulla riduzione verticale dei cluster Amazon EKS, consulta [Ridimensionamento di un cluster SageMaker HyperPod](smcluster-scale-down.md). Per ulteriori informazioni sulla riduzione verticale dei cluster Slurm, consulta *Riduzione verticale di un cluster* in [Gestione dei cluster SageMaker HyperPod Slurm utilizzando il AWS CLI](sagemaker-hyperpod-operate-slurm-cli-command.md).
+ SageMaker HyperPod ora supporta il tipo di istanza P5e per i cluster orchestrati Amazon EKS e Slurm. 

## SageMaker HyperPod note di rilascio: 21 ottobre 2024
<a name="sagemaker-hyperpod-release-notes-20241021"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md) e[Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md).

**Nuova funzionalità**
+ SageMaker HyperPod ora supporta i tipi di istanza P5e [n], G6, Gr6 e Trn2 [n] per i cluster Slurm e Amazon EKS.

**Rilasci dell’AMI**
+ [SageMaker HyperPod Versioni AMI per Slurm: 21 ottobre 2024](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-release-ami-slurm-20241021)
+ [SageMaker HyperPod Versioni AMI per Amazon EKS: 21 ottobre 2024](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20241021)

## SageMaker HyperPod note di rilascio: 10 settembre 2024
<a name="sagemaker-hyperpod-release-notes-20240910"></a>

SageMaker HyperPod rilascia quanto segue per [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md) e[Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md).

**Nuove funzionalità**
+ È stato aggiunto il supporto Amazon EKS in SageMaker HyperPod. Per ulteriori informazioni, consulta [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md).
+ È stato aggiunto il supporto per la gestione dei SageMaker HyperPod cluster tramite CloudFormation e Terraform. [Per ulteriori informazioni sulla gestione dei HyperPod cluster tramite CloudFormation, consulta CloudFormation la documentazione per. `AWS::SageMaker::Cluster`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-cluster.html) Per ulteriori informazioni sulla gestione dei HyperPod cluster tramite Terraform, consulta la documentazione di [Terraform](https://registry.terraform.io/providers/hashicorp/awscc/latest/docs/data-sources/sagemaker_cluster) per. `awscc_sagemaker_cluster`

**Rilasci dell’AMI**
+ [SageMaker HyperPod Versioni AMI per Slurm: 10 settembre 2024](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-release-ami-slurm-20240910)
+ [SageMaker HyperPod Versioni AMI per Amazon EKS: 10 settembre 2024](sagemaker-hyperpod-release-ami-eks.md#sagemaker-hyperpod-release-ami-eks-20240910)

## SageMaker HyperPod note di rilascio: 20 agosto 2024
<a name="sagemaker-hyperpod-release-notes-20240820"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione SageMaker HyperPod dei cluster con Slurm](sagemaker-hyperpod-slurm.md).

**Nuove funzionalità**
+ È stata migliorata la [funzionalità di SageMaker HyperPod ripristino automatico](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-resiliency-slurm.html#sagemaker-hyperpod-resiliency-slurm-auto-resume), estendendo la capacità di resilienza per i nodi Slurm collegati con Generic (GRES). RESources 

  Quando le [Generic RESources (GRES)](https://slurm.schedmd.com/gres.html) sono collegate a un nodo Slurm, Slurm in genere non consente modifiche all’allocazione dei nodi, ad esempio la sostituzione dei nodi, e quindi non consente di riprendere un processo non riuscito. A meno che non sia esplicitamente vietato, la funzionalità di ripristino HyperPod automatico rimette automaticamente in coda qualsiasi lavoro difettoso associato ai nodi abilitati per GRES. Questa procedura prevede l’arresto del processo, il suo reinserimento nella coda dei processi e il suo riavvio dall’inizio.

**Altre modifiche**
+ Preconfezionato [https://slurm.schedmd.com/slurmrestd.html](https://slurm.schedmd.com/slurmrestd.html)nell'AMI SageMaker HyperPod .
+ Sono stati modificati i valori predefiniti per `ResumeTimeout` e `UnkillableStepTimeout`, passati da 60 a 300 secondi in `slurm.conf` per migliorare la reattività del sistema e la gestione dei processi.
+ Sono stati apportati lievi miglioramenti ai controlli dell’integrità per NVIDIA Data Center GPU Manager (DCGM) e NVIDIA System Management Interface (nvidia-smi).

**Correzioni di bug**
+ Il plug-in di HyperPod ripristino automatico può utilizzare nodi inattivi per riprendere un lavoro.

## SageMaker HyperPod note di rilascio: 20 giugno 2024
<a name="sagemaker-hyperpod-release-notes-20240620"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione SageMaker HyperPod dei cluster con Slurm](sagemaker-hyperpod-slurm.md).

**Nuove funzionalità**
+ È stata aggiunta una nuova funzionalità di collegamento di storage aggiuntivo alle istanze SageMaker HyperPod del cluster. Con questa funzionalità, è possibile configurare lo storage supplementare a livello di configurazione del gruppo di istanze durante i processi di creazione o aggiornamento del cluster, tramite la SageMaker HyperPod console o il e. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html) APIs Il volume EBS aggiuntivo è collegato a ciascuna istanza all'interno di un SageMaker HyperPod cluster e montato su. `/opt/sagemaker` Per ulteriori informazioni sulla sua implementazione nel SageMaker HyperPod cluster, consulta la documentazione aggiornata nelle pagine seguenti.
  + [Iniziare con SageMaker HyperPod](smcluster-getting-started-slurm.md)
  + [SageMaker HyperPod Operazioni del cluster Slurm](sagemaker-hyperpod-operate-slurm.md)

  Tieni presente che è necessario aggiornare il software del HyperPod cluster per utilizzare questa funzionalità. Dopo aver applicato le patch al software del HyperPod cluster, è possibile utilizzare questa funzionalità per SageMaker HyperPod i cluster esistenti creati prima del 20 giugno 2024 aggiungendo nuovi gruppi di istanze. Questa funzionalità è pienamente efficace per tutti i SageMaker HyperPod cluster creati dopo il 20 giugno 2024.

**Fasi dell’aggiornamento**
+ Esegui il comando seguente per chiamare l'[UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)API per aggiornare i HyperPod cluster esistenti con il HyperPod DLAMI più recente. Per ulteriori istruzioni, consulta [Aggiorna il software della SageMaker HyperPod piattaforma di un cluster](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software). 
**Importante**  
Esegui il backup del tuo lavoro prima di eseguire questa API. Il processo di applicazione delle patch sostituisce il volume root con l’AMI aggiornata, il che significa che i dati precedenti archiviati nel volume root dell’istanza andranno persi. Assicurati di eseguire il backup dei dati dal volume root dell'istanza su Amazon S3 o Amazon FSx for Lustre. Per ulteriori informazioni, consulta [Utilizza lo script di backup fornito da SageMaker HyperPod](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup).

  ```
   aws sagemaker update-cluster-software --cluster-name your-cluster-name
  ```
**Nota**  
Tieni presente che dovresti eseguire il AWS CLI comando per aggiornare il HyperPod cluster. L'aggiornamento del HyperPod software tramite l'interfaccia utente SageMaker HyperPod della console non è attualmente disponibile.

## SageMaker HyperPod note di rilascio: 24 aprile 2024
<a name="sagemaker-hyperpod-release-notes-20240424"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione SageMaker HyperPod dei cluster con Slurm](sagemaker-hyperpod-slurm.md).

**Correzioni di bug**
+ È stato corretto un bug con il parametro `ThreadsPerCore` nell’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ClusterInstanceGroupSpecification.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ClusterInstanceGroupSpecification.html). Con la correzione, [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)acquisisci e applica [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html) APIs correttamente l'input dell'utente`ThreadsPerCore`. Questa correzione è valida sui HyperPod cluster creati dopo il 24 aprile 2024. Se questo bug ti ha creato problemi e vuoi applicare questa correzione al cluster, devi creare un nuovo cluster. Assicurati di eseguire il backup e il ripristino del lavoro quando passi a un nuovo cluster seguendo le istruzioni riportate in [Utilizza lo script di backup fornito da SageMaker HyperPod](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup).

## SageMaker HyperPod note di rilascio: 27 marzo 2024
<a name="sagemaker-hyperpod-release-notes-20240327"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione SageMaker HyperPod dei cluster con Slurm](sagemaker-hyperpod-slurm.md).

**HyperPod patch software**

Il team HyperPod di assistenza distribuisce le patch software tramite. [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) Consulta i seguenti dettagli sull'ultima versione di HyperPod DLAMI.
+ In questa versione di HyperPod DLAMI, Slurm è costruito con il servizio REST (`slurmestd`) con supporto per JSON, YAML e JWT.
+ [Slurm](https://slurm.schedmd.com/documentation.html) aggiornato alla versione 23.11.3.

**Miglioramenti**
+ Aumento del timeout del servizio di ripresa automatica a 60 minuti.
+ Processo di sostituzione delle istanze migliorato per non riavviare il controller Slurm.
+ Messaggi di errore migliorati grazie all’esecuzione di script del ciclo di vita, ad esempio errori di download ed errori di controllo dell’integrità delle istanze all’avvio dell’istanza.

**Correzioni di bug**
+ È stato corretto un bug relativo al servizio chrony che causava un problema con la sincronizzazione dell’ora.
+ È stato corretto un bug relativo all’analisi di `slurm.conf`.
+ È stato corretto un problema con la libreria [NVIDIA `go-dcgm`](https://github.com/NVIDIA/go-dcgm).

## SageMaker HyperPod note di rilascio: 14 marzo 2024
<a name="sagemaker-hyperpod-release-notes-20240314"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione SageMaker HyperPod dei cluster con Slurm](sagemaker-hyperpod-slurm.md).

**Miglioramenti**
+ HyperPod ora supporta correttamente il passaggio dei nomi delle partizioni forniti tramite `provisioning_parameters.json` e crea partizioni in modo appropriato sulla base degli input forniti. Per ulteriori informazioni su `provisioning_parameters.json`, consulta [Configurazione precedente: provisioning\$1parameters.json](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-provisioning-forms) e [Personalizzazione dei SageMaker HyperPod cluster utilizzando script del ciclo di vita](sagemaker-hyperpod-lifecycle-best-practices-slurm.md).

**Rilasci dell’AMI**
+ [SageMaker HyperPod Versioni AMI per Slurm: 14 marzo 2024](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-release-ami-slurm-20240314)

## SageMaker HyperPod note di rilascio: 15 febbraio 2024
<a name="sagemaker-hyperpod-release-notes-20240215"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione SageMaker HyperPod dei cluster con Slurm](sagemaker-hyperpod-slurm.md).

**Nuove funzionalità**
+ Aggiunta una nuova `UpdateClusterSoftware` API per l'applicazione SageMaker HyperPod di patch di sicurezza. Quando le patch di sicurezza diventano disponibili, ti consigliamo di aggiornare SageMaker HyperPod i cluster esistenti nel tuo account eseguendoli. `aws sagemaker update-cluster-software --cluster-name your-cluster-name` Per seguire le future patch di sicurezza, continua a tenere traccia di questa pagina delle note di SageMaker HyperPod rilascio di Amazon. Per informazioni sul funzionamento dell’API `UpdateClusterSoftware`, consulta [Aggiorna il software della SageMaker HyperPod piattaforma di un cluster](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software).

## SageMaker HyperPod note di rilascio: 29 novembre 2023
<a name="sagemaker-hyperpod-release-notes-20231129"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione SageMaker HyperPod dei cluster con Slurm](sagemaker-hyperpod-slurm.md).

**Nuove funzionalità**
+ Ha lanciato Amazon SageMaker HyperPod al AWS re:Invent 2023.

**Rilasci dell’AMI**
+ [SageMaker HyperPod Rilascio AMI per Slurm: 29 novembre 2023](sagemaker-hyperpod-release-ami-slurm.md#sagemaker-hyperpod-release-ami-slurm-20231129)

# SageMaker HyperPod AMI Amazon
<a name="sagemaker-hyperpod-release-ami"></a>

Amazon SageMaker HyperPod Amazon Machine Images (AMIs) sono immagini di macchine specializzate per carichi di lavoro di apprendimento automatico distribuiti e calcolo ad alte prestazioni. Queste AMIs ottimizzano le immagini di base con componenti essenziali, tra cui i driver GPU e il supporto dell'acceleratore AWS Neuron.

I componenti chiave aggiunti includono: HyperPod AMIs 
+ [Pubblico AMIs](sagemaker-hyperpod-release-public-ami.md) con supporto per la [creazione di edifici personalizzati AMIs](hyperpod-custom-ami-support.md)
+ Strumenti di orchestrazione avanzati:
  + [Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md)
  + [Orchestrazione di SageMaker HyperPod cluster con Amazon EKS](sagemaker-hyperpod-eks.md)
+ Dipendenze della gestione del cluster
+ Funzionalità di resilienza integrate:
  + controllo dell’integrità del cluster
  + funzionalità di ripresa automatica
+ Support per la gestione e la configurazione dei HyperPod cluster

Questi miglioramenti si basano sulla seguente base Deep Learning AMIs ()DLAMIs:
+ [AWS AMI GPU Deep Learning Base (Ubuntu 20.04)](https://aws.amazon.com/releasenotes/aws-deep-learning-base-gpu-ami-ubuntu-20-04/) per l'orchestrazione con Slurm.
+ AMI basata su Amazon Linux 2 o Amazon Linux 2023 per l’orchestrazione con Amazon EKS.

Scegli la tua in base alle tue HyperPod AMIs preferenze di orchestrazione:
+ Per l’orchestrazione Slurm, consulta [SageMaker HyperPod Versioni AMI per Slurm](sagemaker-hyperpod-release-ami-slurm.md).
+ Per l’orchestrazione Amazon EKS, consulta [SageMaker HyperPod Versioni AMI per Amazon EKS](sagemaker-hyperpod-release-ami-eks.md).

Per informazioni sulle versioni delle SageMaker HyperPod funzionalità di Amazon, consulta[Note di SageMaker HyperPod rilascio di Amazon](sagemaker-hyperpod-release-notes.md).

# Aggiorna la versione AMI nel tuo SageMaker HyperPod cluster
<a name="sagemaker-hyperpod-release-ami-update"></a>

Amazon SageMaker HyperPod Amazon Machine Images (AMIs) sono immagini di macchine specializzate per carichi di lavoro di apprendimento automatico distribuiti e calcolo ad alte prestazioni. In ogni AMI sono precaricati driver, framework di machine learning, librerie di addestramento e strumenti di monitoraggio delle prestazioni. Aggiornando la versione AMI nel cluster, puoi utilizzare le versioni più recenti di questi componenti e pacchetti per i tuoi job di addestramento e flussi di lavoro.

 Quando aggiorni la versione AMI all’interno del tuo cluster, hai la possibilità di elaborare immediatamente l’aggiornamento, pianificare un aggiornamento una tantum o utilizzare un’espressione Cron per creare una pianificazione ricorrente. Puoi anche scegliere di aggiornare tutte le istanze in un gruppo di istanze o solo batch di istanze. Se scegli di aggiornare i batch, imposti la percentuale o la quantità di istanze che l' SageMaker IA deve aggiornare alla volta. Se utilizzi questo metodo di aggiornamento, imposti un intervallo di tempo di attesa dell' SageMaker IA tra un batch e l'altro.

Se scegli di eseguire l’aggiornamento in batch, puoi anche includere un elenco di allarmi e metriche. Durante l'intervallo di attesa, l' SageMaker IA osserva queste metriche e, se alcune superano la soglia, l'allarme corrispondente passa allo stato ALARM e l' SageMaker IA ripristina l'aggiornamento dell'AMI. Per utilizzare i rollback automatici, il ruolo di esecuzione IAM deve disporre dell’autorizzazione `cloudwatch:DescribeAlarms`.

**Nota**  
L'aggiornamento del cluster in batch è disponibile solo per HyperPod i cluster integrati con Amazon EKS. Inoltre, se stai creando più pianificazioni, ti consigliamo di inserire un buffer temporale tra le pianificazioni. Se le pianificazioni si sovrappongono, gli aggiornamenti potrebbero non riuscire.

Per ulteriori informazioni su ogni versione AMI per il tuo HyperPod cluster, consulta[SageMaker HyperPod AMI Amazon](sagemaker-hyperpod-release-ami.md). Per ulteriori informazioni sulle HyperPod versioni generali, vedere[Note di SageMaker HyperPod rilascio di Amazon](sagemaker-hyperpod-release-notes.md).

Puoi utilizzare l'API SageMaker AI o le operazioni CLI per aggiornare il cluster o visualizzare gli aggiornamenti pianificati per un cluster specifico. Se utilizzi la AWS console, segui questi passaggi:

**Nota**  
L'aggiornamento dell'AMI con la AWS console è disponibile solo per i cluster integrati con Amazon EKS. Se disponi di un cluster Slurm, devi utilizzare l'API SageMaker AI o le operazioni CLI.

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

1. A sinistra, espandi **HyperPod Clusters** e scegli **Cluster Management**.

1. Scegli il cluster da aggiornare, quindi scegli **Dettagli** e **Aggiorna AMI**.



Per creare e gestire le pianificazioni degli aggiornamenti in modo programmatico, utilizza le seguenti operazioni API:
+ [CreateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html)— crea un cluster specificando una pianificazione degli aggiornamenti
+ [UpdateCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateCluster.html)— aggiorna un cluster per aggiungere una pianificazione degli aggiornamenti
+ [ UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)— aggiornare il software della piattaforma di un cluster
+ [ DescribeCluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeCluster.html)— visualizzare una pianificazione di aggiornamento creata per un cluster
+ [DescribeClusterNode](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeClusterNode.html)e [ListClusterNodes](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListClusterNodes.html)— vedi quando è stato aggiornato l'ultima volta il cluster.

## Autorizzazioni richieste
<a name="sagemaker-hyperpod-release-ami-update-permissions"></a>

A seconda di come hai configurato [Pod Disruption Budget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) nel cluster Amazon EKS, elimina HyperPod i pod, rilascia nodi e impedisce qualsiasi pianificazione degli aggiornamenti durante il processo di aggiornamento dell'AMI. Se vengono violati alcuni vincoli all'interno del budget, HyperPod salta quel nodo durante l'aggiornamento dell'AMI. SageMaker HyperPod Per rimuovere correttamente i pod, è necessario aggiungere le autorizzazioni necessarie al ruolo collegato al servizio. HyperPod Il file yaml seguente ha le autorizzazioni necessarie.

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: hyperpod-patching
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["list"]
- apiGroups: [""]
  resources: ["pods/eviction"]
  verbs: ["create"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: hyperpod-patching
subjects:
- kind: User
  name: hyperpod-service-linked-role
roleRef:
  kind: ClusterRole
  name: hyperpod-patching
  apiGroup: rbac.authorization.k8s.io
```

Utilizza il comando seguente per impostare le autorizzazioni.

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

cd sagemaker-hyperpod-cli/helm_chart

helm upgrade hyperpod-dependencies HyperPodHelmChart --namespace kube-system --install
```

## Espressioni Cron
<a name="sagemaker-hyperpod-release-ami-update-cron"></a>

Per configurare un aggiornamento una tantum in un determinato momento o una pianificazione ricorrente, utilizza le espressioni Cron. Le espressioni Cron supportano sei campi e sono separate da uno spazio vuoto. Tutti e sei i campi sono obbligatori.

```
cron(Minutes Hours Day-of-month Month Day-of-week Year)
```


| **Campi** | **Valori** | **Caratteri jolly** | 
| --- | --- | --- | 
|  Minuti  |  00-59  |  N/D  | 
|  Ore  |  00-23  |  N/D  | 
|  D ay-of-month  |  01-31  | ? | 
|  Mese  |  01-12  | \$1 / | 
|  D ay-of-week  |  1-7 o LUN-DOM  | ? \$1 L | 
|  Anno  |  Anno corrente: 2099  | \$1 | 

**Caratteri jolly**
+ Il carattere jolly **\$1** (asterisco) include tutti i valori nel campo. Nel campo `Hours`, **\$1** include ogni ora.
+ Il carattere jolly **/** (barra) specifica gli incrementi. Nel campo `Months`, puoi inserire **\$1/3** per specificare ogni terzo mese.
+ Il carattere jolly **?** (punto interrogativo) specifica un valore. **Nel `Day-of-month` campo puoi inserire **7**, e se non ti interessa in che giorno della settimana è il settimo, puoi inserire?** sul Day-of-week campo.
+ Il carattere jolly **L** nel campo `day-of-week` specifica l’ultimo giorno del mese o della settimana. Ad esempio, `5L` significa l’ultimo venerdì del mese.
+ Il **carattere jolly \$1** nel ay-of-week campo specifica una determinata istanza del giorno della settimana specificato nell'arco di un mese. Ad esempio, 3\$12 sarebbe il secondo martedì del mese: il 3 fa riferimento a martedì perché è il terzo giorno di ogni settimana e il 2 fa riferimento al secondo giorno di questo tipo in un mese.

Puoi utilizzare le espressioni Cron per gli scenari seguenti:
+ Pianificazione una tantum che viene eseguita in un giorno e a un’ora predefiniti. Puoi usare il carattere `?` jolly per indicarlo day-of-month o day-of-week non importa.

  ```
  cron(30 14 ? 12 MON 2024)
  ```

  ```
  cron(30 14 15 12 ? 2024)
  ```
+ Pianificazione settimanale eseguita in un orario e in giorno determinati. L'esempio seguente crea una pianificazione che viene eseguita alle 12:00 di ogni lunedì indipendentemente. day-of-month

  ```
  cron(00 12 ? * 1 *)
  ```
+ Pianificazione mensile che viene eseguita ogni mese indipendentemente da. day-of-week La pianificazione seguente viene eseguita alle 12:30 del 15 di ogni mese.

  ```
  cron(30 12 15 * ? *)
  ```
+ Una pianificazione mensile che utilizza day-of-week.

  ```
  cron(30 12 ? * MON *)
  ```
+ Per creare una pianificazione eseguita ogni tot mesi, utilizza il carattere jolly `/`. Nell’esempio seguente viene creata una pianificazione mensile eseguita ogni 3 mesi. I due esempi seguenti mostrano come funziona con day-of-week e day-of-month.

  ```
  cron(30 12 15 */3 ? *)
  ```

  ```
  cron(30 12 ? */3 MON *)
  ```
+ Pianificazione eseguita su una determinata istanza del giorno della settimana specificato. L’esempio seguente crea una pianificazione che viene eseguita alle 12:30 del secondo lunedì di ogni mese.

  ```
  cron(30 12 ? * 1#2 *)
  ```
+ Pianificazione eseguita nell’ultima istanza del giorno della settimana specificato. La pianificazione seguente viene eseguita alle 12:30 dell’ultimo lunedì di ogni mese.

  ```
  cron(30 12 ? * 1L *)
  ```

# SageMaker HyperPod Versioni AMI per Slurm
<a name="sagemaker-hyperpod-release-ami-slurm"></a>

Le seguenti note di rilascio tengono traccia degli ultimi aggiornamenti per le versioni di Amazon SageMaker HyperPod AMI per l'orchestrazione di Slurm. Questi HyperPod AMIs sono basati sull'[AMI GPU AWS Deep Learning Base (Ubuntu 22.04](https://aws.amazon.com/releasenotes/aws-deep-learning-base-gpu-ami-ubuntu-22-04/)). Il team HyperPod di assistenza distribuisce le patch software tramite. [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) Per le versioni HyperPod AMI per l'orchestrazione di Amazon EKS, consulta. [SageMaker HyperPod Versioni AMI per Amazon EKS](sagemaker-hyperpod-release-ami-eks.md) Per informazioni sulle versioni delle SageMaker HyperPod funzionalità di Amazon, consulta[Note di SageMaker HyperPod rilascio di Amazon](sagemaker-hyperpod-release-notes.md).

**Nota**  
Per aggiornare HyperPod i cluster esistenti con il DLAMI più recente, vedere. [Aggiorna il software della SageMaker HyperPod piattaforma di un cluster](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software)

## SageMaker HyperPod Versioni AMI per Slurm: 1 marzo 2026
<a name="sagemaker-hyperpod-release-ami-slurm-20260301"></a>

 **Aggiornamenti generali AMI** 
+ Aggiornamenti rilasciati per SageMaker HyperPod AMI for Slurm versioni 24.11.
+ [La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/appendix-ami-release-notes.html#appendix-ami-release-notes-base)

 **SageMaker HyperPod Supporto DLAMI per Slurm** 

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Slurm v24.11 ]
+ Slurm 24.11 (): ARM64
  + Versione del kernel Linux: 6.8
  + Versione Glibc: 2.35
  + Versione OpenSSL: 3.0.2
  + FSx Versione Lustre Client: 2.15.6-1fsx26
  + Versione di esecuzione: 1.3.4
  + Versione containerd: containerd containerd.io v2.2.1
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.6, 12.8, 12.9, 13.0
  + Versione EFA Installer: 1.45.1
  + Versione Python: 3.10.12
  + Versione Slurm: 24.11.0
  + versione nvme-cli: 1.16
  + versione raccolta: 5.12.0.
  + versione lustre-client: 2.15.6-1fsx26
  + versione nvidia-imex: 580.126.09-1
  + versione systemd: 249
  + versione openssh: 8.9
  + versione sudo: 1.9.9
  + versione ufw: 0.36.1
  + versione gcc: 11.4.0
  + versione cmake: 3.22.1
  + versione git: 2.34.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.1b1344-1
  + versione nfs-utils: 1:2.6 .1-1ubuntu1.2
  + iscsi-initiator-utils versione: 2.1.5-1ubuntu1.1
  + versione lvm2:2.03.11
  + versione ec2-instance-connect: 1.1.14-0ubuntu1.1
  + versione rdma-core: 60.0-1
+ Slurm 24.11 (x86\$164):
  + Versione del kernel Linux: 6.8
  + Versione Glibc: 2.35
  + Versione OpenSSL: 3.0.2
  + FSx Versione Lustre Client: 2.15.6-1fsx26
  + Versione di esecuzione: 1.3.4
  + Versione containerd: containerd containerd.io v2.2.1
  + Versione DMS di aws Neuronx: 2.26.5.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.6, 12.8, 12.9, 13.0
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.10.12
  + Versione Slurm: 24.11.0
  + versione nvme-cli: 1.16
  + versione antistress: 1.0.5
  + versione raccolta: 5.12.0.
  + versione lustre-client: 2.15.6-1fsx26
  + versione systemd: 249
  + versione openssh: 8.9
  + versione sudo: 1.9.9
  + versione ufw: 0.36.1
  + versione gcc: 11.4.0
  + versione cmake: 3.22.1
  + make versione: 4.3
  + versione cloudwatch-agent: 1.300064.1b1344-1
  + versione nfs-utils: 1:2.6 .1-1ubuntu1.2
  + iscsi-initiator-utils versione: 2.1.5-1ubuntu1.1
  + versione lvm2:2.03.11
  + versione ec2-instance-connect: 1.1.14-0ubuntu1.1
  + versione rdma-core: 60.0-1

------

## SageMaker HyperPod Versioni AMI per Slurm: 12 febbraio 2026
<a name="sagemaker-hyperpod-release-ami-slurm-20260212"></a>

 **Aggiornamenti generali AMI** 
+ Aggiornamenti rilasciati per SageMaker HyperPod AMI for Slurm versioni 24.11.
+ [La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/appendix-ami-release-notes.html#appendix-ami-release-notes-base)

 **SageMaker HyperPod Supporto DLAMI per Slurm** 

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Slurm v24.11 ]
+ Slurm 24.11 (): ARM64
  + Versione del kernel Linux: 6.8
  + Versione Glibc: 2.35
  + Versione OpenSSL: 3.0.2
  + FSx Versione Lustre Client: 2.15.6-1fsx25
  + Versione di esecuzione: 1.3.4
  + Versione containerd: containerd containerd.io v2.2.1
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.6, 12.8, 12.9, 13.0
  + Versione EFA Installer: 1.45.1
  + Versione Python: 3.10.12
  + Versione Slurm: 24.11.0
  + versione nvme-cli: 1.16
  + versione raccolta: 5.12.0.
  + versione lustre-client: 2.15.6-1fsx25
  + versione nvidia-imex: 580.126.09-1
  + versione systemd: 249
  + versione openssh: 8.9
  + versione sudo: 1.9.9
  + versione ufw: 0.36.1
  + versione gcc: 11.4.0
  + versione cmake: 3.22.1
  + versione git: 2.34.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.0b1337-1
  + versione nfs-utils: 1:2.6 .1-1ubuntu1.2
  + iscsi-initiator-utils versione: 2.1.5-1ubuntu1.1
  + versione lvm2:2.03.11
  + versione ec2-instance-connect: 1.1.14-0ubuntu1.1
  + versione rdma-core: 60.0-1
+ Slurm 24.11 (x86\$164):
  + Versione del kernel Linux: 6.8
  + Versione Glibc: 2.35
  + Versione OpenSSL: 3.0.2
  + FSx Versione Lustre Client: 2.15.6-1fsx25
  + Versione di esecuzione: 1.3.4
  + Versione containerd: containerd containerd.io v2.2.1
  + Versione DMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.6, 12.8, 12.9, 13.0
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.10.12
  + Versione Slurm: 24.11.0
  + versione nvme-cli: 1.16
  + versione antistress: 1.0.5
  + versione raccolta: 5.12.0.
  + versione lustre-client: 2.15.6-1fsx25
  + versione systemd: 249
  + versione openssh: 8.9
  + versione sudo: 1.9.9
  + versione ufw: 0.36.1
  + versione gcc: 11.4.0
  + versione cmake: 3.22.1
  + make versione: 4.3
  + versione cloudwatch-agent: 1.300064.0b1337-1
  + versione nfs-utils: 1:2.6 .1-1ubuntu1.2
  + iscsi-initiator-utils versione: 2.1.5-1ubuntu1.1
  + versione lvm2:2.03.11
  + versione ec2-instance-connect: 1.1.14-0ubuntu1.1
  + versione rdma-core: 60.0-1

------

## SageMaker HyperPod Versioni AMI per Slurm: 25 gennaio 2026
<a name="sagemaker-hyperpod-release-ami-slurm-20260125"></a>

 **Aggiornamenti generali AMI** 
+ Aggiornamenti rilasciati per SageMaker HyperPod AMI for Slurm versioni 24.11.
+ [La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/appendix-ami-release-notes.html#appendix-ami-release-notes-base)

 **SageMaker HyperPod Supporto DLAMI per Slurm** 

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Slurm v24.11 ]
+ Slurm 24.11 (): ARM64
  + Versione del kernel Linux: 6.8
  + Versione Glibc: 2.35
  + Versione OpenSSL: 3.0.2
  + FSx Versione Lustre Client: 2.15.6-1fsx25
  + Versione di esecuzione: 1.3.4
  + Versione containerd: containerd containerd.io v2.2.1
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.6, 12.8, 12.9, 13.0
  + Versione EFA Installer: 2.3.1amzn3.0
  + Versione Python: 3.10.12
  + Versione Slurm: 24.11.0
  + versione nvme-cli: 1.16
  + versione raccolta: 5.12.0.
  + versione lustre-client: 2.15.6-1fsx25
  + versione nvidia-imex: 580.126.09-1
  + versione systemd: 249
  + versione openssh: 8.9
  + versione sudo: 1.9.9
  + versione ufw: 0.36.1
  + versione gcc: 11.4.0
  + versione cmake: 3.22.1
  + versione git: 2.34.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300063.0b1323-1
  + versione nfs-utils: 1:2.6 .1-1ubuntu1.2
  + iscsi-initiator-utils versione: 2.1.5-1ubuntu1.1
  + versione lvm2:2.03.11
  + versione ec2-instance-connect: 1.1.14-0ubuntu1.1
  + versione rdma-core: 60.0-1
+ Slurm 24.11 (x86\$164):
  + Versione del kernel Linux: 6.8
  + Versione Glibc: 2.35
  + Versione OpenSSL: 3.0.2
  + FSx Versione Lustre Client: 2.15.6-1fsx25
  + Versione di esecuzione: 1.3.4
  + Versione containerd: containerd containerd.io v2.2.1
  + Versione DMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.6, 12.8, 12.9, 13.0
  + Versione EFA Installer: 2.3.1amzn2.0
  + Versione Python: 3.10.12
  + Versione Slurm: 24.11.0
  + versione nvme-cli: 1.16
  + versione antistress: 1.0.5
  + versione raccolta: 5.12.0.
  + versione lustre-client: 2.15.6-1fsx25
  + versione systemd: 249
  + versione openssh: 8.9
  + versione sudo: 1.9.9
  + versione ufw: 0.36.1
  + versione gcc: 11.4.0
  + versione cmake: 3.22.1
  + make versione: 4.3
  + versione cloudwatch-agent: 1.300063.0b1323-1
  + versione nfs-utils: 1:2.6 .1-1ubuntu1.2
  + iscsi-initiator-utils versione: 2.1.5-1ubuntu1.1
  + versione lvm2:2.03.11
  + versione ec2-instance-connect: 1.1.14-0ubuntu1.1
  + versione rdma-core: 60.0-1

------

## SageMaker HyperPod Versioni AMI per Slurm: 29 dicembre 2025
<a name="sagemaker-hyperpod-release-ami-slurm-20251229"></a>

 **Aggiornamenti generali AMI** 
+ Aggiornamenti rilasciati per SageMaker HyperPod AMI for Slurm versioni 24.11.
+ [La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/appendix-ami-release-notes.html#appendix-ami-release-notes-base)

 **SageMaker HyperPod Supporto DLAMI per Slurm** 

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Slurm v24.11 ]
+ Slurm 24.11 (): ARM64
  + Versione del kernel Linux: 6.8
  + Versione Glibc: 2.35
  + Versione OpenSSL: 3.0.2
  + FSx Versione Lustre Client: 2.15.6-1fsx25
  + Versione di esecuzione: 1.3.4
  + Versione containerd: containerd containerd.io v2.2.1
  + Versione del driver NVIDIA: 580.105.08
  + Versione CUDA: 12.6, 12.8, 12.9, 13.0
  + Versione EFA Installer: 2.3.1amzn3.0
  + Versione Python: 3.10.12
  + Versione Slurm: 24.11.0
  + versione nvme-cli: 1.16
  + versione raccolta: 5.12.0.
  + versione lustre-client: 2.15.6-1fsx25
  + versione nvidia-imex: 580.105.08-1
  + versione systemd: 249
  + versione openssh: 8.9
  + versione sudo: 1.9.9
  + versione ufw: 0.36.1
  + versione gcc: 11.4.0
  + versione cmake: 3.22.1
  + versione git: 2.34.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.0b1304-1
  + versione nfs-utils: 1:2.6 .1-1ubuntu1.2
  + iscsi-initiator-utils versione: 2.1.5-1ubuntu1.1
  + versione lvm2:2.03.11
  + versione ec2-instance-connect: 1.1.14-0ubuntu1.1
  + versione rdma-core: 60.0-1
+ Slurm 24.11 (x86\$164):
  + Versione del kernel Linux: 6.8
  + Versione Glibc: 2.35
  + Versione OpenSSL: 3.0.2
  + FSx Versione Lustre Client: 2.15.6-1fsx25
  + Versione di esecuzione: 1.3.4
  + Versione containerd: containerd containerd.io v2.2.1
  + Versione DMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.105.08
  + Versione CUDA: 12.6, 12.8, 12.9, 13.0
  + Versione EFA Installer: 2.3.1amzn2.0
  + Versione Python: 3.10.12
  + Versione Slurm: 24.11.0
  + versione nvme-cli: 1.16
  + versione antistress: 1.0.5
  + versione raccolta: 5.12.0.
  + versione lustre-client: 2.15.6-1fsx25
  + versione systemd: 249
  + versione openssh: 8.9
  + versione sudo: 1.9.9
  + versione ufw: 0.36.1
  + versione gcc: 11.4.0
  + versione cmake: 3.22.1
  + make versione: 4.3
  + versione cloudwatch-agent: 1.300062.0b1304-1
  + versione nfs-utils: 1:2.6 .1-1ubuntu1.2
  + iscsi-initiator-utils versione: 2.1.5-1ubuntu1.1
  + versione lvm2:2.03.11
  + versione ec2-instance-connect: 1.1.14-0ubuntu1.1
  + versione rdma-core: 60.0-1

------

## SageMaker HyperPod Versioni AMI per Slurm: 22 novembre 2025
<a name="sagemaker-hyperpod-release-ami-slurm-20251128"></a>

 **Aggiornamenti generali AMI** 
+ Aggiornamenti rilasciati per SageMaker HyperPod AMI for Slurm versioni 24.11.
+ [La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/appendix-ami-release-notes.html#appendix-ami-release-notes-base)

 **SageMaker HyperPod Supporto DLAMI per Slurm** 

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Slurm (arm64) ]
+ Versione del kernel Linux: 6.8
+ Versione Glibc: 2.35
+ Versione OpenSSL: 3.0.2
+ FSx Versione Lustre Client: 2.15.6-1fsx21
+ Versione di esecuzione: 1.3.3
+ Versione containerd: containerd containerd.io v2.1.5
+ Versione del driver NVIDIA: 580.95.05
+ Versione CUDA: 12.6, 12.8, 12.9, 13.0
+ Versione EFA Installer: 2.1.0amzn5.0
+ Versione Python: 3.10.12
+ Versione Slurm: 24.11.0
+ versione nvme-cli: 1.16
+ versione raccolta: 5.12.0.
+ versione lustre-client: 2.15.6-1fsx21
+ versione nvidia-imex: 580.95.05-1
+ versione systemd: 249
+ versione openssh: 8.9
+ versione sudo: 1.9.9
+ versione ufw: 0.36.1
+ versione gcc: 11.4.0
+ versione cmake: 3.22.1
+ versione git: 2.34.1
+ crea versione: 4.3
+ versione cloudwatch-agent: 1.300062.0b1304-1
+ versione nfs-utils: 1:2.6 .1-1ubuntu1.2
+ iscsi-initiator-utils versione: 2.1.5-1ubuntu1.1
+ versione lvm2:2.03.11
+ versione ec2-instance-connect: 1.1.14-0ubuntu1.1
+ versione rdma-core: 58.amzn0-1

------
#### [ Slurm (x86\$164) ]
+ Versione del kernel Linux: 6.8
+ Versione Glibc: 2.35
+ Versione OpenSSL: 3.0.2
+ FSx Versione Lustre Client: 2.15.6-1fsx21
+ Versione di esecuzione: 1.3.3
+ Versione containerd: containerd containerd.io v2.1.5
+ Versione DMS di aws Neuronx: 2.24.7.0
+ Versione del driver NVIDIA: 580.95.05
+ Versione CUDA: 12.6, 12.8, 12.9, 13.0
+ Versione del programma di installazione EFA: 2.3.1amzn1.0
+ Versione Python: 3.10.12
+ Versione Slurm: 24.11.0
+ versione nvme-cli: 1.16
+ versione antistress: 1.0.5
+ versione raccolta: 5.12.0.
+ versione lustre-client: 2.15.6-1fsx21
+ versione systemd: 249
+ versione openssh: 8.9
+ versione sudo: 1.9.9
+ versione ufw: 0.36.1
+ versione gcc: 11.4.0
+ versione cmake: 3.22.1
+ make versione: 4.3
+ versione cloudwatch-agent: 1.300062.0b1304-1
+ versione nfs-utils: 1:2.6 .1-1ubuntu1.2
+ iscsi-initiator-utils versione: 2.1.5-1ubuntu1.1
+ versione lvm2:2.03.11
+ versione ec2-instance-connect: 1.1.14-0ubuntu1.1
+ versione rdma-core: 59.amzn0-1

------

## SageMaker HyperPod note di rilascio: 07 novembre 2025
<a name="sagemaker-hyperpod-release-notes-20251107"></a>

**L'AMI include quanto segue:**
+ Supportato Servizio AWS: Amazon EC2
+ Sistema operativo: Ubuntu 22.04
+ Architettura di calcolo: ARM64
+ Pacchetti aggiornati: NVIDIA Driver: 580.95.05
+ Versioni CUDA: cuda-12.6, cuda-12.8, cuda-12.9, cuda-13.0
+ Correzioni [di sicurezza: patch Runc](https://aws.amazon.com/security/security-bulletins/rss/aws-2025-024/) Security

## SageMaker HyperPod note di rilascio: 29 settembre 2025
<a name="sagemaker-hyperpod-release-notes-20250929"></a>

**L'AMI include quanto segue:**
+ Supportato Servizio AWS: Amazon EC2
+ Sistema operativo: Ubuntu 22.04
+ Architettura di calcolo: ARM64
+ Pacchetti aggiornati: NVIDIA Driver: 570.172.08
+ Correzioni di sicurezza

## SageMaker HyperPod note di rilascio: 12 agosto 2025
<a name="sagemaker-hyperpod-release-notes-20250812"></a>

**L'AMI include quanto segue:**
+ Supportato Servizio AWS: Amazon EC2
+ Sistema operativo: Ubuntu 22.04
+ Architettura di calcolo: ARM64
+ L'ultima versione disponibile è installata per i seguenti pacchetti:
  + Kernel Linux: 6.8
  + FSx Lustro
  + Docker
  + AWS CLI v2 in `/usr/bin/aws`
  + NVIDIA DCGM
  + Toolkit per container Nvidia:
    + Comando di versione: `nvidia-container-cli -V`
  + Nvidia-docker2:
    + Comando di versione: `nvidia-docker version`
  + Nvidia-IMEX: v570.172.08-1
+ Driver NVIDIA: 570.158.01
+ Pila NVIDIA CUDA 12.4, 12.5, 12.6, 12.8:
  + Directory di installazione CUDA, NCCL e cuDDN: `/usr/local/cuda-xx.x/`
    + Esempio: `/usr/local/cuda-12.8/`, `/usr/local/cuda-12.8/`
  + Versione NCCL compilata:
    + Per la directory CUDA 12.4, versione NCCL compilata 2.22.3\$1 .4 CUDA12
    + Per la directory CUDA 12.5, è stata compilata la versione NCCL 2.22.3\$1 .5 CUDA12
    + Per la directory CUDA 12.6, è stata compilata la versione NCCL 2.24.3\$1 .6 CUDA12
    + Per la directory CUDA 12.8, è stata compilata la versione NCCL 2.27.5\$1 .8 CUDA12
  + CUDA predefinito: 12.8
    + PATH `/usr/local/cuda` punta a CUDA 12.8
    + Aggiornato di seguito le variabili di ambiente:
      + `LD_LIBRARY_PATH`avere `/usr/local/cuda-12.8/lib:/usr/local/cuda-12.8/lib64:/usr/local/cuda-12.8:/usr/local/cuda-12.8/targets/sbsa-linux/lib:/usr/local/cuda-12.8/nvvm/lib64:/usr/local/cuda-12.8/extras/CUPTI/lib64`
      + `PATH`avere `/usr/local/cuda-12.8/bin/:/usr/local/cuda-12.8/include/`
      + Per qualsiasi versione CUDA diversa, aggiorna di `LD_LIBRARY_PATH` conseguenza.
+ Programma di installazione EFA: 1.42.0
+  GDRCopyNvidia: 2.5.1
+ AWS Il plugin OFI NCCL viene fornito con il programma di installazione EFA
  + Percorsi `/opt/amazon/ofi-nccl/lib/aarch64-linux-gnu` e vengono aggiunti a. `/opt/amazon/ofi-nccl/efa` `LD_LIBRARY_PATH`
+ AWS CLI v2 at `/usr/local/bin/aws2` e AWS CLI v1 a `/usr/bin/aws`
+ Tipo di volume EBS: gp3
+ Python: `/usr/bin/python3.10`

## SageMaker HyperPod note di rilascio: 27 maggio 2025
<a name="sagemaker-hyperpod-release-notes-20250527"></a>

SageMaker HyperPod rilascia quanto segue per[Orchestrazione SageMaker HyperPod dei cluster con SlurmOrchestrazione Slurm](sagemaker-hyperpod-slurm.md).

**Nuove funzionalità e miglioramenti**
+ L’AMI di base aggiornata a `Deep Learning Base OSS Nvidia Driver GPU AMI (Ubuntu 22.04) 20250523` con i componenti chiave seguenti:
  + Driver NVIDIA: 570.133.20
  + CUDA: 12.8 (impostazione predefinita), con supporto per CUDA 12.4-12.6
  + Versione NCCL: 2.26.5
  + Programma di installazione EFA: 1.40.0
  + AWS OFI NCCL: 1.14.2-aws
+ Pacchetti di SDK Neuron aggiornati:
  + aws-neuronx-collectives: 2.25.65.0-9858ac9a1 (dal 2.24.59.0-838c7fc8b)
  + aws-neuronx-dkms: 2.21.37.0 (dal 2.20.28.0)
  + aws-neuronx-runtime-lib: 2.25.57.0-166c7a468 (dal 2.24.53.0-f239092cc)
  + aws-neuronx-tools: 2.23.9.0 (dal 2.22.61.0)

**Note importanti**
+ Al momento, il Kit di strumenti per container NVIDIA 1.17.4 ha disabilitato il montaggio delle librerie compatibili CUDA.
+ Configurazione EFA aggiornata da 1.37 a 1.38. EFA ora include il plugin AWS OFI NCCL, che si trova nella directory `/opt/amazon/ofi-nccl` anziché nel percorso `/opt/aws-ofi-nccl/` originale. (Data di rilascio: 18 febbraio 2025)
+ La versione del kernel è bloccata tramite pinning per garantire stabilità e compatibilità dei driver.

## SageMaker HyperPod Versioni AMI per Slurm: 13 maggio 2025
<a name="sagemaker-hyperpod-release-ami-slurm-20250513"></a>

Amazon SageMaker HyperPod ha rilasciato un'AMI aggiornata che supporta Ubuntu 22.04 LTS per cluster Slurm. AWS si aggiorna regolarmente AMIs per garantire l'accesso allo stack software più recente. L’aggiornamento all’AMI più recente offre una maggiore sicurezza grazie ad aggiornamenti completi dei pacchetti, prestazioni e stabilità migliorate per i carichi di lavoro e compatibilità con i nuovi tipi di istanze e le funzionalità del kernel più recenti.

**Importante**  
L’aggiornamento da Ubuntu 20.04 LTS a Ubuntu 22.04 LTS introduce modifiche che potrebbero influire sulla compatibilità con il software e le configurazioni progettate per Ubuntu 20.04.

**Topics**
+ [Aggiornamenti chiave nell’AMI Ubuntu 22.04](#sagemaker-hyperpod-ami-slurm-ubuntu22-updates)
+ [Aggiornamento all’AMI Ubuntu 22.04](#sagemaker-hyperpod-ami-slurm-ubuntu22-upgrade)
+ [Risoluzione dei problemi di aggiornamento](#sagemaker-hyperpod-ami-slurm-ubuntu22-troubleshoot)

### Aggiornamenti chiave nell’AMI Ubuntu 22.04
<a name="sagemaker-hyperpod-ami-slurm-ubuntu22-updates"></a>

La tabella seguente elenca le versioni dei componenti dell’AMI Ubuntu 22.04 rispetto all’AMI precedente.


**Versioni dei componenti dell’AMI Ubuntu 22.04 rispetto all’AMI precedente**  

| Componente | Versione precedente | Versione aggiornata | 
| --- | --- | --- | 
|  **Sistema operativo Ubuntu**  |  20.04 LTS  |  22.04 LTS  | 
|  **Slurm**  |  24.11  |  24.11 (invariata)  | 
|  **Python**  |  3.8 (predefinita)  |  3.10 (predefinita)  | 
|  **Elastic Fabric Adapter (EFA) su Amazon FSx**  |  Non supportata  |  Supportata  | 
|  **Kernel Linux**  |  5.15  |  6.8  | 
|  **Libreria GNU C (glibc)**  |  2,31  |  2,35  | 
|  **GNU Compiler Collection (GCC)**  |  9,40  |  11,4,0  | 
|  **libc6**  |  ≤ 2.31  |  Supportato ≥ 2.35  | 
|  **File system di rete (NFS)**  |  1:1.3.4  |  1:2.6.1  | 

**Nota**  
Sebbene la versione Slurm (24.11) resti invariata, gli aggiornamenti sottostanti del sistema operativo e della libreria in questa AMI possono influire sul comportamento del sistema e sulla compatibilità del carico di lavoro. È necessario testare i carichi di lavoro prima di aggiornare i cluster di produzione.

### Aggiornamento all’AMI Ubuntu 22.04
<a name="sagemaker-hyperpod-ami-slurm-ubuntu22-upgrade"></a>

Prima di aggiornare il cluster all’AMI Ubuntu 22.04, completa queste fasi di preparazione e rivedi i requisiti di aggiornamento. Per risolvere gli errori di aggiornamento, consulta [Risoluzione dei problemi di aggiornamento](#sagemaker-hyperpod-ami-slurm-ubuntu22-troubleshoot).

#### Analisi della compatibilità Python
<a name="sagemaker-hyperpod-ami-slurm-ubuntu22-python-compatibility"></a>

L’AMI Ubuntu 22.04 utilizza Python 3.10 come versione predefinita, aggiornata da Python 3.8. Sebbene Python 3.10 mantenga la compatibilità con la maggior parte del codice Python 3.8, è necessario testare i carichi di lavoro esistenti prima dell’aggiornamento. Se i tuoi carichi di lavoro richiedono Python 3.8, puoi installarlo utilizzando il comando seguente nello script del ciclo di vita:

```
yum install python-3.8
```

Prima di aggiornare il cluster:

1. Verifica la compatibilità del tuo codice con Python 3.10.

1. Verifica che gli script del ciclo di vita funzionino nel nuovo ambiente.

1. Verifica che tutte le dipendenze siano compatibili con la nuova versione di Python.

1. Se hai creato il HyperPod cluster copiando lo script del ciclo di vita predefinito da GitHub, aggiungi il seguente comando al `setup_mariadb_accounting.sh` file prima di eseguire l'aggiornamento a Ubuntu 22. [Per lo script completo, vedi setup\$1mariadb\$1accounting.sh su. GitHub](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/setup_mariadb_accounting.sh)

   ```
   apt-get -y -o DPkg::Lock::Timeout=120 update && apt-get -y -o DPkg::Lock::Timeout=120 install apg
   ```

#### Aggiornamento del cluster Slurm
<a name="sagemaker-hyperpod-ami-slurm-ubuntu22-upgrade-cluster"></a>

Per utilizzare la nuova AMI, puoi aggiornare il cluster Slurm in due modi:

1. Crea un nuovo cluster con l’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html).

1. Aggiorna il software di un cluster esistente con l’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html).

#### Configurazioni convalidate
<a name="sagemaker-hyperpod-ami-slurm-ubuntu22-validation"></a>

AWS ha testato un'ampia gamma di carichi di lavoro di formazione distribuiti e funzionalità di infrastruttura su istanze G5, G6, G6e, P4d, P5 e Trn1, tra cui:
+ Formazione distribuita con PyTorch (ad esempio, FSDP, MA, MNIST). NeMo LLa
+ Test con acceleratore su diversi tipi di istanze con Nvidia (serie P/G) e Neuron (Trn1). AWS 
+ Funzionalità di resilienza che includono la [ripresa automatica](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-resiliency-slurm.html#sagemaker-hyperpod-resiliency-slurm-auto-resume) e i [controlli dell’integrità approfonditi](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-resiliency-deep-health-checks.html).

#### Tempi di inattività e disponibilità dei cluster
<a name="sagemaker-hyperpod-ami-slurm-ubuntu22-downtime-availability"></a>

Durante il processo di aggiornamento, il cluster non sarà disponibile. Per ridurre al minimo le interruzioni, procedi come descritto di seguito:
+ Testa il processo di aggiornamento su cluster più piccoli.
+ Crea checkpoint prima dell’aggiornamento, quindi riavvia i carichi di lavoro di addestramento dai checkpoint esistenti dopo l’aggiornamento.

### Risoluzione dei problemi di aggiornamento
<a name="sagemaker-hyperpod-ami-slurm-ubuntu22-troubleshoot"></a>

Quando un aggiornamento non riesce, stabilisci innanzitutto se l’errore è correlato agli script del ciclo di vita. Questi script generalmente non riescono a causa di errori di sintassi, dipendenze mancanti o configurazioni errate.

Per esaminare gli errori relativi agli script del ciclo di vita, controlla i log. CloudWatch Tutti gli SageMaker HyperPod eventi e i log vengono archiviati nel gruppo di log:. `/aws/sagemaker/Clusters/[ClusterName]/[ClusterID]` Guarda in particolare il flusso di log `LifecycleConfig/[instance-group-name]/[instance-id]`, che fornisce informazioni dettagliate su eventuali errori durante l’esecuzione dello script.

Se l’errore di aggiornamento non è correlato agli script del ciclo di vita, raccogli le informazioni pertinenti, tra cui l’ARN del cluster, i log degli errori e i timestamp, quindi contatta il [supporto AWS](https://aws.amazon.com/premiumsupport/) per ulteriore assistenza.

## SageMaker HyperPod Versioni AMI per Slurm: 07 maggio 2025
<a name="sagemaker-hyperpod-release-ami-slurm-20250507"></a>

Amazon SageMaker HyperPod for Slurm ha rilasciato un importante aggiornamento della versione del sistema operativo a Ubuntu 22.04 (dal precedente Ubuntu 20.04). Consulta DLAMI Ubuntu 22.04 ([note di rilascio](https://aws.amazon.com/releasenotes/aws-deep-learning-base-gpu-ami-ubuntu-22-04/)) per ulteriori informazioni: `Deep Learning Base OSS Nvidia Driver GPU AMI (Ubuntu 22.04) 20250503`.

Aggiornamenti chiave dei pacchetti:
+ Ubuntu 22.04 LTS (da 20.04)
+ Versione di Python:
  + Python 3.10 è ora la versione Python predefinita nell’AMI Slurm di Ubuntu 22.04
  + Questo aggiornamento fornisce l’accesso alle funzionalità più recenti, miglioramenti delle prestazioni e correzioni di bug introdotte in Python 3.10
+ Support per EFA su FSx
+ Nuova versione del kernel Linux 6.8 (aggiornata dalla versione 5.15)
+ Versione Glibc: 2.35 (aggiornata dalla versione 2.31)
+ Versione GCC: 11.4.0 (aggiornata dalla versione 9.4.0)
+ Supporto per versioni libc6 più recenti (dalla versione libc6 <= 2.31)
+ Versione NFS: 1:2.6.1 (aggiornata dalla versione 1:1.3.4)

## SageMaker HyperPod Versioni AMI per Slurm: 28 aprile 2025
<a name="sagemaker-hyperpod-release-ami-slurm-20250428"></a>

**Miglioramenti per Slurm**
+ Driver NVIDIA aggiornato dalla versione 550.144.03 alla 550.163.01. Questo aggiornamento è destinato a risolvere le vulnerabilità e le esposizioni comuni (CVEs) presenti nel [NVIDIA GPU](https://nvidia.custhelp.com/app/answers/detail/a_id/5630) Display Security Bulletin di aprile 2025.

**Supporto Amazon SageMaker HyperPod DLAMI per Slurm**

------
#### [ Installed the latest version of AWS Neuron SDK ]
+ **aws-neuronx-collectives: 2.24.59.0-838c7fc8b**
+ **aws-neuronx-dkms:** 2,20.28,0
+ **aws-neuronx-runtime-lib: 2,24.53,0-f239092cc**
+ **aws-neuronx-tools/sconosciuto: 2.22.61.0**

------

## SageMaker HyperPod Versioni AMI per Slurm: 18 febbraio 2025
<a name="sagemaker-hyperpod-release-ami-slurm-20250218"></a>

**Miglioramenti per Slurm**
+ Versione Slurm aggiornata alla 24.11.
+ Versione Elastic Fabric Adapter (EFA) aggiornata dalla 1.37.0 alla 1.38.0.
+ L'EFA ora include il plugin OFI AWS NCCL. Puoi trovare questo plugin nella directory `/opt/amazon/ofi-nccl`, anziché nella posizione `/opt/aws-ofi-nccl/` originale. Se devi aggiornare la variabile di ambiente `LD_LIBRARY_PATH`, assicurati di modificare il percorso in modo che punti alla nuova posizione `/opt/amazon/ofi-nccl` del plugin OFI NCCL.
+ È stato rimosso il pacchetto emacs da questi. DLAMIs Puoi installare emacs da GNU emac.

**Supporto Amazon SageMaker HyperPod DLAMI per Slurm**

------
#### [ Installed the latest version of AWS Neuron SDK 2.19 ]
+ **aws-neuronx-collectives/sconosciuto: 2.23.135.0-3e70920f2** amd64
+ **aws-neuronx-dkms/sconosciuto:** 2.19.64.0 amd64
+ **aws-neuronx-runtime-lib/sconosciuto: 2.23.112.0-9b5179492** amd64
+ **aws-neuronx-tools/sconosciuto:** 2.20.204.0 amd64

------

## SageMaker HyperPod Versioni AMI per Slurm: 21 dicembre 2024
<a name="sagemaker-hyperpod-release-ami-slurm-20241221"></a>

**SageMaker HyperPod Supporto DLAMI per Slurm**

------
#### [ Deep Learning Slurm AMI ]
+ **Driver NVIDIA:** 550.127.05
+ **Driver EFA:** 2.13.0-1
+ Installata l'ultima versione di Neuron SDK AWS 
  + **aws-neuronx-collectives: 2.22.33.0**
  + **aws-neuronx-dkms:** 218.20,0
  + **aws-neuronx-oci-hook:** 2.5.8.0
  + **aws-neuronx-runtime-lib:** 2.22.19,0
  + **aws-neuronx-tools:** 2,19,0

------

## SageMaker HyperPod Versioni AMI per Slurm: 24 novembre 2024
<a name="sagemaker-hyperpod-release-ami-slurm-20241124"></a>

**Aggiornamenti generali AMI**
+ Rilasciata nella Regione `MEL` (Melbourne).
+ DLAMI di SageMaker HyperPod base aggiornato alle seguenti versioni:
  + Slurm: 22/11/2024.

## SageMaker HyperPod Versioni AMI per Slurm: 15 novembre 2024
<a name="sagemaker-hyperpod-release-ami-slurm-20241115"></a>

**Aggiornamenti generali AMI**
+ Ultimo pacchetto `libnvidia-nscq-xxx` installato.

**SageMaker HyperPod Supporto DLAMI per Slurm**

------
#### [ Deep Learning Slurm AMI ]
+ **Driver NVIDIA:** 550.127.05
+ **Driver EFA:** 2.13.0-1
+ Installata l'ultima versione di Neuron SDK AWS 
  + **aws-neuronx-collectives: v2.22.33.0-d2128d1aa**
  + **aws-neuronx-dkms:** v2.17.17.0
  + **aws-neuronx-oci-hook:** v2.4.4.0
  + **aws-neuronx-runtime-lib:** v2.21.41.0
  + **aws-neuronx-tools:** v2.18.3.0

------

## SageMaker HyperPod Versioni AMI per Slurm: 11 novembre 2024
<a name="sagemaker-hyperpod-release-ami-slurm-20241111"></a>

**Aggiornamenti generali AMI**
+ DLAMI di SageMaker HyperPod base aggiornato alla seguente versione:
  + Slurm: 23/10/2024.

## SageMaker HyperPod Versioni AMI per Slurm: 21 ottobre 2024
<a name="sagemaker-hyperpod-release-ami-slurm-20241021"></a>

**Aggiornamenti generali AMI**
+ DLAMI di SageMaker HyperPod base aggiornato alle seguenti versioni:
  + Slurm: 27/09/2024.

## SageMaker HyperPod Versioni AMI per Slurm: 10 settembre 2024
<a name="sagemaker-hyperpod-release-ami-slurm-20240910"></a>

**SageMaker HyperPod Supporto DLAMI per Slurm**

------
#### [ Deep Learning Slurm AMI ]
+ Installato il driver NVIDIA v550.90.07
+ Installato il driver EFA v2.10
+ Installata l'ultima versione di Neuron SDK AWS 
  + **aws-neuronx-collectives: v2.21.46.0**
  + **aws-neuronx-dkms:** v2.17.17.0
  + **aws-neuronx-oci-hook:** v2.4.4.0
  + **aws-neuronx-runtime-lib:** v2.21.41.0
  + **aws-neuronx-tools:** v2.18.3.0

------

## SageMaker HyperPod Versioni AMI per Slurm: 14 marzo 2024
<a name="sagemaker-hyperpod-release-ami-slurm-20240314"></a>

**HyperPod Patch software DLAMI per Slurm**
+ [Slurm](https://slurm.schedmd.com/documentation.html) aggiornato alla versione 23.11.1
+ [Aggiunto [Open PMIx](https://openpmix.github.io/code/getting-the-reference-implementation) v4.2.6 per abilitare Slurm con. PMIx](https://slurm.schedmd.com/mpi_guide.html#pmix)
+ Basato sull’[AWS AMI di Deep Learning GPU di base (Ubuntu 20.04)](https://aws.amazon.com/releasenotes/aws-deep-learning-base-gpu-ami-ubuntu-20-04/) rilasciata il 26/10/2023
+ Un elenco completo dei pacchetti preinstallati in questo HyperPod DLAMI oltre all'AMI di base
  + [Slurm](https://slurm.schedmd.com/documentation.html): v23.11.1
  + [Apri PMIx ](https://openpmix.github.io/code/getting-the-reference-implementation): v4.2.6
  + Munge: v0.5.15
  + `aws-neuronx-dkms`: v2.\$1
  + `aws-neuronx-collectives`: v2.\$1
  + `aws-neuronx-runtime-lib`: v2.\$1
  + `aws-neuronx-tools`: v2.\$1
  + SageMaker HyperPod pacchetti software per supportare funzionalità come il controllo dello stato del cluster e il ripristino automatico

**Fasi dell’aggiornamento**
+ Esegui il comando seguente per chiamare l'[UpdateClusterSoftware](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html)API per aggiornare i HyperPod cluster esistenti con il HyperPod DLAMI più recente. Per ulteriori istruzioni, consulta [Aggiorna il software della SageMaker HyperPod piattaforma di un cluster](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software).
**Importante**  
Esegui il backup del tuo lavoro prima di eseguire questa API. Il processo di applicazione delle patch sostituisce il volume root con l’AMI aggiornata, il che significa che i dati precedenti archiviati nel volume root dell’istanza andranno persi. Assicurati di eseguire il backup dei dati dal volume root dell'istanza su Amazon S3 o Amazon FSx for Lustre. Per ulteriori informazioni, consulta [Utilizza lo script di backup fornito da SageMaker HyperPod](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-update-cluster-software-backup).

  ```
   aws sagemaker update-cluster-software --cluster-name your-cluster-name
  ```
**Nota**  
Tieni presente che dovresti eseguire il AWS CLI comando per aggiornare il HyperPod cluster. L'aggiornamento del HyperPod software tramite l'interfaccia utente SageMaker HyperPod della console non è attualmente disponibile.

## SageMaker HyperPod Rilascio AMI per Slurm: 29 novembre 2023
<a name="sagemaker-hyperpod-release-ami-slurm-20231129"></a>

**HyperPod Patch software DLAMI per Slurm**

Il team HyperPod di assistenza distribuisce le patch software tramite. [SageMaker HyperPod DLAMI](sagemaker-hyperpod-ref.md#sagemaker-hyperpod-ref-hyperpod-ami) Consulta i seguenti dettagli sull'ultima versione di HyperPod DLAMI.
+ Basato sull’[AWS AMI di Deep Learning GPU di base (Ubuntu 20.04)](https://aws.amazon.com/releasenotes/aws-deep-learning-base-gpu-ami-ubuntu-20-04/) rilasciata il 18/10/2023
+ Un elenco completo dei pacchetti preinstallati in questo HyperPod DLAMI oltre all'AMI di base
  + [Slurm](https://slurm.schedmd.com/documentation.html): v23.02.3
  + Munge: v0.5.15
  + `aws-neuronx-dkms`: v2.\$1
  + `aws-neuronx-collectives`: v2.\$1
  + `aws-neuronx-runtime-lib`: v2.\$1
  + `aws-neuronx-tools`: v2.\$1
  + SageMaker HyperPod pacchetti software per supportare funzionalità come il controllo dello stato del cluster e il ripristino automatico

# SageMaker HyperPod Versioni AMI per Amazon EKS
<a name="sagemaker-hyperpod-release-ami-eks"></a>

Le seguenti note di rilascio tengono traccia degli ultimi aggiornamenti per le versioni di Amazon SageMaker HyperPod AMI per l'orchestrazione di Amazon EKS. Ogni nota di versione include un elenco riepilogativo dei pacchetti preinstallati o preconfigurati nel supporto per SageMaker HyperPod DLAMIs Amazon EKS. Ogni DLAMI è basato AL2023 e supporta una versione specifica di Kubernetes. Per le versioni HyperPod DLAMI per l'orchestrazione di Slurm, vedere. [SageMaker HyperPod Versioni AMI per Slurm](sagemaker-hyperpod-release-ami-slurm.md) Per informazioni sulle versioni delle SageMaker HyperPod funzionalità di Amazon, consulta[Note di SageMaker HyperPod rilascio di Amazon](sagemaker-hyperpod-release-notes.md).

## SageMaker Rilasci dell'AMI Hyperpod per Amazon EKS: 1 marzo 2026
<a name="sagemaker-hyperpod-release-ami-eks-20260301"></a>

 **Aggiornamenti generali AMI** 
+ Aggiornamenti rilasciati per l'AMI SageMaker Hyperpod per Amazon EKS versioni 1.28, 1.29, 1.30, 1.31, 1.32, 1.33, 1.34.
+ [La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/appendix-ami-release-notes.html#appendix-ami-release-notes-base)

 **SageMaker Supporto Hyperpod DLAMI per Amazon EKS** 

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Kubernetes v1.28 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.44 Python/3.10.17 Linux/5.10.248-247.988.amzn2.x86\$164 botocore/1.42.54
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.28.15-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.28.15-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.2
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0

------
#### [ Kubernetes v1.29 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.44 Python/3.10.17 Linux/5.10.248-247.988.amzn2.x86\$164 botocore/1.42.54
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.29.15-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.29.15-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.2
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0

------
#### [ Kubernetes v1.30 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.44 Python/3.10.17 Linux/5.10.248-247.988.amzn2.x86\$164 botocore/1.42.54
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.30.14-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.30.14-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.2
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0

------
#### [ Kubernetes v1.31 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.44 Python/3.10.17 Linux/5.10.248-247.988.amzn2.x86\$164 botocore/1.42.54
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.31.13-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.31.13-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.2
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.43.3
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.31.13-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.2
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.126.09
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.32 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.46 Python/3.10.17 Linux/5.10.248-247.988.amzn2.x86\$164 botocore/1.42.56
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.32.9-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.32.9-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.2
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.43.3
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.32.9-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.2
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.126.09
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.33 ]
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.33.5-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.2
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.43.3
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.33.5-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.2
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.126.09
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.34 ]
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.34.2-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.2
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.16.1g
  + Versione EFA Installer: 1.43.3
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.34.2-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.2
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.126.09
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300064.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------

## SageMaker Rilasci AMI Hyperpod per Amazon EKS: 12 febbraio 2026
<a name="sagemaker-hyperpod-release-ami-eks-20260212"></a>

 **Aggiornamenti generali AMI** 
+ Aggiornamenti rilasciati per l'AMI SageMaker Hyperpod per Amazon EKS versioni 1.28, 1.29, 1.30, 1.31, 1.32, 1.33, 1.34.
+ [La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/appendix-ami-release-notes.html#appendix-ami-release-notes-base)

 **SageMaker Supporto Hyperpod DLAMI per Amazon EKS** 

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Kubernetes v1.28 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.31 Python/3.10.17 Linux/5.10.247-246.989.amzn2.x86\$164 botocore/1.42.41
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.28.15-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.28.15-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.1
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0

------
#### [ Kubernetes v1.29 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.31 Python/3.10.17 Linux/5.10.247-246.989.amzn2.x86\$164 botocore/1.42.41
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.29.15-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.29.15-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.1
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0

------
#### [ Kubernetes v1.30 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.31 Python/3.10.17 Linux/5.10.247-246.989.amzn2.x86\$164 botocore/1.42.41
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.30.14-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.30.14-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.1
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0

------
#### [ Kubernetes v1.31 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.31 Python/3.10.17 Linux/5.10.247-246.989.amzn2.x86\$164 botocore/1.42.41
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.31.13-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.31.13-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.1
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.43.3
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.31.13-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.1
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.126.09
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.32 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.31 Python/3.10.17 Linux/5.10.247-246.989.amzn2.x86\$164 botocore/1.42.41
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.32.9-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.32.9-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.1
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.43.3
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.32.9-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.1
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.126.09
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.33 ]
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.33.5-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.1
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.43.3
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.33.5-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.1
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.126.09
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.34 ]
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.45.0
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.34.2-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.1
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione EFA Installer: 1.43.3
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.34.2-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.1
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.126.09
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------

## SageMaker Rilasci AMI Hyperpod per Amazon EKS: 25 gennaio 2026
<a name="sagemaker-hyperpod-release-ami-eks-20260125"></a>

 **Aggiornamenti generali AMI** 
+ Aggiornamenti rilasciati per l'AMI SageMaker Hyperpod per Amazon EKS versioni 1.28, 1.29, 1.30, 1.31, 1.32, 1.33, 1.34.
+ [La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/appendix-ami-release-notes.html#appendix-ami-release-notes-base)

 **SageMaker Supporto Hyperpod DLAMI per Amazon EKS** 

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Kubernetes v1.28 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.21 Python/3.10.17 Linux/5.10.247-246.989.amzn2.x86\$164 botocore/1.42.31
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.28.15-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.28.15-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0

------
#### [ Kubernetes v1.29 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.21 Python/3.10.17 Linux/5.10.247-246.989.amzn2.x86\$164 botocore/1.42.31
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.29.15-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.29.15-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0

------
#### [ Kubernetes v1.30 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.21 Python/3.10.17 Linux/5.10.247-246.989.amzn2.x86\$164 botocore/1.42.31
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.30.14-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.30.14-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0

------
#### [ Kubernetes v1.31 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.21 Python/3.10.17 Linux/5.10.247-246.989.amzn2.x86\$164 botocore/1.42.31
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.31.13-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.31.13-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.31.13-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.126.09
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.32 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.14, build 0bab007
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.21 Python/3.10.17 Linux/5.10.247-246.989.amzn2.x86\$164 botocore/1.42.31
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.211.01
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.32.9-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.32.9-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.32.9-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.126.09
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.33 ]
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.33.5-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.33.5-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.126.09
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.34 ]
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.34.2-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.4
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.5
  + Versione del driver NVIDIA: 580.126.09
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.34.2-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.126.09
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300062.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------

## SageMaker Rilasci AMI Hyperpod per Amazon EKS: 29 dicembre 2025
<a name="sagemaker-hyperpod-release-ami-eks-20251229"></a>

 **Aggiornamenti generali AMI** 
+ Aggiornamenti rilasciati per l'AMI SageMaker Hyperpod per Amazon EKS versioni 1.28, 1.29, 1.30, 1.31, 1.32, 1.33.
+ [La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/appendix-ami-release-notes.html#appendix-ami-release-notes-base)

 **SageMaker Supporto Hyperpod DLAMI per Amazon EKS** 

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Kubernetes v1.28 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.13, build 0bab007
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.4 Python/3.10.17 Linux/5.10.245-245.983.amzn2.x86\$164 botocore/1.42.14
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.28.15-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.105.08
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.28.15-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0

------
#### [ Kubernetes v1.29 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.13, build 0bab007
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.4 Python/3.10.17 Linux/5.10.245-245.983.amzn2.x86\$164 botocore/1.42.14
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.29.15-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.105.08
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.29.15-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0

------
#### [ Kubernetes v1.30 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.13, build 0bab007
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.4 Python/3.10.17 Linux/5.10.245-245.983.amzn2.x86\$164 botocore/1.42.14
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.30.14-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione di stress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.105.08
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.30.14-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0

------
#### [ Kubernetes v1.31 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.13, build 0bab007
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.4 Python/3.10.17 Linux/5.10.245-245.983.amzn2.x86\$164 botocore/1.42.14
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.31.13-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione di stress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.4
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.105.08
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.31.13-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.4
  + Versione del driver NVIDIA: 580.105.08
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.31.13-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.105.08
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.32 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.13, build 0bab007
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,29
  + versione di aws CLI v2: aws-cli/1.44.4 Python/3.10.17 Linux/5.10.245-245.983.amzn2.x86\$164 botocore/1.42.14
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.32.9-eks-ecaa3a6
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione di stress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.4
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.105.08
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.32.9-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.4
  + Versione del driver NVIDIA: 580.105.08
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.32.9-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.105.08
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.33 ]
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.4
  + Versione DKMS di aws Neuronx: 2.25.4.0
  + Versione del driver NVIDIA: 580.105.08
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.33.5-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 60.0
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd/v2 2.1.4
  + Versione del driver NVIDIA: 580.105.08
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.25
  + Versione Kubernetes: v1.33.5-eks-ecaa3a6
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.105.08
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------

## SageMaker Rilasci AMI Hyperpod per Amazon EKS: 22 novembre 2025
<a name="sagemaker-hyperpod-release-ami-eks-20251128"></a>

 **Aggiornamenti generali AMI** 
+ Aggiornamenti rilasciati per l'AMI SageMaker Hyperpod per Amazon EKS versioni 1.28, 1.29, 1.30, 1.31, 1.32, 1.33.
+ [La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/appendix-ami-release-notes.html#appendix-ami-release-notes-base)

 **SageMaker Supporto Hyperpod DLAMI per Amazon EKS** 

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Kubernetes v1.28 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.13, build 0bab007
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + versione di aws CLI v2: aws-cli/1.42.71 Python/3.10.17 Linux/5.10.245-241.978.amzn2.x86\$164 botocore/1.40.71
  + Versione DKMS di aws Neuronx: 2.24.7.0
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.28.15-eks-473151a
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 59.
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione DKMS di aws Neuronx: 2.24.7.0
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.24
  + Versione Kubernetes: v1.28.15-eks-473151a
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 59.

------
#### [ Kubernetes v1.29 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.13, build 0bab007
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + versione di aws CLI v2: aws-cli/1.42.71 Python/3.10.17 Linux/5.10.245-241.978.amzn2.x86\$164 botocore/1.40.71
  + Versione DKMS di aws Neuronx: 2.24.7.0
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.29.15-eks-473151a
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 59.
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione DKMS di aws Neuronx: 2.24.7.0
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.24
  + Versione Kubernetes: v1.29.15-eks-473151a
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 59.

------
#### [ Kubernetes v1.30 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.13, build 0bab007
  + Versione runc: 1.3.2
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + versione di aws CLI v2: aws-cli/1.42.69 Python/3.10.17 Linux/5.10.245-241.976.amzn2.x86\$164 botocore/1.40.69
  + Versione DKMS di aws Neuronx: 2.24.7.0
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.30.11-eks-473151a
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione DKMS di aws Neuronx: 2.24.7.0
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.24
  + Versione Kubernetes: v1.30.11-eks-473151a
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 59.

------
#### [ Kubernetes v1.31 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.13, build 0bab007
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + versione di aws CLI v2: aws-cli/1.42.71 Python/3.10.17 Linux/5.10.245-241.978.amzn2.x86\$164 botocore/1.40.71
  + Versione DKMS di aws Neuronx: 2.24.7.0
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.31.7-eks-473151a
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 59.
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione DKMS di aws Neuronx: 2.24.7.0
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.24
  + Versione Kubernetes: v1.31.13-eks-113cf36
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 59.
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.24
  + Versione Kubernetes: v1.31.13-eks-113cf36
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.95.05
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.32 ]
+  **AL2 ora è obsoleto. L'AMI Kubernetes è basata su. AL2023** 
+ AL2 (x86\$164):
  + Versione del kernel Linux: 5.10
  + Versione Glibc: 2.26
  + Versione OpenSSL: 1.0.2k-fips
  + FSx Versione Lustre Client: 2.12.8
  + Versione Docker: versione Docker 25.0.13, build 0bab007
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + versione di aws CLI v2: aws-cli/1.42.74 Python/3.10.17 Linux/5.10.245-241.978.amzn2.x86\$164 botocore/1.40.74
  + Versione DKMS di aws Neuronx: 2.24.7.0
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.2
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.7.16
  + Versione Kubernetes: v1.32.3-eks-473151a
  + versione iptables-services: 1.8.4
  + versione nginx: 1.20.1
  + versione nvme-cli: 1.11.1
  + versione epel-release: 7
  + versione antistress: 1.0.4
  + versione raccolta: 5.8.1
  + versione acl: 2.2.51
  + versione rsyslog: 8.24.0
  + versione lustre-client: 2.12.8
  + versione systemd: 219
  + versione openssh: 7.4
  + versione sudo: 1.8.23
  + versione gcc: 7.3.1
  + versione cmake: 2.8.12.2
  + versione git: 2.47.3
  + crea versione: 3.82
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 1.3.0
  + versione lvm2:2.02.187
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 59.
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione DKMS di aws Neuronx: 2.24.7.0
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.24
  + Versione Kubernetes: v1.32.9-eks-113cf36
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 59.
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.24
  + Versione Kubernetes: v1.32.9-eks-113cf36
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.95.05
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------
#### [ Kubernetes v1.33 ]
+ AL2023 (x86\$164):
  + Versione del kernel Linux: 6.1
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione DKMS di aws Neuronx: 2.24.7.0
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.24
  + Versione Kubernetes: v1.33.5-eks-113cf36
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 59.
+ AL2023 (ARM64):
  + Versione del kernel Linux: 6.12
  + Versione Glibc: 2.34
  + Versione OpenSSL: 3.2.2
  + FSx Versione Lustre Client: 2.15.6
  + Versione runc: 1.3.3
  + Versione containerd: containerd github. com/containerd/containerd 1,7,27
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 12.8
  + Versione del driver ENA: 2.15.0g
  + Versione Python: 3.9.24
  + Versione Kubernetes: v1.33.5-eks-113cf36
  + versione iptables-services: 1.8.8
  + versione nginx: 1.28.0
  + versione nvme-cli: 2.13 1.13
  + versione antistress: 1.0.7
  + versione raccolta: 5.12.0.
  + versione acl: 2.3.1
  + versione lustre-client: 2.15.6
  + versione nvidia-imex: 580.95.05
  + versione systemd: 252
  + versione openssh: 8.7
  + versione sudo: 1.9.15
  + versione gcc: 11.5.0
  + versione cmake: 3.22.2
  + versione git: 2.50.1
  + crea versione: 4.3
  + versione cloudwatch-agent: 1.300060.1
  + versione nfs-utils: 2.5.4
  + versione lvm2:2.03.16
  + versione ec2-instance-connect: 1.1
  + aws-cfn-bootstrap versione: 2.0
  + versione rdma-core: 58.

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 7 novembre 2025
<a name="sagemaker-hyperpod-release-ami-eks-20251107"></a>

**Aggiornamenti generali AMI**
+ Aggiornamenti rilasciati per SageMaker HyperPod AMI per Amazon EKS versioni 1.28, 1.29, 1.30, 1.31, 1.32 e 1.33. 
+ [La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/appendix-ami-release-notes.html#appendix-ami-release-notes-base)

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Kubernetes v1.28 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ AL2 (x86\$164):
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.8
  + Versione Kubernetes: 1.28.15
+ AL2023 (x86\$164):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.28.15
+ Gli aggiornamenti del pacchetto includono i componenti boto3, botocore, pip, regex, psutil e nvidia container toolkit.
+ Pacchetto aggiunto: annotated-doc 0.0.3

------
#### [ Kubernetes v1.29 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ AL2 (x86\$164):
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.8
  + Versione Kubernetes: 1.29.15
+ AL2023 (x86\$164):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.29.15
+ Gli aggiornamenti dei pacchetti includono aggiornamenti del kernel, aggiornamenti di glibc e varie librerie di sistema.
+ Pacchetto aggiunto: annotated-doc 0.0.3

------
#### [ Kubernetes v1.30 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ AL2 (x86\$164):
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.8
  + Versione Kubernetes: 1.30.11
+ AL2023 (x86\$164):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.30.11
+ Gli aggiornamenti dei pacchetti includono aggiornamenti del kernel livepatch e aggiornamenti delle librerie di sistema.
+ Pacchetto aggiunto: annotated-doc 0.0.3

------
#### [ Kubernetes v1.31 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ AL2 (x86\$164):
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.8
  + Versione Kubernetes: 1.31.7
+ AL2023 (x86\$164):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.31.13
+ AL2023 (braccio):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.31.13
  + Versione del kernel: 6.12.46-66.121.amzn2023.aarch64
+ Gli aggiornamenti dei pacchetti includono aggiornamenti estesi delle librerie di sistema, aggiornamenti del kernel e aggiornamenti delle librerie boost.
+ Pacchetti aggiunti: apr-util-lmdb kernel-livepatch-6.1.156-177.286

------
#### [ Kubernetes v1.32 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ AL2 (x86\$164):
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.8
  + Versione Kubernetes: 1.32.3
  + AWS Versione IAM Authenticator: v0.6.29
+ AL2023 (x86\$164):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.32.9
+ AL2023 (braccio):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.32.9
  + Versione del kernel: 6.12.46-66.121.amzn2023.aarch64
+ Gli aggiornamenti dei pacchetti includono aggiornamenti del kernel livepatch e aggiornamenti delle librerie di sistema.
+ Pacchetto aggiunto: annotated-doc 0.0.3

------
#### [ Kubernetes v1.33 ]
+ AL2023 (x86\$164):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.33.5
  + Versione del kernel: 6.1.155-176.282.amzn2023.x86\$164
+ AL2023 (braccio):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.33.5
  + Versione del kernel: 6.12.46-66.121.amzn2023.aarch64
+ Gli aggiornamenti dei pacchetti includono aggiornamenti estesi delle librerie di sistema, aggiornamenti del kernel e aggiornamenti delle librerie boost.
+ Pacchetti aggiunti: apr-util-lmdb, aggiornamenti kernel-livepatch

------

**Nota**  
[la versione runc è stata aggiornata alla versione 1.3.2 Bollettino di sicurezza](https://aws.amazon.com/security/security-bulletins/rss/aws-2025-024/)

## SageMaker HyperPod Versioni AMI per Amazon EKS: 29 ottobre 2025
<a name="sagemaker-hyperpod-release-ami-eks-20251029"></a>

**Aggiornamenti generali AMI**
+ Aggiornamenti rilasciati per SageMaker HyperPod AMI per Amazon EKS versioni 1.28, 1.29, 1.30, 1.31, 1.32 e 1.33. 
+ [La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/aws-deep-learning-ami-baseoss-aml2-2025-10-14.html)

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Kubernetes v1.28 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ AL2 (x86\$164):
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.8
  + Versione Kubernetes: 1.28.15
+ AL2023 (x86\$164):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.28.15
+ Gli aggiornamenti del pacchetto includono i componenti boto3, botocore, pip, regex, psutil e nvidia container toolkit.
+ Pacchetto aggiunto: annotated-doc 0.0.3

------
#### [ Kubernetes v1.29 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ AL2 (x86\$164):
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.8
  + Versione Kubernetes: 1.29.15
+ AL2023 (x86\$164):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.29.15
+ Gli aggiornamenti dei pacchetti includono aggiornamenti del kernel, aggiornamenti di glibc e varie librerie di sistema.
+ Pacchetto aggiunto: annotated-doc 0.0.3

------
#### [ Kubernetes v1.30 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ AL2 (x86\$164):
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.8
  + Versione Kubernetes: 1.30.11
+ AL2023 (x86\$164):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.30.11
+ Gli aggiornamenti dei pacchetti includono aggiornamenti del kernel livepatch e aggiornamenti delle librerie di sistema.
+ Pacchetto aggiunto: annotated-doc 0.0.3

------
#### [ Kubernetes v1.31 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ AL2 (x86\$164):
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.8
  + Versione Kubernetes: 1.31.7
+ AL2023 (x86\$164):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.31.13
+ AL2023 (braccio):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.31.13
  + Versione del kernel: 6.12.46-66.121.amzn2023.aarch64
+ Gli aggiornamenti dei pacchetti includono aggiornamenti estesi delle librerie di sistema, aggiornamenti del kernel e aggiornamenti delle librerie boost.
+ Pacchetti aggiunti: apr-util-lmdb kernel-livepatch-6.1.156-177.286

------
#### [ Kubernetes v1.32 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ AL2 (x86\$164):
  + Versione del driver NVIDIA: 570.195.03
  + Versione CUDA: 12.8
  + Versione Kubernetes: 1.32.3
+ AL2023 (x86\$164):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.32.9
+ AL2023 (braccio):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.32.9
  + Versione del kernel: 6.12.46-66.121.amzn2023.aarch64
+ Gli aggiornamenti dei pacchetti includono aggiornamenti del kernel livepatch e aggiornamenti delle librerie di sistema.
+ Pacchetto aggiunto: annotated-doc 0.0.3

------
#### [ Kubernetes v1.33 ]
+ AL2023 (x86\$164):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.33.5
  + Versione del kernel: 6.1.155-176.282.amzn2023.x86\$164
+ AL2023 (braccio):
  + Versione del driver NVIDIA: 580.95.05
  + Versione CUDA: 13.0
  + Versione Kubernetes: 1.33.5
  + Versione del kernel: 6.12.46-66.121.amzn2023.aarch64
+ Gli aggiornamenti dei pacchetti includono aggiornamenti estesi delle librerie di sistema, aggiornamenti del kernel e aggiornamenti delle librerie boost.
+ Pacchetti aggiunti: apr-util-lmdb, aggiornamenti kernel-livepatch

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 22 ottobre 2025
<a name="sagemaker-hyperpod-release-ami-eks-20251022"></a>

**AL2x86**

**Nota**  
Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023

[La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/aws-deep-learning-ami-baseoss-aml2-2025-10-14.html)
+ Versioni EKS 1.28 - 1.32
+ [Questa versione contiene le patch CVE per i pacchetti di driver NVIDIA interessati, disponibili nel Nvidia October Security Bulletin.](https://nvidia.custhelp.com/app/answers/detail/a_id/5703)
+ NVIDIA SMI

  ```
  NVIDIA-SMI 570.195.03             
  Driver Version: 570.195.03     
  CUDA Version: 12.8
  ```
+ Versioni principali  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-release-ami-eks.html)
+ Pacchetti aggiunti: nessun pacchetto è stato aggiunto in questa versione.
+ Pacchetti aggiornati  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-release-ami-eks.html)
+ Pacchetti rimossi: nessun pacchetto è stato rimosso in questa versione.

**AL2023x86**

[La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/aws-deep-learning-ami-gpubaseoss-al2023-2025-10-14.html)
+ Versioni EKS 1.28 - 1.32. Nessuna versione per la versione 1.33 di EKS.
+ [Questa versione contiene le patch CVE per i pacchetti di driver NVIDIA interessati, disponibili nel Nvidia October Security Bulletin.](https://nvidia.custhelp.com/app/answers/detail/a_id/5703)
+ NVIDIA SMI

  ```
  NVIDIA-SMI 580.95.05             
  Driver Version: 580.95.05  
  CUDA Version: 13.0
  ```
+ Versioni principali  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-release-ami-eks.html)
+ Pacchetti aggiunti: nessun pacchetto è stato aggiunto in questa versione.
+ Pacchetti aggiornati  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-release-ami-eks.html)
+ Pacchetti rimossi: nessun pacchetto è stato rimosso in questa versione.

**AL2023 ARM64**

[La nota di rilascio di DLAMI di base è disponibile qui.](https://docs.aws.amazon.com//dlami/latest/devguide/aws-deep-learning-ami-gpubaseossarm64-al2023-2025-10-14.html)
+ Versioni EKS 1.31 - 1.33.
+ [Questa versione contiene le patch CVE per i pacchetti di driver NVIDIA interessati, disponibili nel Nvidia October Security Bulletin.](https://nvidia.custhelp.com/app/answers/detail/a_id/5703)
+ NVIDIA SMI

  ```
  NVIDIA-SMI 580.95.05        
  Driver Version: 580.95.05    
  CUDA Version: 13.0
  ```
+ Versioni principali  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-release-ami-eks.html)
+ Pacchetti aggiunti: nessun pacchetto è stato aggiunto in questa versione.
+ Pacchetti aggiornati  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/sagemaker-hyperpod-release-ami-eks.html)
+ Pacchetti rimossi: nessun pacchetto è stato rimosso in questa versione.

## SageMaker HyperPod Versioni AMI per Amazon EKS: 29 settembre 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250929"></a>

**Aggiornamenti generali AMI**
+ Rilasciata la nuova SageMaker HyperPod AMI per Amazon EKS 1.33. Per ulteriori informazioni, consulta le versioni SageMaker HyperPod AMI per Amazon EKS: 29 settembre 2025.
**Importante**  
L'API Kubernetes beta di Dynamic Resource Allocation è abilitata per impostazione predefinita in questa versione.  
Questa API migliora la pianificazione e il monitoraggio dei carichi di lavoro che richiedono risorse come. GPUs
Questa API è stata sviluppata dalla community open source di Kubernetes e potrebbe cambiare nelle future versioni di Kubernetes. Prima di utilizzare l'API, consulta la documentazione di [Kubernetes](https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/) e scopri come influisce sui tuoi carichi di lavoro.
HyperPod non sta rilasciando un'AMI HyperPod Amazon Linux 2 per Kubernetes 1.33. AWS consiglia di eseguire la migrazione a. AL2023 Per ulteriori informazioni, consulta [Eseguire l'aggiornamento da Amazon Linux 2 a AL2023](https://docs.aws.amazon.com/eks/latest/userguide/al2023.html).

Per ulteriori informazioni, consulta [Kubernetes](https://kubernetes.io/blog/2025/04/23/kubernetes-v1-33-release/) v1.33.

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Kubernetes v1.28 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ NVIDIA SMI:
  + Versione del driver NVIDIA: 570.172.08
  + Versione CUDA: 12.8
+ Pacchetti:
  + Linguaggi e librerie di base:
    + GCC: 11.5.0-5.amzn2023.0.5
    + GCC 14:14.2.1-7.amzn2023.0.1
    + Giava: 17.0.16\$18-1.amzn2023.1
    + Perl: 5.32.1-477.amzn2023.0.7
    + Python: 3.9.23-1.amzn2023.0.3
    + Vai a: 3.2.0-37.amzn2023
    + Rust: 1.89.0-1.amzn2023.0.2
  + Librerie principali:
    + GLibC: 2.34-196.amzn2023.0.1
    + OpenSSL: 3.2.2-1.amzn2023.0.1
    + Zlib: 1.2.11-33.amzn2023.0.5
    + Utilità XZ: 5.2.5-9.amzn2023.0.2
    + UtilLinux: 2.37.4-1.amzn2023.0.4
  + Neurone:
    + aws-neuronx-dkms: 2.23,9,0 - dkm
    + aws-neuronx-tools: 2,25,145,0-1
  + EFA:
    + driver efa: 2.17.2-1.amzn2023
    + configurazione efa: 1.18-1.amzn2023
    + programma di aggiornamento efa: 1.2.2-1.amzn2023
    + profilo efa: 1.7-1.amzn2023
  + kernel:
    + kernel: 6.1.148-173.267.amzn2023
    + sviluppo del kernel: 6.1.148-173.267.amzn2023
    + intestazioni del kernel: 6.1.148-173.267.amzn2023
    + strumenti del kernel: 6.1.148-173.267.amzn2023
    + moduli kernel aggiuntivi: 6.1.148-173.267.amzn2023
    + patch live del kernel: 1.0-0.amzn2023
  + Nvidia:
    + toolkit per contenitori nvidia: 1.17.8-1
    + base del toolkit per contenitori nvidia: 1.17.8-1
    + libnvidia-container: 1.17.8-1 (con strumenti)
    + gestore di tessuti nvidia: 570.172.08-1
    + libnvidia-nscq: 570.172.08-1

------
#### [ Kubernetes v1.29 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ NVIDIA SMI:
  + Versione del driver NVIDIA: 570.172.08
  + Versione CUDA: 12.8
+ Pacchetti:
  + Linguaggi e librerie di base:
    + GCC: 11.5.0-5.amzn2023.0.5
    + GCC 14:14.2.1-7.amzn2023.0.1
    + Giava: 17.0.16\$18-1.amzn2023.1
    + Perl: 5.32.1-477.amzn2023.0.7
    + Python: 3.9.23-1.amzn2023.0.3
    + Vai a: 3.2.0-37.amzn2023
    + Rust: 1.89.0-1.amzn2023.0.2
  + Librerie principali:
    + GLibC: 2.34-196.amzn2023.0.1
    + OpenSSL: 3.2.2-1.amzn2023.0.1
    + Zlib: 1.2.11-33.amzn2023.0.5
    + Utilità XZ: 5.2.5-9.amzn2023.0.2
    + UtilLinux: 2.37.4-1.amzn2023.0.4
  + Neurone:
    + aws-neuronx-dkms: 2.23,9,0 - dkm
    + aws-neuronx-tools: 2,25,145,0-1
  + EFA:
    + driver efa: 2.17.2-1.amzn2023
    + configurazione efa: 1.18-1.amzn2023
    + programma di aggiornamento efa: 1.2.2-1.amzn2023
    + profilo efa: 1.7-1.amzn2023
  + kernel:
    + kernel: 6.1.148-173.267.amzn2023
    + sviluppo del kernel: 6.1.148-173.267.amzn2023
    + intestazioni del kernel: 6.1.148-173.267.amzn2023
    + strumenti del kernel: 6.1.148-173.267.amzn2023
    + moduli kernel aggiuntivi: 6.1.148-173.267.amzn2023
    + patch live del kernel: 1.0-0.amzn2023
  + Nvidia:
    + toolkit per contenitori nvidia: 1.17.8-1
    + base del toolkit per contenitori nvidia: 1.17.8-1
    + libnvidia-container: 1.17.8-1 (con strumenti)
    + gestore di tessuti nvidia: 570.172.08-1
    + libnvidia-nscq: 570.172.08-1

------
#### [ Kubernetes v1.30 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ NVIDIA SMI:
  + Versione del driver NVIDIA: 570.172.08
  + Versione CUDA: 12.8
+ Pacchetti:
  + Linguaggi e librerie di base:
    + GCC: 11.5.0-5.amzn2023.0.5
    + GCC 14:14.2.1-7.amzn2023.0.1
    + Giava: 17.0.16\$18-1.amzn2023.1
    + Perl: 5.32.1-477.amzn2023.0.7
    + Python: 3.9.23-1.amzn2023.0.3
    + Vai a: 3.2.0-37.amzn2023
    + Rust: 1.89.0-1.amzn2023.0.2
  + Librerie principali:
    + GLibC: 2.34-196.amzn2023.0.1
    + OpenSSL: 3.2.2-1.amzn2023.0.1
    + Zlib: 1.2.11-33.amzn2023.0.5
    + Utilità XZ: 5.2.5-9.amzn2023.0.2
    + UtilLinux: 2.37.4-1.amzn2023.0.4
  + Neurone:
    + aws-neuronx-dkms: 2.23,9,0 - dkm
    + aws-neuronx-tools: 2,25,145,0-1
  + EFA:
    + driver efa: 2.17.2-1.amzn2023
    + configurazione efa: 1.18-1.amzn2023
    + programma di aggiornamento efa: 1.2.2-1.amzn2023
    + profilo efa: 1.7-1.amzn2023
  + kernel:
    + kernel: 6.1.148-173.267.amzn2023
    + sviluppo del kernel: 6.1.148-173.267.amzn2023
    + intestazioni del kernel: 6.1.148-173.267.amzn2023
    + strumenti del kernel: 6.1.148-173.267.amzn2023
    + moduli kernel aggiuntivi: 6.1.148-173.267.amzn2023
    + patch live del kernel: 1.0-0.amzn2023
  + Nvidia:
    + toolkit per contenitori nvidia: 1.17.8-1
    + base del toolkit per contenitori nvidia: 1.17.8-1
    + libnvidia-container: 1.17.8-1 (con strumenti)
    + gestore di tessuti nvidia: 570.172.08-1
    + libnvidia-nscq: 570.172.08-1

------
#### [ Kubernetes v1.31 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ NVIDIA SMI:
  + Versione del driver NVIDIA: 570.172.08
  + Versione CUDA: 12.8
+ Pacchetti:
  + Linguaggi e librerie di base:
    + GCC: 11.5.0-5.amzn2023.0.5
    + GCC 14:14.2.1-7.amzn2023.0.1
    + Giava: 17.0.16\$18-1.amzn2023.1
    + Perl: 5.32.1-477.amzn2023.0.7
    + Python: 3.9.23-1.amzn2023.0.3
    + Vai a: 3.2.0-37.amzn2023
    + Rust: 1.89.0-1.amzn2023.0.2
  + Librerie principali:
    + GLibC: 2.34-196.amzn2023.0.1
    + OpenSSL: 3.2.2-1.amzn2023.0.1
    + Zlib: 1.2.11-33.amzn2023.0.5
    + Utilità XZ: 5.2.5-9.amzn2023.0.2
    + UtilLinux: 2.37.4-1.amzn2023.0.4
  + Neurone:
    + aws-neuronx-dkms: 2.23,9,0 - dkm
    + aws-neuronx-tools: 2,25,145,0-1
  + EFA:
    + driver efa: 2.17.2-1.amzn2023
    + configurazione efa: 1.18-1.amzn2023
    + programma di aggiornamento efa: 1.2.2-1.amzn2023
    + profilo efa: 1.7-1.amzn2023
  + kernel:
    + kernel: 6.1.148-173.267.amzn2023
    + sviluppo del kernel: 6.1.148-173.267.amzn2023
    + intestazioni del kernel: 6.1.148-173.267.amzn2023
    + strumenti del kernel: 6.1.148-173.267.amzn2023
    + moduli kernel aggiuntivi: 6.1.148-173.267.amzn2023
    + patch live del kernel: 1.0-0.amzn2023
  + Nvidia:
    + toolkit per contenitori nvidia: 1.17.8-1
    + base del toolkit per contenitori nvidia: 1.17.8-1
    + libnvidia-container: 1.17.8-1 (con strumenti)
    + gestore di tessuti nvidia: 570.172.08-1
    + libnvidia-nscq: 570.172.08-1

------
#### [ Kubernetes v1.32 ]
+ **Amazon Linux 2 è ora obsoleto. L'AMI Kubernetes è basata su. AL2023**
+ NVIDIA SMI:
  + Versione del driver NVIDIA: 570.172.08
  + Versione CUDA: 12.8
+ Pacchetti:
  + Linguaggi e librerie di base:
    + GCC: 11.5.0-5.amzn2023.0.5
    + GCC 14:14.2.1-7.amzn2023.0.1
    + Giava: 17.0.16\$18-1.amzn2023.1
    + Perl: 5.32.1-477.amzn2023.0.7
    + Python: 3.9.23-1.amzn2023.0.3
    + Vai a: 3.2.0-37.amzn2023
    + Rust: 1.89.0-1.amzn2023.0.2
  + Librerie principali:
    + GLibC: 2.34-196.amzn2023.0.1
    + OpenSSL: 3.2.2-1.amzn2023.0.1
    + Zlib: 1.2.11-33.amzn2023.0.5
    + Utilità XZ: 5.2.5-9.amzn2023.0.2
    + UtilLinux: 2.37.4-1.amzn2023.0.4
  + Neurone:
    + aws-neuronx-dkms: 2.23,9,0 - dkm
    + aws-neuronx-tools: 2,25,145,0-1
  + EFA:
    + driver efa: 2.17.2-1.amzn2023
    + configurazione efa: 1.18-1.amzn2023
    + programma di aggiornamento efa: 1.2.2-1.amzn2023
    + profilo efa: 1.7-1.amzn2023
  + kernel:
    + kernel: 6.1.148-173.267.amzn2023
    + sviluppo del kernel: 6.1.148-173.267.amzn2023
    + intestazioni del kernel: 6.1.148-173.267.amzn2023
    + strumenti del kernel: 6.1.148-173.267.amzn2023
    + moduli kernel aggiuntivi: 6.1.148-173.267.amzn2023
    + patch live del kernel: 1.0-0.amzn2023
  + Nvidia:
    + toolkit per contenitori nvidia: 1.17.8-1
    + base del toolkit per contenitori nvidia: 1.17.8-1
    + libnvidia-container: 1.17.8-1 (con strumenti)
    + gestore di tessuti nvidia: 570.172.08-1
    + libnvidia-nscq: 570.172.08-1

------
#### [ Kubernetes v1.33 ]

La tabella seguente contiene informazioni sui componenti di questa versione AMI e delle versioni corrispondenti.


| componente | AL2023\$1x86 | AL2023\$1arm64 | 
| --- | --- | --- | 
| EKS | v1.33.4 | v1.33.4 | 
| amazon-ssm-agent | 3.3.2299,0-1amzn2023 | 3.3.2299,0-1.amzn2023 | 
| aws-neuronx-dkms | 2.23,9,0 - kms | N/D | 
| containerd | 1,7,27-1eks.amzn2023.0,4 | 1,7,27-1eks.amzn2023,0.4 | 
| efa | 2.17.2-1.amzn2023 | 2.17.2-1.amzn2023 | 
| ena | 2.14,1 g | 2,14,1 g | 
| kernel | 6.12.40-64.114.amzn2023 | N/D | 
| kernel 6.12 | N/D | 6.12.40-64.114.amzn2023 | 
| kmod-nvidia-latest-dkms | 570,172,08-1amzn2023 | 570,172,08-1el9 | 
| nvidia-container-toolkit | 1,178-1 | 1,178-1 | 
| runc | 1.2.6-1.amzn2023.0.1 | 1.2.6-1.amzn2023.0.1 | 

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 25 agosto 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250825"></a>

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

Questo rilascio include gli aggiornamenti seguenti:

------
#### [ Kubernetes v1.28 ]

**NVIDIA SMI:**
+ Driver NVIDIA versione: 570.172.08
+ Versione CUDA: 12.8

**Pacchetti aggiunti:**
+ kernel-livepatch-5.10.240-238.955.x86\$164 1.0-0.amzn2 amzn2extra-kernel-5.10

**Pacchetti aggiornati:**
+ gdk-pixbuf2.x86\$164: 2.36.12-3.amzn2 → 2.36.12-3.amzn2.0.2
+ kernel.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-devel.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-headers.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-tools.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ libgs.x86\$164: 9.54.0-9.amzn2.0.11 → 9.54.0-9.amzn2.0.12
+ microcode\$1ctl.x86\$164: 2:2.1-47.amzn2.4.24 → 2:2.1-47.amzn2.4.25
+ pam.x86\$164: 1.1.8-23.amzn2.0.2 → 1.1.8-23.amzn2.0.4

**Pacchetti rimossi:**
+ kernel-livepatch-5.10.239-236.958.x86\$164 1.0-0.amzn2 amzn2extra-kernel-5.10

**Repository modificato:**
+ libnvidia-container-tools.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ libnvidia-container1.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ nvidia-container-toolkit.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ nvidia-container-toolkit-base.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit

------
#### [ Kubernetes v1.29 ]

**NVIDIA SMI:**
+ Driver NVIDIA versione: 570.172.08
+ Versione CUDA: 12.8

**Pacchetti aggiunti:**
+ kernel-livepatch-5.10.240-238.955.x86\$164 1.0-0.amzn2 amzn2extra-kernel-5.10

**Pacchetti aggiornati:**
+ gdk-pixbuf2.x86\$164: 2.36.12-3.amzn2 → 2.36.12-3.amzn2.0.2
+ kernel.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-devel.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-headers.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-tools.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ libgs.x86\$164: 9.54.0-9.amzn2.0.11 → 9.54.0-9.amzn2.0.12
+ microcode\$1ctl.x86\$164: 2:2.1-47.amzn2.4.24 → 2:2.1-47.amzn2.4.25
+ pam.x86\$164: 1.1.8-23.amzn2.0.2 → 1.1.8-23.amzn2.0.4

**Pacchetti rimossi:**
+ kernel-livepatch-5.10.239-236.958.x86\$164 1.0-0.amzn2 amzn2extra-kernel-5.10

**Repository modificato:**
+ libnvidia-container-tools.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ libnvidia-container1.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ nvidia-container-toolkit.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ nvidia-container-toolkit-base.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit

------
#### [ Kubernetes v1.30 ]

**NVIDIA SMI:**
+ Driver NVIDIA versione: 570.172.08
+ Versione CUDA: 12.8

**Pacchetti aggiunti:**
+ kernel-livepatch-5.10.240-238.955.x86\$164 1.0-0.amzn2 amzn2extra-kernel-5.10

**Pacchetti aggiornati:**
+ aws-neuronx-dkms.noarch: 2.22.2,0-dkms → 2.23,9,0-dkms
+ efa.x86\$164: 2.15.3-1.amzn2 → 2.17.2-1.amzn2
+ efa-nv-peermem.x86\$164:1.2.1-1.amzn2 → 1.2.2-1.amzn2
+ gdk-pixbuf2.x86\$164: 2.36.12-3.amzn2 → 2.36.12-3.amzn2.0.2
+ ibacm.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ infiniband-diags.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ kernel.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-devel.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-headers.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-tools.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ libfabric-aws.x86\$164: 2.1.0amzn3.0-1.amzn2 → 2.1.0amzn5.0-1.amzn2
+ libfabric-aws-devel.x86\$164:2.1.0amzn3.0-1.amzn2 → 2.1.0amzn5.0-1.amzn2
+ libgs.x86\$164: 9.54.0-9.amzn2.0.11 → 9.54.0-9.amzn2.0.12
+ libibumad.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ libibverbs.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ libibverbs-core.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ libibverbs-utils.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ libnccl-ofi.x86\$164: 1.15.0-1.amzn2 → 1.16.2-1.amzn2
+ librdmacm.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ librdmacm-utils.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ microcode\$1ctl.x86\$164: 2:2.1-47.amzn2.4.24 → 2:2.1-47.amzn2.4.25
+ pam.x86\$164: 1.1.8-23.amzn2.0.2 → 1.1.8-23.amzn2.0.4
+ rdma-core.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ rdma-core-devel.x86\$164:57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2

**Pacchetti rimossi:**
+ kernel-livepatch-5.10.239-236.958.x86\$164 1.0-0.amzn2 amzn2extra-kernel-5.10

**Repository modificato:**
+ libnvidia-container-tools.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ libnvidia-container1.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ nvidia-container-toolkit.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ nvidia-container-toolkit-base.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit

------
#### [ Kubernetes v1.31 ]

**NVIDIA SMI:**
+ Driver NVIDIA versione: 570.172.08
+ Versione CUDA: 12.8

**Pacchetti aggiunti:**
+ kernel-livepatch-5.10.240-238.955.x86\$164 1.0-0.amzn2 amzn2extra-kernel-5.10

**Pacchetti aggiornati:**
+ gdk-pixbuf2.x86\$164: 2.36.12-3.amzn2 → 2.36.12-3.amzn2.0.2
+ kernel.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-devel.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-headers.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-tools.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ libgs.x86\$164: 9.54.0-9.amzn2.0.11 → 9.54.0-9.amzn2.0.12
+ microcode\$1ctl.x86\$164: 2:2.1-47.amzn2.4.24 → 2:2.1-47.amzn2.4.25
+ pam.x86\$164: 1.1.8-23.amzn2.0.2 → 1.1.8-23.amzn2.0.4

**Pacchetti rimossi:**
+ kernel-livepatch-5.10.239-236.958.x86\$164 1.0-0.amzn2 amzn2extra-kernel-5.10

**Repository modificato:**
+ libnvidia-container-tools.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ libnvidia-container1.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ nvidia-container-toolkit.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ nvidia-container-toolkit-base.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit

------
#### [ Kubernetes v1.32 ]

**NVIDIA SMI:**
+ Driver NVIDIA versione: 570.172.08
+ Versione CUDA: 12.8

**Pacchetti aggiunti:**
+ kernel-livepatch-5.10.240-238.955.x86\$164 1.0-0.amzn2 amzn2extra-kernel-5.10

**Pacchetti aggiornati:**
+ aws-neuronx-dkms.noarch: 2.22.2,0-dkms → 2.23,9,0-dkms
+ efa.x86\$164: 2.15.3-1.amzn2 → 2.17.2-1.amzn2
+ efa-nv-peermem.x86\$164:1.2.1-1.amzn2 → 1.2.2-1.amzn2
+ gdk-pixbuf2.x86\$164: 2.36.12-3.amzn2 → 2.36.12-3.amzn2.0.2
+ ibacm.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ infiniband-diags.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ kernel.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-devel.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-headers.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ kernel-tools.x86\$164: 5.10.239-236.958.amzn2 → 5.10.240-238.955.amzn2
+ libfabric-aws.x86\$164: 2.1.0amzn3.0-1.amzn2 → 2.1.0amzn5.0-1.amzn2
+ libfabric-aws-devel.x86\$164:2.1.0amzn3.0-1.amzn2 → 2.1.0amzn5.0-1.amzn2
+ libgs.x86\$164: 9.54.0-9.amzn2.0.11 → 9.54.0-9.amzn2.0.12
+ libibumad.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ libibverbs.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ libibverbs-core.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ libibverbs-utils.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ libnccl-ofi.x86\$164: 1.15.0-1.amzn2 → 1.16.2-1.amzn2
+ librdmacm.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ librdmacm-utils.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ microcode\$1ctl.x86\$164: 2:2.1-47.amzn2.4.24 → 2:2.1-47.amzn2.4.25
+ pam.x86\$164: 1.1.8-23.amzn2.0.2 → 1.1.8-23.amzn2.0.4
+ rdma-core.x86\$164: 57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2
+ rdma-core-devel.x86\$164:57.amzn1-1.amzn2.0.2 → 58.amzn0-1.amzn2.0.2

**Pacchetti rimossi:**
+ kernel-livepatch-5.10.239-236.958.x86\$164 1.0-0.amzn2 amzn2extra-kernel-5.10

**Repository modificato:**
+ libnvidia-container-tools.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ libnvidia-container1.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ nvidia-container-toolkit.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit
+ nvidia-container-toolkit-base.x86\$164: cuda-rhel8-x86\$164 → nvidia-container-toolkit

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 12 agosto 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250812"></a>

**L'AMI include quanto segue:**
+  AWS Servizio supportato: Amazon EC2
+ Sistema operativo: Amazon Linux 2023
+ Architettura di calcolo: ARM64
+ L'ultima versione disponibile è installata per i seguenti pacchetti:
  + Kernel Linux: 6.12
  + FSx Lustro
  + Docker
  + AWS CLI v2 in `/usr/bin/aws`
  + NVIDIA DCGM
  + Toolkit per container Nvidia:
    + Comando di versione: `nvidia-container-cli -V`
  + Nvidia-docker2:
    + Comando di versione: `nvidia-docker version`
  + Nvidia-IMEX: v570.172.08-1
+ Driver NVIDIA: 570.158.01
+ Pila NVIDIA CUDA 12.4, 12.5, 12.6, 12.8:
  + Directory di installazione CUDA, NCCL e cuDDN: `/usr/local/cuda-xx.x/`
    + Esempio: `/usr/local/cuda-12.8/`, `/usr/local/cuda-12.8/`
  + Versione NCCL compilata:
    + Per la directory CUDA 12.4, versione NCCL compilata 2.22.3\$1 .4 CUDA12
    + Per la directory CUDA 12.5, è stata compilata la versione NCCL 2.22.3\$1 .5 CUDA12
    + Per la directory CUDA 12.6, è stata compilata la versione NCCL 2.24.3\$1 .6 CUDA12
    + Per la directory CUDA 12.8, è stata compilata la versione NCCL 2.27.5\$1 .8 CUDA12
  + CUDA predefinito: 12.8
    + PATH `/usr/local/cuda` punta a CUDA 12.8
    + Aggiornato di seguito le variabili di ambiente:
      + `LD_LIBRARY_PATH`avere `/usr/local/cuda-12.8/lib:/usr/local/cuda-12.8/lib64:/usr/local/cuda-12.8:/usr/local/cuda-12.8/targets/sbsa-linux/lib:/usr/local/cuda-12.8/nvvm/lib64:/usr/local/cuda-12.8/extras/CUPTI/lib64`
      + `PATH`avere `/usr/local/cuda-12.8/bin/:/usr/local/cuda-12.8/include/`
      + Per qualsiasi versione CUDA diversa, aggiorna di `LD_LIBRARY_PATH` conseguenza.
+ Programma di installazione EFA: 1.42.0
+  GDRCopyNvidia: 2.5.1
+ AWS Il plugin OFI NCCL viene fornito con il programma di installazione EFA
  + Percorsi `/opt/amazon/ofi-nccl/lib` e vengono aggiunti a. `/opt/amazon/ofi-nccl/efa` `LD_LIBRARY_PATH`
+ AWS CLI v2 in `/usr/local/bin/aws`
+ Tipo di volume EBS: gp3
+ Python: `/usr/bin/python3.9`

## SageMaker HyperPod Versioni AMI per Amazon EKS: 6 agosto 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250806"></a>

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

 AMIs Includono i seguenti aggiornamenti:

------
#### [ K8s v1.28 ]
+ **Pacchetti Neuron:**
  + **aws-neuronx-collectives: 2.27.34.0\$1ec8cd5e8b-1**
  + **aws-neuronx-dkms:** 2.23,9,0 - kms
  + **aws-neuronx-runtime-lib: 2.27.23.0\$18deec4dbf-1**
  + **aws-neuronx-k8 plugin: 2.27.7.0-1**
  + **aws-neuronx-k8-scheduler:** 2.27.7.0-1
  + **aws-neuronx-tools: 2,25.145,0-1**

------
#### [ K8s v1.29 ]
+ **Pacchetti Neuron:**
  + **aws-neuronx-collectives: 2,27,34,0\$1ec8cd5e8b-1**
  + **aws-neuronx-dkms:** 2.23,9,0 - kms
  + **aws-neuronx-runtime-lib: 2.27.23.0\$18deec4dbf-1**
  + **aws-neuronx-k8 plugin: 2.27.7.0-1**
  + **aws-neuronx-k8-scheduler:** 2.27.7.0-1
  + **aws-neuronx-tools: 2,25.145,0-1**

------
#### [ K8s v1.30 ]
+ **Pacchetti Neuron:**
  + **aws-neuronx-collectives: 2,27,34,0\$1ec8cd5e8b-1**
  + **aws-neuronx-dkms:** 2.23,9,0 - kms
  + **aws-neuronx-runtime-lib: 2.27.23.0\$18deec4dbf-1**
  + **aws-neuronx-k8 plugin: 2.27.7.0-1**
  + **aws-neuronx-k8-scheduler:** 2.27.7.0-1
  + **aws-neuronx-tools: 2,25.145,0-1**

------
#### [ K8s v1.31 ]
+ **Pacchetti Neuron:**
  + **aws-neuronx-collectives: 2,27,34,0\$1ec8cd5e8b-1**
  + **aws-neuronx-dkms:** 2.23,9,0 - kms
  + **aws-neuronx-runtime-lib: 2.27.23.0\$18deec4dbf-1**
  + **aws-neuronx-k8 plugin: 2.27.7.0-1**
  + **aws-neuronx-k8-scheduler:** 2.27.7.0-1
  + **aws-neuronx-tools: 2,25.145,0-1**

------
#### [ K8s v1.32 ]
+ **Pacchetti Neuron:**
  + **aws-neuronx-collectives: 2,27,34,0\$1ec8cd5e8b-1**
  + **aws-neuronx-dkms:** 2.23,9,0 - kms
  + **aws-neuronx-runtime-lib: 2.27.23.0\$18deec4dbf-1**
  + **aws-neuronx-k8 plugin: 2.27.7.0-1**
  + **aws-neuronx-k8-scheduler:** 2.27.7.0-1
  + **aws-neuronx-tools: 2,25.145,0-1**

------

**Importante**  
Deep Learning Base OSS Nvidia Driver AMI (Amazon Linux 2) versione 70.3
Deep Learning Base Proprietary Nvidia Driver AMI (Amazon Linux 2) versione 68.4
Supporto CUDA 12.8 più recente
Driver Nvidia aggiornato da 570.158.01 a 570.172.08 per correggere le CVE presenti nel bollettino Nvidia Security Bulletin di luglio.

## SageMaker HyperPod Versioni AMI per Amazon EKS: 31 luglio 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250731"></a>

Amazon SageMaker HyperPod ora supporta una nuova AMI per i cluster Amazon EKS che aggiorna il sistema operativo di base ad Amazon Linux 2023. Questa versione offre diversi miglioramenti rispetto ad Amazon Linux 2 (AL2). HyperPod nuove versioni vengono rilasciate AMIs regolarmente e ti consigliamo di eseguire tutti i HyperPod cluster sulle versioni più recenti e sicure di AMIs per risolvere le vulnerabilità ed eliminare gradualmente software e librerie obsoleti.

### Aggiornamenti chiave
<a name="sagemaker-hyperpod-release-ami-eks-20250731-specs"></a>
+ **Sistema operativo**: Amazon Linux 2023 (aggiornato da Amazon Linux 2 o AL2)
+ **Package Manager**: DNF è lo strumento di gestione dei pacchetti predefinito, che sostituisce YUM utilizzato in AL2
+ **Servizio di rete**: `systemd-networkd` gestisce le interfacce di rete, sostituendo ISC utilizzato in `dhclient` AL2
+ **Kernel Linux**: versione 6.1, aggiornata dal kernel utilizzato in AL2
+ **Glibc**: versione 2.34, aggiornata dalla versione in AL2
+ **GCC**: Versione 11.5.0, aggiornata dalla versione in AL2
+ **NFS**: versione 1:2.6 .1, aggiornata dalla versione 1:1.3 .4 in AL2
+ **Driver NVIDIA**: versione 570.172.08, una versione del driver più recente
+ **Python**: versione 3.9, che sostituisce Python 2.7 utilizzato in AL2
+ **NVME**: versione 1.11.1, una versione più recente del driver NVMe 

### Prima dell’aggiornamento
<a name="sagemaker-hyperpod-release-ami-eks-20250731-prereqs"></a>

Ci sono alcune cose importanti da sapere prima dell’aggiornamento. Con AL2023, diversi pacchetti sono stati aggiunti, aggiornati o rimossi rispetto a. AL2 Ti consigliamo vivamente di testare le tue applicazioni AL2023 prima di aggiornare i cluster. Per un elenco completo di tutte le modifiche ai pacchetti in AL2023, consulta [Modifiche ai pacchetti in Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/release-notes/compare-packages.html).

Di seguito sono riportate alcune delle modifiche significative tra AL2 e AL2023:
+ **Python 3.10**: l’aggiornamento più importante, a parte il sistema operativo, è l’aggiornamento della versione di Python. Dopo l’aggiornamento, l’impostazione predefinita per i cluster sarà Python 3.10. Anche se alcuni carichi di lavoro di addestramento distribuito Python 3.8 possono essere compatibili con Python 3.10, consigliamo vivamente di testare separatamente gli specifici carichi di lavoro. Se la migrazione a Python 3.10 presenta difficoltà, ma desideri comunque aggiornare il cluster per accedere ad altre nuove funzionalità, puoi installare una versione precedente di Python utilizzando il comando `yum install python-xx.x` con gli [script del ciclo di vita](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-lifecycle-best-practices-slurm.html) prima di eseguire qualsiasi carico di lavoro. Assicurati di testare sia gli script del ciclo di vita esistenti che il codice dell’applicazione per verificarne la compatibilità.
+ **NVIDIA Runtime Enforcement**: applica AL2023 rigorosamente i requisiti di runtime dei container NVIDIA, facendo sì che i contenitori con variabili di ambiente NVIDIA codificate (come`NVIDIA_VISIBLE_DEVICES: "all"`) non funzionino correttamente sui nodi che utilizzano solo la CPU (mentre AL2 ignora queste impostazioni quando non sono presenti driver GPU). Puoi ignorare l’imposizione configurando `NVIDIA_VISIBLE_DEVICES: "void"` nelle specifiche del pod o ricorrendo a immagini che utilizzano solo la CPU.
+ **cgroup v2**: AL2023 presenta la nuova generazione di gerarchia unificata dei gruppi di controllo (cgroup v2). cgroup v2 viene utilizzato per i runtime dei container ed è utilizzato anche da. `systemd` Sebbene includa AL2023 ancora codice che può far funzionare il sistema utilizzando cgroup v1, questa non è una configurazione consigliata.
+ **Amazon VPC CNI e `eksctl` versioni**: richiede AL2023 inoltre che la versione di Amazon VPC CNI sia 1.16.2 o successiva e la versione 0.176.0 o superiore. `eksctl`
+ **EFA on FSx for Lustre**: ora puoi usare EFA on FSx for Lustre, che ti consente di ottenere prestazioni applicative paragonabili a quelle dei cluster locali AI/ML o HPC (High Performance Computing), beneficiando al contempo della scalabilità, della flessibilità e dell'elasticità del cloud computing.

Inoltre, l'aggiornamento a AL2023 richiede una versione minima di `1.0.643.0_1.0.192.0` Health Monitoring Agent. Completa la procedura seguente per aggiornare l’agente di monitoraggio dell’integrità:

1. Se utilizzi script HyperPod del ciclo di vita dal GitHub repository [awsome-distributed-training](https://github.com/aws-samples/awsome-distributed-training)), assicurati di scaricare la versione più recente. Le versioni precedenti non sono compatibili con. AL2023 Il nuovo script del ciclo di vita garantisce l'`containerd`utilizzo dello spazio di archiviazione aggiuntivo montato per inserire le immagini dei contenitori. AL2023

1. Inserisci l'ultima versione del [repository git HyperPod CLI](https://github.com/aws/sagemaker-hyperpod-cli/tree/main).

1. Aggiorna le dipendenze con il comando seguente: `helm dependencies update helm_chart/HyperPodHelmChart`.

1. Come indicato nel passaggio 4 del [README di HyperPodHelmChart](https://github.com/aws/sagemaker-hyperpod-cli/tree/main/helm_chart#step-four-whenever-you-want-to-upgrade-the-installation-of-helm-charts), esegui il comando seguente per aggiornare la versione delle dipendenze in esecuzione sul cluster: `helm upgrade dependencies helm_chart/HyperPodHelmChart -namespace kube-system`

### Carichi di lavoro testati su cluster EKS aggiornati
<a name="sagemaker-hyperpod-release-ami-eks-20250731-tested"></a>

Di seguito sono riportati alcuni casi d’uso nei quali l’aggiornamento è stato testato:
+ **Compatibilità con le versioni precedenti**: i lavori di formazione distribuiti più diffusi che coinvolgono PyTorch dovrebbero essere retrocompatibili sulla nuova AMI. Tuttavia, poiché i carichi di lavoro possono dipendere da specifiche librerie Python o Linux, ti consigliamo di eseguire test su ambienti più piccoli o su un sottoinsieme di nodi prima di aggiornare i cluster più grandi.
+ **Test degli acceleratori**: sono stati testati lavori su vari tipi di istanze, utilizzando sia gli acceleratori NVIDIA (per le famiglie di istanze P e G) che gli acceleratori AWS Neuron (per le istanze Trn).

### Come aggiornare l’AMI e i carichi di lavoro associati
<a name="sagemaker-hyperpod-release-ami-eks-20250731-upgrade"></a>

Puoi eseguire l’aggiornamento alla nuova AMI utilizzando uno dei seguenti metodi:
+ Utilizza l’API [create-cluster](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCluster.html) per creare un nuovo cluster con l’AMI più recente.
+ Usa l'API per aggiornare il tuo cluster esistente. [update-cluster-software](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html) Tieni presente che questa opzione esegue nuovamente tutti gli script del ciclo di vita.

Il cluster non è disponibile durante il processo di aggiornamento. Consigliamo di pianificare questo tempo di inattività e di riavviare il carico di lavoro di addestramento da un checkpoint esistente una volta completato l’aggiornamento. Come best practice, ti suggeriamo di eseguire test su cluster più piccoli prima di aggiornare i cluster più grandi.

Se il comando update non riesce, devi identificare prima di tutto la causa dell’errore. In caso di errori degli script del ciclo di vita, apporta le correzioni necessarie agli script e riprova. Per altri problemi non risolvibili, contatta il [Supporto AWS](https://aws.amazon.com/premiumsupport/).

### Risoluzione dei problemi
<a name="sagemaker-hyperpod-release-ami-eks-20250731-troubleshooting"></a>

Utilizza la sezione seguente per aiutarti a risolvere eventuali problemi riscontrati durante l'aggiornamento a. AL2023

**Come posso correggere errori come `"nvml error: driver not loaded: unknown"` sui nodi del cluster che utilizzano solo la CPU?**

Se i contenitori che funzionavano sulla CPU dei nodi AL2 Amazon EKS ora falliscono AL2023, l'immagine del contenitore potrebbe avere variabili di ambiente NVIDIA codificate. Puoi verificare la presenza di variabili di ambiente con codifica fissa con il comando seguente:

```
docker inspect image:tag | grep -i nvidia
```

AL2023 applica rigorosamente questi requisiti, mentre AL2 era più indulgente sui nodi che utilizzano solo CPU. Una soluzione consiste nell'ignorare l' AL2023 applicazione impostando determinate variabili di ambiente NVIDIA nelle specifiche del pod Amazon EKS, come mostrato nell'esempio seguente:

```
yaml
containers:
- name: your-container
image: your-image:tag
env:
- name: NVIDIA_VISIBLE_DEVICES
value: "void"
- name: NVIDIA_DRIVER_CAPABILITIES
value: ""
```

In alternativa, si possono impiegare le immagini del container che utilizzano solo la CPU (ad esempio `pytorch/pytorch:latest-cpu`) oppure creare immagini personalizzate senza dipendenze NVIDIA.

## SageMaker HyperPod Versioni AMI per Amazon EKS: 15 luglio 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250715"></a>

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

 AMIs Includono i seguenti aggiornamenti:

------
#### [ K8s v1.28 ]
+ **Driver NVIDIA più recente:** 550.163.01
+ **CUDA predefinito:** 12.4
+ **Programma di installazione EFA:** 1.38.0
+ **Pacchetti Neuron:**
  + **aws-neuronx-dkms.noarch**: 2.22.2,0-dkms
  + **aws-neuronx-oci-hook.x86\$164:** 2.4.4.0-1
  + **aws-neuronx-tools.x86\$164:** 2,18.3,0-1
  + **aws-neuron-dkms.noarch: 2.3.26.0-dkms**
  + aws-neuron-k8 **plugin.x86\$164:** 1.9.3.0-1
  + **aws-neuron-k8-scheduler.x86\$164**: 1.9.3.0-1
  + **aws-neuron-runtime.x86\$164**: 1.6.24.0-1
  + **aws-neuron-runtime-base.x86\$164:** 1,6,21.0-1
  + **aws-neuron-tools.x86\$164:** 2.1.4.0-1
  + **aws-neuronx-collectives.x86\$164:2,26.43,0\$147cc904ea-1**
  + **aws-neuronx-gpsimd-customop.x86\$164:0,2,3,0-1**
  + **aws-neuronx-gpsimd-customop-lib.x86\$164:** 0,16,2,0-1
  + **aws-neuronx-gpsimd-tools.x86\$164:0,16,1,0\$10a6506a47-1**
  + aws-neuronx-k8 **plugin.x86\$164:2.26.26.0-1**
  + **aws-neuronx-k8-scheduler.x86\$164**: 2,26.26,0-1
  + **aws-neuronx-runtime-lib.x86\$164:2,26.42,0\$12ff3b5c7d-1**
  + **aws-neuronx-tools.x86\$164:** 2,24.54,0-1
  + **tensorflow-model-server-neuron.x86\$164:** 2.8.0.2.3.0.0-0
  + **tensorflow-model-server-neuronx.x86\$164:** 2,10,12.12.2.0-0

------
#### [ K8s v1.29 ]
+ **Driver NVIDIA versione:** 550.163.01
+ **Versione CUDA:** 12.4
+ **Programma di installazione EFA:** 1.38.0
+ **Pacchetti Neuron:**
  + **aws-neuronx-dkms.noarch: 2.22.2,0-kms**
  + **aws-neuronx-oci-hook.x86\$164:** 2.4.4.0-1
  + **aws-neuronx-tools.x86\$164:** 2,18.3,0-1
  + **aws-neuron-dkms.noarch: 2.3.26.0-dkms**
  + aws-neuron-k8 **plugin.x86\$164:** 1.9.3.0-1
  + **aws-neuron-k8-scheduler.x86\$164**: 1.9.3.0-1
  + **aws-neuron-runtime.x86\$164**: 1.6.24.0-1
  + **aws-neuron-runtime-base.x86\$164:** 1,6,21.0-1
  + **aws-neuron-tools.x86\$164:** 2.1.4.0-1
  + **aws-neuronx-collectives.x86\$164:2,26.43,0\$147cc904ea-1**
  + **aws-neuronx-gpsimd-customop.x86\$164:0,2,3,0-1**
  + **aws-neuronx-gpsimd-customop-lib.x86\$164:** 0,16,2,0-1
  + **aws-neuronx-gpsimd-tools.x86\$164:0,16,1,0\$10a6506a47-1**
  + aws-neuronx-k8 **plugin.x86\$164:2.26.26.0-1**
  + **aws-neuronx-k8-scheduler.x86\$164**: 2,26.26,0-1
  + **aws-neuronx-runtime-lib.x86\$164:2,26.42,0\$12ff3b5c7d-1**
  + **aws-neuronx-tools.x86\$164:** 2,24.54,0-1
  + **tensorflow-model-server-neuron.x86\$164:** 2.8.0.2.3.0.0-0
  + **tensorflow-model-server-neuronx.x86\$164:** 2,10,12.12.2.0-0

------
#### [ K8s v1.30 ]
+ **Driver NVIDIA versione:** 550.163.01
+ **Versione CUDA:** 12.4
+ **Versione del programma di installazione EFA:** 1.38.0
+ **Pacchetti Neuron:**
  + **aws-neuronx-dkms.noarch: 2.22.2,0-kms**
  + **aws-neuronx-oci-hook.x86\$164:** 2.4.4.0-1
  + **aws-neuronx-tools.x86\$164:** 2,18.3,0-1
  + **aws-neuron-dkms.noarch: 2.3.26.0-dkms**
  + aws-neuron-k8 **plugin.x86\$164:** 1.9.3.0-1
  + **aws-neuron-k8-scheduler.x86\$164**: 1.9.3.0-1
  + **aws-neuron-runtime.x86\$164**: 1.6.24.0-1
  + **aws-neuron-runtime-base.x86\$164:** 1,6,21.0-1
  + **aws-neuron-tools.x86\$164:** 2.1.4.0-1
  + **aws-neuronx-collectives.x86\$164:2,26.43,0\$147cc904ea-1**
  + **aws-neuronx-gpsimd-customop.x86\$164:0,2,3,0-1**
  + **aws-neuronx-gpsimd-customop-lib.x86\$164:** 0,16,2,0-1
  + **aws-neuronx-gpsimd-tools.x86\$164:0,16,1,0\$10a6506a47-1**
  + aws-neuronx-k8 **plugin.x86\$164:2.26.26.0-1**
  + **aws-neuronx-k8-scheduler.x86\$164**: 2,26.26,0-1
  + **aws-neuronx-runtime-lib.x86\$164:2,26.42,0\$12ff3b5c7d-1**
  + **aws-neuronx-tools.x86\$164:** 2,24.54,0-1
  + **tensorflow-model-server-neuron.x86\$164:** 2.8.0.2.3.0.0-0
  + **tensorflow-model-server-neuronx.x86\$164:** 2,10,12.12.2.0-0

------
#### [ K8s v1.31 ]
+ **Driver NVIDIA versione:** 550.163.01
+ **Versione CUDA:** 12.4
+ **Versione del programma di installazione EFA:** 1.38.0
+ **Pacchetti Neuron:**
  + **aws-neuronx-dkms.noarch: 2.22.2,0-kms**
  + **aws-neuronx-oci-hook.x86\$164:** 2.4.4.0-1
  + **aws-neuronx-tools.x86\$164:** 2,18.3,0-1
  + **aws-neuron-dkms.noarch: 2.3.26.0-dkms**
  + aws-neuron-k8 **plugin.x86\$164:** 1.9.3.0-1
  + **aws-neuron-k8-scheduler.x86\$164**: 1.9.3.0-1
  + **aws-neuron-runtime.x86\$164**: 1.6.24.0-1
  + **aws-neuron-runtime-base.x86\$164:** 1,6,21.0-1
  + **aws-neuron-tools.x86\$164:** 2.1.4.0-1
  + **aws-neuronx-collectives.x86\$164:2,26.43,0\$147cc904ea-1**
  + **aws-neuronx-gpsimd-customop.x86\$164:0,2,3,0-1**
  + **aws-neuronx-gpsimd-customop-lib.x86\$164:** 0,16,2,0-1
  + **aws-neuronx-gpsimd-tools.x86\$164:0,16,1,0\$10a6506a47-1**
  + aws-neuronx-k8 **plugin.x86\$164:2.26.26.0-1**
  + **aws-neuronx-k8-scheduler.x86\$164**: 2,26.26,0-1
  + **aws-neuronx-runtime-lib.x86\$164:2,26.42,0\$12ff3b5c7d-1**
  + **aws-neuronx-tools.x86\$164:** 2,24.54,0-1
  + **tensorflow-model-server-neuron.x86\$164:** 2.8.0.2.3.0.0-0
  + **tensorflow-model-server-neuronx.x86\$164:** 2,10,12.12.2.0-0

------
#### [ K8s v1.32 ]
+ **Driver NVIDIA versione:** 550.163.01
+ **Versione CUDA:** 12.4
+ **Versione del programma di installazione EFA:** 1.38.0
+ **Pacchetti Neuron:**
  + **aws-neuronx-dkms.noarch: 2.22.2,0-kms**
  + **aws-neuronx-oci-hook.x86\$164:** 2.4.4.0-1
  + **aws-neuronx-tools.x86\$164:** 2,18.3,0-1
  + **aws-neuron-dkms.noarch: 2.3.26.0-dkms**
  + aws-neuron-k8 **plugin.x86\$164:** 1.9.3.0-1
  + **aws-neuron-k8-scheduler.x86\$164**: 1.9.3.0-1
  + **aws-neuron-runtime.x86\$164**: 1.6.24.0-1
  + **aws-neuron-runtime-base.x86\$164:** 1,6,21.0-1
  + **aws-neuron-tools.x86\$164:** 2.1.4.0-1
  + **aws-neuronx-collectives.x86\$164:2,26.43,0\$147cc904ea-1**
  + **aws-neuronx-gpsimd-customop.x86\$164:0,2,3,0-1**
  + **aws-neuronx-gpsimd-customop-lib.x86\$164:** 0,16,2,0-1
  + **aws-neuronx-gpsimd-tools.x86\$164:0,16,1,0\$10a6506a47-1**
  + aws-neuronx-k8 **plugin.x86\$164:2.26.26.0-1**
  + **aws-neuronx-k8-scheduler.x86\$164**: 2,26.26,0-1
  + **aws-neuronx-runtime-lib.x86\$164:2,26.42,0\$12ff3b5c7d-1**
  + **aws-neuronx-tools.x86\$164:** 2,24.54,0-1
  + **tensorflow-model-server-neuron.x86\$164:** 2.8.0.2.3.0.0-0
  + **tensorflow-model-server-neuronx.x86\$164:** 2,10,12.12.2.0-0

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 9 giugno 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250609"></a>

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

------
#### [ Neuron SDK Updates ]
+ **aws-neuronx-dkms.noarch: 2.21.37.0 (dalla versione** 2.20.74.0)

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 22 maggio 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250522"></a>

**Aggiornamenti generali AMI**

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

------
#### [ Deep Learning Base AMI AL2 ]
+ **Driver NVIDIA più recente:** 550.163.01
+ **Aggiornamenti dello stack CUDA:**
  + **CUDA predefinito**: 12.1
  + **Versione NCCL**: 2.22.3
+ **Programma di installazione EFA:** 1.38.0
+ **AWS OFI NCCL**: 1.13.2
+ **Kernel Linux:** 5.10
+ **GDRCopy: 2,4**

**Importante**  
**Aggiornamento del Kit di strumenti per container NVIDIA 1.17.4:** il montaggio delle librerie compatibili CUDA è ora disabilitato
**Aggiornamenti EFA dalla versione 1.37 alla 1.38:**  
AWS Il plugin OFI NCCL ora si trova in/-nccl opt/amazon/ofi
La posizione precedente /opt//è obsoleta aws-ofi-nccl

------
#### [ Neuron SDK Updates ]
+ **aws-neuronx-dkms.noarch: 2.20.74.0 (dal 2.20.28.0**)
+ **aws-neuronx-collectives.x86\$164:2.25.65.0\$19858ac9a1-1** (da 2.24.59.0\$1838c7fc8b-1)
+ **aws-neuronx-runtime-lib.x86\$164:2.25.57.0\$1166c7a468-1** (da 2.24.53.0\$1f239092cc-1)
+ **aws-neuronx-tools.x86\$164:** 2.23.9.0 (da 2.22.61.0)
+ **aws-neuronx-gpsimd-customop-lib.x86\$164:** 0.15.12.0 (dalla 0.14.12.0)
+ **aws-neuronx-gpsimd-tools.x86\$164:0.15.1.0\$15d31b6a3f** (da 0.14.6.0\$1241eb69f4)
+ **aws-neuronx-k8-plugin.x86\$164:** 2.25.24.0 (dal 2.24.23.0)
+ **aws-neuronx-k8-scheduler.x86\$164:** 2.25.24.0 (dal 2.24.23.0)

**Note di supporto:**
+ I componenti AMI, incluse le versioni CUDA, possono essere rimossi o modificati in base alla policy di supporto del framework
+ La versione del kernel è bloccata tramite pinning per la compatibilità. Gli utenti devono evitare gli aggiornamenti a meno che non siano necessari per le patch di sicurezza
+ Per le istanze EC2 con più schede di rete, consulta la guida alla configurazione EFA per una procedere correttamente

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 7 maggio 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250507"></a>

------
#### [ Installed the latest version of AWS Neuron SDK ]
+ **tensorflow-model-server-neuron.x86\$164 2.8.0.2.3.0.0-0 neurone**

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 28 aprile 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250428"></a>

**Miglioramenti per K8s**
+ Driver NVIDIA aggiornato dalla versione 550.144.03 alla 550.163.01. Questo aggiornamento è destinato a risolvere le vulnerabilità e le esposizioni comuni (CVEs) presenti nel [NVIDIA GPU Display](https://nvidia.custhelp.com/app/answers/detail/a_id/5630) Security Bulletin di aprile 2025.

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

------
#### [ Installed the latest version of AWS Neuron SDK ]
+ **aws-neuronx-dkms.noarch: 2,20.28,0-dkms**
+ **aws-neuronx-oci-hook.x86\$164:** 2.4.4,0-1
+ **aws-neuronx-tools.x86\$164:** 2,18.3,0-1
+ **aws-neuron-dkms.noarch: 2.3.26.0-dkms**
+ aws-neuron-k8 **plugin.x86\$164:** 1.9.3.0-1
+ **aws-neuron-k8-scheduler.x86\$164**: 1.9.3.0-1
+ **aws-neuron-runtime.x86\$164**: 1.6.24.0-1
+ **aws-neuron-runtime-base.x86\$164:** 1,6,21.0-1
+ **aws-neuron-tools.x86\$164:** 2.1.4.0-1
+ **aws-neuronx-collectives.x86\$164:2,24.59,0\$1838c7fc8b-1**
+ **aws-neuronx-gpsimd-customop.x86\$164:0,2,3,0-1**
+ **aws-neuronx-gpsimd-customop-lib.x86\$164:** 0,14-12,0-1
+ **aws-neuronx-gpsimd-tools.x86\$164:0,14.6,0\$1241eb69f4-1**
+ aws-neuronx-k8 **plugin.x86\$164:2.24.23.0-1**
+ **aws-neuronx-k8-scheduler.x86\$164**: 2.24.23.0-1
+ **aws-neuronx-runtime-lib.x86\$164:2,24.53,0\$1f239092cc-1**
+ **aws-neuronx-tools.x86\$164:** 2.22.61.0-1
+ **tensorflow-model-server-neuronx.x86\$164:** 2,10,1,2,2,0-0

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 18 aprile 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250418"></a>

**Aggiornamenti generali AMI**
+ Nuova SageMaker HyperPod AMI per Amazon EKS 1.32.1.

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

 AMIs Includono quanto segue:

------
#### [ Deep Learning EKS AMI 1.32.1 ]
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.32.1
  + Versione Containerd: 1.7.27
  + Versione Runc: 1.1.14
  + AWS Autenticatore IAM: 0.6.29
+ **Agente Amazon SSM:** 3.3.1611.0 
+ **Kernel Linux:** 5.10.235
+ **Driver OSS Nvidia:** 550.163.01
+ **NVIDIA CUDA:** 12.4
+ **Programma di installazione EFA:** 1.38.0
+ **GDRCopy:** 2.4.1-1
+ **Kit di strumenti per container Nvidia:** 1.17.6
+ **AWS OFI** NCCL: 1.13.2
+ **aws-neuronx-tools: 2.18.3,0**
+ **aws-neuronx-runtime-lib: 2,24,53,0**
+ **aws-neuronx-oci-hook:** 2,4,4,0-1
+ **aws-neuronx-dkms:** 2,20,28,0
+ **aws-neuronx-collectives:** 2,2459,0

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 18 febbraio 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250218"></a>

**Miglioramenti per K8s**
+ Kit di strumenti per container Nvidia aggiornato dalla versione 1.17.3 alla versione 1.17.4.
+ È stato risolto il problema che impediva ai clienti di connettersi ai nodi dopo il riavvio.
+ Versione Elastic Fabric Adapter (EFA) aggiornata dalla 1.37.0 alla 1.38.0.
+ L'EFA ora include il plug-in AWS OFI NCCL, che si trova nella `/opt/amazon/ofi-nccl` directory anziché nel percorso originale. `/opt/aws-ofi-nccl/` Se devi aggiornare la variabile di ambiente `LD_LIBRARY_PATH`, assicurati di modificare il percorso in modo che punti alla nuova posizione `/opt/amazon/ofi-nccl` del plugin OFI NCCL.
+ Da questi file è stato rimosso il pacchetto emacs. DLAMIs Puoi installare emacs da GNU emac.

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

------
#### [ Installed the latest version of neuron SDK ]
+ **aws-neuronx-dkms.noarch**: 2.19.64,0-dkms @neuron
+ **aws-neuronx-oci-hook.x86\$164:** 2.4.4,0-1 @neuron
+ **aws-neuronx-tools.x86\$164:** 2,18,0-1 @neuron
+ **aws-neuronx-collectives.x86\$164:2.23.135.0\$13e70920f2-1** neurone
+ **aws-neuronx-gpsimd-customop.x86\$164:0.2.3.0-1** neurone
+ **aws-neuronx-gpsimd-customop-lib.x86\$164**
+ **aws-neuronx-gpsimd-tools.x86\$164:0.13.2.0\$194ba34927-1** neurone
+ **aws-neuronx-k8-plugin.x86\$164:2.23.45.0-1** neurone
+ **aws-neuronx-k8-scheduler.x86\$164:** 2.23.45.0-1 neurone
+ **aws-neuronx-runtime-lib.x86\$164:2.23.112.0\$19b5179492-1** neurone
+ **aws-neuronx-tools.x86\$164:** 2.20.204.0-1 neurone
+ **tensorflow-model-server-neuronx.x86\$164**

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 22 gennaio 2025
<a name="sagemaker-hyperpod-release-ami-eks-20250122"></a>

**Aggiornamenti generali AMI**
+ Nuova SageMaker HyperPod AMI per Amazon EKS 1.31.2.

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

 AMIs Includono quanto segue:

------
#### [ Deep Learning EKS AMI 1.31 ]
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.31.2
  + Versione Containerd: 1.7.23
  + Versione Runc: 1.1.14
  + AWS Autenticatore IAM: 0.6.26
+ **Agente Amazon SSM:** 3.3.987
+ **Kernel Linux:** 5.10.230
+ **Driver OSS Nvidia:** 550.127.05
+ **NVIDIA CUDA:** 12.4
+ **Programma di installazione EFA**: 1.37.0
+ **GDRCopy:** 2.4.1-1
+ **Kit di strumenti per container Nvidia:** 1.17.3
+ **AWS OFI** NCCL: 1.13.0
+ **aws-neuronx-tools: 2.18.3**
+ **aws-neuronx-runtime-lib: 2,23,112,0**
+ **aws-neuronx-oci-hook:** 2,4,4,0-1
+ **aws-neuronx-dkms:** 2,18.20,0
+ **aws-neuronx-collectives:** 2,23.133,0

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 21 dicembre 2024
<a name="sagemaker-hyperpod-release-ami-eks-20241221"></a>

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

 AMIs Includono quanto segue:

------
#### [ K8s v1.28 ]
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.28.15
  + Versione Containerd: 1.7.23
  + Versione Runc: 1.1.14
  + AWS Autenticatore IAM: 0.6.26
+ **Agente Amazon SSM:** 3.3.987
+ **Kernel Linux:** 5.10.228
+ **Driver OSS NVIDIA:** 550.127.05
+ **NVIDIA CUDA:** 12.4
+ **Programma di installazione EFA**: 1.37.0
+ **GDRCopy: 2.4**
+ **Kit di strumenti per container NVIDIA:** 1.17.3
+ **AWS OFI NCCL**: 1.13.0
+ aws-neuronx-tools: **2,18,3,0-1**
+ **aws-neuronx-runtime-lib:** 2,23,112,0
+ **aws-neuronx-oci-hook:** 2,4,4,0-1
+ **aws-neuronx-dkms:** 2,18.20,0
+ **aws-neuronx-collectives:** 2,23,135,0

------
#### [ K8s v1.29 ]
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.29.10
  + Versione Containerd: 1.7.23
  + Versione Runc: 1.1.14
  + AWS Autenticatore IAM: 0.6.26
+ **Agente Amazon SSM:** 3.3.987
+ **Kernel Linux:** 5.15.0
+ **Driver OSS Nvidia:** 550.127.05
+ **NVIDIA CUDA:** 12.4
+ **Programma di installazione EFA**: 1.37.0
+ **GDRCopy: 2.4**
+ **Kit di strumenti per container Nvidia:** 1.17.3
+ **AWS OFI NCCL**: 1.13.0
+ aws-neuronx-tools: **2,18,3,0-1**
+ **aws-neuronx-runtime-lib:** 2,23,112,0
+ **aws-neuronx-oci-hook:** 2,4,4,0-1
+ **aws-neuronx-dkms:** 2,18.20,0
+ **aws-neuronx-collectives:** 2,23,135,0

------
#### [ K8s v1.30 ]
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.30.6
  + Versione Containerd: 1.7.23
  + Versione Runc: 1.1.14
  + AWS Autenticatore IAM: 0.6.26
+ **Agente Amazon SSM:** 3.3.987.0
+ **Kernel Linux:** 5.10.228
+ **Driver OSS Nvidia:** 550.127.05
+ **NVIDIA CUDA:** 12.4
+ **Programma di installazione EFA**: 1.37.0
+ **GDRCopy: 2.4**
+ **Kit di strumenti per container Nvidia:** 1.17.3
+ **AWS OFI NCCL**: 1.13.0
+ aws-neuronx-tools: **2,18,3,0-1**
+ **aws-neuronx-runtime-lib:** 2,23,112,0
+ **aws-neuronx-oci-hook:** 2,4,4,0-1
+ **aws-neuronx-dkms:** 2,18.20,0
+ **aws-neuronx-collectives:** 2,23,135,0

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 13 dicembre 2024
<a name="sagemaker-hyperpod-release-ami-eks-20241213"></a>

**SageMaker HyperPod Aggiornamento DLAMI per Amazon EKS**
+ Agente SSM aggiornato alla versione `3.3.1311.0`.

## SageMaker HyperPod Versioni AMI per Amazon EKS: 24 novembre 2024
<a name="sagemaker-hyperpod-release-ami-eks-20241124"></a>

**Aggiornamenti generali AMI**
+ Rilasciata nella Regione `MEL` (Melbourne).
+ DLAMI di SageMaker HyperPod base aggiornato alle seguenti versioni:
  + Kubernetes: 01/11/2024.

## SageMaker HyperPod Versioni AMI per Amazon EKS: 15 novembre 2024
<a name="sagemaker-hyperpod-release-ami-eks-20241115"></a>

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

 AMIs Includono quanto segue:

------
#### [ Deep Learning EKS AMI 1.28 ]
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.28.15
  + Versione Containerd: 1.7.23
  + Versione Runc: 1.1.14
  + AWS Autenticatore IAM: 0.6.26
+ **Agente Amazon SSM:** 3.3.987
+ **Kernel Linux:** 5.10.228
+ **Driver OSS NVIDIA:** 550.127.05
+ **NVIDIA CUDA:** 12.4
+ **Programma di installazione EFA**: 1.34.0
+ **GDRCopy: 2.4**
+ **Kit di strumenti per container NVIDIA:** 1.17.3
+ **AWS OFI NCCL**: 1.11.0
+ aws-neuronx-tools: **2,18,3,0-1**
+ **aws-neuronx-runtime-lib:** 2,2,19,0
+ **aws-neuronx-oci-hook:** 2,4,4,0-1
+ **aws-neuronx-dkms:** 2,18.20,0
+ **aws-neuronx-collectives:** 2.22.33.0

------
#### [ Deep Learning EKS AMI 1.29 ]
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.29.10
  + Versione Containerd: 1.7.23
  + Versione Runc: 1.1.14
  + AWS Autenticatore IAM: 0.6.26
+ **Agente Amazon SSM:** 3.3.987
+ **Kernel Linux:** 5.10.228
+ **Driver OSS Nvidia:** 550.127.05
+ **NVIDIA CUDA:** 12.4
+ **Programma di installazione EFA**: 1.34.0
+ **GDRCopy: 2.4**
+ **Kit di strumenti per container Nvidia:** 1.17.3
+ **AWS OFI NCCL**: 1.11.0
+ aws-neuronx-tools: **2,18,3,0-1**
+ **aws-neuronx-runtime-lib:** 2,2,19,0
+ **aws-neuronx-oci-hook:** 2,4,4,0-1
+ **aws-neuronx-dkms:** 2,18.20,0
+ **aws-neuronx-collectives:** 2.22.33.0

------
#### [ Deep Learning EKS AMI 1.30 ]
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.30.6
  + Versione Containerd: 1.7.23
  + Versione Runc: 1.1.14
  + AWS Autenticatore IAM: 0.6.26
+ **Agente Amazon SSM:** 3.3.987
+ **Kernel Linux:** 5.10.228
+ **Driver OSS Nvidia:** 550.127.05
+ **NVIDIA CUDA:** 12.4
+ **Programma di installazione EFA**: 1.34.0
+ **GDRCopy: 2.4**
+ **Kit di strumenti per container Nvidia:** 1.17.3
+ **AWS OFI NCCL**: 1.11.0
+ aws-neuronx-tools: **2,18,3,0-1**
+ **aws-neuronx-runtime-lib:** 2,2,19,0
+ **aws-neuronx-oci-hook:** 2,4,4,0-1
+ **aws-neuronx-dkms:** 2,18.20,0
+ **aws-neuronx-collectives:** 2.22.33.0

------

## SageMaker HyperPod Versioni AMI per Amazon EKS: 11 novembre 2024
<a name="sagemaker-hyperpod-release-ami-eks-20241111"></a>

**Aggiornamenti generali AMI**
+  SageMaker HyperPod DLAMI aggiornato con le versioni di Amazon EKS 1.28.13, 1.29.8, 1.30.4.

## SageMaker HyperPod Versioni AMI per Amazon EKS: 21 ottobre 2024
<a name="sagemaker-hyperpod-release-ami-eks-20241021"></a>

**Aggiornamenti generali AMI**
+ DLAMI di SageMaker HyperPod base aggiornato alle seguenti versioni:
  + Amazon EKS: 1.28.11, 1.29.6, 1.30.2.

## SageMaker HyperPod Versioni AMI per Amazon EKS: 10 settembre 2024
<a name="sagemaker-hyperpod-release-ami-eks-20240910"></a>

**SageMaker HyperPod Supporto DLAMI per Amazon EKS**

 AMIs Includono quanto segue:

------
#### [ Deep Learning EKS AMI 1.28 ]
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.28.11
  + Versione Containerd: 1.7.20
  + Versione Runc: 1.1.11
  + AWS Autenticatore IAM: 0.6.21
+ **Agente Amazon SSM:** 3.3.380
+ **Kernel Linux:** 5.10.223
+ **Driver OSS NVIDIA:** 535.183.01
+ **NVIDIA CUDA:** 12.2
+ **Programma di installazione EFA:** 1.32.0
+ **GDRCopy: 2.4**
+ **Kit di strumenti per container NVIDIA:** 1.16.1
+ **AWS OFI NCCL**: 1.9.1
+ aws-neuronx-tools: **2,18,3,0-1**
+ **aws-neuronx-runtime-lib:** 2,21,41,0
+ **aws-neuronx-oci-hook:** 2,4,4,0-1
+ **aws-neuronx-dkms:** 217.17,0
+ **aws-neuronx-collectives:** 2,21,46,0

------
#### [ Deep Learning EKS AMI 1.29 ]
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.29.6
  + Versione Containerd: 1.7.20
  + Versione Runc: 1.1.11
  + AWS Autenticatore IAM: 0.6.21
+ **Agente Amazon SSM:** 3.3.380
+ **Kernel Linux:** 5.10.223
+ **Driver OSS Nvidia:** 535.183.01
+ **NVIDIA CUDA:** 12.2
+ **Programma di installazione EFA:** 1.32.0
+ **GDRCopy: 2.4**
+ **Kit di strumenti per container Nvidia:** 1.16.1
+ **AWS OFI NCCL**: 1.9.1
+ aws-neuronx-tools: **2,18,3,0-1**
+ **aws-neuronx-runtime-lib:** 2,21,41,0
+ **aws-neuronx-oci-hook:** 2,4,4,0-1
+ **aws-neuronx-dkms:** 217.17,0
+ **aws-neuronx-collectives:** 2,214,0

------
#### [ Deep Learning EKS AMI 1.30 ]
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.30.2
  + Versione Containerd: 1.7.20
  + Versione Runc: 1.1.11
  + AWS Autenticatore IAM: 0.6.21
+ **Agente Amazon SSM:** 3.3.380
+ **Kernel Linux:** 5.10.223
+ **Driver OSS Nvidia:** 535.183.01
+ **NVIDIA CUDA:** 12.2
+ **Programma di installazione EFA:** 1.32.0
+ **GDRCopy: 2.4**
+ **Kit di strumenti per container Nvidia:** 1.16.1
+ **AWS OFI NCCL**: 1.9.1
+ aws-neuronx-tools: **2,18,3,0-1**
+ **aws-neuronx-runtime-lib:** 2,21,41,0
+ **aws-neuronx-oci-hook:** 2,4,4,0-1
+ **aws-neuronx-dkms:** 217.17,0
+ **aws-neuronx-collectives:** 2,214,0

------

# Rilasci di AMI pubbliche
<a name="sagemaker-hyperpod-release-public-ami"></a>

Le seguenti note di rilascio tengono traccia degli ultimi aggiornamenti per le versioni SageMaker HyperPod pubbliche delle AMI di Amazon per l'orchestrazione di Amazon EKS. Ogni nota di versione include un elenco riepilogativo dei pacchetti preinstallati o preconfigurati nel supporto per SageMaker HyperPod DLAMIs Amazon EKS. Ogni DLAMI è basato AL2023 e supporta una versione specifica di Kubernetes. Per informazioni sulle versioni di SageMaker HyperPod funzionalità di Amazon, consulta[Note di SageMaker HyperPod rilascio di Amazon](sagemaker-hyperpod-release-notes.md).

Questa pagina viene aggiornata regolarmente per fornire informazioni complete sulla gestione del ciclo di vita delle AMI, tra cui vulnerabilità di sicurezza, annunci di obsolescenza e suggerimenti sulle patch. Come parte dell'impegno a mantenere l' up-to-dateinfrastruttura sicura, l' SageMaker intelligenza artificiale monitora continuamente tutto il HyperPod pubblico alla AMIs ricerca di vulnerabilità critiche utilizzando flussi di lavoro di scansione automatizzati. Quando vengono identificati problemi di sicurezza critici, AMIs vengono sistematicamente eliminati con adeguate linee guida sulla migrazione. Gli aggiornamenti regolari includono lo stato di correzione delle vulnerabilità e delle esposizioni comuni (CVE), i risultati di conformità e le azioni consigliate per garantire la sicurezza HyperPod degli ambienti riducendo al minimo le interruzioni operative durante le transizioni AMI.

## SageMaker HyperPod rilasci pubblici dell'AMI: 4 agosto 2025
<a name="sagemaker-hyperpod-release-public-ami-2025-08-04"></a>

Amazon SageMaker HyperPod ora supporta il nuovo pubblico AMIs per i cluster Amazon EKS. AMIs Includono quanto segue:

------
#### [ K8s v1.32 ]

Nome AMI: AMI HyperPod EKS 1.32 x86\$164 Amazon Linux 2 2025080407
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.32.3
  + Versione Containerd: 1.7.23
  + Versione Runc: 1.2.6
  + AWS Autenticatore IAM: 0.6.29
+ **Agente Amazon SSM:** 3.3.2299.0
+ **Kernel Linux:** 5.10.238-234.956.amzn2.x86\$164
+ **Driver OSS NVIDIA:** 550.163.01
+ **NVIDIA CUDA:** 12.2
+ **Programma di installazione EFA:** 1.38.0
+ **GDRCopy: 2.4.1**
+ **Kit di strumenti per container NVIDIA:** 1.17.8
+ **AWS OFI NCCL**: 1.13.0-aws
+ **Pacchetti Neuron:**
  + **aws-neuronx-dkms.noarch: 2.22.2,0-kms**
  + **aws-neuronx-oci-hook.x86\$164:** 2.4.4.0-1
  + **aws-neuronx-tools.x86\$164:** 2,18.3,0-1
  + **aws-neuron-dkms.noarch: 2.3.26.0-dkms**
  + aws-neuron-k8 **plugin.x86\$164:** 1.9.3.0-1
  + **aws-neuron-k8-scheduler.x86\$164**: 1.9.3.0-1
  + **aws-neuron-runtime.x86\$164**: 1.6.24.0-1
  + **aws-neuron-runtime-base.x86\$164:** 1,6,21.0-1
  + **aws-neuron-tools.x86\$164:** 2.1.4.0-1
  + **aws-neuronx-collectives.x86\$164:2,27.34,0\$1ec8cd5e8b-1**
  + **aws-neuronx-gpsimd-customop.x86\$164:0,2,3,0-1**
  + **aws-neuronx-gpsimd-customop-lib.x86\$164:0,17,0-1**
  + **aws-neuronx-gpsimd-tools.x86\$164:0,170,0\$1aacc27699-1**
  + aws-neuronx-k8 **plugin.x86\$164:2.27.7.0-1**
  + **aws-neuronx-k8-scheduler.x86\$164**: 2,27.7,0-1
  + **aws-neuronx-runtime-lib.x86\$164:2.27.23.0\$18deec4dbf-1**
  + **aws-neuronx-tools.x86\$164:** 2,25,145,0-1
  + **tensorflow-model-server-neuron.x86\$164:** 2.8.0.2.3.0.0-0
  + **tensorflow-model-server-neuronx.x86\$164:** 2,10,12.12.2.0-0

------
#### [ K8s v1.30 ]

Nome AMI: HyperPod EKS 1.30 x86\$164 AMI Amazon Linux 2 2025080407
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.30.11
  + Versione Containerd: 1.7.\$1
  + Versione Runc: 1.2.6
  + AWS Autenticatore IAM: 0.6.28
+ **Agente Amazon SSM:** 3.3.2299.0
+ **Kernel Linux:** 5.10.238-234.956.amzn2.x86\$164
+ **Driver OSS NVIDIA:** 550.163.01
+ **NVIDIA CUDA:** 12.2
+ **Programma di installazione EFA:** 1.38.0
+ **GDRCopy: 2.4.1**
+ **Kit di strumenti per container NVIDIA:** 1.17.8
+ **AWS OFI NCCL**: 1.13.0-aws
+ **Pacchetti Neuron:**
  + **aws-neuronx-dkms.noarch: 2.22.2,0-kms**
  + **aws-neuronx-oci-hook.x86\$164:** 2.4.4.0-1
  + **aws-neuronx-tools.x86\$164:** 2,18.3,0-1
  + **aws-neuron-dkms.noarch: 2.3.26.0-dkms**
  + aws-neuron-k8 **plugin.x86\$164:** 1.9.3.0-1
  + **aws-neuron-k8-scheduler.x86\$164**: 1.9.3.0-1
  + **aws-neuron-runtime.x86\$164**: 1.6.24.0-1
  + **aws-neuron-runtime-base.x86\$164:** 1,6,21.0-1
  + **aws-neuron-tools.x86\$164:** 2.1.4.0-1
  + **aws-neuronx-collectives.x86\$164:2,27.34,0\$1ec8cd5e8b-1**
  + **aws-neuronx-gpsimd-customop.x86\$164:0,2,3,0-1**
  + **aws-neuronx-gpsimd-customop-lib.x86\$164:0,17,0-1**
  + **aws-neuronx-gpsimd-tools.x86\$164:0,170,0\$1aacc27699-1**
  + aws-neuronx-k8 **plugin.x86\$164:2.27.7.0-1**
  + **aws-neuronx-k8-scheduler.x86\$164**: 2,27.7,0-1
  + **aws-neuronx-runtime-lib.x86\$164:2.27.23.0\$18deec4dbf-1**
  + **aws-neuronx-tools.x86\$164:** 2,25,145,0-1
  + **tensorflow-model-server-neuron.x86\$164:** 2.8.0.2.3.0.0-0
  + **tensorflow-model-server-neuronx.x86\$164:** 2,10,12.12.2.0-0

------
#### [ K8s v1.31 ]

Nome AMI: AMI HyperPod EKS 1.31 x86\$164 Amazon Linux 2 2025080407
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.31.7
  + Versione Containerd: 1.7.\$1
  + Versione Runc: 1.2.6
  + AWS Autenticatore IAM: 0.6.28
+ **Agente Amazon SSM:** 3.3.2299.0
+ **Kernel Linux:** 5.10.238-234.956.amzn2.x86\$164
+ **Driver OSS NVIDIA:** 550.163.01
+ **NVIDIA CUDA:** 12.2
+ **Programma di installazione EFA:** 1.38.0
+ **GDRCopy: 2.4.1**
+ **Kit di strumenti per container NVIDIA:** 1.17.8
+ **AWS OFI NCCL**: 1.13.0-aws
+ **Pacchetti Neuron:**
  + **aws-neuronx-dkms.noarch: 2.22.2,0-kms**
  + **aws-neuronx-oci-hook.x86\$164:** 2.4.4.0-1
  + **aws-neuronx-tools.x86\$164:** 2,18.3,0-1
  + **aws-neuron-dkms.noarch: 2.3.26.0-dkms**
  + aws-neuron-k8 **plugin.x86\$164:** 1.9.3.0-1
  + **aws-neuron-k8-scheduler.x86\$164**: 1.9.3.0-1
  + **aws-neuron-runtime.x86\$164**: 1.6.24.0-1
  + **aws-neuron-runtime-base.x86\$164:** 1,6,21.0-1
  + **aws-neuron-tools.x86\$164:** 2.1.4.0-1
  + **aws-neuronx-collectives.x86\$164:2,27.34,0\$1ec8cd5e8b-1**
  + **aws-neuronx-gpsimd-customop.x86\$164:0,2,3,0-1**
  + **aws-neuronx-gpsimd-customop-lib.x86\$164:0,17,0-1**
  + **aws-neuronx-gpsimd-tools.x86\$164:0,170,0\$1aacc27699-1**
  + aws-neuronx-k8 **plugin.x86\$164:2.27.7.0-1**
  + **aws-neuronx-k8-scheduler.x86\$164**: 2,27.7,0-1
  + **aws-neuronx-runtime-lib.x86\$164:2.27.23.0\$18deec4dbf-1**
  + **aws-neuronx-tools.x86\$164:** 2,25,145,0-1
  + **tensorflow-model-server-neuron.x86\$164:** 2.8.0.2.3.0.0-0
  + **tensorflow-model-server-neuronx.x86\$164:** 2,10,12.12.2.0-0

------
#### [ K8s v1.29 ]

Nome AMI: AMI HyperPod EKS 1.29 x86\$164 Amazon Linux 2 2025080407
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.29.15
  + Versione Containerd: 1.7.\$1
  + Versione Runc: 1.2.6
  + AWS Autenticatore IAM: 0.6.28
+ **Agente Amazon SSM:** 3.3.2299.0
+ **Kernel Linux:** 5.10.238-234.956.amzn2.x86\$164
+ **Driver OSS NVIDIA:** 550.163.01
+ **NVIDIA CUDA:** 12.2
+ **Programma di installazione EFA:** 1.38.0
+ **GDRCopy: 2.4.1**
+ **Kit di strumenti per container NVIDIA:** 1.17.8
+ **AWS OFI NCCL**: 1.13.0-aws
+ **Pacchetti Neuron:**
  + **aws-neuronx-dkms.noarch: 2.22.2,0-kms**
  + **aws-neuronx-oci-hook.x86\$164:** 2.4.4.0-1
  + **aws-neuronx-tools.x86\$164:** 2,18.3,0-1
  + **aws-neuron-dkms.noarch: 2.3.26.0-dkms**
  + aws-neuron-k8 **plugin.x86\$164:** 1.9.3.0-1
  + **aws-neuron-k8-scheduler.x86\$164**: 1.9.3.0-1
  + **aws-neuron-runtime.x86\$164**: 1.6.24.0-1
  + **aws-neuron-runtime-base.x86\$164:** 1,6,21.0-1
  + **aws-neuron-tools.x86\$164:** 2.1.4.0-1
  + **aws-neuronx-collectives.x86\$164:2,27.34,0\$1ec8cd5e8b-1**
  + **aws-neuronx-gpsimd-customop.x86\$164:0,2,3,0-1**
  + **aws-neuronx-gpsimd-customop-lib.x86\$164:0,17,0-1**
  + **aws-neuronx-gpsimd-tools.x86\$164:0,170,0\$1aacc27699-1**
  + aws-neuronx-k8 **plugin.x86\$164:2.27.7.0-1**
  + **aws-neuronx-k8-scheduler.x86\$164**: 2,27.7,0-1
  + **aws-neuronx-runtime-lib.x86\$164:2.27.23.0\$18deec4dbf-1**
  + **aws-neuronx-tools.x86\$164:** 2,25,145,0-1
  + **tensorflow-model-server-neuron.x86\$164:** 2.8.0.2.3.0.0-0
  + **tensorflow-model-server-neuronx.x86\$164:** 2,10,12.12.2.0-0

------
#### [ K8s v1.28 ]

Nome AMI: AMI HyperPod EKS 1.28 x86\$164 Amazon Linux 2 2025080407
+ **Componenti Amazon EKS**
  + Versione Kubernetes: 1.28.15
  + Versione Containerd: 1.7.\$1
  + Versione Runc: 1.2.6
  + AWS Autenticatore IAM: 0.6.28
+ **Agente Amazon SSM:** 3.3.2299.0
+ **Kernel Linux:** 5.10.238-234.956.amzn2.x86\$164
+ **Driver OSS NVIDIA:** 550.163.01
+ **NVIDIA CUDA:** 12.2
+ **Programma di installazione EFA:** 1.38.0
+ **GDRCopy: 2.4.1**
+ **Kit di strumenti per container NVIDIA:** 1.17.8
+ **AWS OFI NCCL**: 1.13.0-aws
+ **Pacchetti Neuron:**
  + **aws-neuronx-dkms.noarch: 2.22.2,0-kms**
  + **aws-neuronx-oci-hook.x86\$164:** 2.4.4.0-1
  + **aws-neuronx-tools.x86\$164:** 2,18.3,0-1
  + **aws-neuron-dkms.noarch: 2.3.26.0-dkms**
  + aws-neuron-k8 **plugin.x86\$164:** 1.9.3.0-1
  + **aws-neuron-k8-scheduler.x86\$164**: 1.9.3.0-1
  + **aws-neuron-runtime.x86\$164**: 1.6.24.0-1
  + **aws-neuron-runtime-base.x86\$164:** 1,6,21.0-1
  + **aws-neuron-tools.x86\$164:** 2.1.4.0-1
  + **aws-neuronx-collectives.x86\$164:2,27.34,0\$1ec8cd5e8b-1**
  + **aws-neuronx-gpsimd-customop.x86\$164:0,2,3,0-1**
  + **aws-neuronx-gpsimd-customop-lib.x86\$164:0,17,0-1**
  + **aws-neuronx-gpsimd-tools.x86\$164:0,170,0\$1aacc27699-1**
  + aws-neuronx-k8 **plugin.x86\$164:2.27.7.0-1**
  + **aws-neuronx-k8-scheduler.x86\$164**: 2,27.7,0-1
  + **aws-neuronx-runtime-lib.x86\$164:2.27.23.0\$18deec4dbf-1**
  + **aws-neuronx-tools.x86\$164:** 2,25,145,0-1
  + **tensorflow-model-server-neuron.x86\$164:** 2.8.0.2.3.0.0-0
  + **tensorflow-model-server-neuronx.x86\$164:** 2,10,12.12.2.0-0

------