Informazioni sul dynamic slicing di GKE

Questo documento descrive il slicing dinamico in Google Kubernetes Engine (GKE) per Cloud TPU. Lo slicing dinamico migliora l'efficienza e la flessibilità delle TPU disaccoppiando il provisioning delle TPU dalle esigenze di slice TPU dei carichi di lavoro. Lo slicing dinamico contribuisce a migliorare l'utilizzo delle risorse TPU riducendo i tempi di avvio dei carichi di lavoro fino a cinque volte e i tempi di ripristino fino a 4, 5 volte.

Lo slicing dinamico è destinato agli ingegneri di machine learning (ML) e agli ingegneri di piattaforma che vogliono ottimizzare l'utilizzo delle TPU, ridurre i tempi di provisioning e migliorare la tolleranza agli errori per i carichi di lavoro di addestramento e inferenza su larga scala.

Prima di leggere questo documento, devi avere familiarità con quanto segue:

Che cos'è lo slicing dinamico?

Lo slicing dinamico è una funzionalità di ottimizzazione delle TPU GKE che disaccoppia il provisioning hardware delle TPU fisiche e statiche dall'allocazione delle slice TPU in fase di runtime quando vengono pianificati i carichi di lavoro.

Quando utilizzi le topologie TPU statiche, i node pool GKE sono vincolati alla topologia specifica configurata durante la creazione. A causa di questa limitazione, se un nodo in un pool statico non funziona, l'intero pool di nodi viene interessato. Inoltre, per la pianificazione, la topologia del carico di lavoro deve corrispondere esattamente alla topologia TPU del pool di nodi, il che può richiedere il riprovisioning frequente dell'infrastruttura TPU per diversi carichi di lavoro.

Lo slicing dinamico consente a GKE di configurare le slice TPU in fase di runtime quando vengono pianificati i carichi di lavoro. Anziché creare manualmente node pool con la topologia TPU esatta richiesta per ogni nuovo carico di lavoro, esegui il provisioning dell'intera capacità TPU in node pool granulari di dimensioni fisse. Per Ironwood (TPU7x), ogni pool di nodi è costituito da una topologia 4x4x4, nota anche come sottoblocco. Un sottoblocco rappresenta un gruppo di 16 VM TPU senza una mesh di topologia Inter-Chip Interconnect (ICI) attiva. In fase di runtime, quando vengono pianificati i carichi di lavoro, lo slicing dinamico GKE riconfigura l'interconnessione di rete TPU per unire più node pool nella slice TPU di grandi dimensioni richiesta o per suddividere i node pool per formare slice TPU più piccole. Questa riconfigurazione crea in pochi secondi la topologia multidimensionale precisa richiesta da un carico di lavoro.

Vantaggi dello slicing dinamico

L'implementazione di un'architettura TPU dinamica in GKE offre i seguenti vantaggi:

  • Recupero più rapido dei carichi di lavoro: se si verifica un guasto hardware fisico, GKE isola il problema in una singola partizione. Il controller di slice GKE rimodella automaticamente la slice attiva e riconfigura la rete per sostituire la partizione difettosa con una di riserva integra. Questo processo migliora la resilienza o il tempo medio di ripristino (MTTR) fino a 4,5 volte rispetto alla ricreazione di un intero pool di nodi.
  • Avvio più rapido dei job: le slice dei carichi di lavoro possono essere formate dinamicamente, il che offre un miglioramento fino a cinque volte della latenza di avvio dei job rispetto alla creazione di node pool statici.
  • Isolamento dei guasti: i guasti hardware sono isolati nella partizione specifica in cui si verifica il guasto. Questo isolamento aiuta a proteggere altri job simultanei nel cluster da guasti a cascata.
  • Utilizzo ottimizzato delle risorse: lo slicing dinamico aiuta a eliminare la capacità inutilizzata o sottoutilizzata. Poiché le slice sono configurate in modo da soddisfare le esigenze dei carichi di lavoro, lo slicing dinamico contribuisce a massimizzare l'utilizzo del parco risorse e a ridurre al minimo l'hardware inattivo.
  • Orchestrazione dichiarativa: lo slicing dinamico utilizza risorse personalizzate e annotazioni native di Kubernetes, come JobSet e Kueue. Questo approccio gestisce automaticamente l'orchestrazione di rete e hardware di basso livello.

Configurazioni di slicing dinamico

Lo slicing dinamico offre le seguenti configurazioni:

  • Super-slicing dinamico: combina più node pool TPU pre-provisionati e fisicamente separati per formare una singola slice virtuale al momento della pianificazione del carico di lavoro. Ad esempio, puoi combinare due node pool 4x4x4 per formare una topologia 4x4x8. Questa funzionalità ti consente di creare slice uguali o maggiori di una topologia 4x4x4. Questa configurazione richiede la versione 1.35.2-gke.1842000 o successive. Puoi utilizzare il super-slicing dinamico per addestrare modelli di base di grandi dimensioni che superano la capacità di un singolo blocco hardware fisico.

    Il controller di slice orchestra le riconfigurazioni fisiche all'interno della rete Optical Circuit Switch (OCS). Riconfigurando dinamicamente l'OCS, GKE estende la rete Inter-Chip Interconnect (ICI) su rack hardware indipendenti. Dal punto di vista dei carichi di lavoro, i sottoblocchi combinati funzionano come una singola mesh toroidale. In una mesh toroidale, le connessioni si avvolgono. I chip sul bordo destro si ricollegano direttamente ai chip sul bordo sinistro e la parte superiore si collega alla parte inferiore. Se visualizzi questa disposizione, si forma la forma di un toro (una forma ad anello).

  • Sub-slicing dinamico: partiziona un singolo node pool TPU pre-provisionato in più unità più piccole e indipendenti a livello di carico di lavoro. Il sub-slicing dinamico ti consente di creare topologie più piccole all'interno di un singolo sottoblocco, in particolare 2x2x1, 2x2x2, 2x2x4 e 2x4x4. Ad esempio, puoi partizionare un sottoblocco 4x4x4 in una sottoslice 2x2x4 e due sottoslice 2x2x2. Questa configurazione richiede la versione 1.36.0-gke.3712000 o successive nel canale rapido.

    Con il sub-slicing dinamico, puoi eseguire più carichi di lavoro su un singolo pool di nodi fisico. Ad esempio, puoi eseguire contemporaneamente la messa a punto, la sperimentazione e l'inferenza online. Il sub-slicing fornisce l'isolamento elettrico e di rete tra queste sottoslice, il che aiuta a isolare i guasti o gli impatti sulle prestazioni tra i carichi di lavoro.

Caratteristiche principali delle configurazioni di slicing dinamico

Le configurazioni di slicing dinamico hanno le seguenti caratteristiche:

  • Provisioning incrementale dei node pool: lo slicing dinamico utilizza il provisioning incrementale, un modello di provisioning dei node pool a tolleranza di errore. Questo modello converte tutta la capacità TPU in node pool costituiti da gruppi di 16 VM Ironwood (TPU7x), il che ti consente di continuare a eseguire il provisioning e l'utilizzo anche di cubi parzialmente non integri.
  • Controller di slice: un controller di risorse personalizzate Kubernetes in esecuzione all'interno del control plane GKE che gestisce lo slicing dinamico. Il slice controller gestisce il ciclo di vita di una risorsa personalizzata Slice, che rappresenta una slice dinamica (gestione della creazione, del monitoraggio continuo e dell'eliminazione). Propaga anche i dati sull'integrità dell'infrastruttura (host, ICI, OCS) alle etichette dei nodi per aiutare a identificare i nodi candidati integri.
  • Risorsa personalizzata Slice: rappresenta la slice logica e avvia la configurazione dinamica dei link tra i nodi (ICI e OCS) per formare la topologia TPU richiesta. Questo processo unisce più sottoblocchi (super-slicing) o isola una topologia più piccola all'interno di un singolo sottoblocco (sub-slicing). Puoi controllare l'avanzamento o l'integrità della formazione della slice dinamica esaminando i campi di stato della risorsa personalizzata Slice.

Requisiti

Per utilizzare lo slicing dinamico in GKE, devi soddisfare i seguenti requisiti:

  • Utilizza un cluster Standard nel canale rapido in una delle seguenti versioni:
    • Per la configurazione di super-slicing dinamico (topologie uguali o maggiori di 4x4x4), utilizza la versione 1.35.2-gke.1842000 o successive.
    • Per la configurazione di sub-slicing dinamico (topologie inferiori a 4x4x4), utilizza la versione 1.36.0-gke.3712000 o successive.
  • Utilizza la versione Ironwood (TPU7x).
  • Utilizza l'immagine Container-Optimized OS per i nodi.
  • Per utilizzare il provisioning incrementale, utilizza le prenotazioni in modalità Capacità totale. La modalità Capacità totale è una funzionalità abilitata da TPU Cluster Director.
  • Per il sub-slicing dinamico, assicurati che i nodi abbiano eventi di manutenzione in attesa. Monitora le istanze per verificare la presenza di eventi di manutenzione in attesa. Se uno dei nodi ha un evento di manutenzione in attesa con un'ora di fine compresa tra il 18 settembre 2026 e il 30 settembre 2026, devi attivare manualmente l'evento di manutenzione dell'host su questi nodi prima di poter utilizzare il sub-slicing.

Utilizzare gli scheduler per lo slicing dinamico

Per utilizzare lo slicing dinamico, puoi utilizzare una delle seguenti opzioni:

Passaggi successivi