Pianificare le TPU in GKE


Questa pagina descrive come pianificare l'utilizzo delle unità di elaborazione tensoriale (TPU) in Google Kubernetes Engine (GKE) per ridurre il rischio di configurazione errata delle TPU, errori di mancata disponibilità o interruzioni per superamento della quota.

Prima di utilizzare le TPU in GKE, assicurati di conoscere la terminologia e le definizioni delle TPU in GKE.

Pianifica la configurazione della TPU

Per lavorare con le TPU nei cluster GKE, devi pianificarne la configurazione. Ti consigliamo di seguire questi passaggi:

  1. Scegli una modalità di funzionamento di GKE: esegui i carichi di lavoro sulle TPU in un cluster GKE Autopilot o Standard.

    Best practice:

    Utilizza un cluster Autopilot per un'esperienza Kubernetes completamente gestita.

  2. Scegli la versione della TPU: i diversi tipi di TPU hanno funzionalità diverse, come il rapporto prezzo/prestazioni, il throughput dell'addestramento e la latenza di pubblicazione. I tipi di TPU influiscono sulle capacità di CPU e memoria disponibili.

  3. Convalida la disponibilità delle TPU: le TPU sono disponibili in regioni Google Cloud specifiche. Per utilizzare un tipo di TPU nel carico di lavoro GKE, il cluster deve trovarsi in una regione supportata per quel tipo.

  4. Scegli la topologia TPU: la disposizione fisica delle TPU all'interno di un sezione TPU. Seleziona una topologia corrispondente ai requisiti di parallelismo del modello.

Utilizza le tabelle di riferimento in questa pagina per identificare se i tuoi pool di nodi sono nodi di slice TPU con un singolo host o con più host.

Scegliere una modalità di funzionamento di GKE

Puoi utilizzare le TPU nelle modalità di funzionamento di GKE disponibili per i cluster:

  • Modalità Autopilot (consigliata): GKE gestisce l'infrastruttura di base, ad esempio configurazione dei nodi, scalabilità automatica, upgrade automatici, configurazioni di base della sicurezza e configurazione di base del networking. In Autopilot, scegli un tipo e una topologia TPU, quindi li specifichi nel manifest di Kubernetes. GKE gestisce il provisioning dei nodi con le TPU e la pianificazione dei tuoi workload.
  • Modalità Standard: sei tu a gestire l'infrastruttura di base, inclusa la configurazione dei singoli nodi.

Per scegliere la modalità operativa GKE più adatta ai tuoi carichi di lavoro, consulta Scegliere una modalità operativa GKE.

Scegli la versione TPU

Le VM in uno slice TPU hanno le seguenti caratteristiche tecniche.

Autopilot

Versione TPU Tipo di macchina Numero di vCPU Memoria (GiB) Numero di nodi NUMA Chip TPU massimi in un nodo di sezione TPU
TPU Trillium (v6e) (anteprima)
tpu-v6e-slice Da 44 a 180 Da 176 a 1440 1-2 256
TPU v5p
tpu-v5p-slice 208 448 2 6144
TPU v5e
tpu-v5-lite-podslice Da 24 a 224 Da 48 a 384 1 256
TPU v5e (solo host singolo)
tpu-v5-lite-device Da 24 a 224 Da 48 a 384 1-2 8
TPU v4
tpu-v4-podslice 240 407 2 4096
TPU v3 (solo host singolo)
tpu-v3-device 96 340 2 8
TPU v3
tpu-v3-slice 48 340 1 256

Standard

Versione TPU Tipo di macchina Numero di vCPU Memoria (GiB) Numero di nodi NUMA Probabilità di essere sostituita
TPU Trillium (v6e) (anteprima)
ct6e-standard-1t 44 448 2 Superiore
TPU v6e (anteprima)
ct6e-standard-4t 180 720 1 Medio
TPU v6e (anteprima)
ct6e-standard-8t 180 1440 2 Meno
TPU v5p
ct5p-hightpu-4t 208 448 2
TPU v5e
ct5l-hightpu-1t 24 48 1 Superiore
TPU v5e
ct5l-hightpu-4t 112 192 1 Medio
TPU v5e
ct5l-hightpu-8t 224 384 2 Meno
TPU v5e
ct5lp-hightpu-1t 24 48 1 Superiore
TPU v5e
ct5lp-hightpu-4t 112 192 1 Medio
TPU v5e
ct5lp-hightpu-8t 224 384 1 Bassa
TPU v4
ct4p-hightpu-4t 240 407 2
TPU v3 (solo host singolo)
ct3-hightpu-4t 96 340 2 8
TPU v3
ct3p-hightpu-4t 48 340 1 256

Quando valuti il tipo di macchina da utilizzare in base al tuo modello, considera le seguenti configurazioni:

  • I tipi di macchine ct5l- sono adatti per la pubblicazione di modelli di piccole e medie dimensioni e meno adatti per i modelli di grandi dimensioni. I tipi di macchine ct5l- sono a un solo host e pertanto non hanno alcun link di interconnessione ad alta velocità tra più host.
  • I tipi di macchine ct5lp- multi-host sono più adatti per l'hosting di modelli di grandi dimensioni o per l'addestramento. Le macchine ct5lp- multi-host sono interconnesse con link ad alta velocità.

Esamina le specifiche e i prezzi delle TPU nella documentazione relativa ai prezzi di Cloud TPU per decidere quale configurazione utilizzare.

Limitazioni

Tieni presenti queste limitazioni quando scegli la TPU da utilizzare:

  • TPU v6e è in anteprima ed è disponibile nelle seguenti versioni:
    • Cluster standard nella versione 1.31.1-gke.1846000 e successive.
    • Cluster Autopilot nella versione 1.31.2-gke.1115000 e successive.
  • TPU v6e non supporta la configurazione di SMT impostato su 2 su ct6e-standard-8t.
  • La misurazione dell'utilizzo e l'allocazione dei costi di GKE non includono dati sull'utilizzo o sui costi delle TPU v4 riservate.
  • TPU v5p e v5e non supportano lo streaming di immagini/riptide in us-east5.
  • La scalabilità automatica delle TPU v5p è supportata nei cluster GKE con piani di controllo in esecuzione almeno nella versione 1.29.2-gke.1035000 o 1.28.7-gke.1020000.
  • Per le prenotazioni della capacità, utilizza una prenotazione specifica.

Convalida la disponibilità di TPU in GKE

Le TPU sono disponibili in regioni Google Cloud specifiche. Per utilizzare un tipo di TPU nel tuo cluster GKE, il cluster deve trovarsi in una regione supportata per quel tipo.

Autopilot

La tabella seguente elenca la disponibilità delle TPU per ogni versione e tipo di macchina:

Versione TPU cloud.google.com/gke-tpu-accelerator Versione GKE minima Disponibilità Zona
TPU v6e
tpu-v6e-slice 1.31.2-gke.1384000 Anteprima us-east5-b
europe-west4-a
us-east1-d
asia-northeast1-b
us-south1-a
TPU v5e tpu-v5-lite-device 1.27.2-gke.2100 Generalmente disponibile europe-west4-b
us-central1-a
TPU v5e tpu-v5-lite-podslice 1.27.2-gke.2100 Generalmente disponibile europe-west4-a
us-central1-a
us-east1-c
us-east5-b
us-west1-c
us-west4-a
us-west4-b
TPU v5p tpu-v5p-slice 1.28.3-gke.1024000 Generalmente disponibile us-east1-d
us-east5-a
us-east5-c
TPU v4 tpu-v4-podslice 1.26.1-gke.1500 Generalmente disponibile us-central2-b
TPU v3 tpu-v3-slice 1.31.1-gke.1146000 Generalmente disponibile us-east1-d
europe-west4-a
TPU v3 tpu-v3-device 1.31.0-gke.1500 Generalmente disponibile us-east1-d
europe-west4-a
us-central1-a
us-central1-b
us-central1-f

Standard

La tabella seguente elenca la disponibilità delle TPU per ogni versione e tipo di macchina:

Versione TPU Tipo di macchina che inizia con Versione GKE minima Disponibilità Zona
TPU v6e ct6e- 1.31.2-gke.1115000 Anteprima us-east5-b
europe-west4-a
us-east1-d
asia-northeast1-b
us-south1-a
TPU v5e ct5l- 1.27.2-gke.2100 Generalmente disponibile europe-west4-b
us-central1-a
TPU v5e ct5lp- 1.27.2-gke.2100 Generalmente disponibile europe-west4-a
us-central1-a
us-east1-c
us-east5-b
us-west1-c
us-west4-a
us-west4-b
TPU v5p ct5p- 1.28.3-gke.1024000 Generalmente disponibile us-east1-d
us-east5-a
us-east5-c
TPU v4 ct4p- 1.26.1-gke.1500 Generalmente disponibile us-central2-b
TPU v3 ct3p- 1.31.1-gke.1146000 Generalmente disponibile us-east1-d
europe-west4-a
TPU v3 ct3- 1.31.0-gke.1500 Generalmente disponibile us-east1-d
europe-west4-a
us-central1-a
us-central1-b
us-central1-f

Tieni presenti le seguenti limitazioni quando configuri una TPU:

  • Puoi creare un pool di nodi TPU v5e a un solo host con un tipo di macchina che inizia con ct5lp-, ma non con ct5l-, in determinate zone (europe-west4-a, us-east5-b e us-west4-b). Puoi utilizzare ct5lp-hightpu-4t con una topologia di almeno 2x4 o superiore in queste zone.
  • Per creare una TPU v5e a singolo host nella regione us-west4, scegli la zona us-west4-a e utilizza i tipi di macchine che iniziano con ct5lp-, ad esempio ct5lp-hightpu-1t.
  • Per creare una TPU v5e con un solo host nelle altre regioni elencate nella tabella precedente, utilizza i tipi di macchine che iniziano con ct5l- (ad esempio ct5l-hightpu-1t, ct5l-hightpu-4t o ct5l-hightpu-8t).
  • I tipi di macchine che iniziano con ct5l- richiedono una quota diversa rispetto ai tipi di macchine che iniziano con ct5lp-.

Scegli una topologia

Dopo aver scelto una versione di TPU, seleziona una topologia supportata dal tipo di TPU. A seconda del tipo di TPU, la topologia è bidimensionale o tridimensionale. I requisiti di parallelismo del modello ti aiutano a scegliere una topologia. Puoi identificare il numero di chip TPU nel segmento calcolando il prodotto di ogni dimensione nella topologia. Ad esempio:

  • 2x2x2 è una sezione TPU v4 multi-host da 8 chip
  • 2x2 è una sezione TPU v5e a singolo host con 4 chip

Se una topologia specifica supporta sia i nodi di sezione TPU con un solo host sia quelli con più host, il tipo di host è determinato dal numero di chip TPU richiesti dal carico di lavoro.

Ad esempio, TPU v5e (tpu-v5-lite-podslice) supporta la topologia 2x4 sia come singolo che come multi-host. Se:

  • Se richiedi 4 chip nel tuo workload, riceverai un nodo multi-host con 4 chip TPU.
  • Se richiedi 8 chip nel tuo carico di lavoro, ottieni un nodo con un singolo host con 8 chip TPU.

Utilizza la seguente tabella per scegliere il tipo di macchina e la topologia TPU per il tuo caso d'uso:

  • Per l'addestramento o l'inferenza di modelli su piccola scala, utilizza TPU v4 o TPU v5e con pool di nodi di slice TPU a un host.
  • Per l'addestramento o l'inferenza di modelli su larga scala, utilizza TPU v4 o TPU v5e con pool di nodi di slice TPU multi-host.

Autopilot

Versione TPU Tipo di macchina Topologia Numero di chip TPU in una sezione Numero di nodi Tipo di node pool
TPU v6e (anteprima) tpu-v6e-slice 1x1 1 1 Singolo host
2x2 4 4 Singolo host
2x4 8 8 Singolo host
4x4 16 4 Multi-host
4x8 32 8 Multi-host
8x8 64 16 Multi-host
8x16 128 32 Multi-host
16x16 256 64 Multi-host
TPU v5p tpu-v5p-slice 2x2x1 4 1 Singolo host
2x2x2 8 2 Multi-host
2x2x4 16 4 Multi-host
2x4x4 32 8 Multi-host
4x4x4 64 16 Multi-host
{A}x{B}x{C} A*B*C (A*B*C/4)1 Multi-host
TPU v5e tpu-v5-lite-podslice2 1x1 1 1 Singolo host
2x2 4 1
2x4 8 1
2x4 8 2 Multi-host
4x4 16 4
4x8 32 8
8x8 64 16
8x16 128 32
16x16 256 64
TPU v5e (solo host singolo) tpu-v5-lite-device 1x1 1 1 Singolo host
2x2 4 1
2x4 8 1
TPU v4 tpu-v4-podslice2 2x2x1 4 1 Singolo host
2x2x2 8 2 Multi-host
2x2x4 16 4 Multi-host
2x4x4 32 8 Multi-host
4x4x4 64 16 Multi-host
{A}x{B}x{C} A*B*C (A*B*C/4)1 Multi-host
TPU v3 tpu-v3-slice 4x4 16 2 Multi-host
4x8 32 4 Multi-host
8x8 64 8 Multi-host
8x16 128 16 Multi-host
16x16 256 32 Multi-host
TPU v3 tpu-v3-device 2x2 4 1 Singolo host
  1. Calcolata dividendo il prodotto della topologia per quattro.

    Sono supportate topologie personalizzate per più di 64 chip. Si applicano le seguenti condizioni:

    • Per più di 64 chip, {A}, {B} e {C} devono essere multipli di 4
    • La topologia più grande è 16x16x24
    • I valori devono essere {A}{B}{C}, come 8x12x16.
  2. Le topologie personalizzate non sono supportate.

Dopo aver scelto un tipo e una topologia TPU, specificali nel manifest del workload. Per istruzioni, consulta Eseguire il deployment dei carichi di lavoro TPU in GKE Autopilot.

Standard

Versione TPU Tipo di macchina Topologia Numero di chip TPU Numero di VM Tipo di node pool
TPU v6e (anteprima) ct6e-standard-1t 1x1 1 1 Singolo host
ct6e-standard-8t 2x4 8 1 Singolo host
ct6e-standard-4t 2x2 4 1 Singolo host
2x4 8 2 Multi-host
4x4 16 4 Multi-host
4x8 32 8 Multi-host
8x8 64 16 Multi-host
8x16 128 32 Multi-host
16x16 256 64 Multi-host
TPU v5p ct5p-hightpu-4t 2x2x1 4 1 Singolo host
2x2x2 8 2 Multi-host
2x2x4 16 4 Multi-host
2x4x4 32 8 Multi-host
{A}x{B}x{C} A*B*C (A*B*C/4)1 Multi-host
TPU v5e ct5l-hightpu-1t 1x1 1 1 Singolo host
ct5l-hightpu-4t 2x2 4 1 Singolo host
ct5l-hightpu-8t 2x4 8 1 Singolo host
ct5lp-hightpu-1t 1x1 1 1 Singolo host
ct5lp-hightpu-4t 2x2 4 1 Singolo host
ct5lp-hightpu-8t 2x4 8 1 Singolo host
ct5lp-hightpu-4t 2x4 8 2 Multi-host
4x4 16 4 Multi-host
4x8 32 8 Multi-host
8x8 64 16 Multi-host
8x16 128 32 Multi-host
16x16 256 64 Multi-host
TPU v4 ct4p-hightpu-4t 2x2x1 4 1 Singolo host
2x2x2 8 2 Multi-host
2x2x4 16 4 Multi-host
2x4x4 32 8 Multi-host
{A}x{B}x{C} A*B*C (A*B*C/4)1 Multi-host
TPU v3 ct3-hightpu-4t 2x2 4 1 Singolo host
TPU v3 ct3p-hightpu-4t 4x4 16 4 Multi-host
4x8 32 8 Multi-host
8x8 64 16 Multi-host
8x16 128 32 Multi-host
16x16 256 64 Multi-host
16x32 512 128 Multi-host
32x32 1024 256 Multi-host
  1. Calcolata dividendo il prodotto della topologia per quattro.

Configurazioni avanzate

Le sezioni seguenti descrivono le best practice per la pianificazione delle configurazioni TPU avanzate.

Prenotazione TPU

Le prenotazioni TPU sono disponibili quando acquisti un impegno. Qualsiasi prenotazione di TPU può essere utilizzata con GKE.

Quando crei un pool di nodi di una sezione TPU, utilizza i parametri --reservation e --reservation-affinity=specific per utilizzare un'istanza TPU prenotata.

Scalabilità automatica delle TPU in GKE

GKE supporta le Tensor Processing Unit (TPU) per accelerare i carichi di lavoro di machine learning. Sia il pool di nodi con sezione TPU a host singolo sia il pool di nodi con sezione TPU a più host supportano la scalabilità automatica e il provisioning automatico.

Con il flag --enable-autoprovisioning su un cluster GKE, GKE crea o elimina pool di nodi di sezioni TPU mono o multi-host con una versione e una topologia TPU che soddisfano i requisiti dei carichi di lavoro in attesa.

Quando utilizzi --enable-autoscaling, GKE scala il pool di nodi in base al tipo, come segue:

  • Pool di nodi della sezione TPU a un solo host: GKE aggiunge o rimuove i nodi TPU nel pool di nodi esistente. Il pool di nodi può contenere un numero qualsiasi di nodi TPU compreso tra zero e la dimensione massima del pool di nodi, come stabilito dai flag --max-nodes e --total-max-nodes. Quando il pool di nodi viene scalato, tutti i nodi TPU del pool hanno lo stesso tipo di macchina e la stessa topologia. Per scoprire di più su come creare un pool di nodi di slice TPU con un solo host, consulta Creare un node pool.

  • Pool di nodi della sezione TPU multi-host: GKE esegue lo scaling atomico del pool di nodi da zero al numero di nodi richiesti per soddisfare la topologia TPU. Ad esempio, con un pool di nodi TPU con un tipo di macchina ct5lp-hightpu-4t e una topologia 16x16, il pool di nodi contiene 64 nodi. L'autoscaling GKE garantisce che questo pool di nodi abbia esattamente 0 o 64 nodi. Quando si riduce la scalabilità, GKE esegue l'espulsione di tutti i pod pianificati e svuota l'intero pool di nodi a zero. Per scoprire di più su come creare un pool di nodi con sezioni TPU su più host, consulta Creare un pool di nodi.

CPU per i cluster standard

Questa sezione non si applica ai cluster Autopilot perché GKE colloca ogni slice TPU su un proprio nodo. Per scoprire di più, consulta l'articolo Come funzionano le TPU in modalità Autopilot.

Per i cluster standard, tieni a mente le seguenti best practice per la programmazione.

Per pianificare un carico di lavoro non TPU su una VM in un nodo della sezione TPU, assicurati che il tuo pod GKE possa tollerare l'incompatibilità google.com/tpu. Se vuoi che il carico di lavoro venga disegnato su nodi specifici, utilizza i selettori dei nodi.

La gestione e la priorità delle risorse Kubernetes trattano le VM nelle TPU come gli altri tipi di VM. Per dare la priorità di pianificazione ai pod che richiedono TPU rispetto ad altri pod sugli stessi nodi, richiedi la CPU o la memoria massima per queste sezioni TPU. Le sezioni TPU con priorità bassa devono:

  1. Imposta richieste di CPU e memoria ridotte per assicurarti che il nodo disponga di risorse allocabili sufficienti per i workload TPU. Per saperne di più, consulta In che modo Kubernetes applica richieste e limiti delle risorse.
  2. Imposta nessun limite di CPU (illimitato) per assicurarti che i pod possano esplodere per utilizzare tutti i cicli inutilizzati.
  3. Imposta limiti di memoria appropriati per garantire che i pod possano funzionare correttamente senza rischiare l'eliminazione per pressione del nodo.

Se un pod Kubernetes non richiede CPU e memoria (anche se richiede TPU), Kubernetes lo considera un pod best effort e non c'è alcuna garanzia che abbia bisogno di CPU e memoria. Solo i pod che richiedono esplicitamente CPU e memoria hanno queste garanzie. Per la pianificazione specifica di Kubernetes, configura le esigenze del pod con una richiesta esplicita di CPU e memoria. Per ulteriori informazioni, consulta Gestione delle risorse per pod e container.

Per scoprire altre best practice, consulta Best practice di Kubernetes: richieste e limiti delle risorse.

Riduci l'interruzione del carico di lavoro

Se utilizzi le TPU per addestrare un modello di machine learning e il tuo carico di lavoro viene interrotto, tutto il lavoro eseguito dall'ultimo checkpoint viene perso. Per ridurre la probabilità che il carico di lavoro venga interrotto, procedi nel seguente modo:

  • Imposta una priorità più alta per questo job rispetto a tutti gli altri job: se le risorse sono scarse, lo scheduler di GKE sostituisce i job con priorità inferiore per pianificare un job con priorità più alta. In questo modo, il carico di lavoro prioritario più elevato riceve tutte le risorse di cui ha bisogno (fino al totale delle risorse disponibili nel cluster). Per scoprire di più, consulta Priorità e prelazione dei pod.
  • Configura esclusione di manutenzione: un'esclusione di manutenzione è un periodo di tempo non ricorrente durante il quale è vietata la manutenzione automatica. Per scoprire di più, consulta Esclusioni dalla manutenzione.
  • Utilizza i pod con tempo di esecuzione esteso in Autopilot: utilizza i pod con tempo di esecuzione esteso per un periodo di tolleranza fino a sette giorni prima che GKE interrompa i pod per riduzioni o upgrade dei nodi.

Questi consigli contribuiscono a ridurre al minimo le interruzioni, ma non a evitarle. Ad esempio, può verificarsi ancora una preemption a causa di un guasto hardware o per la deframmentazione. Analogamente, l'impostazione di un'esclusione dalla manutenzione GKE non impedisce gli eventi di manutenzione di Compute Engine.

Best practice:

Salva spesso i checkpoint e aggiungi codice allo script di addestramento per iniziare dall'ultimo checkpoint al riavvio.

Gestire l'interruzione a causa della manutenzione dei nodi

I nodi GKE che ospitano le TPU sono soggetti a eventi di manutenzione o altre interruzioni che potrebbero causare l'arresto dei nodi. Nei cluster GKE con il piano di controllo che esegue la versione 1.29.1-gke.1425000 e successive, puoi ridurre l'interruzione dei carichi di lavoro configurando GKE in modo che li termini in modo corretto.

Per comprendere, configurare e monitorare gli eventi di interruzione che potrebbero verificarsi sui nodi GKE che eseguono carichi di lavoro di AI/ML, consulta Gestire l'interruzione dei nodi GKE per GPU e TPU.

Massimizzare l'utilizzo delle TPU

Per massimizzare il tuo investimento nelle TPU, pianifica una combinazione di priorità dei job e mettili in coda per massimizzare il tempo di funzionamento delle TPU. Per la pianificazione e la prelazione a livello di job, devi utilizzare un componente aggiuntivo di Kubernetes che orchestra i job in code.

Best practice:

Utilizza Kueue per orchestrare i job in code.

Passaggi successivi