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:
Knoten identifizieren, bei denen es in den nächsten fünf Stunden wahrscheinlich zu einer Leistungsminderung kommt.
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
falsehaben, 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 updateBefehl 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_NAMEErsetzen Sie
CLUSTER_NAMEdurch 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:
Automatische Knotenlabeling bereitstellen
Führen Sie die folgenden Schritte aus, um die automatische Knotenlabeling für die Knotenzustandsprognose in Ihrem GKE-Cluster bereitzustellen:
Klonen Sie das Git-Repository für Hardwarebeschleuniger in GKE:
git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.gitWechseln Sie zum Verzeichnis
topology-scheduler:cd container-engine-accelerators/gpudirect-tcpxo/topology-schedulerErstellen Sie die Kubernetes ConfigMap mit den Python-Skripts
schedule-daemon.pyundlabel-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.pyWenden Sie die Dienstkontokonfiguration an, um dem CronJob die erforderlichen Berechtigungen zu erteilen (Monitoring-Messwerte lesen und Knotenobjekte patchen):
kubectl apply -f service-account.yamlStellen 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
Informationen zum Verwalten häufiger Ereignisse, die für GKE Cluster und KI-Arbeitslasten relevant sind, finden Sie unter KI-optimierte GKE-Cluster verwalten.
Weitere Informationen zum Planen von Jobs in GKE mit Kueue finden Sie unter Batchsystem mit Kueue bereitstellen.