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:
- 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.
- 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.
- 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.
- 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-a 1 |
us-central1-a 1 |
||||
us-east1-c |
||||
us-east5-b 1 |
||||
us-west1-c |
||||
us-west4-a |
||||
us-west4-b 1 |
||||
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 |
-
Puoi creare un pool di nodi TPU v5e a host singolo con un tipo di macchina che inizia con
ct5lp-
, ma non conct5l-
, in determinate zone (europe-west4-a
,us-east5-b
eus-west4-b
). Puoi utilizzarect5lp-hightpu-4t
con una topologia di almeno2x4
o superiore in queste zone. Per creare una TPU v5e con host singolo inus-west4
, scegli la zonaus-west4-a
e utilizza tipi di macchine che iniziano conct5lp-
, comect5lp-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 conct5l-
(ad esempioct5l-hightpu-1t
,ct5l-hightpu-4t
oct5l-hightpu-8t
). Tieni presente che i tipi di macchine che iniziano conct5l-
richiedono una quota diversa rispetto ai tipi di macchine che iniziano conct5lp-
. ↩
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 chip2x2
è 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-podslice 2 |
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-podslice 2 |
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 |
-
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}
, come8x12x16
.
- Per più di 64 chip,
-
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 |
-
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 topologia16x16
, 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:
- 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.
- Imposta nessun limite di CPU (illimitato) per assicurarti che i pod possano esplodere per utilizzare tutti i cicli inutilizzati.
- 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
- Segui Deployment di carichi di lavoro TPU in GKE per configurare Cloud TPU con GKE.
- Scopri le best practice per l'utilizzo di Cloud TPU per le tue attività di machine learning.
- Crea machine learning su larga scala sulle Cloud TPU con GKE.
- Pubblica modelli linguistici di grandi dimensioni con KubeRay su TPU.