Pianifica TPU in GKE


In questa pagina viene descritto come pianificare l'utilizzo delle Tensor Processing Unit (TPU) in Google Kubernetes Engine (GKE) per ridurre il rischio di errori di configurazione delle TPU, errori di non disponibilità o interruzioni fuori quota.

Prima di utilizzare le TPU in GKE, assicurati di avere familiarità con le definizioni e la terminologia delle TPU in GKE.

Pianifica la configurazione della TPU

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

  1. Scegli una modalità operativa GKE: esegui i carichi di lavoro sulle TPU in un GKE Autopilot o Standard. Me di usare un cluster Autopilot per una gestione con Kubernetes.
  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 determinati servizi Google Cloud regioni. 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.

Ti consigliamo di utilizzare le tabelle di riferimento in questa pagina per identificare se i pool di nodi sono a host singolo o multi-host Nodi della sezione TPU.

Scegli una modalità operativa 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 carichi di lavoro.
  • Modalità Standard: gestisci 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 di 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 NUMA nodi Chip TPU massimi in un nodo di sezione TPU
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 Da 1 a 2 8
TPU v4
tpu-v4-podslice 240 407 2 4096

Standard

Versione TPU Tipo di macchina Numero di vCPU Memoria (GiB) Numero di nodi NUMA Probabilità di prerilascio
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

Esamina le specifiche e i prezzi di TPU nel Documentazione sui prezzi di Cloud TPU per decidere quale configurazione TPU usare.

Limitazioni

Tieni presenti queste limitazioni quando scegli la TPU da utilizzare:

  • 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 v5p TPU è supportata sui cluster GKE con piani di controllo in esecuzione almeno la versione 1.29.2-gke.1035000 o 1.28.7-gke.1020000.
  • Per le prenotazioni di 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

Consulta Regioni e zone TPU nella documentazione di Cloud TPU.

Standard

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

Versione TPU Tipo di macchina che inizia con Versione GKE minima Disponibilità Zona
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-a1
us-central1-a1
us-east1-c
us-east5-b1
us-west1-c
us-west4-a
us-west4-b1
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
  1. Puoi creare un pool di nodi TPU v5e a host singolo 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 con host singolo in us-west4, scegli la zona us-west4-a e utilizza tipi di macchine che iniziano con ct5lp-, come 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). Tieni presente che i tipi di macchine che iniziano con ct5l- richiedono una quota diversa rispetto ai tipi di macchine che iniziano con ct5lp-.

Scegli una topologia

Una volta scelta una versione di TPU, seleziona una topologia supportata da quel 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 a 8 chip
  • 2x2 è una sezione TPU v5e a singolo host con 4 chip

Se una topologia specifica supporta sia l'host singolo e nodi di sezione TPU multi-host, il numero di chip TPU richiesti dal tuo carico di lavoro determina il tipo di host.

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 carico di lavoro, riceverai un nodo multi-host con 4 chip TPU.
  • Richiedi 8 chip nel tuo carico di lavoro, ottieni un singolo host con 8 chip TPU.

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

  • Per l'addestramento o l'inferenza di modelli su scala ridotta, utilizza TPU v4 o TPU v5e con pool di nodi di sezione TPU con host singolo.
  • Per l'addestramento o l'inferenza di modelli su larga scala, utilizza TPU v4 o TPU v5e con multi-host Pool di nodi della sezione TPU.

Autopilot

Versione TPU Tipo di macchina Topologia Numero di chip TPU in una sezione Numero di nodi Tipo di pool di nodi
TPU v5p tpu-v5p-slice 2x2x1 4 1 Host singolo
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 Host singolo
2x2 4 1
2x4 8 1
2x4 2 1 Multi-host
4x4 16 4
4 x 8 32 8
8x8 64 16
8x16 128 32
16 x 16 256 64
TPU v5e (solo host singolo) tpu-v5-lite-device 1x1 1 1 Host singolo
2x2 4 1
2x4 8 1
TPU v4 tpu-v4-podslice2 2x2x1 4 1 Host singolo
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
  1. Viene calcolato in base al prodotto di topologia diviso 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 carico di lavoro del file manifest. Per istruzioni, consulta Eseguire il deployment dei carichi di lavoro TPU su GKE Autopilot.

Standard

Versione TPU Tipo di macchina Topologia Numero di chip TPU Numero di VM Tipo di pool di nodi
TPU v5p ct5p-hightpu-4t 2x2x1 4 1 Host singolo
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 Host singolo
ct5l-hightpu-4t 2x2 4 1 Singolo host
ct5l-hightpu-8t 2x4 8 1 Singolo host
ct5lp-hightpu-1t 1x1 1 1 Host singolo
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
8 x 16 128 32 Multi-host
16x16 256 64 Multi-host
TPU v4 ct4p-hightpu-4t 2x2x1 4 1 Host singolo
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
  1. Calcolata dividendo il prodotto della topologia per quattro.

Configurazioni avanzate

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

Prenotazione TPU

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

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

Scalabilità automatica delle TPU in GKE

GKE supporta le TPU (Tensor Processing Unit) per accelerare i carichi di lavoro di machine learning. Sia pool di nodi della sezione TPU a host singolo sia Il pool di nodi della sezione TPU multi-host supporta 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 tra zero e la dimensione massima del pool di nodi come determinato dalla --max-nodes e il --total-max-nodes e i flag facoltativi. 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 pool di nodi.

  • 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. Durante la scalabilità di nuovo, GKE rimuove tutti i pod pianificati e svuota l'intera pool di nodi a zero. Per scoprire di più su come creare un nodo della sezione TPU multi-host consulta Creare un pool di nodi.

CPU per cluster standard

Questa sezione non si applica ai cluster Autopilot perché GKE posiziona ciascuna sezione TPU sul 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 a bassa priorità devono:

  1. Imposta richieste di CPU e memoria basse per garantire che il nodo abbia abbastanza alle risorse allocabili per i carichi di lavoro TPU. Per saperne di più, vedi 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 assicurarti 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 Kubernetes specifica, configura le esigenze del pod con di CPU e memoria. Per ulteriori informazioni, vedi 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 è interrotto, tutto il lavoro eseguito dall'ultimo checkpoint andrà perso. Per diminuire la probabilità che il carico di lavoro venga interrotto:

  • Imposta una priorità più alta per questo job rispetto a tutti gli altri job: se le risorse sono scarse, lo scheduler GKE prerilascia i job con priorità più bassa 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 l'esclusione della manutenzione: un'esclusione della manutenzione non è ripetuta periodo di tempo 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.

Gestire l'interruzione a causa della manutenzione dei nodi

I nodi GKE che ospitano le TPU sono soggetti a manutenzione o altre interruzioni che potrebbero causare l'arresto del nodo. 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 interrompa in modo corretto.

Per comprendere, configurare e monitorare gli eventi di interruzione che potrebbero verificarsi sui nodi GKE che eseguono carichi di lavoro di IA/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 per Kubernetes che orchestra i job in code. Per questo caso d'uso consigliamo di utilizzare Kueue.

Passaggi successivi