TPUs mit vorausschauender Reservierung im Kalendermodus anfordern

In dieser Anleitung erfahren Sie, wie Sie die Bereitstellung von Tensor Processing Unit (TPUs) optimieren können, indem Sie die vorausschauende Reservierung im Kalendermodus verwenden. Die vorausschauende Reservierung im Kalendermodus ist ein integrierter Kalender berater und Empfehlungsdienst, mit dem Sie TPU-Kapazität finden und im Voraus planen können. Sie können Kapazität für eine bestimmte Startzeit und Dauer zwischen 1 und 90 Tagen anfordern. Der Empfehlungsdienst schlägt dann Termine vor.

Diese Anleitung richtet sich an Machine Learning-Entwickler, Plattformadministratoren und ‑operatoren sowie Daten- und KI-Spezialisten, die Funktionen zur Kubernetes-Containerorchestrierung für die Ausführung von Batcharbeitslasten nutzen möchten. 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 Reservierung im Kalendermodus.

Anwendungsfälle

Die vorausschauende Reservierung im Kalendermodus eignet sich am besten für Arbeitslasten mit geplanten, kurzfristigen Anfragen mit hoher Nachfrage, z. B. für das Training oder für Batch-Inferenzmodelle, die zum angeforderten Start Zeitpunkt eine hohe Verfügbarkeit erfordern.

Wenn Ihre Arbeitslast dynamisch bereitgestellte Ressourcen nach Bedarf für bis zu 7 Tage ohne langfristige Reservierungen oder eine komplexe Kontingentverwaltung erfordert, sollten Sie die Verbrauchsoption Flex-Start verwenden. Weitere Informationen finden Sie unter GPU-, TPU- und H4D-Nutzung mit dem Bereitstellungsmodus „Flex-Start“.

Hinweis

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 diese Aufgabe verwenden möchten, installieren und dann initialisieren Sie die gcloud CLI. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem gcloud components update Befehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
  • Sie benötigen eine der folgenden Optionen:

Vorausschauende Reservierung im Kalendermodus für TPUs anfordern

Der Prozess zum Anfordern von TPUs mit vorausschauender Reservierung im Kalendermodus umfasst die folgenden Schritte:

  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. Laufwerke 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. Die Vorgehensweise ist folgende:
    1. Zukünftige Verfügbarkeit von TPUs ansehen.
    2. Anfrage für vorausschauende Reservierung im Kalendermodus für TPUs erstellen und senden.
    3. Warten Sie, bis Google Cloud Ihre Anfrage genehmigt hat.
  3. Erstellen Sie einen TPU-Knotenpool, der Ihre Reservierung verwendet.

Knotenpool erstellen

Dieser Abschnitt gilt nur für Standardcluster, da im Autopilot-Modus Knoten automatisch 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 zum Ermitteln eines verfügbaren Standorts finden Sie unter TPU-Verfügbarkeit in GKE.
  • CLUSTER_NAME: 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 gcloud container clusters create Referenz.

Nachdem Sie einen Knotenpool mit der Kalenderreservierung erstellt haben, können Sie Ihre Arbeitslast wie bei jedem anderen TPU-Knotenpool bereitstellen. Die Nutzung der vorausschauenden Reservierung im Kalendermodus funktioniert genauso wie bei jeder anderen Art von Reservierung. Weitere Informationen finden Sie unter Reservierte zonale Ressourcen nutzen.

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) mithilfe der Google Cloud CLI oder von 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.

um die Liste der Arbeitslastrichtlinien aufzurufen.
  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-Topologie von Ironwood (TPU7x). Beispiel: 2x2x2. Alle unterstützten Ironwood (TPU7x)-Topologien finden Sie im Abschnitt zur Topologie.
    • PROJECT_ID: Ihre Google Cloud Projekt-ID.
    • 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. Knotenpool mit der Arbeitslastrichtlinie erstellen:

    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 \
        --consolidation-delay=CONSOLIDATION_DELAY
    

    Ersetzen Sie Folgendes:

    • NODE_POOL_NAME: der Name des neuen Knotenpools.
    • WORKLOAD_POLICY: der Name der von Ihnen erstellten Arbeitslastrichtlinie.
    • FUTURE_RESERVATION_NAME: der Name Ihrer vorausschauenden Reservierung.

    Mit diesem Befehl wird ein Knotenpool mit dem Namen NODE_POOL_NAME mit den folgenden Merkmalen 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 google Anbieters 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-Topologie von Ironwood (TPU7x). Beispiel: 2x2x2. Alle unterstützten Ironwood (TPU7x)-Topologien finden Sie unter TPUs planen.

    Weitere Informationen zur Referenz google_compute_resource_policy 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.

      Optional: Verwenden Sie eine KI-Zone wie us-central1-ai1a. KI-Zonen sind spezialisierte Standorte, die für KI-/ML-Arbeitslasten in Google Cloud Regionen optimiert sind.

    • 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 von theRESERVATION_LABEL_VALUES im Feld reservation_affinity finden Sie unter Terraform-Anbieter.
    • autoscaling: Erstellen Sie einen Knotenpool mit aktiviertem Autoscaling. 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 der in TPU_TOPOLOGY ({A}x{B}x{C}) definierten Werte 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 siehe Spot-VMs.
    • flex_start: der Knotenpool, der die Verbrauchsoption „Flex-Start “ verwendet. Diese Einstellung kann nicht auf true gesetzt werden, wenn spot aktiviert ist.

Andere TPU-Versionen

Sie können einen TPU-Slice-Knotenpool mit mehreren Hosts in den Versionen v3, v4, v5p, v5e und Trillium (v6e) mithilfe der Google Cloud CLI, von Terraform oder über 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: der Name des Clusters.
  • CONTROL_PLANE_LOCATION: der Name der Zone basierend auf der zu verwendenden TPU-Version. Informationen zum Ermitteln eines verfügbaren Standorts 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.

    Optional: Verwenden Sie eine KI-Zone wie us-central1-ai1a. KI-Zonen sind spezialisierte Standorte, die für KI-/ML-Arbeitslasten in Google Cloud Regionen optimiert sind.

  • 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. Alle unterstützten TPU-Topologien finden Sie im Abschnitt zur Topologie.
  • FUTURE_RESERVATION_NAME: der Name Ihrer vorausschauenden Reservierung.
  • CONSOLIDATION_DELAY: optional. Die Dauer, die Cluster Autoscaler wartet, bevor er unterlastete Knoten herunterskalieren kann. Verwenden Sie diese Einstellung, um das Herunterskalieren zu verzögern und den Knotenpool für die spätere Wiederverwendung durch andere Pods beizubehalten. Die eingegebene Zahl muss mit s enden. Wenn Sie beispielsweise eine Stunde angeben möchten, geben Sie 3600s ein. Verfügbar in GKE-Version 1.34.1-gke.2364000 und höher.

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.

      Optional: Verwenden Sie eine KI-Zone wie us-central1-ai1a. KI-Zonen sind spezialisierte Standorte, die für KI-/ML-Arbeitslasten in Google Cloud Regionen optimiert sind.

    • 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 von theRESERVATION_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 Werten in definierten Werte TPU_TOPOLOGY ({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 siehe Spot-VMs.
    • flex_start: Legt den Knotenpool so fest, dass die Verbrauchsoption „Flex-Start“ verwendet wird. 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.

    Zu Google Kubernetes Engine

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

  3. Klicken Sie auf den Tab Knoten.

  4. Klicken Sie auf Vom Nutzer verwalteten Knotenpool erstellen.

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

  6. Wählen Sie den Namen der Zone anhand der TPU-Version aus, die Sie verwenden möchten. Informationen zum Ermitteln eines verfügbaren Standorts finden Sie unter TPU-Verfügbarkeit in GKE.

  7. Klicken Sie im Navigationsbereich auf Knoten.

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

  9. 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)
  10. 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.

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

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

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

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

  15. 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 der vorausschauenden Reservierung im Kalendermodus funktioniert genauso wie bei jeder anderen Art von Reservierung. Weitere Informationen finden Sie unter Reservierte zonale Ressourcen nutzen.

Nächste Schritte