Questo documento descrive lo 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 workload. Lo slicing dinamico contribuisce a migliorare l'utilizzo delle risorse TPU riducendo il tempo di avvio del workload fino a cinque volte e il tempo di recupero fino a 4, 5 volte.
Lo slicing dinamico è destinato ai tecnici di machine learning (ML) e ai tecnici della piattaforma che vogliono ottimizzare l'utilizzo delle TPU, ridurre il tempo di provisioning e migliorare la tolleranza di errore per i workload di addestramento e inferenza su larga scala.
Prima di leggere questo documento, dovresti acquisire familiarità con quanto segue:
- TPU in GKE.
- Panoramica della modalità TPU All Capacity. Le funzionalità di slicing dinamico sono disponibili esclusivamente sulle TPU che utilizzano la modalità All Capacity.
Che cos'è lo slicing dinamico?
Lo slicing dinamico è una funzionalità di ottimizzazione delle TPU di GKE che disaccoppia il provisioning dell'hardware TPU fisico e statico dall'allocazione delle sezioni TPU in fase di runtime quando vengono pianificati i workload.
Quando utilizzi topologie TPU statiche, i node pool GKE sono associati 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 è interessato. Inoltre, la topologia del workload deve corrispondere esattamente alla topologia TPU del pool di nodi per essere pianificata, il che può richiedere un frequente nuovo provisioning dell'infrastruttura TPU per workload diversi.
Lo slicing dinamico consente a GKE di configurare le sezioni TPU in fase di runtime quando vengono pianificati i workload. Anziché creare manualmente i node pool con la topologia TPU esatta richiesta per ogni nuovo workload, esegui il pre-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 sub-block. Un blocco secondario rappresenta un gruppo di 16 nodi di VM TPU senza una mesh di topologia Inter-Chip Interconnect (ICI) attiva. In fase di runtime, quando i workload vengono pianificati, lo slicing dinamico di GKE riconfigura l'interconnessione di rete TPU per unire più pool di nodi nella sezione TPU di grandi dimensioni richiesta o per suddividere i pool di nodi in modo da formare sezioni TPU più piccole. Questa riconfigurazione crea la topologia multidimensionale precisa richiesta da un workload in pochi secondi.
Vantaggi dello slicing dinamico
L'implementazione di un'architettura TPU dinamica in GKE offre i seguenti vantaggi:
- Recupero più rapido dei workload: se si verifica un guasto hardware fisico, GKE isola il problema in una singola partizione. Il controller di GKE Slice rimodella automaticamente la sezione 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 accelerato dei job: le sezioni del workload possono essere create in modo dinamico, il che offre un miglioramento fino a cinque volte della latenza di avvio dei job rispetto alla creazione di pool di nodi statici.
- Isolamento degli errori: gli errori hardware sono isolati nella partizione specifica in cui si verifica l'errore. Questo isolamento aiuta a proteggere gli altri job simultanei nel cluster da errori a cascata.
- Utilizzo ottimizzato delle risorse: lo slicing dinamico aiuta a eliminare la capacità bloccata o sottoutilizzata. Poiché le sezioni sono configurate in modo da soddisfare le esigenze dei workload, lo slicing dinamico aiuta a massimizzare l'utilizzo del parco risorse e a ridurre al minimo l'hardware inattivo.
- Orchestrazione dichiarativa: lo slicing dinamico utilizza risorse e annotazioni personalizzate native di Kubernetes, come
JobSete Kueue. Questo approccio gestisce automaticamente il networking di basso livello e l'orchestrazione dell'hardware.
Configurazioni di slicing dinamico
Lo slicing dinamico offre le seguenti configurazioni:
Super-slicing dinamico: combina più pool di nodi TPU fisicamente separati e pre-provisionati per formare un'unica sezione virtuale al momento della pianificazione del workload. Ad esempio, puoi combinare due pool di nodi
4x4x4per formare una topologia4x4x8. Questa funzionalità ti consente di creare sezioni uguali o superiori a una topologia4x4x4. Questa configurazione richiede la versione 1.35.2-gke.1842000 o successive. Puoi utilizzare il super-slicing dinamico per addestrare modelli foundation di grandi dimensioni che superano la capacità di un singolo blocco hardware fisico.Il controller di sezione orchestra le riconfigurazioni fisiche all'interno del fabric di rete dell'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 workload, i sottoblocchi combinati funzionano come un'unica mesh toroidale. In una mesh toroidale, le connessioni si avvolgono. I chip sul bordo destro si collegano direttamente ai chip sul bordo sinistro e la parte superiore si collega a quella inferiore. Se visualizzassi questa disposizione, formerebbe la forma di un toro (una forma ad anello).
Suddivisione dinamica in sezioni: suddivide un singolo pool di nodi TPU di cui è stato eseguito il provisioning in più unità indipendenti più piccole a livello di workload. La suddivisione dinamica in sezioni secondarie consente di creare topologie più piccole all'interno di un singolo blocco secondario, in particolare
2x2x1,2x2x2,2x2x4e2x4x4. Ad esempio, puoi partizionare un blocco secondario4x4x4in una sezione secondaria2x2x4e due sezioni secondarie2x2x2. Questa configurazione richiede la versione 1.36.0-gke.3712000 o successive nel canale rapido.Con il sub-slicing dinamico, esegui più workload su un singolo pool di nodi fisico. Ad esempio, puoi eseguire contemporaneamente l'ottimizzazione, la sperimentazione e l'inferenza online. Il sub-slicing fornisce l'isolamento elettrico e di rete tra queste sezioni secondarie, il che aiuta a isolare gli errori o gli impatti sulle prestazioni tra i workload.
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, che è un modello di provisioning dei node pool a tolleranza di errore. Questo modello converte tutta la capacità della TPU in pool di nodi composti da gruppi di 16 nodi di VM Ironwood (TPU7x), il che ti consente di continuare il provisioning e l'utilizzo di cubi anche parzialmente non integri.
- Controller di sezioni: un controller di risorse personalizzate Kubernetes in esecuzione all'interno del control plane GKE che gestisce lo slicing dinamico. Il controller dello slice gestisce il ciclo di vita di una risorsa personalizzata Slice, che rappresenta uno slice dinamico (gestione della creazione, del monitoraggio continuo e dell'eliminazione). Inoltre, propaga 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 sezione logica e avvia la configurazione dinamica dei link tra nodi (ICI e OCS) per formare la topologia TPU richiesta. Questo processo unisce più blocchi secondari (super-slicing) o isola una topologia più piccola all'interno di un singolo blocco secondario (sub-slicing). Puoi controllare l'avanzamento o l'integrità della formazione dello slice dinamico 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 del super-slicing dinamico (topologie uguali o superiori a
4x4x4), utilizza la versione 1.35.2-gke.1842000 o successiva. - Per la configurazione del sub-slicing dinamico (topologie più piccole di
4x4x4), utilizza la versione 1.36.0-gke.3712000 o successiva.
- Per la configurazione del super-slicing dinamico (topologie uguali o superiori a
- Utilizza la versione Ironwood (TPU7x).
- Utilizza l'immagine sistema operativo Container-Optimized OS per i nodi.
- Per utilizzare il provisioning incrementale, utilizza le prenotazioni in modalità Tutte le capacità. La modalità di capacità All è 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 individuare eventuali eventi di manutenzione in attesa. Se uno dei tuoi 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 la suddivisione in sezioni.
Utilizza gli scheduler per lo slicing dinamico
Per utilizzare lo slicing dinamico, puoi utilizzare una delle seguenti opzioni:
- Utilizza il tuo scheduler per gestire le risorse personalizzate Slice. Questa opzione è utile se hai requisiti di pianificazione complessi o se vuoi integrare lo slicing dinamico con la tua infrastruttura di pianificazione esistente. Per iniziare, consulta Utilizza lo slicing dinamico con uno scheduler personalizzato.
- Utilizza uno scheduler per creare automaticamente una risorsa personalizzata Slice. Puoi configurare Kueue e la pianificazione sensibile alla topologia (TAS) per creare automaticamente una risorsa personalizzata Slice. Per iniziare, consulta Pianifica gli slice dinamici con Kueue e TAS.
Passaggi successivi
- Richiedi capacità TPU in modalità All Capacity.
- Pianifica gli slice dinamici con Kueue e TAS.
- Utilizza lo slicing dinamico con uno scheduler personalizzato.
- Esegui il deployment dei workload Cloud TPU con lo slicing dinamico in Cluster Toolkit.