Activer la prédiction de l'état des nœuds dans un cluster GKE

Après avoir créé un cluster Google Kubernetes Engine (GKE) optimisé pour l'IA, vous pouvez activer la prédiction de l'état des nœuds. Si vous prévoyez de planifier des charges de travail à l'aide de la planification basée sur la topologie (TAS) et de Kueue, l'activation de la prédiction de l'état des nœuds permet au planificateur du cluster d'effectuer les opérations suivantes :

  1. Identifier les nœuds susceptibles de se dégrader au cours des cinq prochaines heures.

  2. Évitez de planifier de nouvelles charges de travail sur ces nœuds.

Cette approche vous aide à minimiser les interruptions sur les charges de travail critiques et sensibles aux interruptions, telles que les charges de travail d'entraînement à grande échelle.

Ce document explique comment activer la prédiction de l'état des nœuds dans un cluster GKE qui utilise des nœuds A4X Max, A4X, A4 ou A3 Ultra. Pour savoir comment utiliser la métrique de prédiction de l'état des nœuds dans un tableau de bord Cloud Monitoring lorsque, par exemple, vous souhaitez résoudre des problèmes de performances sur un cluster Slurm, consultez plutôt Surveiller les instances Compute Engine et les clusters Slurm.

Limites

Avant d'activer la prédiction de l'état des nœuds dans votre cluster GKE, tenez compte des limitations suivantes :

  • Le nœud doit utiliser les types de machines A4X Max, A4X, A4 ou A3 Ultra.

  • Le nœud doit utiliser le modèle de provisionnement lié à une réservation.

Comprendre la prédiction de l'état des nœuds

Lorsque vous activez la prédiction de l'état des nœuds dans un cluster GKE, CronJob applique le libellé gke.google.com/recommended-to-run-large-training-workload à chaque nœud de votre cluster. Le CronJob définit les valeurs de libellé sur la probabilité de dégradation de l'état du GPU d'un nœud et met à jour ces valeurs toutes les 10 minutes. Si la valeur du libellé est true, le nœud est opérationnel. Sinon, si la valeur du libellé est false, le nœud se dégradera probablement dans les cinq prochaines heures. La valeur du libellé peut changer au fil du temps en fonction de l'état du GPU du nœud.

Si vous constatez qu'un nœud est susceptible de se dégrader, vous pouvez effectuer l'une des opérations suivantes ou les deux :

  • Évitez de planifier des charges de travail sur le nœud. Vous pouvez configurer Kueue pour éviter de planifier des charges de travail sur des nœuds qui affichent une valeur de false, comme décrit dans ce document.

  • Signalez le nœud comme défectueux. Si le nœud rencontre des problèmes tels qu'une température GPU élevée ou des performances lentes, vous pouvez le signaler comme défectueux. Cette action lance un événement de maintenance de l'hôte pour le nœud, ce qui le rend à nouveau disponible pour l'exécution des charges de travail une fois la maintenance terminée. Pour obtenir des instructions, consultez Signaler des hôtes défectueux via GKE.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser la Google Cloud CLI pour cette tâche, installez et initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.
  • Pour vous connecter à votre cluster, exécutez la commande suivante :

    gcloud container clusters get-credentials CLUSTER_NAME
    

    Remplacez CLUSTER_NAME par le nom de votre cluster.

Activer la prédiction de l'état des nœuds

Une fois que vous avez préparé la planification des charges de travail sur votre cluster GKE à l'aide de TAS, vous pouvez activer la prédiction de l'état des nœuds en procédant comme suit :

  1. Déployer l'étiquetage automatique des nœuds

  2. Mettre à jour la configuration de votre job

  3. Vérifier le libellé des nœuds

Déployer l'attribution automatique de libellés aux nœuds

Pour déployer l'étiquetage automatique des nœuds pour la prédiction de l'état des nœuds dans votre cluster GKE, procédez comme suit :

  1. Clonez le dépôt Git des accélérateurs matériels dans GKE :

    git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.git
    
  2. Accédez au répertoire topology-scheduler :

    cd container-engine-accelerators/gpudirect-tcpxo/topology-scheduler
    
  3. Créez le ConfigMap Kubernetes contenant les scripts Python schedule-daemon.py et label-nodes-daemon.py qui interrogent les scores d'état :

    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. Appliquez la configuration du compte de service pour accorder les autorisations nécessaires (lecture des métriques Monitoring et correction des objets Node) au CronJob :

    kubectl apply -f service-account.yaml
    
  5. Déployez le DaemonSet qui planifie le job d'attribution de libellés aux nœuds :

    kubectl apply -f label-nodes-daemon.yaml
    

Mettre à jour la configuration de votre job

Pour activer la prédiction de l'état des nœuds lorsque vous utilisez Kueue, vous devez mettre à jour la configuration de votre Job afin de vérifier les valeurs de prédiction de l'état et, si elles sont prises en charge, les exigences de topologie avant de démarrer une charge de travail.

Pour mettre à jour la configuration de votre job et activer la prédiction de l'état des nœuds, ajoutez les champs suivants dans le champ spec :

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: gke.google.com/recommended-to-run-large-training-workload
            operator: NotIn
            values:
            - "False"
...

Vérifier l'étiquetage des nœuds

Une fois le CronJob exécuté pour la première fois (environ 10 minutes après le déploiement), vérifiez s'il a appliqué le libellé gke.google.com/recommended-to-run-large-training-workload à vos nœuds.

Affichez la liste des nœuds auxquels le libellé gke.google.com/recommended-to-run-large-training-workload est appliqué :

kubectl get nodes -L gke.google.com/recommended-to-run-large-training-workload

La valeur du libellé peut être l'une des suivantes :

  • true : le nœud devrait être opérationnel au cours des cinq prochaines heures.

  • false : le nœud est susceptible de se dégrader dans les cinq prochaines heures. Si vous avez configuré votre configuration de job comme décrit dans ce document, Kueue évite de planifier de nouvelles charges de travail sur le nœud.

Étapes suivantes