Questa pagina illustra Cloud TPU con Google Kubernetes Engine (GKE). Le TPU (Tensor Processing Unit) sono circuiti integrati per applicazioni specifiche (ASIC) sviluppati da Google e utilizzati per accelerare i carichi di lavoro di machine learning (ML) che utilizzano framework come TensorFlow, PyTorch e JAX.
Prima di utilizzare le TPU in GKE, ti consigliamo di scoprire come funzionano gli acceleratori di machine learning con l'introduzione a Cloud TPU.
Questa pagina ti aiuta a comprendere le nozioni di base di Cloud TPU con Google Kubernetes Engine (GKE), inclusa la terminologia, i vantaggi delle TPU e alcune considerazioni sulla pianificazione dei workload.
Per scoprire come configurare Cloud TPU in GKE, consulta le seguenti risorse:
- Pianificare le TPU in GKE
- Esegui il deployment dei carichi di lavoro TPU in GKE Autopilot
- Esegui il deployment dei carichi di lavoro TPU in GKE Standard
Vantaggi dell'utilizzo delle TPU in GKE
GKE fornisce il supporto completo per la gestione del ciclo di vita dei nodi TPU e pool di nodi, inclusa la creazione, la configurazione e l'eliminazione delle VM TPU. GKE supporta anche le VM spot e l'utilizzo di Cloud TPU riservate. I vantaggi dell'utilizzo delle TPU in GKE includono:
- Ambiente operativo coerente: puoi utilizzare una singola piattaforma per tutto il machine learning e altri carichi di lavoro.
- Upgrade automatici: GKE automatizza gli aggiornamenti delle versioni, il che consente di ridurre il sovraccarico operativo.
- Bilanciamento del carico: GKE distribuisce il carico, riducendo così la latenza e migliorando l'affidabilità.
- Scalabilità reattiva: GKE scala automaticamente le risorse TPU per soddisfare le esigenze dei tuoi carichi di lavoro.
- Gestione delle risorse: con Kueue, un sistema di coda dei job nativo di Kubernetes, puoi gestire le risorse su più tenant all'interno della tua organizzazione utilizzando la coda, la preemption, la priorità e la condivisione equa.
Vantaggi dell'utilizzo di TPU Trillium (v6e)
TPU Trillium (v6e) è l'acceleratore di AI di ultima generazione di Cloud TPU. In tutte le interfacce tecniche (API, log) e nella documentazione di GKE, TPU Trillium (v6e) viene indicata come v6e, che rappresenta la sesta generazione di TPU di Google.
- TPU v6e aumenta le prestazioni di calcolo per chip rispetto a TPU v5e.
- TPU v6e aumenta la capacità e la larghezza di banda della memoria ad alta larghezza di banda (HBM), nonché la larghezza di banda dell'interconnessione tra chip (ICI) rispetto a TPU v5e.
- TPU v6e è dotata di SparseCore di terza generazione, un acceleratore specializzato per l'elaborazione di incorporamenti di grandi dimensioni comuni nei workload di ranking e consigli avanzati.
- TPU v6e è oltre il 67% più efficiente dal punto di vista energetico rispetto a TPU v5e.
- TPU v6e può scalare fino a 256 TPU in un'unica sezione TPU a larghezza di banda elevata e bassa latenza.
Per scoprire di più sui vantaggi di TPU Trillium, leggi il post del blog sull'annuncio della versione 6e di TPU. Per iniziare la configurazione delle TPU, consulta Pianificare le TPU in GKE.
Terminologia relativa alle TPU in GKE
Questa pagina utilizza la seguente terminologia relativa alle TPU:
- Tipo di TPU: il tipo di Cloud TPU, ad esempio v5e.
- Nodo sezione TPU:un nodo Kubernetes rappresentato da una singola VM con uno o più chip TPU interconnessi.
- Pool di nodi con slice TPU:un gruppo di nodi Kubernetes all'interno di un cluster che hanno tutti la stessa configurazione TPU.
- Topologia TPU: il numero e la disposizione fisica dei chip TPU in una sezione TPU.
- Atomico: GKE tratta tutti i nodi interconnessi come una singola unità. Durante le operazioni di scalabilità, GKE riduce a zero l'intero insieme di nodi e ne crea di nuovi. Se una macchina del gruppo smette di funzionare o viene terminata, GKE ricrea l'intero insieme di nodi come nuova unità.
- Impossibile modificarli: non puoi aggiungere manualmente nuovi nodi all'insieme di nodi interconnessi. Tuttavia, puoi creare un nuovo pool di nodi con la topologia TPU che preferisci e pianificare i workload nel nuovo pool di nodi.
Tipo di pool di nodi di slice TPU
GKE supporta due tipi di pool di nodi TPU:
Il tipo e la topologia della TPU determinano se il nodo della sezione TPU può essere multi-host o mono-host. Ti consigliamo di:
- Per i modelli su larga scala, utilizza i nodi di slice TPU multi-host
- Per i modelli di piccole dimensioni, utilizza i nodi di slice TPU a host singolo
Node pool di sezioni TPU multi-host
Un node pool di sezioni TPU multi-host è un pool di nodi contenente due o più VM TPU interconnesse. A ogni VM è collegato un dispositivo TPU. Le TPU in
una sezione TPU multi-host sono connesse tramite un'interconnessione ad alta velocità (ICI). Una volta creato un
pool di nodi di slice TPU multi-host, non puoi aggiungere nodi. Ad esempio,
non puoi creare un pool di nodi v4-32
e poi aggiungere un altro nodo Kubernetes (VM TPU) al pool di nodi. Per aggiungere un altro slice TPU a un
cluster GKE, devi creare un nuovo pool di nodi.
Le VM in un pool di nodi di sezione TPU multi-host vengono trattate come un'unica unità atomica. Se GKE non è in grado di eseguire il deployment di un nodo nella sezione, non viene eseguito il deployment di nessun nodo nel nodo della sezione TPU.
Se è necessario riparare un nodo all'interno di una sezione TPU multi-host, GKE spegne tutte le VM nella sezione TPU, costringendo all'espulsione tutti i pod Kubernetes nel workload. Una volta che tutte le VM nel segmento TPU sono attive e in esecuzione, i pod Kubernetes possono essere pianificati sulle VM nel nuovo segmento TPU.
Il seguente diagramma mostra una sezione TPU multi-host v5litepod-16
(v5e). Questo slice TPU ha quattro VM. Ogni VM nella sezione TPU ha quattro chip TPU v5e collegati con interconnessioni ad alta velocità (ICI) e ogni chip TPU v5e ha un Tensor Core.
Il seguente diagramma mostra un cluster GKE contenente un
sezione TPU v5litepod-16
(v5e) (topologia: 4x4
) e un
sezione TPU v5litepod-8
(v5e) (topologia: 2x4
):
Pool di nodi di sezioni TPU a host singolo
Un pool di nodi con sezione a singolo host è un pool di nodi contenente una o più VM TPU indipendenti. A ogni VM è collegato un dispositivo TPU. Sebbene le VM all'interno di un pool di nodi di slice con un solo host possano comunicare tramite la rete del data center (DCN), le TPU collegate alle VM non sono interconnesse.
Il seguente diagramma mostra un esempio di uno slice TPU a host singolo contenente sette macchine v4-8
:
Caratteristiche delle TPU in GKE
Le TPU hanno caratteristiche uniche che richiedono una pianificazione e una configurazione speciali.
Topologia
La topologia definisce la disposizione fisica delle TPU all'interno di una sezione TPU. GKE esegue il provisioning di una sezione TPU in topologia bidimensionale o tridimensionale, a seconda della versione della TPU. Specifica una topologia come il numero di chip TPU in ogni dimensione, come segue:
Per le TPU v4 e v5p pianificate in pool di nodi di sezioni TPU multi-host, definisci la
topologia in tuple di 3 elementi ({A}x{B}x{C}
), ad esempio 4x4x4
. Il prodotto di
{A}x{B}x{C}
definisce il numero di chip TPU nel pool di nodi. Ad esempio, puoi
definire piccole topologie con meno di 64 chip TPU con forme di topologia come
2x2x2
,2x2x4
o 2x4x4
. Se utilizzi topologie più grandi con più di 64 chip TPU, i valori assegnati a {A}, {B} e {C} devono soddisfare le seguenti condizioni:
- {A}, {B} e {C} devono essere multipli di quattro.
- La topologia più grande supportata per la versione 4 è
12x16x16
e per la versione 5p è16x16x24
. - I valori assegnati devono mantenere il pattern A ≤ B ≤ C. Ad esempio,
4x4x8
o8x8x8
.
Tipo di macchina
I tipi di macchine che supportano le risorse TPU seguono una convenzione di denominazione che include la versione TPU e il numero di chip TPU per sezione del nodo, ad esempioct<version>-hightpu-<node-chip-count>t
. Ad esempio, il tipo di macchina ct5lp-hightpu-1t
supporta TPU v5e e contiene un solo chip TPU.
Modalità con privilegi
La modalità Con privilegi sostituisce molte altre impostazioni di sicurezza in securityContext
. Per accedere alle TPU, i container in esecuzione nei nodi GKE
in:
- Per le versioni 1.28 e precedenti è necessario attivare la modalità privilegiata.
- Le versioni 1.28 o successive non richiedono la modalità con privilegi.
Come funzionano le TPU in GKE
La gestione e la definizione delle priorità delle risorse Kubernetes trattano le VM su TPU come gli altri tipi di VM. Per richiedere chip TPU, utilizza il nome della risorsa google.com/tpu
:
resources:
requests:
google.com/tpu: 4
limits:
google.com/tpu: 4
Quando utilizzi le TPU in GKE, devi considerare le seguenti caratteristiche:
- Una VM può accedere a un massimo di 8 chip TPU.
- Una sezione TPU contiene un numero fisso di chip TPU, il cui numero dipende dal tipo di macchina TPU scelto.
- Il numero di
google.com/tpu
richiesti deve essere uguale al numero totale di chip TPU disponibili sul nodo della sezione TPU. Qualsiasi contenutore in un pod GKE che richiede TPU deve consumare tutti i chip TPU nel nodo. In caso contrario, il deployment non riesce perché GKE non può consumare parzialmente le risorse TPU. Considera i seguenti scenari:- Il tipo di macchina
ct5l-hightpu-8t
ha un singolo nodo di sezione TPU con 8 chip TPU, quindi su un nodo puoi:- Può eseguire il deployment di un pod GKE che richiede otto chip TPU.
- Impossibile eseguire il deployment di due pod GKE che richiedono ciascuno quattro chip TPU.
- Il tipo di macchina
ct5lp-hightpu-4t
con una topologia2x4
contiene due nodi di sezione TPU con quattro chip TPU ciascuno, per un totale di otto chip TPU. Con questo tipo di macchina puoi:- Non è possibile eseguire il deployment di un pod GKE che richiede otto chip TPU sui nodi di questo pool di nodi.
- Può eseguire il deployment di due pod che richiedono ciascuno quattro chip TPU, ogni pod su uno dei due nodi di questo pool di nodi.
- TPU v5e con topologia 4x4 ha 16 chip TPU in quattro nodi. Il carico di lavoro GKE Autopilot che seleziona questa configurazione deve richiedere quattro chip TPU in ogni replica, da una a quattro repliche.
- Il tipo di macchina
- Nei cluster standard, è possibile pianificare più pod Kubernetes su una VM, ma solo un contenitore in ogni pod può accedere ai chip TPU.
- Per creare pod kube-system, come kube-dns, ogni cluster standard deve avere almeno un pool di nodi di slice non TPU.
- Per impostazione predefinita, i nodi delle sezioni TPU hanno l'attributo
google.com/tpu
taint che impedisce la pianificazione di workload non TPU sui nodi delle sezioni TPU. I workload che non utilizzano le TPU vengono eseguiti su nodi non TPU, liberando risorse di calcolo sui nodi della sezione TPU per il codice che utilizza le TPU. Tieni presente che l'alterazione non garantisce che le risorse TPU vengano utilizzate completamente. - GKE raccoglie i log emessi dai container in esecuzione sui nodi della sezione TPU. Per scoprire di più, consulta Logging.
- Le metriche di utilizzo delle TPU, come le prestazioni del runtime, sono disponibili in Cloud Monitoring. Per scoprire di più, consulta Osservabilità e metriche.
Passaggi successivi
- Pianifica le TPU in GKE per iniziare la configurazione delle TPU.
- Scopri le best practice per l'utilizzo di Cloud TPU per le tue attività di machine learning.
- Sviluppa il machine learning su larga scala su Cloud TPU con GKE.
- Pubblica modelli linguistici di grandi dimensioni con KubeRay su TPU.