Dopo aver creato un cluster Google Kubernetes Engine (GKE) ottimizzato per l'AI, puoi attivare la previsione dell'integrità dei nodi. Se prevedi di pianificare i workload utilizzando la pianificazione sensibile alla topologia (TAS) e Kueue, l'attivazione della previsione dell'integrità dei nodi consente allo scheduler del cluster di eseguire le seguenti operazioni:
Identificare i nodi che probabilmente subiranno un degrado nelle prossime cinque ore.
Evitare di pianificare nuovi workload su questi nodi.
Questo approccio ti aiuta a ridurre al minimo le interruzioni dei 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 le serie di macchine con GPU generiche (A3 Edge, A2, G2, G4, N1) o le serie di macchine con GPU in cluster (A4X Max, A4X, A4, A3 Ultra, A3 Mega e A3 High). Per scoprire come utilizzare la metrica di previsione dell'integrità dei nodi in una dashboard di Cloud Monitoring, ad esempio quando vuoi risolvere i problemi di prestazioni su un cluster Slurm, consulta invece Monitorare le istanze di Compute Engine e i cluster Slurm.
Limitazioni
Prima di attivare la previsione dell'integrità dei nodi nel cluster GKE, tieni presente le seguenti limitazioni:
Il nodo deve utilizzare tipi di macchine con GPU generiche (A3 Edge, A2, G2, G4, N1) o con GPU in cluster (A4X Max, A4X, A4, A3 Ultra, A3 Mega, A3 High).
Il nodo deve utilizzare il modello di provisioning con prenotazione.
Informazioni sulla previsione dell'integrità dei nodi
Quando attivi la previsione dell'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. Il CronJob imposta i valori delle etichette sulla probabilità che l'integrità della GPU di un nodo si deteriori 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 subisca un degrado nelle prossime cinque ore. Il valore dell'etichetta può cambiare nel tempo in base all'integrità della GPU del nodo.
Se vedi che è probabile che un nodo subisca un degrado, puoi eseguire una o entrambe le seguenti operazioni:
Evitare di pianificare i workload sul nodo. Puoi configurare Kueue in modo da evitare di pianificare i workload sui nodi che mostrano un valore
false, come descritto in questo documento.Segnalare il nodo come difettoso. Se il nodo riscontra problemi come temperatura elevata della GPU 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, consulta Segnalare host difettosi tramite GKE.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Per utilizzare Google Cloud CLI per questa attività,
installa e poi
inizializza la
gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il
gcloud components updatecomando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi descritti in questo documento.
Per connetterti al cluster, esegui il seguente comando:
gcloud container clusters get-credentials CLUSTER_NAMESostituisci
CLUSTER_NAMEcon il nome del cluster.
Attivare la previsione dell'integrità dei nodi
Dopo aver preparato la pianificazione dei workload sul cluster GKE utilizzando TAS, puoi attivare la previsione dell'integrità dei nodi completando i seguenti passaggi:
Eseguire 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 il 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 dell'account di servizio per concedere le autorizzazioni necessarie (lettura delle metriche di Monitoring e applicazione di patch agli oggetti Node) al 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
Aggiornare la configurazione del job
Per attivare la previsione dell'integrità dei nodi quando utilizzi Kueue, devi aggiornare la configurazione del job in modo da verificare i valori di previsione dell'integrità e, se supportato, 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"
...
Verificare l'etichettatura dei nodi
Dopo la prima esecuzione del CronJob, circa 10 minuti dopo il deployment, verifica se ha applicato l'etichetta gke.google.com/recommended-to-run-large-training-workload ai 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: si prevede che il nodo sia integro nelle prossime cinque ore.false: è probabile che il nodo subisca un degrado 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 come gestire gli eventi comuni pertinenti ai cluster GKE e ai workload AI, consulta Gestire i cluster GKE ottimizzati per l'AI.
Per scoprire di più sulla pianificazione dei job su GKE con Kueue, consulta Eseguire il deployment di un sistema batch utilizzando Kueue.