Batch-Workload mit TPUs und Flex-Start-VMs ausführen

In diesem Leitfaden erfahren Sie, wie Sie die TPU-Bereitstellung für Trainingsarbeitslasten mittleren und kleinen Umfangs mithilfe von Flex-Start-VMs optimieren. Flex-Start-VMs werden mit der Verbrauchsoption flex-start erstellt. In dieser Anleitung verwenden Sie Flex-Start-VMs, um eine Arbeitslast bereitzustellen, die aus einem TPU-Slice-Knotenpool besteht.

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.

Flex-Start-Preise

Flex-Start wird empfohlen, wenn für Ihre Arbeitslast dynamisch bereitgestellte Ressourcen nach Bedarf für bis zu sieben Tage mit kurzfristigen Reservierungen, ohne komplexe Kontingentverwaltung und mit kostengünstigem Zugriff erforderlich sind. Flex-Start basiert auf dem Dynamic Workload Scheduler und wird gemäß der Preisgestaltung des Dynamic Workload Schedulers abgerechnet:

  • Rabattiert (bis zu 53%) für vCPUs, GPUs und TPUs.
  • Sie zahlen nur für die tatsächliche Nutzung.

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.
  • Prüfen Sie, ob Sie einen Autopilot-Cluster oder einen Standardcluster mit Version 1.33.0-gke.1712000 oder höher haben.
  • Machen Sie sich mit den Einschränkungen von Flex-Start vertraut.
  • Wenn Sie einen Standardcluster verwenden, muss mindestens ein Knotenpool ohne aktivierte Flex-Start-Funktion vorhanden sein, damit der Cluster ordnungsgemäß funktioniert.
  • Prüfen Sie, ob Sie Kontingente für TPUs auf Abruf an Ihren Knotenstandorten haben.

Knotenpool mit Flex-Start erstellen

Wenn Sie einen Cluster im Autopilot-Modus verwenden, überspringen Sie diesen Abschnitt und fahren Sie mit dem Abschnitt Batcharbeitslast ausführen fort.

Wenn Sie einen Knotenpool mit aktiviertem Flex-Start in einem vorhandenen Standard-Cluster erstellen möchten, verwenden Sie die gcloud CLI.

TPU-Slice-Knotenpool mit einem Host erstellen

So erstellen Sie einen TPU-Slice-Knotenpool mit einem Host und Flex-Start:

  1. So erstellen Sie einen Knotenpool mit Flex-Start:

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --node-locations=NODE_ZONES \
        --machine-type=MACHINE_TYPE \
        --reservation-affinity=none \
        --enable-autoscaling \
        --flex-start \
        --num-nodes 0 \
        --min-nodes=0 \
        --max-nodes=1
    

    Ersetzen Sie Folgendes:

    • NODE_POOL_NAME: der Name, den Sie für Ihren Knotenpool auswählen
    • CLUSTER_NAME ist der Name des Clusters.
    • CONTROL_PLANE_LOCATION: die Compute-Region für die Clustersteuerungsebene.
    • 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.

      Der Befehl zum Erstellen eines Knotenpools kann beispielsweise die folgenden Parameter enthalten:

      ...
      --machine-type=ct6e-standard-4t \
      --tpu-topology=4x4 \
      --enable-autoscaling \
      --num-nodes=0 \
      --max-nodes=4 \
      

      Mit diesem Befehl wird das Feld --max-nodes auf 4 festgelegt, da eine 4x4-Topologie aus 16 Chips besteht und jede ct6e-standard-4t-VM 4 Chips hat.

      Cluster Autoscaler skaliert auf die Anzahl der Knoten, die für Ihre Arbeitslast erforderlich sind. Nachdem Ihre Arbeitslast abgeschlossen ist, skaliert Cluster Autoscaler den Cluster auf null Knoten herunter.

    • --reservation-affinity=none:Bei Flex-Start werden keine Reservierungen verwendet oder benötigt.

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=none \
        --enable-autoscaling \
        --num-nodes=0 --min-nodes=0 --max-nodes=MAX_NODES \
        --flex-start \
        --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.
    • MAX_NODES: Maximale Größe des Knotenpools. Das Flag --max-nodes ist erforderlich, wenn --enable-autoscaling angegeben ist und dem Produkt aus den in TPU_TOPOLOGY definierten Werten ({A}x{B}x{C}) geteilt durch die Anzahl der Chips in jeder VM entsprechen muss. 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.

    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.
    • --flex-start aktiviert den Flex-Start.

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 = true
      }
    
      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=none \
      --enable-autoscaling \
      --num-nodes=0 --min-nodes=0 --max-nodes=MAX_NODES \
      --flex-start

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.
  • MAX_NODES: Die maximale Größe des Knotenpools. Das Flag --max-nodes ist erforderlich, wenn --enable-autoscaling angegeben ist und dem Produkt aus den in TPU_TOPOLOGY definierten Werten ({A}x{B}x{C}) geteilt durch die Anzahl der Chips in jeder VM entsprechen muss.

    Mit diesem Befehl wird ein Knotenpool mit dem Namen NODE_POOL_NAME erstellt, für den Flex-Start aktiviert ist.

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 = true
      }
    
      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.

Status von Flex-Start im Knotenpool prüfen

Führen Sie dazu diesen Befehl aus:

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --format="get(config.flexStart)"

Wenn Flex-Start im Knotenpool aktiviert ist, wird das Feld flexStart auf True festgelegt.

Batcharbeitslast ausführen

In diesem Abschnitt erstellen Sie einen Job, der einen TPU-Knoten mit Flex-Start-VMs plant. Ein Jobcontroller in Kubernetes erstellt einen oder mehrere Pods und sorgt dafür, dass sie eine bestimmte Aufgabe erfolgreich ausführen.

  1. Starten Sie in der Google Cloud Console eine Cloud Shell-Sitzung, indem Sie auf Symbol für die Cloud Shell-Aktivierung Cloud Shell aktivieren klicken. Im unteren Bereich der Google Cloud Console wird eine Sitzung geöffnet.

  2. Erstellen Sie eine Datei mit dem Namen dws-flex-start.yaml:

    Einzelner Host

    Verwenden Sie das folgende Manifest für die Datei dws-flex-start.yaml:

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: job-1
    spec:
      template:
        spec:
          nodeSelector:
            cloud.google.com/gke-flex-start: "true"
            cloud.google.com/gke-tpu-accelerator: ACCELERATOR_TYPE
            cloud.google.com/gke-tpu-topology: TPU_TOPOLOGY
          containers:
          - name: container-1
            image: gcr.io/k8s-staging-perf-tests/sleep:latest
            args: ["3600s"] # Sleep for 1 hour
            resources:
              requests:
                  google.com/tpu: NUM_CHIPS
              limits:
                  google.com/tpu: NUM_CHIPS
          restartPolicy: OnFailure
    

    Mehrere Hosts

    Verwenden Sie das folgende Manifest für die Datei dws-flex-start.yaml:

    apiVersion: v1
    kind: Service
    metadata:
      name: headless-svc
    spec:
      clusterIP: None
      selector:
        job-name: job-1
    ---
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: job-1
    spec:
      backoffLimit: 0
      completions: 2
      parallelism: 2
      completionMode: Indexed
      template:
        spec:
          subdomain: headless-svc
          restartPolicy: Never
          nodeSelector:
              cloud.google.com/gke-flex-start: "true"
              cloud.google.com/gke-tpu-accelerator: ACCELERATOR_TYPE
              cloud.google.com/gke-tpu-topology: TPU_TOPOLOGY
          containers:
          - name: tpu-job
            image: us-docker.pkg.dev/cloud-tpu-images/jax-ai-image/tpu:latest
            ports:
            - containerPort: 8471 # Default port using which TPU VMs communicate
            - containerPort: 8431 # Port to export TPU runtime metrics, if supported.
            securityContext:
              privileged: true
            command:
            - bash
            - -c
            - |
              python -c 'import jax; print("TPU cores:", jax.device_count())'
            resources:
              requests:
                google.com/tpu: NUM_CHIPS
              limits:
                google.com/tpu: NUM_CHIPS
    

    Ersetzen Sie Folgendes:

    • ACCELERATOR_TYPE: Der Typ des TPU-Beschleunigers, den Sie beim Erstellen der Knotenpools verwendet haben. Beispiel: tpu-v4-podslice oder tpu-v5-lite-podslice.
    • TPU_TOPOLOGY: Die physische Topologie für das TPU-Slice. Der Wert kann beispielsweise 4x4x4 oder 2x2 sein, je nach TPU-Version.
    • NUM_CHIPS: Die Anzahl der TPU-Chips in jeder VM beträgt eins, vier oder acht. Weitere Informationen finden Sie unter TPU-Versionen.
  3. Wenden Sie das dws-flex-start.yaml-Manifest an:

    kubectl apply -f dws-flex-start.yaml
    
  4. Prüfen Sie, ob die Jobs auf demselben Knoten ausgeführt werden:

    kubectl get pods
    

    Die Ausgabe sieht etwa so aus:

    NAME    READY   STATUS      RESTARTS   AGE   IP       NODE               NOMINATED NODE   READINESS GATES
    job-1   0/1     Completed   0          19m   10.(...) gke-flex-zonal-a2  <none>           <none>
    

Bereinigen

Damit Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden, können Sie entweder das Projekt löschen, das die Ressourcen enthält, oder das Projekt beibehalten und die einzelnen Ressourcen löschen.

Projekt löschen

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Einzelne Ressource löschen

  1. Löschen Sie die Jobs:

    kubectl delete job -l "job-name in (job-1,job-2)"
    
  2. Löschen Sie den Knotenpool:

    gcloud container node-pools delete NODE_POOL_NAME \
          --location CONTROL_PLANE_LOCATION
    
  3. Löschen Sie den Cluster:

    gcloud container clusters delete CLUSTER_NAME
    

Nächste Schritte