Knotenstatusvorhersage in einem GKE-Cluster aktivieren

Nachdem Sie einen KI-optimierten GKE-Cluster (Google Kubernetes Engine) erstellt haben, können Sie die Knotenstatusvorhersage aktivieren. Wenn Sie Arbeitslasten mit Topology Aware Scheduling (TAS) und Kueue planen, kann der Planer des Clusters Folgendes tun, wenn Sie die Knotenstatusvorhersage aktivieren:

  1. Knoten ermitteln, deren Leistung wahrscheinlich innerhalb der nächsten fünf Stunden nachlässt.

  2. Vermeiden Sie die Planung neuer Arbeitslasten auf diesen Knoten.

So können Sie Unterbrechungen bei kritischen und unterbrechungsempfindlichen Arbeitslasten wie umfangreichen Trainingsarbeitslasten minimieren.

In diesem Dokument wird beschrieben, wie Sie die Vorhersage des Knotenzustands in einem GKE-Cluster aktivieren, der A4X Max-, A4X-, A4- oder A3 Ultra-Knoten verwendet. Informationen dazu, wie Sie den Messwert zur Vorhersage des Knotenzustands in einem Cloud Monitoring-Dashboard verwenden, wenn Sie beispielsweise Leistungsprobleme in einem Slurm-Cluster beheben möchten, finden Sie unter Compute Engine-Instanzen und Slurm-Cluster überwachen.

Beschränkungen

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

  • Für den Knoten müssen die Maschinentypen A4X Max, A4X, A4 oder A3 Ultra verwendet werden.

  • Für den Knoten muss das reservierungsgebundene Bereitstellungsmodell verwendet werden.

Knoten-Systemdiagnose

Wenn Sie die Vorhersage des Knotenzustands 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 der Knoten wahrscheinlich innerhalb der nächsten fünf Stunden beeinträchtigt. Der Labelwert kann sich im Laufe der Zeit je nach GPU-Integrität des Knotens ändern.

Wenn Sie feststellen, dass ein Knoten wahrscheinlich beeinträchtigt wird, können Sie eine oder beide der folgenden Aktionen ausführen:

  • Arbeitslasten nicht auf dem Knoten planen: Sie können Kueue so konfigurieren, dass Arbeitslasten nicht auf Knoten mit dem Wert false geplant werden.

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

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.
  • 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.

Knotenstatusvorhersage aktivieren

Nachdem Sie die Planung von Arbeitslasten in Ihrem GKE-Cluster mit TAS vorbereitet haben, können Sie die Vorhersage der Knotenintegrität aktivieren, indem Sie die folgenden Schritte ausführen:

  1. Automatisches Knotenlabeling bereitstellen

  2. Jobkonfiguration aktualisieren

  3. Knotenbeschriftung überprüfen

Automatisches Knoten-Labeling bereitstellen

Führen Sie die folgenden Schritte aus, um die automatische Knotenlabeling für die Vorhersage des Knotenzustands 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 in das Verzeichnis topology-scheduler:

    cd container-engine-accelerators/gpudirect-tcpxo/topology-scheduler
    
  3. Erstellen Sie die Kubernetes-ConfigMap mit den Python-Skripten schedule-daemon.py und label-nodes-daemon.py, die die Gesundheitswerte 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 Node-Objekte patchen):

    kubectl apply -f service-account.yaml
    
  5. Stellen Sie das DaemonSet bereit, mit dem der Knotenlabeling-Job geplant wird:

    kubectl apply -f label-nodes-daemon.yaml
    

Jobkonfiguration aktualisieren

Wenn Sie die Vorhersage des Knotenstatus mit Kueue aktivieren möchten, müssen Sie Ihre Jobkonfiguration aktualisieren, um vor dem Start einer Arbeitslast nach Vorhersagewerten für den Status und, falls unterstützt, nach Topologieanforderungen zu suchen.

Wenn Sie die Jobkonfiguration aktualisieren und die Vorhersage des Knotenstatus aktivieren möchten, fügen Sie dem Feld spec die folgenden Felder hinzu:

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.

So 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: Der Knoten wird voraussichtlich in den nächsten fünf Stunden fehlerfrei sein.

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

Nächste Schritte