MIG mit TPU-Slice mit mehreren Hosts erstellen

In diesem Dokument wird beschrieben, wie Sie eine verwaltete Instanzgruppe (Managed Instance Group, MIG) erstellen, die ein TPU-Slice mit mehreren Hosts bildet.

Hinweis

  • Lesen Sie sich die Einschränkungen für das Erstellen von MIGs mit TPU-Instanzen durch.
  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Cloud de Confiance by S3NS Dienste und APIs überprüft. Wenn Sie Code oder Beispiele aus einer lokalen Entwicklungsumgebung ausführen möchten, können Sie sich bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:
    1. Installieren Sie die Google Cloud CLI und melden Sie sich dann mit Ihrer föderierten Identität in der gcloud CLI an. Initialisieren Sie nach der Anmeldung, initialisieren Sie die Google Cloud CLI mit dem folgenden Befehl:

      gcloud init
    2. Legen Sie eine Standardregion und -zone fest.

Vorbereitung

Bevor Sie ein TPU-Slice mit mehreren Hosts erstellen, müssen Sie Folgendes tun:

  1. TPU-Version auswählen: Wählen Sie die TPU-Version aus, die für Ihre Arbeitslast geeignet ist. Eine Liste der TPU-Versionen nach Arbeitslasttyp finden Sie unter Empfohlene TPU-Versionen nach Arbeitslasttyp.

  2. TPU-Verfügbarkeit am gewünschten Standort prüfen: TPUs sind in bestimmten Cloud de Confiance by S3NS Regionen verfügbar. Wenn Sie eine TPU-Version verwenden möchten, prüfen Sie, ob sie in der gewünschten Region verfügbar ist. Eine Liste der TPU-Standorte finden Sie unter TPU-Verfügbarkeit.

  3. Prüfen, ob Ihr Projekt über ein ausreichendes TPU-Kontingent verfügt: Wenn Sie ein TPU-Slice mit mehreren Hosts mit VMs auf Abruf oder Spot-VMs erstellen, muss in der gewünschten Region ein ausreichendes TPU-Kontingent verfügbar sein. Für das Erstellen eines TPU-Slice mit mehreren Hosts, das eine TPU-Reservierung nutzt, ist kein TPU-Kontingent erforderlich, da das Kontingent beim Erstellen der Reservierung verwendet wird. Eine Liste der TPU-Kontingentnamen finden Sie unter TPU-Kontingent. Eine Anleitung zum Aufrufen des Kontingents finden Sie unter Kontingente ansehen und verwalten.

  4. TPU-Nutzungsoption auswählen: Wählen Sie eine Nutzungsoption aus, die am besten zu Ihrer Arbeitslast, ihrer Dauer und Ihren Kostenanforderungen passt. Eine Liste der Verfügbarkeit von Nutzungsoptionen nach TPU-Versionen finden Sie unter TPU-Nutzungsoptionen.

  5. Topologie auswählen: Wählen Sie eine Topologie aus, die für die ausgewählte TPU Version unterstützt wird. Eine Liste der für jede TPU-Version verfügbaren Topologien finden Sie unter TPU-Topologie.

MIG mit TPU-Slices mit mehreren Hosts erstellen

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

Instanzvorlage erstellen

Der Befehl zum Erstellen einer Instanzvorlage hängt von der verwendeten Nutzungsoption ab: auf Abruf, Spot, reservierungsgebunden oder Flex-Start. Weitere Informationen zu Nutzungsoptionen finden Sie unter Bereitstellungsmodelle für VMs.

Instanzvorlage für eine TPU-VM auf Abruf erstellen

Mit dem folgenden Befehl wird eine Instanzvorlage mit der Nutzungsoption auf Abruf 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 Cloud de Confiance by S3NS Projekts.
  • INSTANCE_TEMPLATE_NAME: Der Name Ihrer Instanz vorlage.
  • 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 --image Flag. 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 Nutzungsoption „Spot“ 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 Cloud de Confiance by S3NS Projekts.
  • INSTANCE_TEMPLATE_NAME: Der Name Ihrer Instanz vorlage.
  • 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 --image Flag. 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 reservierungsgebundene TPU-VM erstellen

Mit dem folgenden Befehl wird eine Instanzvorlage mit der Nutzungsoption „reservierungsgebunden“ 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 Cloud de Confiance by S3NS Projekts.
  • INSTANCE_TEMPLATE_NAME: Der Name Ihrer Instanz vorlage.
  • MACHINE_TYPE: Der Maschinentyp für die TPU-VM, z. B. ct6e-standard-8t.
  • RESERVATION_NAME: Der Name der zu verwendenden Reservierung.
  • IMAGE_FAMILY: Die Betriebssystem-Image-Familie für die TPU-VM. Wenn Sie eine bestimmte Betriebssystemversion installieren möchten, verwenden Sie das --image Flag. 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 Flex-Start erstellen

Mit dem folgenden Befehl wird eine Instanzvorlage mit der Nutzungsoption „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 Cloud de Confiance by S3NS Projekts.
  • INSTANCE_TEMPLATE_NAME: Der Name Ihrer Instanz vorlage.
  • 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 eine Anzahl von 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 --image Flag. 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 accelerator-topology Parameter erstellen, z. B. 4x4, 8x8 oder 4x4x4. Die Beschleunigertopologie konfiguriert die MIG so, dass die Instanzen als einzelnes, miteinander verbundenes 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 Cloud de Confiance by S3NS Projekts.
  • WORKLOAD_POLICY_NAME: Der Name Ihrer Arbeitslastrichtlinie.
  • TOPOLOGY: Die Topologie der TPU-VMs, z. B. 4x4x8. Weitere Informationen zur Topologie für jede TPU-Version finden Sie unter TPU-Topologie.
  • 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 Cloud de Confiance by S3NS 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 Cloud de Confiance by S3NS 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 benutzerdefinierte Namen angeben. Dies ist nützlich für das Debugging 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. Beim Erstellen von VMs mit benutzerdefinierten Namen in einer solchen MIG gilt Folgendes:

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

  • Verwenden Sie für eine zonale MIG 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 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 sich die MIG befindet.
  • 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