MIG mit einem Cloud TPU-Slice mit mehreren Hosts erstellen

In diesem Dokument wird beschrieben, wie Sie eine verwaltete Instanzgruppe (MIG) mit einem TPU-Slice mit mehreren Hosts erstellen.

Vorbereitung

Erfüllen Sie die folgenden Voraussetzungen:

  1. Erstellen Sie ein Projekt für Ihre TPUs, wie unter Projekt für TPUs einrichten beschrieben.
  2. Bestimmen Sie Ihre TPU-Anforderungen, wie unter Ressourcen planen beschrieben.

MIG mit TPU-Slices mit mehreren Hosts erstellen

  1. Erstellen Sie eine Instanzvorlage.
  2. Arbeitslastrichtlinie erstellen
  3. Erstellen Sie die MIG.

Instanzvorlage erstellen

Der Befehl zum Erstellen einer Instanzvorlage hängt von der verwendeten Verbrauchsoption ab: On-Demand, Spot, reservierungsgebunden oder Flex-Start. Weitere Informationen zu Nutzungsoptionen finden Sie unter TPU-Ressourcen planen.

Instanzvorlage für eine On-Demand-TPU-VM erstellen

Mit dem folgenden Befehl wird eine Instanzvorlage mit der On-Demand-Verbrauchsoption erstellt:

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"

Ersetzen Sie die folgenden Platzhalter:

  • PROJECT_ID: Die ID Ihres Google Cloud -Projekts.
  • INSTANCE_TEMPLATE_NAME: Der Name Ihrer Instanzvorlage.
  • MACHINE_TYPE: Der Maschinentyp für die TPU-VM, z. B. ct6e-standard-8t.
  • IMAGE_FAMILY: Die Betriebssystem-Image-Familie für die TPU-VM. Wenn Sie eine bestimmte Betriebssystemversion installieren möchten, verwenden Sie das Flag --image. Weitere Informationen zu Betriebssystem-Images finden Sie unter Betriebssystem-Images.
  • IMAGE_PROJECT: Das Projekt, das das Betriebssystem-Image enthält. Für TPU-Images ist dies ubuntu-os-accelerator-images.

Instanzvorlage für eine TPU-Spot-VM erstellen

Mit dem folgenden Befehl wird eine Instanzvorlage mit der Spot-Verbrauchsoption erstellt:

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"

Ersetzen Sie die folgenden Platzhalter:

  • PROJECT_ID: Die ID Ihres Google Cloud -Projekts.
  • INSTANCE_TEMPLATE_NAME: Der Name Ihrer Instanzvorlage.
  • MACHINE_TYPE: Der Maschinentyp für die TPU-VM, z. B. ct6e-standard-8t.
  • IMAGE_FAMILY: Die Betriebssystem-Image-Familie für die TPU-VM. Wenn Sie eine bestimmte Betriebssystemversion installieren möchten, verwenden Sie das Flag --image. Weitere Informationen zu Betriebssystem-Images finden Sie unter Betriebssystem-Images.
  • IMAGE_PROJECT: Das Projekt, das das Betriebssystem-Image enthält. Für TPU-Images ist dies ubuntu-os-accelerator-images.

Instanzvorlage für eine TPU-VM mit Reservierungsbindung erstellen

Mit dem folgenden Befehl wird eine Instanzvorlage mit der Option für die reservierungsgebundene Nutzung erstellt:

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"

Ersetzen Sie die folgenden Platzhalter:

  • PROJECT_ID: Die ID Ihres Google Cloud -Projekts.
  • INSTANCE_TEMPLATE_NAME: Der Name Ihrer Instanzvorlage.
  • MACHINE_TYPE: Der Maschinentyp für die TPU-VM, z. B. ct6e-standard-8t.
  • RESERVATION_NAME: Der Name der spezifischen Reservierung, die genutzt werden soll. Bei Reservierungen im Modus „Alle Kapazitäten“ können Sie einen Block oder Unterblock angeben, indem Sie die Reservierungs-URL so angeben:

    • Geben Sie einen Block an:

      RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
      
    • Geben Sie einen Unterblock an:

      RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
      
  • IMAGE_FAMILY: Die Betriebssystem-Image-Familie für die TPU-VM. Wenn Sie eine bestimmte Betriebssystemversion installieren möchten, verwenden Sie das Flag --image. Weitere Informationen zu Betriebssystem-Images finden Sie unter Betriebssystem-Images.

  • IMAGE_PROJECT: Das Projekt, das das Betriebssystem-Image enthält. Für TPU-Images ist dies ubuntu-os-accelerator-images.

Instanzvorlage für eine TPU-Flex-Start-VM erstellen

Mit dem folgenden Befehl wird eine Instanzvorlage mit der Verbrauchsoption „Flex-Start“ erstellt:

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"

Ersetzen Sie die folgenden Platzhalter:

  • PROJECT_ID: Die ID Ihres Google Cloud -Projekts.
  • INSTANCE_TEMPLATE_NAME: Der Name Ihrer Instanzvorlage.
  • MACHINE_TYPE: Der Maschinentyp für die TPU-VM, z. B. ct6e-standard-8t.
  • DURATION: Die maximale Dauer, für die die TPU-VM ausgeführt werden kann. Geben Sie für REST die Anzahl der Sekunden an (z. B. 3600 für 1 Stunde oder 604800 für 7 Tage).
  • IMAGE_FAMILY: Die Betriebssystem-Image-Familie für die TPU-VM. Wenn Sie eine bestimmte Betriebssystemversion installieren möchten, verwenden Sie das Flag --image. Weitere Informationen zu Betriebssystem-Images finden Sie unter Betriebssystem-Images.
  • IMAGE_PROJECT: Das Projekt, das das Betriebssystem-Image enthält. Für TPU-Images ist dies ubuntu-os-accelerator-images.

Arbeitslastrichtlinie erstellen

Sie müssen eine Arbeitslastrichtlinie mit dem Parameter accelerator-topology erstellen (z. B. 4x4, 8x8 oder 4x4x4). Die Beschleunigertopologie konfiguriert die MIG so, dass die Instanzen als ein einzelner, miteinander verbundener Slice behandelt werden.

Mit dem folgenden Befehl wird eine Arbeitslastrichtlinie für eine bestimmte Topologie erstellt:

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"

Ersetzen Sie die folgenden Platzhalter:

  • PROJECT_ID: Die ID Ihres Google Cloud -Projekts.
  • WORKLOAD_POLICY_NAME: Der Name Ihrer Arbeitslastrichtlinie.
  • TOPOLOGY: Die Topologie der TPU-VMs, z. B. 4x4x8. Weitere Informationen zur Topologie für die einzelnen TPU-Versionen finden Sie unter Systemarchitektur.
  • REGION: Die Region für Ihre Arbeitslastrichtlinie.

Eine MIG erstellen.

Verwenden Sie den folgenden Befehl, um eine zonale MIG mit einem TPU-Slice mit mehreren Hosts zu erstellen:

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"

Ersetzen Sie die folgenden Platzhalter:

  • PROJECT_ID: Die ID Ihres Google Cloud -Projekts.
  • MIG_NAME: Der Name Ihrer MIG.
  • MIG_SIZE: Die Größe der MIG.
  • INSTANCE_TEMPLATE_URL: Die URL der Instanzvorlage, die Sie zum Erstellen von Instanzen in der MIG verwenden möchten. Die URL kann entweder die ID oder den Namen der Instanzvorlage enthalten. Geben Sie einen der folgenden Werte an:
    • Für eine regionale Instanzvorlage: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Für eine globale Instanzvorlage: INSTANCE_TEMPLATE_ID
  • ZONE: Die Zone für Ihre MIG.
  • WORKLOAD_POLICY_URL: Die URL der Arbeitslastrichtlinie, die Sie zum Erstellen von Instanzen in der MIG verwenden möchten. Beispiel: projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.

Verwenden Sie den folgenden Befehl, um eine regionale MIG mit einem TPU-Slice mit mehreren Hosts zu erstellen:

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"

Ersetzen Sie die folgenden Platzhalter:

  • PROJECT_ID: Die ID Ihres Google Cloud -Projekts.
  • MIG_NAME: Der Name Ihrer MIG.
  • MIG_SIZE: Die Anzahl der VMs in der MIG.
  • INSTANCE_TEMPLATE_URL: Die URL der Instanzvorlage, die Sie zum Erstellen von Instanzen in der MIG verwenden möchten. Die URL kann entweder die ID oder den Namen der Instanzvorlage enthalten. Geben Sie einen der folgenden Werte an:
    • Für eine regionale Instanzvorlage: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Für eine globale Instanzvorlage: INSTANCE_TEMPLATE_ID
  • ZONE: Die Zone für Ihre MIG.
  • REGION: Die Region für Ihre MIG.
  • WORKLOAD_POLICY_URL: Die URL der Arbeitslastrichtlinie, die Sie zum Erstellen von Instanzen in der MIG verwenden möchten. Beispiel: projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.

VMs mit benutzerdefinierten Namen in einer MIG erstellen

Sie können VMs in einer MIG erstellen, indem Sie für jede VM einen benutzerdefinierten Namen angeben. Dies ist nützlich für die Fehlerbehebung und um sicherzustellen, dass Instanzen in einer bestimmten Reihenfolge erstellt werden.

MIGs, die ein TPU-Slice mit mehreren Hosts enthalten, verwenden den Bulk-Modus der Richtlinie für die Zielgröße. Wenn Sie VMs mit benutzerdefinierten Namen in einer solchen MIG erstellen, gilt Folgendes:

  • Sie müssen zuerst prüfen, ob die MIG VMs enthält. Wenn die MIG VMs enthält, müssen Sie entweder die Größe der MIG auf die Zielgröße 0 anpassen oder eine andere MIG mit der Zielgröße 0 erstellen.

  • Sie können die REST API nur verwenden, um VMs mit benutzerdefinierten Namen zu erstellen.

Erstellen Sie VMs mit benutzerdefinierten Namen mithilfe einer der folgenden REST API-Methoden:

  • Verwenden Sie für eine zonale MIG die 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"
         },
         ...
       ]
     }
     

  • Verwenden Sie für eine regionale MIG die 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"
         },
         ...
       ]
     }
     

Ersetzen Sie die folgenden Platzhalter:

  • PROJECT_ID: Die ID des Projekts, in dem die MIG vorhanden ist.
  • ZONE: Die Zone der MIG.
  • REGION: Die Region der MIG.
  • INSTANCE_NAME_1,2,..: Die Namen der VMs, die der angegebenen MIG hinzugefügt werden sollen.

Nächste Schritte