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 tenant compte de 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. Éviter de planifier de nouvelles charges de travail sur ces nœuds.

Cette approche vous permet de 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 découvrir 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 limites suivantes :

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

  • Le nœud doit utiliser le modèle de provisionnement lié à la 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, le 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é que l'état du GPU d'un nœud se dégrade, et met à jour ces valeurs toutes les 10 minutes. Si la valeur du libellé est true, le nœud est en bon état. Sinon, si la valeur du libellé est false, le nœud se dégradera probablement au cours des 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, voire les deux :

  • Éviter 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 la valeur false, comme décrit dans ce document.

  • Signaler 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
  • Pour utiliser Google Cloud CLI pour cette tâche, installez puis initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la gcloud components update commande. 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 êtes prêt à planifier des charges de travail sur votre cluster GKE à l'aide de la planification tenant compte de la topologie, vous pouvez activer la prédiction de l'état des nœuds en procédant comme suit :

  1. Déployer l'ajout automatique de libellés aux nœuds

  2. Mettre à jour la configuration de votre job

  3. Vérifier l'ajout de libellés aux nœuds

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

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

  1. Clonez les accélérateurs matériels dans le dépôt Git 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 application de correctifs aux objets Node) au CronJob :

    kubectl apply -f service-account.yaml
    
  5. Déployez le DaemonSet qui planifie le job d'ajout 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 les exigences de topologie sont compatibles, 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'ajout de libellés aux nœuds

Une fois le CronJob exécuté pour la première fois, soit 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 a été appliqué :

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

Les valeurs possibles sont les suivantes :

  • true: le nœud devrait être en bon état au cours des cinq prochaines heures.

  • false: le nœud se dégradera probablement au cours des cinq prochaines heures. Si vous avez configuré la configuration de votre job comme décrit dans ce document, Kueue évite de planifier de nouvelles charges de travail sur le nœud.

Étape suivante