MIG mit Cloud TPU-Slices mit einem Host erstellen

In diesem Dokument wird beschrieben, wie Sie eine verwaltete Instanzgruppe (Managed Instance Group, MIG) mit mehreren unabhängigen TPU-Slices mit einem einzelnen Host 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 mehreren TPU-Slices mit einem Host erstellen

So erstellen Sie mehrere unabhängige TPU-VMs in einer MIG:

  1. Erstellen Sie eine Instanzvorlage.
  2. Erstellen Sie die MIG.

Instanzvorlage erstellen

Die Konfigurationen von Instanzvorlagen variieren je nach verwendeter Nutzungsoption: On-Demand, Spot, Reservierungen 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 erstellt, die die Verbrauchsoption On-Demand verwendet:

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"

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 erstellt, die die Verbrauchsoption Spot verwendet:

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 erstellt, die die Verbrauchsoption reservation-bound verwendet:

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 einer bestimmten Reservierung, die Sie nutzen möchten. Bei Reservierungen im Modus „Alle Kapazitäten“ können Sie einen Block oder Unterblock angeben, indem Sie die URL für Reservierungen 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 erstellt, die die Verbrauchsoption Flex-Start verwendet:

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 Ausführungsdauer für die TPU-VM. Geben Sie für REST einen String an, der die Anzahl der Sekunden gefolgt von „s“ enthält (z. B. 3600s für 1 Stunde oder 604800s 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.

Eine MIG erstellen.

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

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"

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.

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

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"

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, in der die MIG bereitgestellt werden soll.
  • REGION: Die Region, in der die MIG bereitgestellt werden soll.

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.

gcloud

Erstellen Sie mit dem Befehl create-instance eine VM mit einem benutzerdefinierten Namen und geben Sie das Flag --instance an. Wenn Sie mehrere VMs erstellen möchten, wiederholen Sie den Befehl für jede VM. Andernfalls verwenden Sie die REST API-Methode, um mehrere VMs in einer einzelnen Anfrage anzugeben.

  • Verwenden Sie für eine zonale MIG den folgenden Befehl:

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --zone=ZONE \
        --instance=INSTANCE_NAME
    
  • Verwenden Sie für eine regionale MIG den folgenden Befehl:

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

Ersetzen Sie die folgenden Platzhalter:

  • MIG_NAME: Der Name Ihrer MIG.
  • ZONE: Die Zone der MIG.
  • REGION: Die Region der MIG.
  • INSTANCE_NAME: Der Name der VM, die der angegebenen MIG hinzugefügt werden soll.

REST

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