Abilita la previsione dello stato di integrità dei nodi in un cluster GKE

Dopo aver creato un cluster Google Kubernetes Engine (GKE) ottimizzato per l'AI, puoi abilitare la previsione dello stato di integrità dei nodi. Se prevedi di pianificare i carichi di lavoro utilizzando la pianificazione sensibile alla topologia (TAS) e Kueue, l'abilitazione della previsione dello stato di integrità dei nodi consente allo scheduler del cluster di eseguire le seguenti operazioni:

  1. Identificare i nodi che probabilmente subiranno un degrado nelle prossime cinque ore.

  2. Evitare di pianificare nuovi carichi di lavoro su questi nodi.

Questo approccio ti aiuta a ridurre al minimo le interruzioni dei carichi di lavoro critici e sensibili alle interruzioni, come i carichi di lavoro di addestramento su larga scala.

Questo documento spiega come abilitare la previsione dello stato di 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 dello stato di 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 abilitare la previsione dello stato di integrità dei nodi nel cluster GKE, tieni presente le seguenti limitazioni:

  • Il nodo deve utilizzare i tipi di macchine A4X Max, A4X, A4 o A3 Ultra.

  • Il nodo deve utilizzare il modello di provisioning con prenotazione.

Informazioni sulla previsione dello stato di integrità 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. Il CronJob imposta i valori delle etichette sulla probabilità che lo stato di integrità della GPU di un nodo subisca un degrado 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 allo stato di integrità della GPU del nodo.

Se noti che è probabile che un nodo subisca un degrado, puoi eseguire una o entrambe le seguenti operazioni:

  • Evitare di pianificare i carichi di lavoro sul nodo. Puoi configurare Kueue in modo da evitare di pianificare i carichi di lavoro 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 carichi di lavoro 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
  • 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 gcloud components update comando. 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_NAME
    

    Sostituisci CLUSTER_NAME con il nome del cluster.

Abilitare la previsione dello stato di integrità dei nodi

Dopo aver preparato la pianificazione dei carichi di lavoro sul cluster GKE utilizzando TAS, puoi abilitare la previsione dello stato di integrità dei nodi completando i seguenti passaggi:

  1. Eseguire il deployment dell'etichettatura automatica dei nodi

  2. Aggiornare la configurazione del job

  3. Verificare l'etichettatura dei nodi

Eseguire il deployment dell'etichettatura automatica dei nodi

Per eseguire il deployment dell'etichettatura automatica dei nodi per la previsione dello stato di integrità dei nodi nel cluster GKE, completa i seguenti passaggi:

  1. Clona il repository git degli acceleratori hardware in GKE:

    git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.git
    
  2. Vai alla directory topology-scheduler:

    cd container-engine-accelerators/gpudirect-tcpxo/topology-scheduler
    
  3. Crea il ConfigMap Kubernetes contenente gli script Python, schedule-daemon.py e label-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.py
    
  4. Applica 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.yaml
    
  5. Esegui 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 abilitare la previsione dello stato di integrità dei nodi quando utilizzi Kueue, devi aggiornare la configurazione del job per verificare i valori di previsione dello stato di integrità e, se supportato, i requisiti di topologia prima di avviare un carico di lavoro.

Per aggiornare la configurazione del job e abilitare la previsione dello stato di 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 carichi di lavoro sul nodo.

Passaggi successivi