TPUs mit vorausschauender Reservierung im Kalendermodus anfordern

In diesem Leitfaden erfahren Sie, wie Sie die TPU-Bereitstellung (Tensor Processing Unit) mithilfe von vorausschauenden Reservierungen im Kalendermodus optimieren. Die vorausschauende Reservierung im Kalendermodus ist ein integrierter Kalenderberater und Empfehlungsdienst, der Ihnen dabei helfen kann, TPU-Kapazität zu finden und im Voraus zu planen. Sie können Kapazität für eine bestimmte Startzeit und Dauer (zwischen 1 und 90 Tagen) anfordern. Der Recommender schlägt dann passende Termine vor.

Dieser Leitfaden richtet sich an Entwickler von maschinellem Lernen (ML), Plattformadministratoren und ‑operatoren sowie an Daten- und KI-Spezialisten, die daran interessiert sind, Kubernetes-Container-Orchestrierungsfunktionen zum Ausführen von Batcharbeitslasten zu nutzen. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.

Weitere Informationen finden Sie unter Vorausschauende Reservierungen im Kalendermodus.

Anwendungsfälle

Vorausschauende Reservierungen im Kalendermodus eignen sich am besten für Arbeitslasten mit geplanten, kurzfristigen Anfragen mit hoher Nachfrage, z. B. für das Training oder für Batchinferenzmodelle, die zum angeforderten Startzeitpunkt eine hohe Verfügbarkeit erfordern.

Wenn für Ihre Arbeitslast Ressourcen nach Bedarf für bis zu 7 Tage dynamisch bereitgestellt werden müssen, ohne dass langfristige Reservierungen oder eine komplexe Kontingentverwaltung erforderlich sind, sollten Sie die Verbrauchsoption Flex-Start verwenden. Weitere Informationen finden Sie unter GPU- und TPU-Bereitstellung mit Flex-Start.

Hinweise

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diesen Task verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem Befehl gcloud components update ab. In früheren gcloud CLI-Versionen werden die Befehle in diesem Dokument möglicherweise nicht unterstützt.
  • Sie benötigen eine der folgenden Optionen:
    • Sie benötigen einen Standardcluster mit Version 1.28.3-gke.1098000 oder höher.
    • Sie benötigen einen Autopilot-Cluster mit Version 1.30.3-gke.1451000 oder höher.

Vorausschauende Reservierung im Kalendermodus für TPUs anfordern

So fordern Sie TPUs mit vorausschauender Reservierung im Kalendermodus an:

  1. Achten Sie darauf, dass Sie ein ausreichendes Kontingent für alle Ressourcen haben, die nicht Teil einer Reservierung sind, wenn VMs erstellt werden, z. B. für Festplatten oder IP-Adressen. Für Anfragen für vorausschauende Reservierungen im Kalendermodus ist kein Compute Engine-Kontingent erforderlich.
  2. Führen Sie die Schritte unter Anfrage im Kalendermodus erstellen aus. Dazu gehören die folgenden Schritte:
    1. Zukünftige Verfügbarkeit von TPUs ansehen
    2. Erstellen und senden Sie eine Anfrage für vorausschauende Reservierungen im Kalendermodus für TPUs.
    3. Warten Sie, bis Google Cloud Ihre Anfrage genehmigt hat.
  3. Erstellen Sie einen TPU-Knotenpool, der Ihre Reservierung nutzt.

Knotenpool erstellen

Dieser Abschnitt gilt nur für Standardcluster, da im Autopilot-Modus automatisch Knoten basierend auf den Arbeitslasten erstellt werden.

Sie können Ihre Reservierung verwenden, wenn Sie TPU-Slice-Knotenpools mit einem oder mehreren Hosts erstellen.

TPU-Slice-Knotenpool mit einem Host erstellen

Sie können einen TPU-Slice-Knotenpool mit einem einzelnen Host mithilfe der Google Cloud CLI erstellen.

gcloud container node-pools create NODE_POOL_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --cluster=CLUSTER_NAME \
    --node-locations=NODE_ZONES \
    --machine-type=MACHINE_TYPE \
    --reservation-affinity=specific \ This is required
    --reservation=RESERVATION

Ersetzen Sie Folgendes:

  • NODE_POOL_NAME: der Name des neuen Knotenpools.
  • CONTROL_PLANE_LOCATION: Der Name der Zone basierend auf der zu verwendenden TPU-Version. Informationen dazu, wie Sie einen verfügbaren Standort ermitteln, finden Sie unter TPU-Verfügbarkeit in GKE.
  • CLUSTER_NAME ist der Name des Clusters.
  • NODE_ZONES: Die durch Kommas getrennte Liste mit einer oder mehreren Zonen, in denen GKE den Knotenpool erstellt.
  • MACHINE_TYPE: Der Maschinentyp für Knoten. Weitere Informationen zu TPU-kompatiblen Maschinentypen finden Sie in der Tabelle unter TPU-Version auswählen.
  • RESERVATION: Der Name der Kalenderreservierung, die genutzt werden soll.

Eine vollständige Liste aller Flags, die Sie angeben können, finden Sie in der Referenz zu gcloud container clusters create.

Nachdem Sie einen Knotenpool mit der Kalenderreservierung erstellt haben, können Sie Ihre Arbeitslast wie bei jedem anderen TPU-Knotenpool bereitstellen. Die Nutzung vorausschauender Reservierungen im Kalendermodus funktioniert genauso wie bei anderen Reservierungsarten. Weitere Informationen finden Sie unter Reservierte zonale Ressourcen aufnehmen.

TPU-Slice-Knotenpool mit mehreren Hosts erstellen

Die Schritte zum Erstellen eines TPU-Slice-Knotenpools mit mehreren Hosts unterscheiden sich je nachdem, ob Sie Ironwood (TPU7x) oder eine frühere TPU-Version verwenden.

Ironwood (TPU7x)

Sie können einen TPU-Slice-Knotenpool mit mehreren Hosts in der Version „Ironwood“ (TPU7x) über die Google Cloud CLI oder Terraform erstellen:

gcloud

Wenn Sie einen TPU-Slice-Knotenpool mit mehreren Hosts mit Ironwood (TPU7x) erstellen möchten, müssen Sie zuerst eine Arbeitslastrichtlinie erstellen.

  1. Arbeitslastrichtlinie erstellen:

    gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
        --type=HIGH_THROUGHPUT \
        --accelerator-topology=TPU_TOPOLOGY \
        --project=PROJECT_ID \
        --region=REGION
    

    Ersetzen Sie Folgendes:

    • WORKLOAD_POLICY_NAME: ein Name für Ihre Arbeitslastrichtlinie.
    • TPU_TOPOLOGY: Die TPU-Ironwood-Topologie (TPU7x). Beispiel: 2x2x2. Eine Liste aller unterstützten Ironwood-Topologien (TPU7x) finden Sie im Abschnitt zu Topologien.
    • PROJECT_ID: Projekt-ID in Google Cloud .
    • REGION: die Region für die Arbeitslastrichtlinie. Eine Arbeitslastrichtlinie ist eine regionale Ressource und kann für Knotenpools wiederverwendet werden, die dieselbe Topologie haben.
  2. Erstellen Sie den Knotenpool mit der Arbeitslastrichtlinie:

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=us-central1 \
        --node-locations=us-central1-c \
        --machine-type=tpu7x-standard-4t \
        --reservation-affinity=specific \
        --reservation=FUTURE_RESERVATION_NAME \
        --placement-policy=WORKLOAD_POLICY
    

    Ersetzen Sie Folgendes:

    • NODE_POOL_NAME: der Name des neuen Knotenpools.
    • WORKLOAD_POLICY: der Name der von Ihnen erstellten Workload-Richtlinie.
    • FUTURE_RESERVATION_NAME: der Name Ihrer zukünftigen Reservierung.

    Mit diesem Befehl wird ein Knotenpool mit dem Namen NODE_POOL_NAME mit den folgenden Eigenschaften erstellt:

    • --machine-type=tpu7x-standard-4t gibt den Maschinentyp „Ironwood“ (TPU7x) an.

Terraform

  1. Prüfen Sie, ob Sie Version 4.84.0 oder höher des Anbieters google verwenden.
  2. Arbeitslastrichtlinie erstellen:

    resource "google_compute_resource_policy" {
      name   = "WORKLOAD_POLICY_NAME"
      region = CLUSTER_LOCATION
      workload_policy {
        type = "HIGH_THROUGHPUT"
        accelerator_topology = "TPU_TOPOLOGY"
      }
    }
    

    Ersetzen Sie Folgendes:

    • WORKLOAD_POLICY_NAME: ein Name für Ihre Arbeitslastrichtlinie.
    • CLUSTER_LOCATION: Der Compute-Standort des Clusters. Wir empfehlen einen regionalen Cluster für eine höhere Zuverlässigkeit der Kubernetes-Steuerungsebene. Sie können auch einen zonalen Cluster verwenden. Weitere Informationen finden Sie unter TPU-Version und Topologie auswählen.
    • TPU_TOPOLOGY: Die TPU-Ironwood-Topologie (TPU7x). Beispiel: 2x2x2. Alle unterstützten Ironwood-Topologien (TPU7x) finden Sie unter TPUs planen.

    Weitere Informationen zur google_compute_resource_policy-Referenz finden Sie unter Terraform-Anbieter.

  3. Fügen Sie Ihrer Terraform-Konfiguration den folgenden Block hinzu:

    resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" {
      provider           = google
      project            = PROJECT_ID
      cluster            = CLUSTER_NAME
      name               = POOL_NAME
      location           = CLUSTER_LOCATION
      node_locations     = [NODE_ZONES]
      initial_node_count = NUM_NODES
    
      autoscaling {
        max_node_count = MAX_NODES
        location_policy      = "ANY"
      }
      node_config {
        machine_type = MACHINE_TYPE
        reservation_affinity {
          consume_reservation_type = "SPECIFIC_RESERVATION"
          key = "compute.googleapis.com/reservation-name"
          values = [RESERVATION_LABEL_VALUES]
        }
        flex_start = false
      }
    
      placement_policy {
        policy_name = WORKLOAD_POLICY_NAME
      }
    }
    

    Ersetzen Sie Folgendes:

    • NODE_POOL_RESOURCE_NAME: Der Name der Knotenpoolressource in der Terraform-Vorlage.
    • PROJECT_ID: Ihre Projekt-ID.
    • CLUSTER_NAME: Der Name des vorhandenen Clusters, dem der Knotenpool hinzugefügt werden soll.
    • POOL_NAME: Der Name des Knotenpools, der erstellt werden soll.
    • NODE_ZONES: Die durch Kommas getrennte Liste mit einer oder mehreren Zonen, in denen GKE den Knotenpool erstellt.
    • NUM_NODES: Die Anzahl der Knoten im Knotenpool. Sie muss null oder das Produkt der Anzahl der TPU-Chips geteilt durch vier sein, da in TPU-Slices mit mehreren Hosts jeder TPU-Slice-Knoten vier Chips hat. Wenn TPU_TOPOLOGY beispielsweise 4x8 ist, gibt es 32 Chips, d. h., NUM_NODES muss 8 sein. Weitere Informationen zu TPU-Topologien finden Sie in der Tabelle unter TPU-Version auswählen.
    • TPU_TOPOLOGY: Dies gibt die ausgewählte physische Topologie für das TPU-Slice an. Das Format der Topologie hängt von der verwendeten TPU-Version ab. Weitere Informationen zu TPU-Topologien finden Sie in der Tabelle unter Topologie auswählen.

    Optional können Sie auch die folgenden Variablen verwenden:

    • RESERVATION_NAME: Wenn Sie eine TPU-Reservierung verwenden, geben Sie eine Liste der Labels der Reservierungsressourcen an, die beim Erstellen des Knotenpools verwendet werden sollen. Weitere Informationen zum Ausfüllen der RESERVATION_LABEL_VALUES im Feld reservation_affinity finden Sie unter Terraform-Anbieter.
    • autoscaling: Knotenpool mit aktiviertem Autoscaling erstellen. Wenn GKE einen TPU-Slice-Knotenpool mit mehreren Hosts skaliert, wird der Knotenpool atomar von null auf die maximale Größe hochskaliert.
      • MAX_NODES: Die maximale Größe des Knotenpools. Der Wert muss gleich dem Produkt aus den in TPU_TOPOLOGY definierten Werten ({A}x{B}x{C}) geteilt durch die Anzahl der Chips in jeder VM sein. Wenn TPU_TOPOLOGY beispielsweise 2x2x2 ist, ist das Produkt 8. Da jede VM in tpu7x-standard-4t 4 Chips hat, beträgt die Anzahl der Knoten 2.
    • spot: Der Knotenpool, der Spot-VMs für die TPU-Slice-Knoten verwendet. Diese Einstellung kann nach dem Erstellen des Knotenpools nicht mehr geändert werden. Weitere Informationen finden Sie unter Spot-VMs.
    • flex_start: Der Knotenpool, für den die Verbrauchsoption flex-start verwendet wird. Diese Einstellung kann nicht auf true gesetzt werden, wenn spot aktiviert ist.

Andere TPU-Versionen

Sie können einen Knotenpool für ein TPU-Slice mit mehreren Hosts in Version v3, v4, v5p, v5e und Trillium (v6e) über die Google Cloud CLI, Terraform oder die Google Cloud Console erstellen.

gcloud

  gcloud container node-pools create NODE_POOL_NAME \
      --cluster=CLUSTER_NAME \
      --location=CONTROL_PLANE_LOCATION \
      --node-locations=NODE_ZONES \
      --machine-type=MACHINE_TYPE \
      --tpu-topology=TPU_TOPOLOGY \
      --reservation-affinity=specific \
      --reservation=FUTURE_RESERVATION_NAME

Ersetzen Sie Folgendes:

  • NODE_POOL_NAME: der Name des neuen Knotenpools.
  • CLUSTER_NAME ist der Name des Clusters.
  • CONTROL_PLANE_LOCATION: Der Name der Zone basierend auf der zu verwendenden TPU-Version. Informationen dazu, wie Sie einen verfügbaren Standort ermitteln, finden Sie unter TPU-Verfügbarkeit in GKE.
  • NODE_ZONES: Die durch Kommas getrennte Liste mit einer oder mehreren Zonen, in denen GKE den Knotenpool erstellt.
  • MACHINE_TYPE: Der Maschinentyp für Knoten. Weitere Informationen zu TPU-kompatiblen Maschinentypen finden Sie in der Tabelle unter TPU-Version auswählen.
  • TPU_TOPOLOGY: Die TPU-Topologie. Beispiel: 2x2x2. Eine Liste aller unterstützten TPU-Topologien finden Sie im Abschnitt zu Topologien.
  • FUTURE_RESERVATION_NAME: der Name Ihrer zukünftigen Reservierung.

Terraform

  1. Prüfen Sie, ob Sie Version 4.84.0 oder höher des Anbieters google verwenden.
  2. Fügen Sie Ihrer Terraform-Konfiguration den folgenden Block hinzu:

    resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" {
      provider           = google
      project            = PROJECT_ID
      cluster            = CLUSTER_NAME
      name               = POOL_NAME
      location           = CLUSTER_LOCATION
      node_locations     = [NODE_ZONES]
      initial_node_count = NUM_NODES
    
      autoscaling {
        max_node_count = MAX_NODES
        location_policy      = "ANY"
      }
      node_config {
        machine_type = MACHINE_TYPE
        reservation_affinity {
          consume_reservation_type = "SPECIFIC_RESERVATION"
          key = "compute.googleapis.com/reservation-name"
          values = [RESERVATION_LABEL_VALUES]
        }
        flex_start = false
      }
    
      placement_policy {
        type = "COMPACT"
        tpu_topology = TPU_TOPOLOGY
      }
    }
    

    Ersetzen Sie Folgendes:

    • NODE_POOL_RESOURCE_NAME: Der Name der Knotenpoolressource in der Terraform-Vorlage.
    • PROJECT_ID: Ihre Projekt-ID.
    • CLUSTER_NAME: Der Name des vorhandenen Clusters, dem der Knotenpool hinzugefügt werden soll.
    • POOL_NAME: Der Name des Knotenpools, der erstellt werden soll.
    • CLUSTER_LOCATION: Der Compute-Standort des Clusters. Wir empfehlen einen regionalen Cluster für eine höhere Zuverlässigkeit der Kubernetes-Steuerungsebene. Sie können auch einen zonalen Cluster verwenden. Weitere Informationen finden Sie unter TPU-Version und Topologie auswählen.
    • NODE_ZONES: Die durch Kommas getrennte Liste mit einer oder mehreren Zonen, in denen GKE den Knotenpool erstellt.
    • NUM_NODES: Die Anzahl der Knoten im Knotenpool. Sie muss null oder das Produkt der Anzahl der TPU-Chips geteilt durch vier sein, da in TPU-Slices mit mehreren Hosts jeder TPU-Slice-Knoten vier Chips hat. Wenn TPU_TOPOLOGY beispielsweise 4x8 ist, gibt es 32 Chips, d. h., NUM_NODES muss 8 sein. Weitere Informationen zu TPU-Topologien finden Sie in der Tabelle unter TPU-Version auswählen.
    • TPU_TOPOLOGY: Dies gibt die physische Topologie für das TPU-Slice an. Das Format der Topologie hängt von der verwendeten TPU-Version ab. Weitere Informationen zu TPU-Topologien finden Sie in der Tabelle unter Topologie auswählen.

    Optional können Sie auch die folgenden Variablen verwenden:

    • RESERVATION_NAME: Wenn Sie die TPU-Reservierung verwenden, ist dies die Liste der Labels der Reservierungsressourcen, die beim Erstellen des Knotenpools verwendet werden sollen. Weitere Informationen zum Ausfüllen der RESERVATION_LABEL_VALUES im Feld reservation_affinity finden Sie unter Terraform-Anbieter.
    • autoscaling: Knotenpool mit aktiviertem Autoscaling erstellen. Wenn GKE einen TPU-Slice-Knotenpool mit mehreren Hosts skaliert, wird der Knotenpool atomar von null auf die maximale Größe hochskaliert.
      • MAX_NODES: Die maximale Größe des Knotenpools. Sie muss gleich dem Produkt aus den in TPU_TOPOLOGY definierten Werten ({A}x{B}x{C}) geteilt durch die Anzahl der Chips in jeder VM sein.
    • spot: Ermöglicht dem Knotenpool, Spot-VMs für die TPU-Slice-Knoten zu verwenden. Dies kann nach dem Erstellen des Knotenpools nicht mehr geändert werden. Weitere Informationen finden Sie unter Spot-VMs.
    • flex_start: Legt fest, dass der Knotenpool die Verbrauchsoption flex-start verwendet. Kann nicht auf true gesetzt werden, wenn spot aktiviert ist.

Console

So erstellen Sie einen Knotenpool mit TPUs:

  1. Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie auf Knotenpool hinzufügen .

  4. Klicken Sie im Abschnitt Knotenpooldetails das Kästchen Knotenstandorte angeben an.

  5. Wählen Sie den Namen der Zone basierend auf der TPU-Version aus, die Sie verwenden möchten. Informationen dazu, wie Sie einen verfügbaren Standort ermitteln, finden Sie unter TPU-Verfügbarkeit in GKE.

  6. Klicken Sie im Navigationsbereich auf Knoten.

  7. Wählen Sie im Abschnitt Maschinenkonfiguration die Option TPUs aus.

  8. Wählen Sie im Drop-down-Menü Serie eine der folgenden Optionen aus:

    • CT3: TPU v3, Gerät mit einem Host
    • CT3P: TPU v3, Pod-Slice mit mehreren Hosts
    • CT4P: TPU v4
    • CT5LP: TPU v5e
    • CT5P: TPU v5p
    • CT6E: TPU Trillium (v6e)
  9. Wählen Sie im Drop-down-Menü Maschinentyp den Namen des Computers aus, der für Knoten verwendet werden soll. In der Tabelle TPU-Version auswählen erfahren Sie, wie Sie den Maschinentyp und die TPU-Topologie definieren, mit denen ein TPU-Slice-Knotenpool mit mehreren Hosts erstellt wird.

  10. Wählen Sie im Drop-down-Menü TPU-Topologie die physische Topologie für das TPU-Slice aus.

  11. Klicken Sie im Dialogfeld Änderungen erforderlich auf Änderungen vornehmen.

  12. Achten Sie darauf, dass als Bootlaufwerktyp entweder Nichtflüchtiger Standardspeicher oder Nichtflüchtiger SSD-Speicher angegeben ist.

  13. Klicken Sie optional das Kästchen Knoten auf Spot-VMs aktivieren an, um Spot-VMs für die Knoten im Knotenpool zu verwenden.

  14. Klicken Sie auf Erstellen.

Nachdem Sie einen Knotenpool mit der Kalenderreservierung erstellt haben, können Sie Ihre Arbeitslast wie bei jedem anderen TPU-Knotenpool bereitstellen. Die Nutzung vorausschauender Reservierungen im Kalendermodus funktioniert genauso wie bei anderen Reservierungsarten. Weitere Informationen finden Sie unter Reservierte zonale Ressourcen aufnehmen.

Nächste Schritte