Questo documento spiega come eseguire il deployment e gestire i workload utilizzando la funzionalità modalità Capacità totale TPU in GKE. Le prenotazioni in modalità Capacità totale forniscono un controllo avanzato sulle risorse TPU, consentendoti di posizionare i workload con un controllo granulare all'interno della capacità riservata.
Questo documento è destinato agli ingegneri di machine learning (ML) e agli amministratori e operatori di piattaforme che vogliono utilizzare l'orchestrazione dei container Kubernetes con un controllo granulare sui deployment TPU.
Prima di leggere questo documento, assicurati di conoscere quanto segue:
Che cos'è la modalità Capacità totale TPU?
La modalità Capacità totale TPU, abilitata da TPU Cluster Director, ti offre il controllo completo della capacità TPU riservata. TPU Cluster Director è un servizio di gestione che ti offre il controllo basato sulla prenotazione delle TPU.
A differenza della precedente modalità gestita, in cui Google Cloud viene riservata una parte della capacità per gestire i guasti hardware, la modalità Capacità totale ti consente di accedere all'intera capacità delle risorse TPU riservate. Questa modalità offre una visibilità completa sullo stato dell'hardware, ma ti trasferisce anche la responsabilità della gestione dei guasti dei nodi e della manutenzione pianificata.
Per saperne di più sulle funzionalità principali della modalità Capacità totale, consulta la sezione Modalità Capacità totale nella panoramica di TPU Cluster Director.
Terminologia relativa alla modalità Capacità totale in GKE
La tabella seguente include i termini e le equivalenze definiti in base alle dimensioni di un blocco, un blocco secondario e un cubo nella versione Ironwood (TPU7x). Un cubo è una topologia 4x4x4 di chip TPU interconnessi, applicabile solo alle topologie in 3-tuple ({A}x{B}x{C}).
| Risorsa TPU | Core | Chip | Hosting | Cubi |
|---|---|---|---|---|
| 1 chip | 2 | 1 | - | - |
| 1 host | 8 | 4 | 1 | - |
| 1 blocco secondario | 128 | 64 | 16 | 1 |
| Un blocco contiene 144 blocchi secondari | 18432 | 9216 | 2304 | 144 |
Per saperne di più sulle topologie consentite in un blocco, consulta Scegliere una topologia.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il
gcloud components updatecomando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
- Assicurati di avere un cluster Standard esistente nella versione 1.34.0-gke.2201000 o successive. Per creare un nuovo cluster, consulta Creare un cluster regionale.
- Assicurati di avere una quota sufficiente per le TPU nella regione che vuoi utilizzare.
- Installa JobSet v0.2.3 o versioni successive.
Limitazioni
La modalità Capacità totale TPU in GKE supporta solo le versioni Ironwood (TPU7x).
Utilizzare la modalità Capacità totale TPU in GKE
Questa sezione descrive il flusso di lavoro per utilizzare la modalità Capacità totale TPU in GKE.
- Acquisisci familiarità con TPU Cluster Director.
- Richiedi la capacità TPU in modalità Capacità totale.
- Visualizza la topologia e lo stato di integrità delle prenotazioni in modalità Capacità totale.
- Completa il passaggio in questo documento:
- Gestisci gli eventi di manutenzione con le TPU in modalità Capacità totale.
- Segnala e ripara gli host difettosi con le TPU in modalità Capacità totale.
Creare un pool di nodi all'interno di una prenotazione in modalità Capacità totale
La modalità Capacità totale su GKE ti consente di creare node pool nei seguenti modi:
- Un pool di nodi in cui GKE seleziona il blocco o il blocco secondario nella prenotazione in modalità Capacità totale TPU.
- Un pool di nodi con che ha come target un blocco o un blocco secondario specifico all'interno di una prenotazione in modalità Capacità totale TPU.
GKE seleziona il blocco o il blocco secondario nella prenotazione in modalità Capacità totale TPU
In questa modalità, GKE seleziona il posizionamento del pool di nodi all'interno della prenotazione in modalità Capacità totale TPU. Questa procedura è simile alla creazione di node pool con altre opzioni di provisioning TPU, come le VM on demand o spot.
Per creare un pool di nodi, utilizza il comando gcloud container node-pools create con il flag --reservation.
Specifica il nome completo della risorsa della prenotazione TPU come valore del flag --reservation.
Per un esempio di comando di creazione di un pool di nodi, consulta Creare manualmente un node pool.
Target di un blocco o di un blocco secondario all'interno di una prenotazione
La modalità Capacità totale TPU ti consente di scegliere come target un blocco o un blocco secondario specifico all'interno della prenotazione TPU per i workload paralleli. Questa funzionalità è utile per i workload che richiedono una stretta vicinanza tra i chip TPU per ridurre al minimo la latenza.
Consulta le configurazioni di blocchi, blocchi secondari e host disponibili. Completa i passaggi descritti nel documento Visualizzare la topologia e lo stato di integrità delle prenotazioni in modalità Capacità totale.
Crea una policy del workload:
gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \ --type=HIGH_THROUGHPUT \ --accelerator-topology=TPU_TOPOLOGY \ --project=PROJECT_ID \ --region=REGIONSostituisci quanto segue:
WORKLOAD_POLICY_NAME: un nome per la policy del workload.TPU_TOPOLOGY: la topologia TPU Ironwood (TPU7x). Ad esempio,2x2x2. Per visualizzare tutte le topologie Ironwood (TPU7x) supportate, consulta il Piano per le TPU in GKE.PROJECT_ID: l' Google Cloud ID progetto.REGION: la regione per la policy del workload. Una policy del workload è una risorsa di regione e può essere riutilizzata nei node pool che condividono la stessa topologia.
Per creare un pool di nodi e scegliere come target un blocco o un blocco secondario specifico della prenotazione, utilizza il flag
--reservationper specificare il nome completo della risorsa del blocco o del blocco secondario di destinazione all'interno della prenotazione.Per scegliere come target un blocco specifico all'interno della prenotazione, utilizza il seguente comando:
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --machine-type=tpu7x-standard-4t \ --placement-policy=WORKLOAD_POLICY_NAME \ --zone=ZONE \ --reservation=project/PROJECT/reservation/RESERVATION_NAME/reservationBlocks/BLOCK_NAMEPer scegliere come target un blocco secondario specifico all'interno di un blocco, utilizza il seguente comando:
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --machine-type=tpu7x-standard-4t \ --placement-policy=WORKLOAD_POLICY_NAME \ --zone=ZONE \ --reservation=project/PROJECT/reservation/RESERVATION_NAME/reservationBlocks/BLOCK_NAME/reservationSubBlocks/SUB_BLOCK_NAMESostituisci quanto segue:
NODE_POOL_NAME: il nome del nuovo pool di nodi.CLUSTER_NAME: il nome del cluster GKE.WORKLOAD_POLICY_NAME: il nome della policy del workload che hai creato.ZONE: la zona del pool di nodi, ad esempious-central1-a.PROJECT: l' Google Cloud ID progetto.RESERVATION_NAME: il nome della prenotazione TPU.BLOCK_NAME: il blocco specifico all'interno della prenotazione.SUB_BLOCK_NAME: il blocco secondario specifico all'interno della prenotazione.
Nei comandi precedenti,
Pianificare workload
Dopo aver creato un pool di nodi con VM TPU in modalità Capacità totale, puoi eseguire il deployment del workload come qualsiasi altro pool di nodi TPU. Per la modalità Capacità totale TPU, non ci sono ulteriori differenze nella pianificazione dei workload rispetto ai node pool che utilizzano prenotazioni standard supportate da SLO.
Per ulteriori informazioni ed esempi di workload che utilizzano le TPU, consulta Eseguire il workload sui nodi della sezione TPU e Eseguire un workload multisezione.
Gestire i guasti dei nodi
Le prenotazioni in modalità Capacità totale TPU sono prenotazioni senza riserva. Senza riserva significa che ricevi la capacità TPU completa, inclusa la parte che Google Cloud in genere viene mantenuta per i failover nella modalità di capacità gestita.
In modalità Capacità totale TPU, se una VM smette di funzionare a causa di problemi come un guasto hardware, Google Cloud viene tentato il ripristino della VM sullo stesso host (riparazione in loco). Pertanto, ti consigliamo di mantenere una capacità di riserva per consentire la riprogrammazione dei workload durante i guasti dell'infrastruttura.
Guasto e ripristino dei nodi
Quando un nodo smette di funzionare in una prenotazione in modalità Capacità totale TPU, si verificano i seguenti eventi:
- Google Cloud
avvia un evento di riparazione per l'istanza VM di Compute Engine che ha smesso di funzionare. Questa procedura tenta di ripristinare lo stato
RUNNINGdella VM e di riportare lo stato del nodo GKE aREADY. - La VM TPU entra in uno stato di riparazione e qualsiasi workload in esecuzione su quel nodo potrebbe smettere di funzionare, a seconda della policy di failover. Lo stato del pool di nodi non cambia in
ERRORanche se una o più VM riscontrano errori.
Per monitorare lo stato di integrità dei nodi:
Elenca i nodi nel pool di nodi:
kubectl get nodesI nodi che hanno smesso di funzionare hanno lo stato
NotReady.Monitora lo stato del nodo Compute Engine:
Per le VM TPU in modalità Capacità totale, utilizza
gcloud compute instances describe. Questo comando fornisce anche lo stato fisico della topologia per trovare i dettagli di host, blocchi secondari e blocchi.gcloud compute instances describe VM_NAME \ --format="table[box,title=VM-Position](resourceStatus.physical_host_topology:label=location)" \ --zone=ZONESostituisci quanto segue:
VM_NAME: il nome dell'istanza VM TPU.ZONE: la zona della VM, ad esempious-central1-a.
Per ulteriori passaggi su come recuperare le informazioni sulla topologia e sull'integrità della capacità in modalità Capacità totale, consulta Visualizzare la topologia e lo stato di integrità delle prenotazioni in modalità Capacità totale.
Gestire la manutenzione
Per gestire le potenziali interruzioni e contribuire a garantire la resilienza dei workload, puoi gestire la manutenzione dei singoli nodi utilizzando le policy di manutenzione di GKE. Per saperne di più, consulta Periodi di manutenzione ed esclusioni di manutenzione.
GKE non supporta la manutenzione di gruppo per le VM TPU in una prenotazione in modalità Capacità totale. Per eseguire la manutenzione di gruppo a livello di blocco secondario, blocco o prenotazione, utilizza le API Compute Engine. Per saperne di più, consulta Gestire gli eventi di manutenzione con le TPU in modalità Capacità totale.
Esegui la pulizia
Per evitare addebiti indesiderati al tuo Google Cloud account, elimina
i node pool TPU che non hanno più workload pianificati. Se i workload in esecuzione devono essere terminati normalmente, utilizza il comando kubectl drain per pulire i workload prima di eliminare il pool di nodi.
Elimina un pool di nodi TPU:
gcloud container node-pools delete NODE_POOL_NAME \ --location=LOCATION \ --cluster=CLUSTER_NAMESostituisci quanto segue:
NODE_POOL_NAME: il nome del pool di nodi.CLUSTER_NAME: il nome del cluster.LOCATION: la località di computing del cluster.
Passaggi successivi
- Scopri di più sulle TPU in GKE.
- Scopri come eseguire il deployment dei workload TPU in GKE Standard.
- Scopri di più su TPU Cluster Director.