View a markdown version of this page

Gestisci l'elaborazione per i AI/ML carichi di lavoro su Amazon EKS con gruppi di nodi - Amazon EKS

Contribuisci a migliorare questa pagina

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

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

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

Gestisci l'elaborazione per i AI/ML carichi di lavoro su Amazon EKS con gruppi di nodi

Suggerimento

Registrati ai prossimi AI/ML workshop Amazon EKS.

Questa sezione spiega come gestire l'elaborazione accelerata (AWS Trainium, GPU NVIDIA) per i carichi di lavoro di addestramento e inferenza AI utilizzando gruppi di nodi gestiti Amazon EKS o nodi autogestiti.

I gruppi di nodi gestiti da EKS e i nodi autogestiti utilizzano EC2 Auto Scaling Groups (ASG). I gruppi di nodi gestiti EKS dispongono di API EKS dedicate per la creazione, l'aggiornamento e l'eliminazione dei nodi e dispongono anche di funzionalità di riparazione dei nodi e hook di terminazione del ciclo di vita integrati. I nodi autogestiti EKS vengono distribuiti e gestiti direttamente tramite le API EC2.

Con queste opzioni, puoi definire in anticipo il tipo di istanza, il conteggio desiderato, i limiti di scalabilità e il modello di lancio di EC2. Prendi in considerazione l'utilizzo di gruppi di nodi gestiti EKS o nodi autogestiti se disponi anche di carichi di lavoro non EKS e preferisci la coerenza della configurazione attraverso i modelli di lancio di EC2. I gruppi di nodi EKS sono ideali per la formazione e l'ottimizzazione di carichi di lavoro in cui l'impronta di elaborazione accelerata è nota in anticipo. Nota, sia EKS Auto Mode che Karpenter supportano anche il provisioning statico della capacità, vedi per ulteriori informazioni. Gestisci l'elaborazione per i AI/ML carichi di lavoro con EKS Auto Mode e Karpenter

I gruppi di nodi gestiti EKS e i nodi autogestiti supportano tutte le opzioni di acquisto di elaborazione accelerata (SpotOn-Demand, Capacity Reservations, On-Demand Capacity Blocks for ML). È possibile creare un gruppo di nodi gestito o autogestito separato per tipo di capacità, ciascuno con il proprio modello di lancio, tipi di istanza e configurazione di scalabilità. In questo modo è possibile ASG-backed controllare in modo esplicito ogni pool di capacità senza una logica di provisioning dinamica eterogenea.

Gruppi di nodi gestiti da EKS e nodi autogestiti

La scelta tra gruppi di nodi gestiti EKS e nodi autogestiti dipende dal livello di personalizzazione e controllo richiesto. I gruppi di nodi gestiti EKS consentono la personalizzazione di un sottoinsieme del modello di lancio EC2, mentre i nodi autogestiti supportano l'intera gamma del modello di lancio EC2. Se non hai un motivo specifico per personalizzare e gestire autonomamente il ciclo di vita dei nodi, inizia con i gruppi di nodi gestiti da EKS e passa ai nodi autogestiti solo quando un requisito specifico lo impone.

Utilizza i gruppi di nodi gestiti quando: desideri che EKS gestisca la selezione degli AMI, il bootstrap dei nodi, gli aggiornamenti continui, la riparazione dei nodi e i flussi di lavoro Graceful Drain per tuo conto. I gruppi di nodi gestiti EKS sono il punto di partenza consigliato se non preferite utilizzare EKS Auto Mode o Karpenter per carichi di lavoro di addestramento e inferenza. Quando si utilizza Capacity Blocks for ML, i gruppi di nodi gestiti da EKS creano automaticamente una politica di scalabilità pianificata che prosciuga il gruppo di nodi 40 minuti prima del termine della prenotazione, eliminando la necessità di utilizzare il AWS Node Termination Handler o la propria automazione scale-down. Utilizza i gruppi di nodi gestiti EKS quando utilizzi un' EKS-optimized AMI supportata, quando non hai bisogno di personalizzazioni approfondite dei modelli di avvio EC2 a livello di kernel e quando desideri un percorso di aggiornamento dei nodi più semplice per le versioni di Kubernetes.

Utilizza i gruppi di nodi autogestiti quando: hai bisogno del pieno controllo sul modello di lancio EC2, sull'AMI, sui parametri del kernel, sulla configurazione di runtime del contenitore o sugli script di bootstrap personalizzati. Gli scenari ML più comuni includono l'ottimizzazione delle impostazioni del kernel e della NIC per l'addestramento distribuito con Elastic Fabric Adapter (EFA) o l'integrazione con un controller del ciclo di vita dei nodi personalizzato. Self-managed i nodi ti offrono la flessibilità necessaria per fornire tutti i dati utente e il profilo di istanza IAM di cui hai bisogno, ma ti assumi la responsabilità degli aggiornamenti, delle politiche di scalabilità pianificate e degli hook del ciclo di vita come il Node Termination Handler.AWS

Prenota GPU con blocchi di capacità per ML

I Capacity Blocks for Machine Learning (ML) consentono di riservare istanze GPU in date future per carichi di lavoro di formazione o inferenza con limiti di tempo. Per ulteriori informazioni, consulta Capacity Blocks for ML nella Guida per l'utente di Amazon EC2.

Puoi utilizzare le prenotazioni di Capacity Block tramite gruppi di nodi gestiti EKS e nodi autogestiti. La configurazione del modello di lancio EC2 è la stessa in entrambi i casi. Il flusso di lavoro per la creazione dei nodi, il comportamento di ridimensionamento e gli hook del ciclo di vita per la terminazione del carico di lavoro differiscono tra le opzioni di provisioning.

Considerazioni

  • I blocchi di capacità sono disponibili solo per determinati tipi di istanze e AWS regioni Amazon EC2. Per ulteriori informazioni, consulta Work with Capacity Blocks Prerequisiti.

  • I blocchi di capacità sono zonali. Durante la creazione del gruppo di nodi, è necessario utilizzare la sottorete nella stessa zona di disponibilità (AZ) della prenotazione del blocco di capacità.

  • Se crei un gruppo di nodi prima che la prenotazione del Capacity Block diventi attiva, imposta la capacità desiderata su 0 durante la creazione del gruppo di nodi.

  • Per dedicare del tempo a un corretto esaurimento del carico di lavoro, pianifica la scalabilità a zero più di 30 minuti prima del termine della prenotazione di Capacity Block. EC2 inizia a chiudere le istanze 30 minuti prima del termine della prenotazione.

Crea gruppi di nodi con Capacity Blocks for ML

I gruppi di nodi gestiti da EKS e i nodi autogestiti richiedono l'utilizzo di un modello di lancio EC2 personalizzato destinato alla prenotazione Capacity Block. Di seguito sono riportati i campi minimi obbligatori per i gruppi di nodi gestiti da EKS e i nodi autogestiti. I campi aggiuntivi sono obbligatori per i nodi autogestiti, come illustrato nei passaggi relativi ai Self-managed nodi riportati di seguito.

LaunchTemplateDataDevono includere:

  • InstanceMarketOptions con MarketType impostato su "capacity-block"

  • CapacityReservationSpecification: CapacityReservationTargetcon CapacityReservationId impostato sul Capacity Block ID. Ad esempio, cr-0123456789abcdef0.

  • InstanceTypeimpostato sul tipo di istanza della prenotazione Capacity Block. Ad esempio, p5.48xlarge.

Questi requisiti sono illustrati negli esempi seguenti per la creazione del modello di lancio per i gruppi di nodi gestiti da EKS e i nodi autogestiti.

Managed node groups
  1. Crea un file denominato eks-capacity-block-lt.json con i seguenti contenuti.

    Sostituisci i contenuti per CapacityReservationId e InstanceType con i valori del tuo Capacity Block. Per ulteriori informazioni sui campi aggiuntivi del modello di lancio EC2, consulta Personalizzazione dei nodi gestiti con modelli di avvio e Usa i blocchi di capacità per carichi di lavoro di machine learning.

    { "LaunchTemplateData": { "InstanceMarketOptions": { "MarketType": "capacity-block" }, "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationId": "cr-0123456789abcdef0" } }, "InstanceType": "p5.48xlarge" } }
  2. Creazione del modello di avvio.

    aws ec2 create-launch-template \ --launch-template-name EKS-Capacity-Block-Launch-Template \ --launch-template-data file://eks-capacity-block-lt.json
  3. Utilizza il modello di lancio per creare un gruppo di nodi gestiti da EKS. Sostituisci i segnaposto nel comando seguente con i valori applicabili al tuo ambiente. Il comando seguente imposta --ami-type le AMI EKS-optimized NVIDIA AL2023. Usa AMI EKS-optimized accelerate per istanze GPUPer ulteriori informazioni sulle AMI disponibili, consulta. EKS-optimized Se utilizzi un'AMI personalizzata con gruppi di nodi gestiti da EKS, specifica il tuo ID AMI nel modello di avvio.

    Quando crei un gruppo di nodi gestiti EKS che utilizza Capacity Blocks, procedi come segue:

    • Imposta --capacity-type su "CAPACITY_BLOCK".

    • Specificate solo la sottorete nella stessa zona di disponibilità della prenotazione della capacità.

    • Se si specifica un valore diverso da zero desiredSize prima che la prenotazione sia attiva, il gruppo Auto Scaling segnala gli errori di avvio fino a quando la prenotazione non diventa attiva. Una volta attive, le istanze vengono avviate e l'ASG si adatta a quanto richiesto. desiredSize

      aws eks create-nodegroup \ --cluster-name my-eks-cluster \ --nodegroup-name eks-cb-nodes \ --node-role "arn:aws: iam::111122223333:role/myNodeRole" \ --region region-code \ --subnets subnet-ExampleID1 \ --ami-type "AL2023_x86_64_NVIDIA" \ --scaling-config minSize=0,maxSize=2,desiredSize=0 \ --capacity-type "CAPACITY_BLOCK" \ --launch-template name="EKS-Capacity-Block-Launch-Template"
  4. Se lo desiredSize imposti 0 al momento della creazione, ingrandisci il gruppo di nodi quando la prenotazione diventa attiva utilizzando uno dei seguenti metodi:

    • Una politica di scalabilità pianificata sull'ASG allineata all'ora di inizio della prenotazione. Per ulteriori informazioni, consulta Dimensionamento programmato per Amazon EC2 Auto Scaling nella Guida per l'utente di Amazon EC2 Auto Scaling.

    • La console Amazon EKS o aws eks update-nodegroup-config per aggiornare la configurazione di scalabilità.

  5. Verifica che i nodi si uniscano al cluster dopo la scalabilità.

  6. EKS crea automaticamente una politica di scalabilità pianificata denominata Amazon EKS Node Group Capacity Scaledown Before Reservation End per ridimensionare il gruppo di nodi fino a 0 40 minuti prima della fine della prenotazione. In questo modo i Pods hanno il tempo di svuotarsi correttamente prima che EC2 inizi a terminare le istanze dopo 30 minuti. Non modificare o eliminare questa azione pianificata.

Self-managed nodes
  1. Crea un file denominato eks-capacity-block-lt.json con i seguenti contenuti.

    Sostituisci i contenuti per CapacityReservationId e InstanceType con i valori del tuo Capacity Block. Per ulteriori informazioni sui campi aggiuntivi del modello di lancio EC2, consulta Personalizzazione dei nodi gestiti con modelli di avvio e Usa i blocchi di capacità per carichi di lavoro di machine learning.

    Sostituisci i contenuti di IamInstanceProfileImageId,, SecurityGroupIdsUserData, KeyName con i valori del tuo ambiente.

    { "LaunchTemplateData": { "InstanceMarketOptions": { "MarketType": "capacity-block" }, "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationId": "cr-0123456789abcdef0" } }, "IamInstanceProfile": { "Arn": "arn:aws: iam::111122223333:role/myNodeRole" }, "ImageId": "image-id", "InstanceType": "p5.48xlarge", "KeyName": "key-name", "SecurityGroupIds": "sg-05b1d815d1EXAMPLE" ], "UserData": "user-data" } }
  2. Creazione del modello di avvio.

    aws ec2 create-launch-template \ --launch-template-name EKS-Capacity-Block-Launch-Template \ --launch-template-data file://eks-capacity-block-lt.json
  3. Utilizza il modello di avvio per creare l'Auto Scaling Group seguendo i passaggi seguenti. Crea nodi Amazon Linux autogestiti Se la prenotazione non è ancora attiva, imposta suDesiredCapacity. 0 Specificate solo la sottorete nella zona di disponibilità in cui è riservata la capacità.

  4. Dopo aver creato i nodi autogestiti con DesiredCapacity set to0, crea una politica di scalabilità pianificata sul gruppo Auto Scaling allineata ai tempi di prenotazione del Capacity Block. Per ulteriori informazioni, consulta Dimensionamento programmato per Dimensionamento automatico Amazon EC2.

    Puoi utilizzare le istanze riservate fino a 30 minuti prima dell'orario di fine della prenotazione. Pianifica la scalabilità a zero più di 30 minuti prima dell'orario di fine in modo che i Pod abbiano il tempo di esaurirsi.

    Se preferisci la scalabilità manuale, aggiorna la capacità desiderata dell'ASG all'ora di inizio della prenotazione e di nuovo più di 30 minuti prima dell'orario di fine.

  5. Per drenare correttamente i Pod, configura il Node Termination Handler. AWS Controlla gli eventi del ciclo di vita di ASG con scalabilità in base ad Amazon EC2 Auto Scaling e consente al piano di controllo di Kubernetes di agire prima che EventBridge l'istanza diventi non disponibile. Senza di esso, gli oggetti Pods e Kubernetes possono rimanere bloccati in uno stato in sospeso. Per ulteriori informazioni, consulta AWS Node Termination Handler su. GitHub

    Se non configuri il Node Termination Handler, scarica manualmente i Pod prima della finestra di 30 minuti in modo che abbiano il tempo di essere svuotati correttamente.