TPUs im Modus „Alle Kapazitäten“ in GKE bereitstellen

In diesem Dokument wird beschrieben, wie Sie Arbeitslasten mit dem TPU All Capacity-Modus in GKE bereitstellen und verwalten. Alle Reservierungen im Kapazitätsmodus bieten eine bessere Kontrolle über Ihre TPU-Ressourcen. So können Sie Ihre Arbeitslasten mit detaillierter Steuerung in Ihrer reservierten Kapazität platzieren.

Dieses Dokument richtet sich an Entwickler von maschinellem Lernen (ML) sowie an Plattformadministratoren und ‑operatoren, die die Kubernetes-Containerorchestrierung mit detaillierter Steuerung von TPU-Bereitstellungen verwenden möchten.

Bevor Sie dieses Dokument lesen, sollten Sie mit Folgendem vertraut sein:

Was ist der Modus „TPU – Gesamtkapazität“?

Im Modus „TPU – Gesamtkapazität“, der durch TPU Cluster Director aktiviert wird, haben Sie die vollständige Kontrolle über Ihre reservierte TPU-Kapazität. TPU Cluster Director ist ein Verwaltungsdienst, mit dem Sie Ihre TPUs reservierungsbasiert steuern können.

Im Gegensatz zum vorherigen verwalteten Modus, in dem Google Cloud einen Teil Ihrer Kapazität für Hardwarefehler reserviert, erhalten Sie im Modus „Alle Kapazitäten“ Zugriff auf alle Ihre reservierten TPU-Ressourcen. In diesem Modus haben Sie vollständigen Einblick in den Hardwarestatus, sind aber auch für die Verwaltung von Knotenausfällen und geplanten Wartungsarbeiten verantwortlich.

Weitere Informationen zu den wichtigsten Funktionen des Modus „All Capacity“ finden Sie unter Modus „All Capacity“ in der Übersicht über TPU Cluster Director.

Terminologie in Bezug auf den Modus „Alle Kapazitäten“ in GKE

Die folgende Tabelle enthält die Begriffe und Entsprechungen, die durch die Größe eines Blocks, Unterblocks und Würfels in der Ironwood-Version (TPU7x) definiert werden. Ein Würfel ist eine 4x4x4-Topologie miteinander verbundener TPU-Chips, die nur für Topologien in 3-Tupeln ({A} × {B} × {C}) gilt.

TPU-Ressource Kerne Chips Hosts Cubes
1 Chip 2 1 - -
1 Organisator 8 4 1 -
1 Unterblock 128 64 16 1
Ein Block enthält 144 Unterblöcke. 18432 9216 2304 144

Weitere Informationen zu den zulässigen Topologien in einem Block finden Sie unter Topologie auswählen.

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 einen Standardcluster mit Version 1.34.0-gke.2201000 oder höher. Informationen zum Erstellen eines neuen Clusters finden Sie unter Regionalen Cluster erstellen.
  • Prüfen Sie, ob Sie ein ausreichendes Kontingent für TPUs in der Region haben, die Sie verwenden möchten.
  • Installieren Sie JobSet v0.2.3 oder höher.

Beschränkungen

Der TPU-Modus „All Capacity“ in GKE unterstützt nur Ironwood-Versionen (TPU7x).

TPU-Modus „Alle Kapazitäten“ in GKE verwenden

In diesem Abschnitt wird der Workflow für die Verwendung des TPU-Modus „All Capacity“ in GKE beschrieben.

  1. Machen Sie sich mit TPU Cluster Director vertraut.
  2. TPU-Kapazität im Modus „All Capacity“ anfordern
  3. Topologie und Zustand von Reservierungen im Modus „Alle Kapazitäten“ ansehen
  4. Führen Sie den Schritt in diesem Dokument aus:
    1. GKE-Knotenpool erstellen
    2. Arbeitslasten planen
    3. Knotenausfälle mit einer Reservierung im Modus „All Capacity“ verwalten
  5. Wartungsereignisse mit TPUs im Modus „Alle Kapazitäten“ verwalten
  6. Fehlerhafte Hosts mit TPUs im Modus „Alle Kapazitäten“ melden und reparieren

Knotenpool in einer Reservierung im Modus „Alle Kapazitäten“ erstellen

Mit „All Capacity“ in GKE können Sie Knotenpools auf folgende Arten erstellen:

  • Ein Knotenpool, in dem GKE den Block oder Unterblock in Ihrer TPU-Reservierung für die gesamte Kapazität auswählt.
  • Ein Knotenpool, der auf einen bestimmten Block oder Unterblock innerhalb einer TPU-Reservierung im Modus „Alle Kapazitäten“ ausgerichtet ist.

GKE wählt den Block oder Unterblock in Ihrer TPU-Reservierung „All Capacity“ aus.

In diesem Modus wählt GKE die Platzierung des Knotenpools in Ihrer TPU-Reservierung für die gesamte Kapazität aus. Dieser Prozess ähnelt dem Erstellen von Knotenpools mit anderen TPU-Bereitstellungsoptionen wie On-Demand- oder Spot-VMs.

Verwenden Sie zum Erstellen eines Knotenpools den Befehl gcloud container node-pools create mit dem Flag --reservation. Geben Sie den vollständigen Ressourcennamen Ihrer TPU-Reservierung als Wert für das Flag --reservation an.

Ein Beispiel für einen Befehl zum Erstellen eines Knotenpools finden Sie unter Knotenpool manuell erstellen.

Block oder Unterblock in einer Reservierung auswählen

Im Modus „TPU All Capacity“ können Sie einen bestimmten Block oder Unterblock in Ihrer TPU-Reservierung für parallele Arbeitslasten festlegen. Diese Funktion ist nützlich für Arbeitslasten, die eine geringe Latenz erfordern, da die TPU-Chips nahe beieinander platziert werden.

  1. Hier finden Sie die verfügbaren Block-, Unterblock- und Hostkonfigurationen. Führen Sie die Schritte im Dokument Topologie und Integritätsstatus von Reservierungen im Modus „Alle Kapazitäten“ ansehen aus.

  2. Arbeitslastrichtlinie erstellen:

    können Sie die Liste der Arbeitslastrichtlinien aufrufen.
    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 unter TPUs in GKE planen.
    • 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 mit derselben Topologie wiederverwendet werden.
  3. Wenn Sie einen Knotenpool erstellen und auf einen bestimmten Block oder Unterblock der Reservierung ausrichten möchten, verwenden Sie das Flag --reservation, um den vollständigen Ressourcennamen des Zielblocks oder ‑unterblocks in Ihrer Reservierung anzugeben.

    Wenn Sie einen bestimmten Block in Ihrer Reservierung ansprechen möchten, verwenden Sie den folgenden Befehl:

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --machine-type=tpu7x-standard-4t \
        --placement-policy=WORKLOAD_POLICY_NAME \
        --zone=ZONE \
        --reservation=project/PROJECT/reservation/RESERVATION_NAME/reservationBlocks/BLOCK_NAME
    

    Wenn Sie einen bestimmten Unterblock innerhalb eines Blocks ansprechen möchten, verwenden Sie den folgenden Befehl:

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --machine-type=tpu7x-standard-4t \
        --placement-policy=WORKLOAD_POLICY_NAME \
        --zone=ZONE \
        --reservation=project/PROJECT/reservation/RESERVATION_NAME/reservationBlocks/BLOCK_NAME/reservationSubBlocks/SUB_BLOCK_NAME
    

    Ersetzen Sie Folgendes:

    • NODE_POOL_NAME ist der Name des neuen Knotenpools.
    • CLUSTER_NAME: der Name Ihres GKE-Clusters.
    • WORKLOAD_POLICY_NAME: der Name der von Ihnen erstellten Workload-Richtlinie.
    • ZONE: die Zone für den Knotenpool, z. B. us-central1-a.
    • PROJECT: Projekt-ID in Google Cloud .
    • RESERVATION_NAME: Der Name Ihrer TPU-Reservierung.
    • BLOCK_NAME: der spezifische Block in Ihrer Reservierung.
    • SUB_BLOCK_NAME: der spezifische Unterblock innerhalb Ihrer Reservierung.

    In den vorherigen Befehlen

Arbeitslasten planen

Nachdem Sie einen Knotenpool mit TPU-VMs im Modus „All Capacity“ erstellt haben, können Sie Ihre Arbeitslast wie bei jedem anderen TPU-Knotenpool bereitstellen. Im TPU-Modus „All Capacity“ gibt es keine zusätzlichen Unterschiede bei der Planung von Arbeitslasten im Vergleich zu Knotenpools, die standardmäßige SLO-basierte Reservierungen verwenden.

Weitere Informationen und Beispiele für Arbeitslasten, die TPUs verwenden, finden Sie unter Arbeitslast auf TPU-Slice-Knoten ausführen und Multislice-Arbeitslast ausführen.

Knotenfehler verwalten

Reservierungen im TPU-Modus „Alle Kapazitäten“ sind Reservierungen ohne Holdback. Keine Zurückbehaltung bedeutet, dass Sie die volle TPU-Kapazität erhalten, einschließlich des Teils, der normalerweise im Modus für verwaltete Kapazität für Failover zurückbehalten wird.Google Cloud

Wenn eine VM im Modus „TPU – Alle Kapazitäten“ aufgrund von Problemen wie Hardwarefehlern ausfällt, wird versucht,die VM auf demselben Host wiederherzustellen (In-Place-Reparatur). Google Cloud Wir empfehlen daher, Reservekapazität vorzuhalten, um Arbeitslasten bei Infrastrukturausfällen neu zu planen.

Knotenausfall und ‑wiederherstellung

Wenn ein Knoten in einer Reservierung im TPU-Modus „Alle Kapazitäten“ ausfällt, treten die folgenden Ereignisse ein:

  • Google Cloud löst ein Reparaturereignis für die fehlerhafte Compute Engine-VM-Instanz aus. Bei diesem Vorgang wird versucht, die VM in den Status RUNNING zurückzusetzen und den GKE-Knotenstatus auf READY zurückzusetzen.
  • Die TPU-VM wechselt in den Status „Wird repariert“ und alle Arbeitslasten, die auf diesem Knoten ausgeführt werden, können je nach Failover-Richtlinie fehlschlagen. Der Status des Knotenpools ändert sich nicht in ERROR, auch wenn bei einer oder mehreren seiner VMs Fehler auftreten.

So überwachen Sie den Systemstatus Ihrer Knoten:

  1. Knoten im Knotenpool auflisten:

    kubectl get nodes
    

    Fehlgeschlagene Knoten haben den Status NotReady.

  2. Status des Compute Engine-Knotens überwachen:

    Verwenden Sie für TPU-VMs im Modus „All Capacity“ (Alle Kapazitäten) gcloud compute instances describe. Dieser Befehl liefert auch den physischen Status der Topologie, um Host-, Unterblock- und Blockdetails zu finden.

    gcloud compute instances describe VM_NAME \
            --format="table[box,title=VM-Position](resourceStatus.physical_host_topology:label=location)" \
            --zone=ZONE
    

    Ersetzen Sie Folgendes:

    • VM_NAME: Der Name der TPU-VM-Instanz.
    • ZONE: die Zone der VM, z. B. us-central1-a.

    Weitere Informationen zum Abrufen von Topologie- und Integritätsinformationen zu Ihrer Kapazität im Modus „Alle Kapazitäten“ finden Sie unter Topologie und Integritätsstatus von Reservierungen im Modus „Alle Kapazitäten“ ansehen.

Wartung verwalten

Um potenzielle Störungen zu minimieren und dafür zu sorgen, dass Ihre Arbeitslasten weiterhin stabil bleiben, können Sie die Wartung für einzelne Knoten mit GKE-Wartungsrichtlinien verwalten. Weitere Informationen finden Sie unter Wartungsfenster und ‑ausschlüsse.

GKE unterstützt keine Gruppenwartung für TPU-VMs in einer Reservierung im Modus „Alle Kapazitäten“. Verwenden Sie Compute Engine APIs, um die Gruppenwartung auf Unterblock-, Block- oder Reservierungsebene durchzuführen. Weitere Informationen finden Sie unter Wartungsereignisse mit TPUs im Modus „All Capacity“ verwalten.

Bereinigen

Damit Ihrem Google Cloud -Konto keine unerwünschten Gebühren in Rechnung gestellt werden, sollten Sie die TPU-Knotenpools löschen, die keine geplanten Arbeitslasten mehr haben. Wenn die ausgeführten Arbeitslasten ordnungsgemäß beendet werden müssen, verwenden Sie den Befehl kubectl drain, um die Arbeitslasten zu bereinigen, bevor Sie den Knotenpool löschen.

  1. Löschen Sie einen TPU-Knotenpool:

    gcloud container node-pools delete NODE_POOL_NAME \
        --location=LOCATION \
        --cluster=CLUSTER_NAME
    

    Ersetzen Sie Folgendes:

    • NODE_POOL_NAME ist der Name des Knotenpools.
    • CLUSTER_NAME ist der Name des Clusters.
    • LOCATION: Der Compute-Standort des Clusters.

Nächste Schritte