Crea un MIG con una slice Cloud TPU multi-host

Questo documento descrive come creare un gruppo di istanze gestite (MIG) con una slice TPU multi-host.

Prerequisiti

Completa i seguenti prerequisiti:

  1. Crea un progetto per le TPU come descritto in Configura un progetto per le TPU.
  2. Determina i requisiti della TPU come descritto in Pianifica le risorse.

Crea un MIG con slice TPU multi-host

  1. Crea un template di istanza.
  2. Crea una policy del workload.
  3. Crea il MIG.

Crea un template di istanza

Il comando per creare un template di istanza dipende dall'opzione di consumo che utilizzi: on demand, Spot, con prenotazione o avvio flessibile. Per saperne di più sulle opzioni di consumo, consulta Pianifica le risorse TPU.

Crea un template di istanza per una VM TPU on demand

Il seguente comando crea un template di istanza utilizzando 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",
      "scheduling": {
        "onHostMaintenance": "TERMINATE"
      },
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "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 Google Cloud progetto.
  • 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 del sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il --image flag. Per saperne di più sulle immagini del sistema operativo, consulta Immagini del sistema operativo.
  • IMAGE_PROJECT: il progetto che contiene l'immagine del sistema operativo. Per le immagini TPU, questo è ubuntu-os-accelerator-images.

Crea un template di istanza per una VM TPU Spot

Il seguente comando crea un template di istanza utilizzando 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 Google Cloud progetto.
  • 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 del sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il --image flag. Per saperne di più sulle immagini del sistema operativo, consulta Immagini del sistema operativo.
  • IMAGE_PROJECT: il progetto che contiene l'immagine del sistema operativo. Per le immagini TPU, questo è ubuntu-os-accelerator-images.

Crea un template di istanza per una VM TPU con prenotazione

Il seguente comando crea un template di istanza utilizzando l'opzione di consumo con prenotazione:

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 Google Cloud progetto.
  • 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 della prenotazione specifica da utilizzare.
  • IMAGE_FAMILY: la famiglia di immagini del sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il --image flag. Per saperne di più sulle immagini del sistema operativo, consulta Immagini del sistema operativo.
  • IMAGE_PROJECT: il progetto che contiene l'immagine del sistema operativo. Per le immagini TPU, questo è ubuntu-os-accelerator-images.

Crea un template di istanza per una VM TPU con avvio flessibile

Il seguente comando crea un template di istanza utilizzando l'opzione di consumo con 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 Google Cloud progetto.
  • 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 per cui la VM TPU può essere in esecuzione. Per REST, specifica questo valore come numero di secondi (ad esempio, 3600 per 1 ora o 604800 per 7 giorni).
  • IMAGE_FAMILY: la famiglia di immagini del sistema operativo per la VM TPU. Se vuoi installare una versione specifica del sistema operativo, utilizza il --image flag. Per saperne di più sulle immagini del sistema operativo, consulta Immagini del sistema operativo.
  • IMAGE_PROJECT: il progetto che contiene l'immagine del sistema operativo. Per le immagini TPU, questo è ubuntu-os-accelerator-images.

Crea una policy del workload

Devi creare una policy del workload con il parametro accelerator-topology (ad esempio, 4x4, 8x8 o 4x4x4). La topologia dell'acceleratore configura il MIG in modo che tratti le istanze come una singola slice interconnessa.

Il seguente comando crea una policy del workload per una topologia specifica:

gcloud

gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
  --type=high-throughput \
  --accelerator-topology=TOPOLOGY \
  --region=REGION

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "WORKLOAD_POLICY_NAME",
    "workloadPolicy": {
      "type": "HIGH_THROUGHPUT",
      "acceleratorTopology": "TOPOLOGY"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"

Sostituisci i seguenti segnaposto:

  • PROJECT_ID: l'ID del tuo Google Cloud progetto.
  • WORKLOAD_POLICY_NAME: il nome della policy del workload.
  • TOPOLOGY: la topologia delle VM TPU, ad esempio 4x4x8. Per saperne di più sulla topologia per ogni versione di TPU, consulta Architettura di sistema.
  • REGION: la regione per la policy del workload.

Crea un MIG

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

gcloud

gcloud compute instance-groups managed create MIG_NAME \
   --size=MIG_SIZE \
   --target-size-policy-mode=bulk \
   --template=INSTANCE_TEMPLATE_URL \
   --zone=ZONE \
   --default-action-on-vm-failure=do-nothing \
   --workload-policy=WORKLOAD_POLICY_URL

REST

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

Sostituisci i seguenti segnaposto:

  • PROJECT_ID: l'ID del tuo Google Cloud progetto.
  • 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 per il MIG.
  • WORKLOAD_POLICY_URL: l'URL della policy del workload che vuoi utilizzare per creare istanze nel MIG. Ad esempio: projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.

Per creare un MIG a livello di regione contenente una slice TPU multi-host, utilizza il seguente comando:

gcloud

gcloud compute instance-groups managed create MIG_NAME \
   --size=MIG_SIZE \
   --target-size-policy-mode=bulk \
   --template=INSTANCE_TEMPLATE_URL \
   --region=REGION \
   --default-action-on-vm-failure=do-nothing \
   --workload-policy=WORKLOAD_POLICY_URL \
   --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,
    "targetSizePolicy": {
      "mode": "BULK"
    },
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "instanceLifecyclePolicy": {
      "defaultActionOnFailure": "DO_NOTHING"
    },
    "resourcePolicies": {
      "workloadPolicy": "WORKLOAD_POLICY_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 Google Cloud progetto.
  • 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 per il MIG.
  • REGION: la regione per il MIG.
  • WORKLOAD_POLICY_URL: l'URL della policy del workload che vuoi utilizzare per creare istanze nel MIG. Ad esempio: projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.

Crea VM con nomi personalizzati in un MIG

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

I MIG che contengono una slice TPU multi-host utilizzano la modalità in blocco della policy della dimensione target. Quando crei VM con nomi personalizzati in un MIG di questo tipo, si applica quanto segue:

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 esiste 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