Informazioni sulle TPU in GKE


Questa pagina introduce Cloud TPU con Google Kubernetes Engine (GKE). Elaborazione del tensore Le TPU (TPU) sono gli strumenti integrati per applicazioni (ASIC) 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 le considerazioni sulla pianificazione dei carichi di lavoro.

Per scoprire come configurare Cloud TPU in GKE, consulta le seguenti risorse:

Vantaggi dell'utilizzo delle TPU in GKE

GKE fornisce il supporto completo per la gestione del ciclo di vita dei nodi TPU e dei 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, riduce i costi operativi.
  • Bilanciamento del carico: GKE distribuisce il carico, riducendo così la latenza e il miglioramento dell'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.

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 della sezione TPU:un gruppo di nodi Kubernetes all'interno di un cluster che che hanno 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 un 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 nel gruppo presenta errori GKE ricrea l'intero set di nodi come nuovo 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 carichi di lavoro nel nuovo pool di nodi.

Tipo di pool di nodi della sezione 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 nodi delle sezioni TPU multi-host
  • Per i modelli di piccole dimensioni, utilizza i nodi di slice TPU a host singolo

Pool di nodi della sezione TPU multi-host

Un pool di nodi della sezione TPU multi-host è un pool di nodi che contiene due o più VM TPU interconnesse. A ogni VM è connesso 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 per poi aggiungere un altro pool di nodi (VM TPU) al pool di nodi. Per aggiungere un'ulteriore sezione 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, dei nodi 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 TPU multi-host v5litepod-16 (v5e) sezione. Questa sezione 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.

Diagramma della sezione TPU multi-host

Il seguente diagramma mostra un cluster GKE che contiene uno Sezione TPU v5litepod-16 (v5e) TPU (topologia: 4x4) e una TPU v5litepod-8 (v5e) sezione (topologia: 2x4):

Diagramma del pod TPU v5e

Pool di nodi di sezioni TPU con un solo host

Un pool di nodi sezione a host singolo è un pool di nodi contenente una o più VM TPU indipendenti. A ogni VM è connesso un dispositivo TPU. Mentre le VM all'interno di un pool di nodi con sezione dell'host singolo possono comunicare rete (DCN), le TPU collegate alle VM non sono interconnesse.

Il diagramma seguente mostra un esempio di sezione TPU a host singolo che contiene sette v4-8 macchina:

Diagramma del pool di nodi della sezione dell'host singolo

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 topologie bidimensionali o tridimensionali, a seconda la versione di TPU. Specifica una topologia come il numero di chip TPU in ogni , 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, mentre la topologia v5p è 16x16x24.
  • I valori assegnati devono mantenere A ≤ B ≤ C pattern. Ad esempio, 4x4x8 o 8x8x8.

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, la macchina il tipo ct5lp-hightpu-1t supporta TPU v5e e contiene solo un 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 tra:

  • 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 l'assegnazione della priorità delle risorse di Kubernetes trattano le VM sulle TPU come le altre VM di testo. Per richiedere chip TPU, utilizza il nome risorsa google.com/tpu:

    resources:
        requests:
          google.com/tpu: 4
        limits:
          google.com/tpu: 4

Quando utilizzi le TPU GKE, devi considerare le seguenti caratteristiche di TPU:

  • 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 richieste google.com/tpu 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 va a buon fine, 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 topologia 2x4 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.
  • 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 modello il cluster deve avere almeno un pool di nodi con sezione non TPU.
  • Per impostazione predefinita, i nodi delle sezioni TPU hanno l'attributo google.com/tpu taint che impedisce la pianificazione di carichi di lavoro non TPU sui nodi delle sezioni TPU. I carichi di lavoro 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'incompatibilità per garantire l'utilizzo completo delle risorse TPU.
  • GKE raccoglie i log emessi dai container in esecuzione sui nodi delle sezioni TPU. Per saperne di più, vedi 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