Crea un MIG con sezioni TPU single-host

Questo documento descrive come creare un gruppo di istanze gestite (MIG) che forma sezioni TPU a host singolo. Una sezione TPU single-host viene mappata a un'istanza di macchina virtuale (VM) TPU.

Puoi anche creare una sezione TPU single-host come istanza TPU autonoma. Per saperne di più, consulta Crea un'istanza VM TPU.

Prima di iniziare

  • Esamina le limitazioni per la creazione di MIG con istanze TPU.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Seleziona la scheda relativa al modo in cui prevedi di utilizzare gli esempi in questa pagina:

    gcloud

    1. Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il comando seguente:

      gcloud init
  • Imposta una regione e una zona predefinite.
  • REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Autenticati per usare REST nella documentazione sull'autenticazione di Google Cloud .

Prerequisiti

Prima di procedere alla creazione di una sezione TPU single-host, devi:

  1. Scegli la versione della TPU: seleziona la versione della TPU adatta al tuo workload. Per un elenco delle versioni di TPU in base al tipo di workload, consulta Versioni di TPU consigliate in base ai tipi di workload.

  2. Scegli un'opzione di consumo di TPU: seleziona un'opzione di consumo più adatta al tuo workload, alla sua durata e alle tue esigenze di costo. Per un elenco della disponibilità delle opzioni di consumo in base alle versioni di TPU, consulta Opzioni di consumo di TPU.

  3. Verifica la disponibilità delle TPU nella località che preferisci: le TPU sono disponibili in regioni Google Cloud specifiche. Per utilizzare una versione di TPU, assicurati che sia disponibile nella tua regione preferita. Per un elenco delle località TPU, consulta Disponibilità TPU.

  4. Assicurati che il tuo progetto disponga di una quota TPU sufficiente: se stai creando una sezione TPU a host singolo con VM on demand, VM Flex-start o VM spot, devi disporre di una quota TPU sufficiente nella regione che vuoi utilizzare. La creazione di una sezione TPU single-host che utilizza una prenotazione TPU non richiede alcuna quota TPU, poiché la quota viene utilizzata al momento della creazione della prenotazione. Per un elenco dei nomi delle quote TPU, consulta Quota TPU e per istruzioni su come visualizzare la quota, consulta Visualizza e gestisci le quote.

  5. Scegli una topologia: seleziona una topologia supportata per la versione TPU selezionata. Per un elenco delle topologie disponibili per ogni versione di TPU, consulta Topologia TPU.

Crea un MIG con più fette TPU single-host

Per creare più VM TPU indipendenti in un MIG:

  1. Crea un template di istanza.
  2. Crea il MIG.

Crea un template di istanza

Le configurazioni dei template di istanza variano in base all'opzione di consumo che utilizzi: on demand, spot, prenotazioni o Avvio flessibile. Per ulteriori informazioni sulle opzioni di consumo, consulta Informazioni sui modelli di provisioning delle VM.

Crea un template di istanza per una VM TPU on demand

Il seguente comando crea un template di istanza che utilizza l'opzione di consumo on-demand:

gcloud

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE"
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

Sostituisci i seguenti segnaposto:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud .
  • INSTANCE_TEMPLATE_NAME: il nome del template di istanza.
  • MACHINE_TYPE: il tipo di macchina per la VM TPU (ad esempio, ct6e-standard-8t).
  • IMAGE_FAMILY: la famiglia di immagini sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il flag --image. Per saperne di più sulle immagini sistema operativo, consulta Immagini sistema operativo.
  • IMAGE_PROJECT: il progetto che contiene l'immagine sistema operativo. Per le immagini TPU, il valore è ubuntu-os-accelerator-images.

Crea un template di istanza per una VM Spot TPU

Il seguente comando crea un template di istanza che utilizza l'opzione di consumo Spot:

gcloud

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --instance-termination-action=STOP \
    --provisioning-model=SPOT \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE",
        "provisioningModel": "SPOT",
        "instanceTerminationAction": "STOP"
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

Sostituisci i seguenti segnaposto:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud .
  • INSTANCE_TEMPLATE_NAME: il nome del template di istanza.
  • MACHINE_TYPE: il tipo di macchina per la VM TPU (ad esempio, ct6e-standard-8t).
  • IMAGE_FAMILY: la famiglia di immagini sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il flag --image. Per saperne di più sulle immagini sistema operativo, consulta Immagini sistema operativo.
  • IMAGE_PROJECT: il progetto che contiene l'immagine sistema operativo. Per le immagini TPU, il valore è ubuntu-os-accelerator-images.

Crea un template di istanza per una VM con prenotazione TPU

Il seguente comando crea un template di istanza che utilizza l'opzione di consumo reservation-bound:

gcloud

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --instance-termination-action=DELETE \
    --reservation-affinity=specific \
    --provisioning-model=reservation-bound \
    --reservation=RESERVATION_NAME \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE",
        "provisioningModel": "RESERVATION_BOUND",
        "instanceTerminationAction": "DELETE"
      },
      "reservationAffinity": {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values": [
          "RESERVATION_NAME"
        ]
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

Sostituisci i seguenti segnaposto:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud .
  • INSTANCE_TEMPLATE_NAME: il nome del template di istanza.
  • MACHINE_TYPE: il tipo di macchina per la VM TPU (ad esempio ct6e-standard-8t).
  • RESERVATION_NAME: il nome di una prenotazione specifica che vuoi utilizzare. Per tutte le prenotazioni in modalità Capacità, puoi scegliere come target un blocco o un sottoblocco specificando l'URL per prenotare come segue:

    • Specifica un blocco:

      RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
      
    • Specifica un blocco secondario:

      RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
      
  • IMAGE_FAMILY: la famiglia di immagini sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il flag --image. Per ulteriori informazioni sulle immagini sistema operativo, consulta Immagini sistema operativo.

  • IMAGE_PROJECT: il progetto che contiene l'immagine sistema operativo. Per le immagini TPU, il valore è ubuntu-os-accelerator-images.

Crea un template di istanza per una VM TPU Flex-start

Il seguente comando crea un template di istanza che utilizza l'opzione di consumo avvio flessibile:

gcloud

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --instance-termination-action=DELETE \
    --provisioning-model=FLEX_START \
    --max-run-duration=DURATION \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE",
        "provisioningModel": "FLEX_START",
        "instanceTerminationAction": "DELETE",
        "maxRunDuration": {
          "seconds": "DURATION"
        }
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

Sostituisci i seguenti segnaposto:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud .
  • INSTANCE_TEMPLATE_NAME: il nome del template di istanza.
  • MACHINE_TYPE: il tipo di macchina per la VM TPU (ad esempio, ct6e-standard-8t).
  • DURATION: la durata massima di esecuzione della VM TPU. Per REST, specifica questo valore come stringa contenente il numero di secondi seguito da "s" (ad esempio, 3600s per 1 ora o 604800s per 7 giorni).
  • IMAGE_FAMILY: la famiglia di immagini sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il flag --image. Per saperne di più sulle immagini sistema operativo, consulta Immagini sistema operativo.
  • IMAGE_PROJECT: il progetto che contiene l'immagine sistema operativo. Per le immagini TPU, il valore è ubuntu-os-accelerator-images.

Crea un MIG

Per creare un MIG a livello di zona contenente una sezione TPU single-host, utilizza il seguente comando:

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --size=MIG_SIZE \
    --template=INSTANCE_TEMPLATE_URL \
    --zone=ZONE

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": MIG_SIZE,
    "instanceTemplate": "INSTANCE_TEMPLATE_URL"
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"

Sostituisci i seguenti segnaposto:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud .
  • MIG_NAME: il nome del MIG.
  • MIG_SIZE: la dimensione del MIG.
  • INSTANCE_TEMPLATE_URL: l'URL del template di istanza che vuoi utilizzare per creare istanze nel MIG. L'URL può contenere l'ID o il nome del template di istanza. Specifica uno dei seguenti valori:
    • Per un template di istanza regionale: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Per un template di istanza globale: INSTANCE_TEMPLATE_ID
  • ZONE: la zona del MIG.

Per creare un MIG a livello di regione contenente una sezione TPU a host singolo, utilizza il seguente comando:

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --size=MIG_SIZE \
    --template=INSTANCE_TEMPLATE_URL \
    --region=REGION \
    --target-distribution-shape=ANY_SINGLE_ZONE \
    --instance-redistribution-type=none

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": MIG_SIZE,
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "distributionPolicy": {
      "targetShape": "ANY_SINGLE_ZONE"
    },
    "updatePolicy": {
      "instanceRedistributionType": "NONE"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers"

Sostituisci i seguenti segnaposto:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud .
  • MIG_NAME: il nome del MIG.
  • MIG_SIZE: il numero di VM nel MIG.
  • INSTANCE_TEMPLATE_URL: l'URL del template di istanza che vuoi utilizzare per creare istanze nel MIG. L'URL può contenere l'ID o il nome del template di istanza. Specifica uno dei seguenti valori:
    • Per un template di istanza regionale: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Per un template di istanza globale: INSTANCE_TEMPLATE_ID
  • ZONE: la zona in cui vuoi eseguire il provisioning del MIG.
  • REGION: la regione in cui vuoi eseguire il provisioning del MIG.

Crea VM con nomi personalizzati in un MIG

Puoi creare VM in un MIG specificando nomi personalizzati per ogni VM. Questa operazione è utile per il debug e per garantire che le istanze vengano create in un ordine specifico.

gcloud

Crea una VM con un nome personalizzato utilizzando il comando create-instance e specifica il flag --instance. Per creare più VM, ripeti il comando per ogni VM. In caso contrario, utilizza il metodo dell'API REST per specificare più VM in una singola richiesta.

  • Per un MIG a livello di zona, utilizza il seguente comando:

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --zone=ZONE \
        --instance=INSTANCE_NAME
    
  • Per un MIG a livello di regione, utilizza il seguente comando:

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --region=REGION \
        --instance=INSTANCE_NAME
    

Sostituisci i seguenti segnaposto:

  • MIG_NAME: il nome del MIG.
  • ZONE: la zona del MIG.
  • REGION: la regione del MIG.
  • INSTANCE_NAME: il nome della VM da aggiungere al MIG specificato.

REST

Crea VM con nomi personalizzati utilizzando uno dei seguenti metodi dell'API REST:

  • Per un MIG a livello di zona, utilizza instanceGroupManagers.createInstances.

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/createInstances
     {
       "instances": [
         {
           "name": "INSTANCE_NAME_1"
         },
         {
           "name": "INSTANCE_NAME_2"
         },
         ...
       ]
     }
     

  • Per un MIG a livello di regione, utilizza regionInstanceGroupManagers.createInstances.

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/createInstances
     {
       "instances": [
         {
           "name": "INSTANCE_NAME_1"
         },
         {
           "name": "INSTANCE_NAME_2"
         },
         ...
       ]
     }
     

Sostituisci i seguenti segnaposto:

  • PROJECT_ID: l'ID del progetto in cui si trova il MIG.
  • ZONE: la zona del MIG.
  • REGION: la regione del MIG.
  • INSTANCE_NAME_1,2,..: i nomi delle VM da aggiungere al MIG specificato.

Passaggi successivi