Esegui il deployment delle TPU in modalità All Capacity in GKE

Questo documento spiega come eseguire il deployment e gestire i workload utilizzando la funzionalità Modalità TPU All Capacity in GKE. Tutte le prenotazioni in modalità Capacità forniscono un controllo avanzato delle risorse TPU, che ti consente di posizionare i carichi di lavoro con un controllo granulare all'interno della capacità riservata.

Questo documento è destinato agli ingegneri di machine learning (ML) e agli amministratori e operatori della piattaforma 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à TPU All Capacity?

La modalità TPU All Capacity, 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 tue TPU.

A differenza della modalità gestita precedente, in cui Google Cloud riserva una parte della capacità per gestire i guasti hardware, la modalità Tutta la capacità ti concede l'accesso all'intera capacità delle risorse TPU riservate. Questa modalità offre una visibilità completa sullo stato dell'hardware, ma sposta anche la responsabilità della gestione degli errori dei nodi e della manutenzione pianificata su di te.

Per saperne di più sulle funzionalità principali della modalità All Capacity, consulta la sezione Modalità All Capacity nella panoramica di TPU Cluster Director.

Terminologia relativa alla modalità All Capacity in GKE

La tabella seguente include i termini e le equivalenze definiti dalle dimensioni di un blocco, un sottoblocco e un cubo nella versione Ironwood (TPU7x). Un cubo è una topologia 4x4x4 di chip TPU interconnessi, applicabile solo alle topologie in tuple di tre ({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, vedi Scegliere una topologia.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Attiva 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 comando gcloud components update. 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, vedi Creazione di un cluster regionale.
  • Assicurati di disporre di una quota sufficiente per le TPU nella regione che vuoi utilizzare.
  • Installa JobSet v0.2.3 o versioni successive.

Limitazioni

La modalità TPU All Capacity in GKE supporta solo le versioni Ironwood (TPU7x).

Utilizzare la modalità TPU All Capacity in GKE

Questa sezione descrive il flusso di lavoro per utilizzare la modalità TPU All Capacity in GKE.

  1. Acquisisci familiarità con TPU Cluster Director.
  2. Richiedi capacità TPU in modalità All Capacity.
  3. Visualizza la topologia e lo stato di integrità delle prenotazioni in modalità All Capacity.
  4. Completa il passaggio descritto in questo documento:
    1. Crea un node pool GKE
    2. Pianificare i workload
    3. Gestire gli errori dei nodi con una prenotazione in modalità All Capacity
  5. Gestisci gli eventi di manutenzione con le TPU in modalità All Capacity.
  6. Segnala e ripara gli host difettosi con le TPU in modalità All Capacity.

Crea un pool di nodi all'interno di una prenotazione in modalità All Capacity

La modalità All Capacity su GKE consente di creare node pool nei seguenti modi:

  • Un pool di nodi in cui GKE seleziona il blocco o il sottoblocco nella prenotazione di tutta la capacità TPU.
  • Un pool di nodi che ha come target un blocco o un sotto-blocco specifico all'interno di una prenotazione in modalità TPU All Capacity.

GKE seleziona il blocco o il blocco secondario nella prenotazione di tutta la capacità della TPU

In questa modalità, GKE seleziona il posizionamento del pool di nodi all'interno della prenotazione TPU All Capacity. Questo processo è 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 del pool di nodi, consulta Crea manualmente un node pool.

Targetizzare un blocco o un blocco secondario all'interno di una prenotazione

La modalità TPU All Capacity ti consente di scegliere come target un blocco o un sottoblocco specifico all'interno della prenotazione TPU per carichi di lavoro paralleli. Questa funzionalità è utile per i carichi di lavoro che richiedono una stretta vicinanza tra i chip TPU per ridurre al minimo la latenza.

  1. Visualizza le configurazioni disponibili per blocchi, sottoblocchi e host. Completa i passaggi descritti nel documento Visualizzare la topologia e lo stato di integrità delle prenotazioni in modalità Tutta la capacità.

  2. 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=REGION
    

    Sostituisci quanto segue:

    • WORKLOAD_POLICY_NAME: un nome per la policy del carico di lavoro.
    • TPU_TOPOLOGY: la topologia TPU Ironwood (TPU7x). Ad esempio, 2x2x2. Per visualizzare tutte le topologie Ironwood (TPU7x) supportate, consulta la sezione Pianificare le TPU in GKE.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • REGION: la regione della policy del workload. Una policy del workload è una risorsa di regione e può essere riutilizzata in pool di nodi che condividono la stessa topologia.
  3. Per creare un pool di nodi e scegliere come target un blocco o un sottoblocco specifico della prenotazione, utilizza il flag --reservation per specificare il nome della risorsa completo del blocco o del sottoblocco di destinazione all'interno della prenotazione.

    Per scegliere come target un blocco specifico all'interno della prenotazione, utilizza questo 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
    

    Per scegliere come target un sottoblocco 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_NAME
    

    Sostituisci quanto segue:

    • NODE_POOL_NAME: il nome del nuovo pool di nodi.
    • CLUSTER_NAME: il nome del tuo cluster GKE.
    • WORKLOAD_POLICY_NAME: il nome della policy del workload che hai creato.
    • ZONE: la zona del pool di nodi, ad esempio us-central1-a.
    • PROJECT: il tuo ID progetto Google Cloud .
    • RESERVATION_NAME: il nome della prenotazione TPU.
    • BLOCK_NAME: il blocco specifico all'interno della prenotazione.
    • SUB_BLOCK_NAME: il sottoblocco specifico all'interno della prenotazione.

    Nei comandi precedenti,

Pianifica workload

Dopo aver creato un pool di nodi con VM TPU in modalità All Capacity, puoi eseguire il deployment del tuo carico di lavoro come qualsiasi altropool di nodil TPU. Per la modalità TPU All Capacity, non ci sono ulteriori differenze nella pianificazione dei carichi di lavoro rispetto ai node pool che utilizzano prenotazioni standard supportate da SLO.

Per ulteriori informazioni ed esempi di carichi di lavoro che utilizzano le TPU, consulta Esegui il tuo carico di lavoro sui nodi delle sezioni TPU ed Esegui un carico di lavoro multi-sezione.

Gestire gli errori dei nodi

Le prenotazioni in modalità TPU All Capacity sono prenotazioni senza holdback. Nessuna 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à TPU All Capacity, se una VM non funziona a causa di problemi come un guasto hardware, Google Cloud tenta di recuperarla sullo stesso host (riparazione sul posto). Pertanto, ti consigliamo di mantenere una capacità di riserva per gestire la riprogrammazione dei workload durante gli errori dell'infrastruttura.

Errore del nodo e ripristino

Quando un nodo non funziona in una prenotazione in modalità TPU All Capacity, si verificano i seguenti eventi:

  • Google Cloud avvia un evento di riparazione per l'istanza VM di Compute Engine non riuscita. Questo processo tenta di ripristinare la VM allo stato RUNNING e riporta lo stato del nodo GKE a READY.
  • La VM TPU entra in uno stato di riparazione e qualsiasi workload in esecuzione su quel nodo potrebbe non riuscire, a seconda della relativa policy di failover. Lo stato del pool di nodi non cambia in ERROR anche se una o più delle relative VM riscontrano errori.

Per monitorare lo stato di integrità dei nodi:

  1. Elenca i nodi nel pool di nodi:

    kubectl get nodes
    

    I nodi con errore hanno lo stato NotReady.

  2. Monitora lo stato del nodo Compute Engine:

    Per le VM TPU in modalità All Capacity, utilizza gcloud compute instances describe. Questo comando fornisce anche lo stato fisico della topologia per trovare host, dettagli di blocchi e sottoblocchi.

    gcloud compute instances describe VM_NAME \
            --format="table[box,title=VM-Position](resourceStatus.physical_host_topology:label=location)" \
            --zone=ZONE
    

    Sostituisci quanto segue:

    • VM_NAME: il nome dell'istanza VM TPU.
    • ZONE: la zona della VM, ad esempio us-central1-a.

    Per altri passaggi su come recuperare le informazioni sulla topologia e sullo stato di salute della capacità della modalità Tutta la capacità, vedi Visualizzare la topologia e lo stato di salute delle prenotazioni in modalità Tutta la capacità.

Gestire la manutenzione

Per gestire potenziali interruzioni e contribuire a garantire che i tuoi workload rimangano resilienti, puoi gestire la manutenzione dei singoli nodi utilizzando le policy di manutenzione di GKE. Per maggiori informazioni, consulta Periodi di manutenzione ed esclusioni dalla manutenzione.

GKE non supporta la manutenzione di gruppo per le VM TPU in una prenotazione in modalità All Capacity. Per eseguire la manutenzione del gruppo a livello di sottoblocco, blocco o prenotazione, utilizza le API Compute Engine. Per maggiori informazioni, vedi Gestire gli eventi di manutenzione con le TPU in modalità All Capacity.

Esegui la pulizia

Per evitare addebiti indesiderati al tuo account Google Cloud , elimina i node pool TPU che non hanno più workload pianificati. Se i carichi di lavoro in esecuzione devono essere terminati normalmente, utilizza il comando kubectl drain per pulirli prima di eliminare il pool di nodi.

  1. Elimina un pool di nodi TPU:

    gcloud container node-pools delete NODE_POOL_NAME \
        --location=LOCATION \
        --cluster=CLUSTER_NAME
    

    Sostituisci quanto segue:

    • NODE_POOL_NAME: il nome del pool di nodi.
    • CLUSTER_NAME: il nome del cluster.
    • LOCATION: la posizione di computing del cluster.

Passaggi successivi