Creare un gruppo di nodi gestito con blocchi di capacità per il ML - Amazon EKS

Contribuisci a migliorare questa pagina

Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.

Creare un gruppo di nodi gestito con blocchi di capacità per il ML

I blocchi di capacità per il machine learning (ML) ti consentono di riservare istanze GPU in una data futura per supportare i carichi di lavoro ML di breve durata. Per ulteriori informazioni, consulta Blocchi di capacità per il machine learning nella Guida per l’utente di Amazon EC2 per le istanze Linux.

Considerazioni

Importante
  • I blocchi di capacità sono disponibili solo per certi tipi di istanze e regioni AWS Amazon EC2. Per informazioni relative alla compatibilità, consulta Work with Capacity Blocks Prerequisites nella Guida per l’utente di Amazon EC2 per le istanze Linux.

  • Per ulteriori informazioni, consulta Usa i blocchi di capacità per carichi di lavoro di machine learning nella Guida per l'utente di Amazon EC2 Auto Scaling.

  • I gruppi di nodi gestiti con i blocchi di capacità possono essere creati solo con modelli di avvio personalizzati.

  • Quando aggiorni i gruppi di nodi gestiti con i blocchi di capacità, assicurati che la dimensione desiderata del gruppo di nodi sia impostata su 0.

Creare un gruppo di nodi gestito con blocchi di capacità di Amazon EC2

Puoi usare i blocchi di capacità con i gruppi di nodi gestiti da Amazon EKS per il provisioning e il dimensionamento dei nodi di lavoro accelerati da GPU. Gli esempi di modelli AWS CloudFormation riportati di seguito non coprono tutti gli aspetti necessari in un cluster di produzione. In genere, serve anche uno script di bootstrap per unire il nodo al cluster e specificare un’AMI accelerata Amazon EKS. Per ulteriori informazioni, consulta Creare un gruppo di nodi gestiti per il cluster.

  1. Crea un modello di avvio adatto ai tuoi carichi di lavoro e che funzioni con i gruppi di nodi gestiti da Amazon EKS. Per ulteriori informazioni, consulta Personalizzazione dei nodi gestiti con modelli di avvio.

    Oltre ai requisiti indicati nelle procedure sopra riportate, assicurati che LaunchTemplateData includa quanto segue:

    • InstanceMarketOptions con MarketType impostato su "capacity-block"

    • CapacityReservationSpecification: CapacityReservationTarget con CapacityReservationId impostato sul blocco di capacità (ad esempio: cr-02168da1478b509e0 )

    • InstanceType impostato su un tipo di istanza che supporta i blocchi di capacità (ad esempio: p5.48xlarge)

      Di seguito è riportato un estratto di un modello CloudFormation che crea un modello di avvio destinato a un blocco di capacità. Per creare un gruppo di nodi gestiti AMI personalizzato, è anche possibile aggiungere i parametri ImageId e UserData.

      NodeLaunchTemplate: Type: "AWS::EC2::LaunchTemplate" Properties: LaunchTemplateData: InstanceMarketOptions: MarketType: "capacity-block" CapacityReservationSpecification: CapacityReservationTarget: CapacityReservationId: "cr-02168da1478b509e0" InstanceType: p5.48xlarge
  2. Utilizza il modello di avvio per creare un gruppo di nodi gestito.

    Di seguito è riportato un esempio di comando per la creazione di un gruppo di nodi per i blocchi di capacità. Sostituisci i valori di esempio con quelli applicabili al cluster.

    Quando crei il gruppo di nodi gestiti del blocco di capacità, procedi come segue:

    • Imposta capacity-type su "CAPACITY_BLOCK". Se il tipo di capacità non è impostato su "CAPACITY_BLOCK" se manca uno qualsiasi degli altri valori richiesti sopra indicati per il modello di avvio, la richiesta di creazione verrà rifiutata.

    • Quando specifichi subnets nella richiesta di creazione, assicurati di specificare solo la sottorete nella stessa zona di disponibilità della prenotazione della capacità.

    • Se specifichi un valore diverso da zero per desiredSize nella richiesta di creazione, Amazon EKS lo rispetterà durante la creazione del gruppo Auto Scaling (ASG). Tuttavia, se la richiesta di creazione viene effettuata prima che la prenotazione della capacità sia attiva, l’ASG non sarà in grado di avviare istanze Amazon EC2 fino a quando non diventa attiva. Di conseguenza, le attività di dimensionamento dell’ASG presenteranno errori di avvio. Quando la prenotazione diventa attiva, l’avvio delle istanze avrà esito positivo e l’ASG aumenterà verticalmente fino alla desiredSize specificata al momento della creazione.

      aws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name my-mng \ --node-role node-role-arn \ --region region-code \ --subnets subnet-id \ --scaling-config minSize=node-group-min-size,maxSize=node-group-max-size,desiredSize=node-group-desired-size \ --ami-type "AL2023_x86_64_NVIDIA" \ --capacity-type "CAPACITY_BLOCK" \ --launch-template id="lt-id",version=1
  3. Assicurati che i nodi si uniscano dopo l’aumento verticale. I cluster Amazon EKS che usano gruppi di nodi gestiti con blocchi di capacità non eseguono alcuna verifica per accertarsi che le istanze avviate si uniscano effettivamente al cluster e vi si registrino.

  4. Se imposti desiredSize su 0 al momento della creazione, sono disponibili diverse opzioni per aumentare verticalmente il gruppo di nodi quando la prenotazione della capacità diventa attiva:

    • Crea una policy di dimensionamento programmato per l’ASG che si allinei all’ora di inizio della prenotazione dei blocchi di capacità. Per ulteriori informazioni, consulta Dimensionamento programmato per Amazon EC2 Auto Scaling nella Guida per l'utente di Amazon EC2 Auto Scaling.

    • Utilizza la console Amazon EKS o eks update-nodegroup-config per aggiornare la configurazione del dimensionamento e impostare la dimensione desiderata del gruppo di nodi.

    • Utilizza l’autoscaler del cluster Kubernetes. Per ulteriori informazioni consultare Cluster Autoscaler su AWS.

  5. Il gruppo di nodi è ora pronto per la pianificazione di carichi di lavoro e pod.

  6. Affinché i tuoi Pod vengano svuotati senza problemi prima della fine della prenotazione, Amazon EKS usa una policy di dimensionamento pianificata per ridurre verticalmente la dimensione del gruppo di nodi a 0. Questo dimensionamento programmato verrà impostato con il nome Amazon EKS Node Group Capacity Scaledown Before Reservation End . Suggeriamo di non modificare né eliminare questa azione.

    Amazon EC2 inizia a spegnere le istanze 30 minuti prima della fine della prenotazione. Di conseguenza, Amazon EKS imposterà una riduzione verticale programmata del gruppo di nodi 40 minuti prima della fine della prenotazione, al fine di espellere i pod in modo sicuro e graduale.