Job erstellen und ausführen, der TPUs verwendet

In diesem Dokument wird beschrieben, wie Sie einen Batch-Job erstellen und ausführen, der VM-Instanzen mit Tensor Processing Units (TPUs) verwendet. TPUs sind von Google speziell entwickelte, anwendungsspezifische integrierte Schaltungen (Application-Specific Integrated Circuits, ASICs), die verwendet werden, um die beim maschinellen Lernen (ML) und bei künstlicher Intelligenz (KI) entstehenden Arbeitslasten zu beschleunigen. Wenn Sie einen Batchjob erstellen, können Sie optional einen TPU-Maschinentyp angeben, um containerisierte oder skriptbasierte KI- und ML-Inferenz-, Bewertungs-, Feinabstimmungs- und Trainingsarbeitslasten zu beschleunigen.

Weitere Informationen zu TPUs finden Sie in der Compute Engine-Dokumentation unter TPUs in Google Cloud und TPU-Maschinentypen. Alternativ können Sie die Datenverarbeitung sowie KI- und ML-Arbeitslasten beschleunigen, indem Sie stattdessen GPUs verwenden.

Hinweis

  1. Wenn Sie Batch noch nicht verwendet haben, lesen Sie die Informationen unter Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
  2. Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen:

    Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

    Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Beschränkungen

Wenn ein Job TPUs verwendet, gelten zusätzlich zu den Compute Engine-Einschränkungen für TPUs die folgenden Einschränkungen.

  • Nur TPU-Slices mit einem einzelnen Host: Batch unterstützt nur unabhängige TPU-VMs, die als TPU-Slices mit einem einzelnen Host bezeichnet werden. TPU-Slices mit mehreren Hosts, die jeweils aus mehreren verbundenen VMs bestehen, werden nicht unterstützt.

    Ein Job kann auf einem oder mehreren TPU-Slices mit einem einzelnen Host ausgeführt werden. Wenn ein Job beispielsweise taskCount auf 4 und taskCountPerNode auf 1 setzt, beträgt die Anzahl der VMs, auf denen der Job ausgeführt wird, maximal 4. Im Gegensatz zu TPU-Slices mit mehreren Hosts werden TPU-Slices mit einem einzelnen Host jeweils als unabhängige VM ausgeführt und bieten kein ICI-Netzwerk (Inter-Chip Interconnect) für die Kommunikation mit hoher Bandbreite und niedriger Latenz.

    Weitere Informationen zu TPU-Slices mit einem oder mehreren Hosts finden Sie in der Compute Engine-Dokumentation.

  • Unterstützte TPU-Versionen und Maschinentypen: Batch unterstützt nur TPU-Slices mit einem einzelnen Host (unabhängige TPU-VMs) für die folgenden TPU-Versionen und Maschinentypen:

    • TPU7x (Ironwood): tpu7x-standard-4t
    • v6e (Trillium): ct6e-standard-1t, ct6e-standard-4t und ct6e-standard-8t

    • v5p: ct5p-hightpu-4t

    Weitere Informationen zu den einzelnen TPU-Maschinentypen, z. B. zu unterstützten Laufwerken, finden Sie in der Compute Engine-Dokumentation unter TPU-Maschinentypen.

  • Unterstützte Verbrauchsoptionen: Batch unterstützt keine Flex-Start-VMs (Bereitstellungsmodell FLEX_START) für Jobs, die TPUs verwenden. Mit Ausnahme von Flex-Start-VMs können Sie jede Verbrauchsoption angeben, die von der TPU-Version Ihres Jobs unterstützt wird. Weitere Informationen finden Sie in der Compute Engine-Dokumentation unter Verfügbarkeit von Verbrauchsoptionen nach TPU-Versionen.

  • Standort mit einer Zone erforderlich: Wenn Sie einen Job erstellen, der TPUs verwendet, müssen Sie den Job auf eine bestimmte Zone beschränken. Legen Sie dazu die zulässigen Standorte des Jobs (Feld allowedLocations[]) auf eine Zone fest, die Ihre TPU-Version oder gegebenenfalls Ihre Reservierung enthält.

  • Nicht unterstützte Funktionen: Jobs, die TPUs verwenden, unterstützen die folgenden Funktionen nicht:

Job erstellen, der TPUs verwendet

So erstellen Sie einen Job, der TPUs verwendet:

  1. Konfiguration für einen Job planen, der TPUs verwendet
  2. Erstellen Sie einen Job mit der von Ihnen ermittelten Konfiguration. Beispiele für das Erstellen eines Jobs, der TPUs verwendet, finden Sie in diesem Dokument unter Job erstellen, der TPUs verwendet.

Konfiguration für einen Job planen, der TPUs verwendet

Bevor Sie einen Job erstellen, der TPUs verwendet, 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.

    Wählen Sie eine der unterstützten TPU-Versionen aus.

  2. TPU-Nutzungsoption auswählen: Wählen Sie eine Nutzungsoption aus, die am besten zu Ihrer Arbeitslast, ihrer Dauer und Ihren Kostenanforderungen passt. Achten Sie darauf, eine der unterstützten Nutzungsoptionen auszuwählen. Die Anwendungsfälle und Jobanforderungen für die einzelnen Verbrauchsoptionen sind in der folgenden Tabelle zusammengefasst.

    Nutzungsoptionen und ihre Jobanforderungen

    Reservierungsgebunden (vorausschauende Reservierungen im Kalendermodus oder vorausschauende Reservierungen für Kapazitätsblöcke)

    • Anwendungsfall: Wir empfehlen reservierungsgebundene Nutzungsoptionen für Jobs, die ein sehr hohes Maß an Sicherheit hinsichtlich der Verfügbarkeit von TPU-Ressourcen für einen bestimmten Zeitraum erfordern. In Compute Engine werden diese als vorausschauende Reservierungen im Kalendermodus (für 1 bis 90 Tage) und vorausschauende Reservierungen für Kapazitätsblöcke (für 1 Jahr oder länger) bezeichnet.

    • Details: Bevor Sie einen Job erstellen, müssen Sie eine Reservierung für die ausgewählte TPU-Version und das Bereitstellungsmodell RESERVATION_BOUND abrufen oder identifizieren. Nachdem eine Reservierung erstellt wurde, fallen die Kosten für die angegebenen VMs an. Der Preis ist derselbe wie für die Ausführung der VMs, bis Sie die Reservierung löschen. Für VMs, die eine Reservierung nutzen, fallen keine separaten Kosten an. Für Reservierungen fallen jedoch unabhängig von der Nutzung Kosten an.

      Weitere Informationen finden Sie in der Compute Engine-Dokumentation unter Reservierungstyp auswählen.

    Batch verwendet reservierungsgebundene Reservierungen für Jobs, die alle folgenden Kriterien erfüllen:

    • Setzen Sie das Feld provisioningModel auf RESERVATION_BOUND.
    • Spezifisch auf eine kompatible Reservierung ausrichten. Legen Sie das Feld reservation entweder auf den Kurznamen (wenn sich die Reservierung im selben Projekt und in derselben Zone befindet) oder auf den vollständigen Ressourcenpfad der Reservierung, des Reservierungsblocks oder des Reservierungsunterblocks fest.

    On demand

    • Anwendungsfall: On-Demand ist schnell und einfach zu verwenden und daher die Standardoption für die meisten Jobs. Wir empfehlen On-Demand jedoch nicht, wenn eine andere Verbrauchsoption besser zu Ihren Prioritäten passt oder wenn Sie wiederholt Probleme mit der Ressourcenverfügbarkeit haben.

    • Details: On-Demand ist in der Regel die Standardmethode für den Zugriff auf Compute Engine-VMs. Mit On-Demand können Sie bei Bedarf auf Ressourcen zugreifen (sofern verfügbar). Die Ressourcen werden erst gelöscht, wenn entweder der Job abgeschlossen ist oder das Laufzeitlimit erreicht ist.

    Batch verwendet für die meisten Jobs standardmäßig On-Demand-Ressourcen. Wenn Sie sicherstellen möchten, dass ein Job On-Demand-Ressourcen verwendet, gehen Sie so vor:

    Spot-VMs

    • Anwendungsfall: Wir empfehlen, Spot-VMs zu verwenden, um die Kosten für fehlertolerante Arbeitslasten zu reduzieren.

    • Details: Wenn eine Anfrage zum Erstellen eines Jobs, der Spot-VMs verwendet, erfüllt wird, werden die VMs zu Spot-VM-Preisen abgerechnet. Diese können sich häufig ändern und bieten möglicherweise den größten Rabatt, bis zu 91 % Rabatt auf On-Demand-Preise. Spot-VMs sind jedoch möglicherweise nicht immer verfügbar und können jederzeit vorzeitig beendet werden.

      Weitere Informationen zu Spot-VMs und Empfehlungen für Jobs mit Spot-VMs.

    Batch verwendet Spot-VMs für Jobs, die alle folgenden Kriterien erfüllen:

  3. Wählen Sie eine Zone aus, in der die ausgewählten TPUs verfügbar sind: Wenn Sie eine TPU-Version verwenden möchten, muss das Feld allowedLocations[] eines Jobs auf eine Zone festgelegt werden, die die ausgewählten TPUs enthält:

    • Wenn Sie eine Verbrauchsoption ausgewählt haben, die Reservierungen verwendet, müssen Sie die Zone verwenden, in der sich die Reservierung befindet.
    • Wählen Sie andernfalls eine Zone aus, die Ihre TPU-Version gemäß der TPU-Verfügbarkeit enthält.

    In beiden Fällen muss sich die Zone auch in einer der unterstützten Regionen für Batch befinden.

  4. Prüfen Sie, ob Ihr Projekt ein ausreichendes TPU-Kontingent hat: Wenn Sie einen Job erstellen, der TPUs mit On-Demand- oder Spot-VMs verwendet, muss in der gewünschten Region ein ausreichendes TPU-Kontingent verfügbar sein. Für das Erstellen eines Jobs, der TPUs verwendet und eine TPU-Reservierung nutzt, ist kein TPU-Kontingent erforderlich, da das Kontingent beim Erstellen der Reservierung verwendet wurde. Eine Liste der TPU-Kontingentnamen finden Sie unter TPU-Kontingent. Eine Anleitung zum Aufrufen des Kontingents finden Sie unter Kontingente aufrufen und verwalten.

  5. TPU-Maschinentyp auswählen: Wählen Sie einen TPU-Maschinentyp für die ausgewählte TPU-Version aus. Wenn Sie eine Verbrauchsoption ausgewählt haben, die Reservierungen verwendet, müssen Sie den Maschinentyp Ihrer Reservierung verwenden. Eine Liste der für die einzelnen TPU-Versionen verfügbaren Maschinentypen finden Sie unter TPU-Maschinentypen.

    Aufgrund der Einschränkungen müssen Sie die Topologie mit einem einzelnen Host für Ihren TPU-Maschinentyp verwenden.

Job erstellen, der TPUs verwendet

In den folgenden Abschnitten wird beschrieben, wie Sie für jede Verbrauchsoption einen Beispieljob erstellen, der TPUs verwendet.

Nutzungsoption Beispiel für Jobanweisungen
Reservierungsgebunden (vorausschauende Reservierungen im Kalendermodus oder vorausschauende Reservierungen für Kapazitätsblöcke)

TPUs mit reservierungsgebundenen Verbrauchsoptionen verwenden

On-Demand- oder Spot-VMs

TPUs mit On-Demand- oder Spot-VMs verwenden

TPUs mit On-Demand- oder Spot-VMs verwenden

Sie können einen Job erstellen, der TPUs mit On-Demand- oder Spot-VMs verwendet, indem Sie die gcloud CLI oder die Batch API verwenden.

gcloud

  1. Erstellen Sie eine JSON-Konfigurationsdatei, in der ein unterstützter TPU-Maschinentyp mit einem einzelnen Host angegeben ist, legen Sie das Bereitstellungsmodell auf STANDARD oder SPOT fest und führen Sie sie an einem Standort aus, der den TPU-Maschinentyp bietet.

    Wenn Sie beispielsweise einen einfachen Skriptjob erstellen möchten, erstellen Sie eine JSON-Datei mit folgendem Inhalt:

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}."
                }
              }
            ]
          },
          "taskCount": 3,
          "parallelism": 1
        }
      ],
      "allocationPolicy": {
        "instances": [
          {
            "policy": {
              "provisioningModel": "PROVISIONING_MODEL",
              "machineType": "MACHINE_TYPE"
            }
          }
        ],
        "location": {
          "allowedLocations": [
            "ALLOWED_LOCATIONS"
          ]
        }
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    

    Ersetzen Sie Folgendes:

    • PROVISIONING_MODEL: das Bereitstellungsmodell für Ihre Verbrauchsoption: entweder STANDARD für On-Demand oder SPOT für Spot-VMs.

    • MACHINE_TYPE: ein unterstützter TPU-Maschinentyp mit einem einzelnen Host, z. B. ct5p-hightpu-4t.

    • ALLOWED_LOCATIONS: die zulässigen Standorte für den Job. Für einen Job, der TPUs verwendet, müssen Sie das Feld allowedLocations[] auf eine Zone festlegen, die den TPU-Maschinentyp bietet. Beispielsweise bietet zones/us-central1-a den TPU-Maschinentyp ct5p-hightpu-4t.

  2. Verwenden Sie den Befehl gcloud batch jobs submit, um den Job zu erstellen und auszuführen:

    gcloud batch jobs submit JOB_NAME \
        --location LOCATION \
        --config JSON_CONFIGURATION_FILE
    

    Ersetzen Sie Folgendes:

    • JOB_NAME: Der Name des Jobs.

    • LOCATION: der Standort des Jobs.

    • JSON_CONFIGURATION_FILE: der Pfad für eine JSON-Datei mit den Konfigurationsdetails des Jobs.

API

Senden Sie eine POST-Anfrage an die Methode jobs.create, die einen unterstützten TPU-Maschinentyp mit einem einzelnen Host angibt, das Bereitstellungsmodell auf STANDARD oder SPOT festlegt und an einem Standort ausgeführt wird, der den TPU-Maschinentyp bietet.

Stellen Sie zum Beispiel die folgende Anfrage, um einen einfachen Skriptjob zu erstellen:

POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}."
            }
          }
        ]
      },
      "taskCount": 3,
      "parallelism": 1
    }
  ],
  "allocationPolicy": {
    "instances": [
      {
        "policy": {
          "provisioningModel": "PROVISIONING_MODEL",
          "machineType": "MACHINE_TYPE"
        }
      }
    ],
    "location": {
      "allowedLocations": [
        "ALLOWED_LOCATIONS"
      ]
    }
  },
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: Die Projekt-ID Ihres Projekts.

  • LOCATION: der Standort des Jobs.

  • JOB_NAME: Der Name des Jobs.

  • PROVISIONING_MODEL: das Bereitstellungsmodell für Ihre Verbrauchsoption: entweder STANDARD für On-Demand oder SPOT für Spot-VMs.

  • MACHINE_TYPE: ein unterstützter TPU-Maschinentyp mit einem einzelnen Host, z. B. ct5p-hightpu-4t.

  • ALLOWED_LOCATIONS: die zulässigen Standorte für den Job. Für einen Job, der TPUs verwendet, müssen Sie das Feld allowedLocations[] auf eine Zone festlegen, die den TPU-Maschinentyp bietet. Beispielsweise bietet zones/us-central1-a den TPU-Maschinentyp ct5p-hightpu-4t.

TPUs mit reservierungsgebundenen Nutzungsoptionen verwenden

Sie können einen Job erstellen, der TPUs mit einer Verbrauchsoption für das reservierungsgebundene (RESERVATION_BOUND) Bereitstellungsmodell verwendet – entweder vorausschauende Reservierungen für Kapazitätsblöcke oder vorausschauende Reservierungen im Kalendermodus –, indem Sie die gcloud CLI oder die Batch API verwenden.

gcloud

  1. Erstellen Sie eine JSON-Konfigurationsdatei, die eine Reservierung für einen TPU-Maschinentyp mit einem einzelnen Host angibt, das Bereitstellungsmodell auf RESERVATION_BOUND festlegt und in der Zone der Reservierung ausgeführt wird.

    Wenn Sie beispielsweise einen einfachen Skriptjob erstellen möchten, erstellen Sie eine JSON-Datei mit folgendem Inhalt:

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}."
                }
              }
            ]
          },
          "taskCount": 3,
          "parallelism": 1
        }
      ],
      "allocationPolicy": {
        "instances": [
          {
            "policy": {
              "provisioningModel": "RESERVATION_BOUND",
              "reservation": "RESERVATION",
              "machineType": "MACHINE_TYPE"
            }
          }
        ],
        "location": {
          "allowedLocations": [
            "ALLOWED_LOCATIONS"
          ]
        }
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    

    Ersetzen Sie Folgendes:

    • RESERVATION: Ersetzen Sie dies durch einen der folgenden Pfade zu Ihrer Reservierung:

      • Wenn Sie eine vorausschauende Reservierung im Kalendermodus oder einen Teil der Reservierung für eine vorausschauende Reservierung für Kapazitätsblöcke verwenden möchten, geben Sie die Reservierung an:

        projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME
        
      • Wenn Sie einen bestimmten Block aus einer vorausschauenden Reservierung für Kapazitätsblöcke verwenden möchten, geben Sie den Reservierungsblock an:

        projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAME
        
      • Wenn Sie einen bestimmten Unterblock aus einer vorausschauenden Reservierung für Kapazitätsblöcke verwenden möchten, geben Sie den Reservierungsunterblock an:

        projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationSubBlocks/SUB_BLOCK_NAME
        
    • MACHINE_TYPE: der TPU-Maschinentyp Ihrer Reservierung, z. B. ct5p-hightpu-4t.

    • ALLOWED_LOCATIONS: die zulässigen Standorte für den Job. Für einen Job, der reservierte TPUs verwendet, müssen Sie das Feld allowedLocations[] auf die Zone Ihrer Reservierung festlegen. Beispielsweise bietet zones/us-central1-a den TPU-Maschinentyp ct5p-hightpu-4t.

  2. Verwenden Sie den Befehl gcloud batch jobs submit, um den Job zu erstellen und auszuführen:

    gcloud batch jobs submit JOB_NAME \
        --location LOCATION \
        --config JSON_CONFIGURATION_FILE
    

    Ersetzen Sie Folgendes:

    • JOB_NAME: Der Name des Jobs.

    • LOCATION: der Standort des Jobs.

    • JSON_CONFIGURATION_FILE: der Pfad für eine JSON-Datei mit den Konfigurationsdetails des Jobs.

API

Senden Sie eine POST-Anfrage an die Methode jobs.create, die eine Reservierung für einen TPU-Maschinentyp mit einem einzelnen Host angibt, das Bereitstellungsmodell auf RESERVATION_BOUND festlegt und in der Zone der Reservierung ausgeführt wird.

Stellen Sie zum Beispiel die folgende Anfrage, um einen einfachen Skriptjob zu erstellen:

POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}."
            }
          }
        ]
      },
      "taskCount": 3,
      "parallelism": 1
    }
  ],
  "allocationPolicy": {
    "instances": [
      {
        "policy": {
          "provisioningModel": "RESERVATION_BOUND",
          "reservation": "RESERVATION",
          "machineType": "MACHINE_TYPE"
        }
      }
    ],
    "location": {
      "allowedLocations": [
        "ALLOWED_LOCATIONS"
      ]
    }
  },
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: Die Projekt-ID Ihres Projekts.

  • LOCATION: der Standort des Jobs.

  • JOB_NAME: Der Name des Jobs.

  • RESERVATION: Ersetzen Sie dies durch einen der folgenden Pfade zu Ihrer Reservierung:

    • Wenn Sie eine vorausschauende Reservierung im Kalendermodus oder einen Teil der Reservierung für eine vorausschauende Reservierung für Kapazitätsblöcke verwenden möchten, geben Sie die Reservierung an:

      projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME
      
    • Wenn Sie einen bestimmten Block aus einer vorausschauenden Reservierung für Kapazitätsblöcke verwenden möchten, geben Sie den Reservierungsblock an:

      projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      
    • Wenn Sie einen bestimmten Unterblock aus einer vorausschauenden Reservierung für Kapazitätsblöcke verwenden möchten, geben Sie den Reservierungsunterblock an:

      projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationSubBlocks/SUB_BLOCK_NAME
      
  • MACHINE_TYPE: der TPU-Maschinentyp Ihrer Reservierung, z. B. ct5p-hightpu-4t.

  • ALLOWED_LOCATIONS: die zulässigen Standorte für den Job. Für einen Job, der reservierte TPUs verwendet, müssen Sie das Feld allowedLocations[] auf die Zone Ihrer Reservierung festlegen. Beispielsweise bietet zones/us-central1-a den TPU-Maschinentyp ct5p-hightpu-4t.

Weitere Informationen zum Erstellen von Jobs, die Reservierungen nutzen, finden Sie unter Ressourcenverfügbarkeit mit VM-Reservierungen sicherstellen.

Nächste Schritte