Richiedere TPU con prenotazione futura in modalità calendario

Questa guida mostra come ottimizzare il provisioning delle Tensor Processing Unit (TPU) utilizzando la prenotazione futura in modalità calendario. La prenotazione futura in modalità calendario è un consulente e un sistema di raccomandazione integrato che può aiutarti a individuare la capacità TPU e pianificare in anticipo. Puoi richiedere capacità per un orario di inizio e una durata specifici, compresi tra 1 e 90 giorni, e il sistema di raccomandazione fornirà le date suggerite.

Questa guida è destinata a ingegneri di machine learning (ML), amministratori e operatori di piattaforme e a specialisti di dati e AI interessati a utilizzare le funzionalità di orchestrazione dei container Kubernetes per l'esecuzione di batch workload. Per maggiori informazioni sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti, consulta Ruoli e attività comuni degli utenti GKE. Google Cloud

Per saperne di più, vedi Informazioni sulla prenotazione futura in modalità calendario.

Casi d'uso

La prenotazione futura in modalità calendario è ideale per i carichi di lavoro con richieste programmate, a breve termine e ad alta domanda, come l'addestramento o i modelli di inferenza batch che richiedono un'alta disponibilità all'ora di inizio richiesta.

Se il tuo workload richiede risorse di cui viene eseguito il provisioning dinamico in base alle necessità, per un massimo di 7 giorni senza prenotazioni a lungo termine o gestione complessa delle quote, valuta la possibilità di utilizzare l'opzione di consumo flex-start. Per saperne di più, consulta Informazioni sul provisioning di GPU e TPU con avvio flessibile.

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 disporre di uno dei seguenti elementi:
    • un cluster Standard esistente che esegue la versione 1.28.3-gke.1098000 o successive.
    • un cluster Autopilot esistente che esegue la versione 1.30.3-gke.1451000 o successive.

Richiedere la prenotazione futura in modalità calendario per le TPU

La procedura per richiedere TPU con prenotazione futura in modalità calendario prevede i seguenti passaggi:

  1. Assicurati di disporre di una quota sufficiente per le risorse che non fanno parte di una prenotazione al momento della creazione delle VM, ad esempio dischi o indirizzi IP. Le richieste di prenotazione futura in modalità calendario non richiedono una quota di Compute Engine.
  2. Completa i passaggi descritti in Creare una richiesta in modalità calendario. Questi passaggi includono:
    1. Visualizza la disponibilità futura delle TPU.
    2. Crea e invia una richiesta di prenotazione futura in modalità calendario per le TPU.
    3. Attendi che Google Cloud approvi la tua richiesta.
  3. Crea un pool di nodi TPU che utilizzi la prenotazione.

Crea un node pool

Questa sezione si applica solo ai cluster Standard, perché la modalità Autopilot crea automaticamente i nodi in base ai carichi di lavoro.

Puoi utilizzare la prenotazione quando crei node pool TPU slice single-host o multi-host.

Crea un pool di nodi TPU single-host

Puoi creare un pool di nodi di slice TPU a singolo host utilizzando Google Cloud CLI.

gcloud container node-pools create NODE_POOL_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --cluster=CLUSTER_NAME \
    --node-locations=NODE_ZONES \
    --machine-type=MACHINE_TYPE \
    --reservation-affinity=specific \ This is required
    --reservation=RESERVATION

Sostituisci quanto segue:

  • NODE_POOL_NAME: il nome del nuovo pool di nodi.
  • CONTROL_PLANE_LOCATION: il nome della zona in base alla versione della TPU che vuoi utilizzare. Per identificare una località disponibile, consulta Disponibilità di TPU in GKE.
  • CLUSTER_NAME: il nome del cluster.
  • NODE_ZONES: l'elenco separato da virgole di una o più zone in cui GKE crea il pool di nodi.
  • MACHINE_TYPE: il tipo di macchina da utilizzare per i nodi. Per ulteriori informazioni sui tipi di macchina compatibili con le TPU, utilizza la tabella in Scegliere la versione di TPU.
  • RESERVATION: il nome della prenotazione del calendario da utilizzare.

Per un elenco completo di tutti i flag che puoi specificare, consulta la documentazione di riferimento di gcloud container clusters create.

Dopo aver creato un pool di nodi con la prenotazione del calendario, puoi eseguire il deployment del tuo workload come qualsiasi altro pool di nodi TPU. L'utilizzo della prenotazione futura in modalità calendario funziona come per qualsiasi altro tipo di prenotazione. Per saperne di più, consulta Utilizzo di risorse di zona prenotate.

Crea un pool di nodi TPU slice multi-host

I passaggi per creare un pool di nodi TPU slice multi-host variano a seconda che utilizzi Ironwood (TPU7x) o una versione precedente della TPU.

Ironwood (TPU7x)

Puoi creare un node pool slice TPU multi-host nella versione Ironwood (TPU7x) utilizzando Google Cloud CLI o Terraform:

gcloud

Per creare un pool di nodi TPU slice multi-host con Ironwood (TPU7x), devi prima creare una policy del carico di lavoro.

  1. 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 workload.
    • TPU_TOPOLOGY: la topologia TPU Ironwood (TPU7x). Ad esempio, 2x2x2. Per visualizzare tutte le topologie Ironwood (TPU7x) supportate, consulta la sezione relativa alla topologia.
    • 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.
  2. Crea il pool di nodi con la policy del workload:

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=us-central1 \
        --node-locations=us-central1-c \
        --machine-type=tpu7x-standard-4t \
        --reservation-affinity=specific \
        --reservation=FUTURE_RESERVATION_NAME \
        --placement-policy=WORKLOAD_POLICY
    

    Sostituisci quanto segue:

    • NODE_POOL_NAME: il nome del nuovo pool di nodi.
    • WORKLOAD_POLICY: il nome della policy del workload che hai creato.
    • FUTURE_RESERVATION_NAME: il nome della prenotazione futura.

    Questo comando crea un pool di nodi denominato NODE_POOL_NAME con le seguenti caratteristiche:

    • --machine-type=tpu7x-standard-4t specifica il tipo di macchina Ironwood (TPU7x).

Terraform

  1. Assicurati di utilizzare la versione 4.84.0 o successive del provider google.
  2. Crea una policy del workload:

    resource "google_compute_resource_policy" {
      name   = "WORKLOAD_POLICY_NAME"
      region = CLUSTER_LOCATION
      workload_policy {
        type = "HIGH_THROUGHPUT"
        accelerator_topology = "TPU_TOPOLOGY"
      }
    }
    

    Sostituisci quanto segue:

    • WORKLOAD_POLICY_NAME: un nome per la policy del workload.
    • CLUSTER_LOCATION: la località di computing per il cluster. Consigliamo di utilizzare un cluster regionale per una maggiore affidabilità del control plane Kubernetes. Puoi anche utilizzare un cluster zonale. Per maggiori informazioni, vedi Selezionare una versione e una topologia TPU.
    • TPU_TOPOLOGY: la topologia TPU Ironwood (TPU7x). Ad esempio, 2x2x2. Per visualizzare tutte le topologie Ironwood (TPU7x) supportate, consulta la sezione Pianificare le TPU.

    Per saperne di più sul riferimento google_compute_resource_policy, consulta Provider Terraform.

  3. Nella configurazione di Terraform, aggiungi il seguente blocco:

    resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" {
      provider           = google
      project            = PROJECT_ID
      cluster            = CLUSTER_NAME
      name               = POOL_NAME
      location           = CLUSTER_LOCATION
      node_locations     = [NODE_ZONES]
      initial_node_count = NUM_NODES
    
      autoscaling {
        max_node_count = MAX_NODES
        location_policy      = "ANY"
      }
      node_config {
        machine_type = MACHINE_TYPE
        reservation_affinity {
          consume_reservation_type = "SPECIFIC_RESERVATION"
          key = "compute.googleapis.com/reservation-name"
          values = [RESERVATION_LABEL_VALUES]
        }
        flex_start = false
      }
    
      placement_policy {
        policy_name = WORKLOAD_POLICY_NAME
      }
    }
    

    Sostituisci quanto segue:

    • NODE_POOL_RESOURCE_NAME: il nome della risorsa del node pool nel modello Terraform.
    • PROJECT_ID: il tuo ID progetto.
    • CLUSTER_NAME: il nome del cluster esistente a cui aggiungere il pool di nodi.
    • POOL_NAME: il nome del pool di nodi da creare.
    • NODE_ZONES: l'elenco separato da virgole di una o più zone in cui GKE crea il pool di nodi.
    • NUM_NODES: il numero di nodi nel node pool. Deve essere zero o il prodotto del numero di chip TPU diviso per quattro, perché nelle sezioni TPU multihost ogni nodo della sezione TPU ha quattro chip. Ad esempio, se TPU_TOPOLOGY è 4x8, allora ci sono 32 chip, il che significa che NUM_NODES deve essere 8. Per scoprire di più sulle topologie TPU, utilizza la tabella in Scegliere la versione della TPU.
    • TPU_TOPOLOGY: indica la topologia fisica selezionata per la sezione TPU. Il formato della topologia dipende dalla versione della TPU che stai utilizzando. Per saperne di più sulle topologie TPU, utilizza la tabella in Scegliere una topologia.

    Se vuoi, puoi utilizzare anche le seguenti variabili:

    • RESERVATION_NAME: se utilizzi una prenotazione TPU, fornisci un elenco di etichette delle risorse di prenotazione da utilizzare durante la creazione del pool di nodi. Per scoprire di più su come compilare ilRESERVATION_LABEL_VALUES nel campo reservation_affinity, consulta Provider Terraform.
    • autoscaling: crea un pool di nodi con la scalabilità automatica abilitata. Quando GKE scala unpool di nodil di sezioni TPU multi-host, lo scala in modo atomico da zero alle dimensioni massime.
      • MAX_NODES: la dimensione massima del node pool. Il valore deve essere uguale al prodotto dei valori definiti in TPU_TOPOLOGY ({A}x{B}x{C}) diviso per il numero di chip in ogni VM. Ad esempio, se TPU_TOPOLOGY è 2x2x2, il prodotto è 8. Poiché ogni VM in tpu7x-standard-4t ha 4 chip, il numero di nodi è 2.
    • spot: il pool di nodi che utilizzerà le VM spot per i nodi dello slice TPU. Questa impostazione non può essere modificata dopo la creazione del pool di nodi. Per saperne di più, consulta VM spot.
    • flex_start: il pool di nodi che utilizzerà l'opzione di consumo avvio flessibile. Questa impostazione non può essere impostata su true se spot è attivato.

Altre versioni di TPU

Puoi creare un pool di nodi slice TPU multihost nelle versioni v3, v4, v5p, v5e e Trillium (v6e) utilizzando Google Cloud CLI, Terraform o la console Google Cloud .

gcloud

  gcloud container node-pools create NODE_POOL_NAME \
      --cluster=CLUSTER_NAME \
      --location=CONTROL_PLANE_LOCATION \
      --node-locations=NODE_ZONES \
      --machine-type=MACHINE_TYPE \
      --tpu-topology=TPU_TOPOLOGY \
      --reservation-affinity=specific \
      --reservation=FUTURE_RESERVATION_NAME

Sostituisci quanto segue:

  • NODE_POOL_NAME: il nome del nuovo pool di nodi.
  • CLUSTER_NAME: il nome del cluster.
  • CONTROL_PLANE_LOCATION: il nome della zona in base alla versione della TPU che vuoi utilizzare. Per identificare una località disponibile, consulta Disponibilità di TPU in GKE.
  • NODE_ZONES: l'elenco separato da virgole di una o più zone in cui GKE crea il pool di nodi.
  • MACHINE_TYPE: il tipo di macchina da utilizzare per i nodi. Per ulteriori informazioni sui tipi di macchina compatibili con le TPU, utilizza la tabella in Scegliere la versione di TPU.
  • TPU_TOPOLOGY: la topologia TPU. Ad esempio, 2x2x2. Per visualizzare tutte le topologie TPU supportate, consulta la sezione Topologia.
  • FUTURE_RESERVATION_NAME: il nome della prenotazione futura.

Terraform

  1. Assicurati di utilizzare la versione 4.84.0 o successive del provider google.
  2. Aggiungi il seguente blocco alla configurazione Terraform:

    resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" {
      provider           = google
      project            = PROJECT_ID
      cluster            = CLUSTER_NAME
      name               = POOL_NAME
      location           = CLUSTER_LOCATION
      node_locations     = [NODE_ZONES]
      initial_node_count = NUM_NODES
    
      autoscaling {
        max_node_count = MAX_NODES
        location_policy      = "ANY"
      }
      node_config {
        machine_type = MACHINE_TYPE
        reservation_affinity {
          consume_reservation_type = "SPECIFIC_RESERVATION"
          key = "compute.googleapis.com/reservation-name"
          values = [RESERVATION_LABEL_VALUES]
        }
        flex_start = false
      }
    
      placement_policy {
        type = "COMPACT"
        tpu_topology = TPU_TOPOLOGY
      }
    }
    

    Sostituisci quanto segue:

    • NODE_POOL_RESOURCE_NAME: il nome della risorsa del node pool nel modello Terraform.
    • PROJECT_ID: il tuo ID progetto.
    • CLUSTER_NAME: il nome del cluster esistente a cui aggiungere il pool di nodi.
    • POOL_NAME: il nome del pool di nodi da creare.
    • CLUSTER_LOCATION: la località di computing del cluster. Consigliamo di utilizzare un cluster regionale per una maggiore affidabilità del control plane Kubernetes. Puoi anche utilizzare un cluster zonale. Per scoprire di più, consulta la sezione Selezionare una versione e una topologia TPU.
    • NODE_ZONES: l'elenco separato da virgole di una o più zone in cui GKE crea il pool di nodi.
    • NUM_NODES: il numero di nodi nel node pool. Deve essere zero o il prodotto del numero di chip TPU diviso per quattro, perché nelle sezioni TPU multihost ogni nodo della sezione TPU ha 4 chip. Ad esempio, se TPU_TOPOLOGY è 4x8, allora ci sono 32 chip, il che significa che NUM_NODES deve essere 8. Per scoprire di più sulle topologie TPU, utilizza la tabella in Scegliere la versione della TPU.
    • TPU_TOPOLOGY: indica la topologia fisica della sezione TPU. Il formato della topologia dipende dalla versione della TPU che stai utilizzando. Per saperne di più sulle topologie TPU, utilizza la tabella in Scegliere una topologia.

    Se vuoi, puoi utilizzare anche le seguenti variabili:

    • RESERVATION_NAME: se utilizzi la prenotazione TPU, questo è l'elenco delle etichette delle risorse di prenotazione da utilizzare durante la creazione del pool di nodi. Per scoprire di più su come compilare ilRESERVATION_LABEL_VALUES nel campo reservation_affinity, consulta Provider Terraform.
    • autoscaling: crea un pool di nodi con la scalabilità automatica abilitata. Quando GKE scala unpool di nodil di sezioni TPU multi-host, lo scala in modo atomico da zero alle dimensioni massime.
      • MAX_NODES: è la dimensione massima del node pool. Deve essere uguale al prodotto dei valori definiti in TPU_TOPOLOGY ({A}x{B}x{C}) diviso per il numero di chip in ogni VM.
    • spot: consente al pool di nodi di utilizzare le VM spot per i nodi della sezione TPU. Questo valore non può essere modificato dopo la creazione del pool di nodi. Per saperne di più, consulta VM spot.
    • flex_start: imposta il pool di nodi in modo che utilizzi l'opzione di consumo avvio flessibile. Non può essere impostato su true se spot è abilitato.

Console

Per creare un pool di nodi con TPU:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud .

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.

  3. Fai clic su Aggiungi pool di nodi.

  4. Nella sezione Dettagli del pool di nodi, seleziona la casella Specifica le località dei nodi.

  5. Seleziona il nome della zona in base alla versione della TPU che vuoi utilizzare. Per identificare una località disponibile, consulta Disponibilità di TPU in GKE.

  6. Nel riquadro di navigazione, fai clic su Nodi.

  7. Nella sezione Configurazione macchina, seleziona TPU.

  8. Nel menu a discesa Serie, seleziona una delle seguenti opzioni:

    • CT3: TPU v3, dispositivo host singolo
    • CT3P: TPU v3, sezione di pod multi-host
    • CT4P: TPU v4
    • CT5LP: TPU v5e
    • CT5P: TPU v5p
    • CT6E: TPU Trillium (v6e)
  9. Nel menu a discesa Tipo di macchina, seleziona il nome della macchina da utilizzare per i nodi. Utilizza la tabella Scegli la versione della TPU per scoprire come definire il tipo di macchina e la topologia TPU che creano un pool di nodi della sezione TPU multi-host.

  10. Nel menu a discesa Topologia TPU, seleziona la topologia fisica per la sezione TPU.

  11. Nella finestra di dialogo Modifiche necessarie, fai clic su Apporta modifiche.

  12. Assicurati che Tipo di disco di avvio sia Disco permanente standard o Disco permanente SSD.

  13. (Facoltativo) Seleziona la casella di controllo Abilita nodi sulle VM Spot per utilizzare le VM spot per i nodi nel pool di nodi.

  14. Fai clic su Crea.

Dopo aver creato un pool di nodi con la prenotazione del calendario, puoi eseguire il deployment del tuo workload come qualsiasi altro pool di nodi TPU. L'utilizzo della prenotazione futura in modalità calendario funziona come per qualsiasi altro tipo di prenotazione. Per saperne di più, consulta Utilizzo di risorse di zona prenotate.

Passaggi successivi