Knotenstatusvorhersage in einem GKE-Cluster aktivieren

Nachdem Sie einen KI-optimierten Google Kubernetes Engine-Cluster (GKE) erstellt haben, können Sie die Knotenzustandsprognose aktivieren. Wenn Sie Arbeitslasten mit Topology Aware Scheduling (TAS) und Kueue planen möchten, kann der Cluster-Scheduler mit der aktivierten Knotenzustandsprognose Folgendes tun:

  1. Knoten identifizieren, bei denen es in den nächsten fünf Stunden wahrscheinlich zu einer Leistungsminderung kommt.

  2. Vermeiden, neue Arbeitslasten auf diesen Knoten zu planen.

Mit diesem Ansatz können Sie Unterbrechungen bei kritischen und unterbrechungsempfindlichen Arbeitslasten wie umfangreichen Trainingsarbeitslasten minimieren.

In diesem Dokument wird beschrieben, wie Sie die Knotenzustandsprognose in einem GKE-Cluster aktivieren, der Knoten der allgemeinen GPU-Maschinenserie (A3 Edge, A2, G2, G4, N1) oder der Cluster-GPU-Maschinenserie (A4X Max, A4X, A4, A3 Ultra, A3 Mega und A3 High) verwendet. Informationen zur Verwendung des Messwerts für die Knotenzustandsprognose in einem Cloud Monitoring-Dashboard, wenn Sie beispielsweise Leistungsprobleme in einem Slurm-Cluster beheben möchten, finden Sie stattdessen unter Compute Engine-Instanzen und Slurm-Cluster überwachen.

Beschränkungen

Beachten Sie die folgenden Einschränkungen, bevor Sie die Knotenzustandsprognose in Ihrem GKE-Cluster aktivieren:

  • Der Knoten muss allgemeine GPU- (A3 Edge, A2, G2, G4, N1) oder Cluster-GPU-Maschinentypen (A4X Max, A4X, A4, A3 Ultra, A3 Mega, A3 High) verwenden.

  • Der Knoten muss das reservierungsgebundene Bereitstellungsmodell verwenden.

Knotenzustandsprognose

Wenn Sie die Knotenzustandsprognose in einem GKE-Cluster aktivieren, wendet der CronJob das Label gke.google.com/recommended-to-run-large-training-workload auf jeden Knoten in Ihrem Cluster an. Der CronJob legt die Labelwerte auf die Wahrscheinlichkeit fest, dass sich der GPU-Zustand eines Knotens verschlechtert, und aktualisiert diese Werte alle 10 Minuten. Wenn der Labelwert true ist, ist der Knoten fehlerfrei. Andernfalls, wenn der Labelwert false ist, wird sich der Zustand des Knotens wahrscheinlich innerhalb der nächsten fünf Stunden verschlechtern. Der Labelwert kann sich im Laufe der Zeit je nach GPU-Zustand des Knotens ändern.

Wenn Sie feststellen, dass sich der Zustand eines Knotens wahrscheinlich verschlechtern wird, können Sie eine oder beide der folgenden Aktionen ausführen:

  • Vermeiden Sie, Arbeitslasten auf dem Knoten zu planen. Sie können Kueue so konfigurieren, dass Arbeitslasten nicht auf Knoten geplant werden, die den Wert false haben, wie in diesem Dokument beschrieben.

  • Melden Sie den Knoten als fehlerhaft. Wenn beim Knoten Probleme wie eine hohe GPU-Temperatur oder eine langsame Leistung auftreten, können Sie ihn als fehlerhaft melden. Durch diese Aktion wird ein Hostwartungsereignis für den Knoten gestartet, sodass er nach Abschluss der Wartung wieder für die Ausführung von Arbeitslasten verfügbar ist. Eine Anleitung finden Sie unter Fehlerhafte Hosts über GKE melden.

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.
  • Führen Sie den folgenden Befehl aus, um eine Verbindung zu Ihrem Cluster herzustellen:

    gcloud container clusters get-credentials CLUSTER_NAME
    

    Ersetzen Sie CLUSTER_NAME durch den Namen Ihres Clusters.

Knotenzustandsprognose aktivieren

Nachdem Sie die Planung von Arbeitslasten in Ihrem GKE-Cluster mit TAS vorbereitet haben, können Sie die Knotenzustandsprognose aktivieren. Führen Sie dazu die folgenden Schritte aus:

  1. Automatische Knotenlabeling bereitstellen

  2. Jobkonfiguration aktualisieren

  3. Knotenlabeling überprüfen

Automatische Knotenlabeling bereitstellen

Führen Sie die folgenden Schritte aus, um die automatische Knotenlabeling für die Knotenzustandsprognose in Ihrem GKE-Cluster bereitzustellen:

  1. Klonen Sie das Git-Repository für Hardwarebeschleuniger in GKE:

    git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.git
    
  2. Wechseln Sie zum Verzeichnis topology-scheduler:

    cd container-engine-accelerators/gpudirect-tcpxo/topology-scheduler
    
  3. Erstellen Sie die Kubernetes ConfigMap mit den Python-Skripts schedule-daemon.py und label-nodes-daemon.py, die die Zustandswerte abfragen:

    kubectl create configmap predictor-scheduler-scripts \
        --namespace=kube-system \
        --from-file=schedule-daemon.py=schedule-daemon.py \
        --from-file=label-nodes-daemon.py=label-nodes-daemon.py
    
  4. Wenden Sie die Dienstkontokonfiguration an, um dem CronJob die erforderlichen Berechtigungen zu erteilen (Monitoring-Messwerte lesen und Knotenobjekte patchen):

    kubectl apply -f service-account.yaml
    
  5. Stellen Sie das DaemonSet bereit, das den Knotenlabeling-Job plant:

    kubectl apply -f label-nodes-daemon.yaml
    

Jobkonfiguration aktualisieren

Wenn Sie die Knotenzustandsprognose mit Kueue verwenden möchten, müssen Sie die Jobkonfiguration aktualisieren, um vor dem Start einer Arbeitslast nach Zustandsprognosewerten und, falls unterstützt, nach Topologieanforderungen zu suchen.

Fügen Sie im Feld spec die folgenden Felder hinzu, um die Jobkonfiguration zu aktualisieren und die Knotenzustandsprognose zu aktivieren:

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: gke.google.com/recommended-to-run-large-training-workload
            operator: NotIn
            values:
            - "False"
...

Knotenlabeling überprüfen

Nachdem der CronJob zum ersten Mal ausgeführt wurde (ca. 10 Minuten nach der Bereitstellung), prüfen Sie, ob das Label gke.google.com/recommended-to-run-large-training-workload auf Ihre Knoten angewendet wurde.

Rufen Sie eine Liste der Knoten auf, auf die das Label gke.google.com/recommended-to-run-large-training-workload angewendet wurde:

kubectl get nodes -L gke.google.com/recommended-to-run-large-training-workload

Der Labelwert kann einer der folgenden sein:

  • true: Es wird prognostiziert, dass der Knoten in den nächsten fünf Stunden fehlerfrei sein wird.

  • false: Der Zustand des Knotens wird sich wahrscheinlich innerhalb der nächsten fünf Stunden verschlechtern. Wenn Sie die Jobkonfiguration wie in diesem Dokument beschrieben konfiguriert haben, vermeidet Kueue die Planung neuer Arbeitslasten auf dem Knoten.

Nächste Schritte