Dopo aver creato un cluster Google Kubernetes Engine (GKE) ottimizzato per l'AI, puoi attivare la previsione dello stato dei nodi. Se prevedi di pianificare i carichi di lavoro utilizzando la pianificazione sensibile alla topologia (TAS) e Kueue, l'attivazione della previsione dello stato dei nodi consente allo scheduler del cluster di eseguire le seguenti operazioni:
Identifica i nodi che probabilmente si degraderanno nelle prossime cinque ore.
Evita di pianificare nuovi workload su questi nodi.
Questo approccio ti aiuta a ridurre al minimo le interruzioni nei workload critici e sensibili alle interruzioni, come i workload di addestramento su larga scala.
Questo documento spiega come attivare la previsione dell'integrità dei nodi in un cluster GKE che utilizza nodi A4X Max, A4X, A4 o A3 Ultra. Per scoprire come utilizzare la metrica di previsione dell'integrità dei nodi in una dashboard di Cloud Monitoring quando, ad esempio, vuoi risolvere i problemi di prestazioni di un cluster Slurm, consulta Monitorare le istanze Compute Engine e i cluster Slurm.
Limitazioni
Prima di abilitare la previsione dello stato di integrità dei nodi nel cluster GKE, tieni presente le seguenti limitazioni:
Il nodo deve utilizzare i tipi di macchina A4X Max, A4X, A4 o A3 Ultra.
Il nodo deve utilizzare il modello di provisioning con prenotazione.
Informazioni sulla previsione dello stato dei nodi
Quando abiliti la previsione dello stato di integrità dei nodi in un cluster GKE, il
CronJob applica l'etichetta gke.google.com/recommended-to-run-large-training-workload
a ogni nodo del cluster. CronJob imposta i valori delle etichette sulla probabilità che lo stato della GPU di un nodo peggiori e aggiorna questi valori ogni 10 minuti. Se il valore dell'etichetta è true, il nodo è integro. In caso contrario,
se il valore dell'etichetta è false, è probabile che il nodo si degraderà entro le prossime cinque
ore. Il valore dell'etichetta può cambiare nel tempo in base all'integrità della GPU del nodo.
Se noti che un nodo è in procinto di degradarsi, puoi eseguire una o entrambe le seguenti operazioni:
Evita di pianificare i carichi di lavoro sul nodo. Puoi configurare Kueue in modo da evitare la pianificazione dei workload sui nodi che mostrano un valore di
false, come descritto in questo documento.Segnala il nodo come difettoso. Se il nodo presenta problemi come temperatura della GPU elevata o prestazioni lente, puoi segnalarlo come difettoso. Questa azione avvia un evento di manutenzione dell'host per il nodo, rendendolo di nuovo disponibile per l'esecuzione dei workload al termine della manutenzione. Per istruzioni, vedi Segnala host difettosi tramite GKE.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza
gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il comando
gcloud components update. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
Per connetterti al cluster, esegui questo comando:
gcloud container clusters get-credentials CLUSTER_NAMESostituisci
CLUSTER_NAMEcon il nome del tuo cluster.
Abilita la previsione dello stato di integrità dei nodi
Dopo aver preparato la pianificazione dei carichi di lavoro sul cluster GKE utilizzando TAS, puoi attivare la previsione dello stato dei nodi completando i seguenti passaggi:
Esegui il deployment dell'etichettatura automatica dei nodi
Per eseguire il deployment dell'etichettatura automatica dei nodi per la previsione dell'integrità dei nodi nel cluster GKE, completa i seguenti passaggi:
Clona gli acceleratori hardware nel repository Git di GKE:
git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.gitVai alla directory
topology-scheduler:cd container-engine-accelerators/gpudirect-tcpxo/topology-schedulerCrea ConfigMap Kubernetes contenente gli script Python,
schedule-daemon.pyelabel-nodes-daemon.py, che eseguono query sui punteggi di integrità: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.pyApplica la configurazione del account di servizio per concedere le autorizzazioni necessarie (lettura delle metriche di Monitoring e applicazione di patch agli oggetti Node) a CronJob:
kubectl apply -f service-account.yamlEsegui il deployment del DaemonSet che pianifica il job di etichettatura dei nodi:
kubectl apply -f label-nodes-daemon.yaml
Aggiorna la configurazione del job
Per abilitare la previsione dell'integrità dei nodi quando utilizzi Kueue, devi aggiornare la configurazione del job per verificare i valori di previsione dell'integrità e, se supportati, i requisiti di topologia prima di avviare un workload.
Per aggiornare la configurazione del job e attivare la previsione dell'integrità dei nodi, aggiungi i seguenti campi nel campo spec:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: gke.google.com/recommended-to-run-large-training-workload
operator: NotIn
values:
- "False"
...
Verifica dell'etichettatura dei nodi
Dopo la prima esecuzione di CronJob, che avviene circa 10 minuti
dopo il deployment, verifica se è stata applicata l'etichetta
gke.google.com/recommended-to-run-large-training-workload ai tuoi nodi.
Visualizza un elenco dei nodi a cui è stata applicata l'etichetta
gke.google.com/recommended-to-run-large-training-workload:
kubectl get nodes -L gke.google.com/recommended-to-run-large-training-workload
Il valore dell'etichetta può essere uno dei seguenti:
true: è previsto che il nodo sia integro nelle prossime cinque ore.false: è probabile che le prestazioni del nodo peggiorino nelle prossime cinque ore. Se hai configurato la configurazione del job come descritto in questo documento, Kueue evita di pianificare nuovi workload sul nodo.
Passaggi successivi
Per scoprire di più sulla gestione degli eventi comuni pertinenti ai cluster GKE e ai workload di AI, consulta Gestire i cluster GKE ottimizzati per l'AI.
Per saperne di più sulla pianificazione dei job su GKE con Kueue, consulta Esegui il deployment di un sistema batch utilizzando Kueue.