Questo documento spiega come progettare cluster Google Kubernetes Engine (GKE) resilienti e strategie di pianificazione dei carichi di lavoro che ti aiutano a ottenere risorse, come GPU, TPU e CPU ad alte prestazioni. Sfruttando Gemini in Google Cloud e Compute Advisor (anteprima), puoi prevenire i pod in attesa e migliorare la pianificazione affidabile per i workload AI.
Questo documento è rivolto ad architetti cloud e amministratori e operatori di piattaforma che gestiscono l'infrastruttura GKE e vogliono ottimizzare la pianificazione e la programmazione della capacità.
Panoramica della flessibilità, dell'efficienza e della disponibilità della capacità di calcolo su GKE
La pianificazione di Kubernetes si basa sulle richieste di risorse dichiarate. Quando pianifichi acceleratori su larga scala, come GPU o TPU, richieste di risorse rigorose possono impedire lo scale up dei cluster se hardware specifico non è disponibile. Puoi ottimizzare la disponibilità della capacità su GKE utilizzando le seguenti funzionalità:
- Creazione automatica del node pool: creazione dinamica di pool di nodi multifamiliari.
- Fallback a livello di workload: tolleranze e selettori di nodi configurati per accettare hardware alternativo.
- Pianificazione geografica e regionale: funzionalità multizona e multiregionale di GKE.
- Gestione delle prenotazioni:utilizzo della capacità preacquistata prima di richiedere risorse on demand.
Best practice per flessibilità, efficienza e disponibilità della capacità di calcolo su GKE
Questa sezione fornisce suggerimenti per aumentare la disponibilità della capacità durante la pianificazione dei workload su GKE. Queste best practice riguardano strategie come la progettazione di requisiti hardware flessibili, la configurazione della creazione automatica di pool di nodi e lo sfruttamento della distribuzione geografica per adattarsi ai limiti delle risorse. La creazione automatica dei node pool gestisce automaticamente i node pool in base alle specifiche dei pod. Anziché predefinire i node pool, specifica i requisiti delle risorse nei manifest dei pod e lascia che GKE crei i nodi in modo dinamico.
Puoi anche scoprire e implementare le seguenti best practice utilizzando Compute Advisor. Per saperne di più, consulta Utilizza Compute Advisor.
Opzioni per aumentare la disponibilità della capacità di calcolo
Per ottimizzare la disponibilità della capacità, puoi indicare a GKE di evitare di associare i workload a una singola famiglia di macchine o a un singolo tipo di acceleratore statico. Di seguito sono riportati esempi di come configurare pool di nodi flessibili e regole di affinità dei pod per diverse classi di workload. Le alternative specifiche che scegli dipendono dalle esigenze di risorse della tua applicazione:
Node pool di CPU per uso generico:
- Esempio principale: N2 (per uso generico basata su Intel).
- Alternative di esempio: N2D (AMD EPYC), C2 o C2D (ottimizzate per il calcolo) o E2 (ottimizzate per i costi).
- Pattern di implementazione: configura le specifiche del pod con l'affinità dei nodi o le tolleranze che consentono la pianificazione su più etichette di famiglie di macchine, ad esempio
cloud.google.com/machine-familyin["n2", "n2d", "c2d"]. Questa configurazione consente a GKE di eseguire il provisioning del pool con capacità disponibile.
Node pool GPU:
- Esempio principale: serie A2 (GPU NVIDIA A100).
- Alternative di esempio:L4 (AI/ML universale) o T4 (inferenza).
- Modello di implementazione: configura node pool o ComputeClass separati per i diversi livelli di GPU. Per i workload che possono essere eseguiti senza funzionalità specifiche di A100, consenti ai pod di utilizzare i pool L4 o T4 se il provisioning di A2 è limitato.
Pool di nodi TPU:
- Esempio principale: TPU Ironwood (TPU7x).
- Alternative di esempio: TPU v6 (Trillium) o TPU v5 (v5e o v5p).
- Pattern di implementazione:il provisioning delle sezioni TPU può essere altamente vincolato. Progetta workload di addestramento con flessibilità a livello di framework (ad esempio, configurazioni JAX o PyTorch che supportano topologie di slice variabili) per il deployment su slice v6 o v5 quando la capacità della TPU Ironwood (TPU7x) non è disponibile.
La seguente tabella riassume le selezioni principali e le alternative hardware per diversi tipi di carichi di lavoro:
| Tipo di workload | Esempio di selezione primaria | Alternative di esempio | Considerazioni sull'architettura |
|---|---|---|---|
| Carichi di lavoro di sistema o core | N2 | N2D, C2D, E2 | Si estende su pool di hardware Intel e AMD per la creazione automatica di pool di nodi. |
| Inferenza ed elaborazione della GPU | A2 (A100) | L4, T4 | Prende di mira in modo flessibile i node pool GPU a costi inferiori o con maggiore disponibilità. |
| Addestramento del modello TPU | TPU Ironwood (TPU7x) | TPU v6, TPU v5 (v5e o v5p) | Utilizza topologie flessibili per la pianificazione basata sulle sezioni. |
Implementa la creazione automatica dei pool di nodi e le classi di computing
Per ottimizzare la disponibilità della capacità, combina la creazione automatica pool di nodi con ComputeClasses. L'elenco seguente include le best practice:
Definisci ComputeClass:crea risorse ComputeClass che specificano un elenco prioritario di famiglie di macchine, tipi di GPU o modelli di provisioning. GKE tenta di eseguire il provisioning dei nodi utilizzando la configurazione con la priorità più alta disponibile nella classe. Un elenco di fallback con priorità ti aiuta in modo significativo a ottenere le risorse richieste dai tuoi workload. Ad esempio, per impedire a GKE di eseguire il fallback a macchine per uso generico quando un acceleratore specializzato preferito non è disponibile, aggiungi l'impostazione
whenUnsatisfiable: DoNotScaleUpalla configurazione di ComputeClass. Per saperne di più, consulta Controlla gli attributi dei nodi con scalabilità automatica con classi di computing personalizzate.Fai riferimento alle classi ComputeClasses nelle specifiche dei pod: nelle specifiche dei pod del workload, utilizza l'etichetta
cloud.google.com/compute-classper scegliere come target la tua classe ComputeClass personalizzata anziché una famiglia di macchine o un tipo di GPU specifici. Per maggiori informazioni, consulta Richiedi una ComputeClass in un workload.Definisci più tolleranze:se non utilizzi ComputeClass, utilizza le regole di affinità dei nodi nelle specifiche dei pod che consentono una gamma di famiglie di macchine (ad esempio
cloud.google.com/machine-familyin["n2", "n2d"]). Per saperne di più, consulta Configura la creazione automatica del pool di nodi.
Flessibilità geografica e multiregionale su GKE
Per aumentare la disponibilità della capacità, esegui il deployment di cluster GKE che si estendono su più zone o esegui architetture multi-cluster:
I cluster multizona assicurano che i pool di nodi siano configurati per scalare automaticamente in tutte le zone disponibili in una regione.
Federazione di cluster multiregionali: per job asincroni di grandi dimensioni (come l'inferenza batch offline o l'addestramento distribuito), esegui il deployment di un orchestratore multi-cluster (come Kueue o Cluster Director) per mettere in coda i workload a livello globale e inviarli a una regione con capacità disponibile.
Pod in esecuzione su VM Spot:esegui carichi di lavoro interrompibili su VM Spot aggiungendo tolleranze e istruendo GKE a distribuire la capacità in eccesso in zone diverse.
Best practice aggiuntive per flessibilità, efficienza e disponibilità della capacità di calcolo in GKE
Oltre alla diversificazione dell'hardware, incorpora queste best practice di GKE per ottimizzare il successo della scalabilità dei cluster:
- Implementa l'overprovisioning dei pod (buffer di capacità): esegui il deployment di pod "in pausa" a bassa priorità che riservano la capacità dei nodi in anticipo. Quando vengono inviati workload di AI ad alta priorità e la capacità regionale è limitata, Kubernetes interrompe immediatamente i pod di pausa, consentendo l'avvio dei container senza attendere il provisioning di nuovi nodi. Per saperne di più, consulta Informazioni sui buffer di capacità.
- Utilizza l'avvio flessibile con il provisioning in coda:per i job di addestramento di modelli di AI e batch di grandi dimensioni, utilizza l'avvio flessibile con il provisioning in coda, che si integra con Kueue e Dynamic Workload Scheduler. L'avvio flessibile con provisioning in coda esegue l'allocazione atomica dei nodi tutto o niente, il che impedisce errori di scalabilità parziale del cluster. Per maggiori informazioni, consulta Esegui un workload su larga scala con l'avvio flessibile con provisioning in coda.
- Attiva lo streaming delle immagini e il precaricamento delle immagini container:per le immagini container AI di grandi dimensioni (ad esempio immagini PyTorch o TensorFlow superiori a 10 GB), attiva lo streaming delle immagini GKE o utilizza dischi di avvio secondari per il precaricamento delle immagini. Questa configurazione riduce il tempo di preriscaldamento dei nodi, consentendo ai nodi appena sottoposti a provisioning di iniziare a eseguire i carichi di lavoro in pochi secondi. Per saperne di più, consulta Utilizzare lo streaming di immagini per eseguire il pull delle immagini container e Utilizzare dischi di avvio secondari per precaricare dati o immagini container.
- Imposta la policy di località del gestore della scalabilità automatica del cluster su
ANY: configura i pool di nodi (soprattutto per le VM spot o con avvio flessibile) con la policy di localitàANY. Questa impostazione indica al gestore della scalabilità automatica dei cluster di cercare la capacità richiesta in tutte le zone specificate. Il gestore della scalabilità automatica dei cluster trova la capacità bilanciando il numero di nodi. Per saperne di più, consulta la panoramica del gestore della scalabilità automatica del cluster. - Ottimizza l'utilizzo dell'acceleratore con la condivisione della GPU:per i carichi di lavoro che non richiedono una GPU dedicata, utilizza la condivisione del tempo della GPU, le GPU multi-istanza (MIG) o NVIDIA MPS per consentire a più container di condividere un singolo acceleratore. Questo approccio ottimizza la capacità effettiva nei pool di nodi. Per saperne di più, consulta Informazioni sulle strategie di condivisione della GPU in GKE.
Utilizzare Compute Advisor
Compute Advisor è un'interfaccia basata sull'AI nella consoleGoogle Cloud , basata su Gemini, che ti aiuta a progettare architetture resilienti ed economiche per GKE.
Compute Advisor fornisce indicazioni sulla disponibilità quasi in tempo reale per le VM flessibili e le VM spot, verificando al contempo i criteri e le quote di risorse della tua organizzazione prima del deployment. Compute Advisor non fornisce indicazioni sulla disponibilità per i workload che richiedono risorse on demand.
Per accedere a Gemini nella console Google Cloud , completa i seguenti passaggi:
-
Nella console Google Cloud , vai alla pagina Panoramica.
-
Nella sezione Progetta la tua infrastruttura con Compute Advisor, invia un prompt. Gemini inizia a generare una risposta.
-
Per generare consigli sull'architettura, esegui uno dei seguenti prompt di esempio in Compute Advisor. Quando fai clic sui pulsanti Esegui prompt in Compute Advisor, il caricamento della console Google Cloud potrebbe richiedere più di 15 secondi:
Strategia generale per gli acceleratori:
Caso d'uso: utilizza questo prompt per analizzare gli indicatori di capacità regionali e ricevere suggerimenti su tipi di macchine, zone e strategie di pianificazione di riserva durante la progettazione delle configurazioni dei cluster.
Configure a GKE cluster to improve chances of obtaining scarce GPU or TPU capacity.Flessibilità geografica e fallback:
Caso d'uso: utilizza questo prompt quando progetti architetture multi-cluster o sistemi di accodamento dei job globali (ad esempio con Kueue) per spostare l'esecuzione dei workload tra le regioni a seconda della disponibilità delle risorse.
Configure multi-region fallbacks and geographic scheduling on GKE to increase GPU availability.Consumo delle prenotazioni con priorità:
Caso d'uso:utilizza questo prompt per generare pattern di configurazione YAML per le regole di affinità e scalabilità automatica dei pod che danno la priorità alla capacità di prenotazione.
Configure GKE autoscaling rules and Pod specs to prioritize consuming active reservations before scaling into on-demand pools.ComputeClasses per la definizione delle priorità di riserva:
Caso d'uso: utilizza questo prompt per generare il manifest YAML per una CustomResourceDefinition ComputeClass che dà la priorità alle GPU ad alte prestazioni, ma include fallback di livello inferiore per garantire la pianificazione dei workload.
Define a ComputeClass manifest for GKE to prioritize A2 GPU nodes with automatic fallbacks to L4 or T4 GPUs.Creazione automatica dei pool di nodi per la diversificazione:
Caso d'uso: utilizza questo prompt per scrivere il manifest YAML per i limiti delle risorse di scalabilità automatica del cluster GKE e le regole di affinità dei pod che consentono a NAP di eseguire il provisioning automatico di nodi GPU o CPU alternativi.
Configure GKE node pool auto-creation to diversify machine families and prevent pending pods when regional accelerator capacity is constrained.
Passaggi successivi
- Progettare e ottimizzare i cluster GKE con Compute Advisor
- Configurare la creazione automatica di node pool
- Risolvi i problemi relativi alla scalabilità automatica orizzontale dei pod