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 updateab. 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:
- 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.
- Führen Sie die Schritte unter Anfrage im Kalendermodus erstellen aus. Dazu gehören die folgenden Schritte:
- Zukünftige Verfügbarkeit von TPUs ansehen
- Erstellen und senden Sie eine Anfrage für vorausschauende Reservierungen im Kalendermodus für TPUs.
- Warten Sie, bis Google Cloud Ihre Anfrage genehmigt hat.
- 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_NAMEist 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.
Arbeitslastrichtlinie erstellen:
gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \ --type=HIGH_THROUGHPUT \ --accelerator-topology=TPU_TOPOLOGY \ --project=PROJECT_ID \ --region=REGIONErsetzen 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.
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_POLICYErsetzen 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-4tgibt den Maschinentyp „Ironwood“ (TPU7x) an.
Terraform
- Prüfen Sie, ob Sie Version 4.84.0 oder höher des Anbieters
googleverwenden. 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.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. WennTPU_TOPOLOGYbeispielsweise4x8ist, gibt es 32 Chips, d. h.,NUM_NODESmuss 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 derRESERVATION_LABEL_VALUESim Feldreservation_affinityfinden 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 inTPU_TOPOLOGYdefinierten Werten ({A}x{B}x{C}) geteilt durch die Anzahl der Chips in jeder VM sein. WennTPU_TOPOLOGYbeispielsweise2x2x2ist, ist das Produkt 8. Da jede VM intpu7x-standard-4t4 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 auftruegesetzt werden, wennspotaktiviert 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_NAMEist 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
- Prüfen Sie, ob Sie Version 4.84.0 oder höher des Anbieters
googleverwenden. 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. WennTPU_TOPOLOGYbeispielsweise4x8ist, gibt es 32 Chips, d. h.,NUM_NODESmuss 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 derRESERVATION_LABEL_VALUESim Feldreservation_affinityfinden 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 inTPU_TOPOLOGYdefinierten 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 auftruegesetzt werden, wennspotaktiviert ist.
Console
So erstellen Sie einen Knotenpool mit TPUs:
Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine.
Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.
Klicken Sie auf Knotenpool hinzufügen add_box.
Klicken Sie im Abschnitt Knotenpooldetails das Kästchen Knotenstandorte angeben an.
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.
Klicken Sie im Navigationsbereich auf Knoten.
Wählen Sie im Abschnitt Maschinenkonfiguration die Option TPUs aus.
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)
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.
Wählen Sie im Drop-down-Menü TPU-Topologie die physische Topologie für das TPU-Slice aus.
Klicken Sie im Dialogfeld Änderungen erforderlich auf Änderungen vornehmen.
Achten Sie darauf, dass als Bootlaufwerktyp entweder Nichtflüchtiger Standardspeicher oder Nichtflüchtiger SSD-Speicher angegeben ist.
Klicken Sie optional das Kästchen Knoten auf Spot-VMs aktivieren an, um Spot-VMs für die Knoten im Knotenpool zu verwenden.
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
Probieren Sie GKE-Bereitstellungsbeispiele für generative KI-Modelle aus, die die von Ihnen reservierten TPU-Ressourcen verwenden:
- LLM mithilfe von TPU Trillium in GKE mit vLLM bereitstellen
- LLM mithilfe von TPUs in GKE mit KubeRay bereitstellen
- LLM mithilfe von TPUs in GKE mit JetStream und PyTorch bereitstellen
- Gemma mithilfe von TPUs in GKE mit JetStream bereitstellen
- Stable Diffusion XL (SDXL) mit TPUs in GKE mit MaxDiffusion bereitstellen
- Open-Source-Modelle mit TPUs in GKE mit Optimum TPU bereitstellen
In GKE AI Labs finden Sie experimentelle Beispiele dafür, wie Sie GKE nutzen können, um Ihre KI-/ML-Initiativen zu beschleunigen.