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 :
Identifier les nœuds susceptibles de se dégrader au cours des cinq prochaines heures.
É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 updatecommande. 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_NAMERemplacez
CLUSTER_NAMEpar 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 :
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 :
Clonez les accélérateurs matériels dans le dépôt Git GKE :
git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.gitAccédez au répertoire
topology-scheduler:cd container-engine-accelerators/gpudirect-tcpxo/topology-schedulerCréez le ConfigMap Kubernetes contenant les scripts Python,
schedule-daemon.pyetlabel-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.pyAppliquez 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.yamlDé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
Pour en savoir plus sur la gestion des événements courants liés aux clusters GKE et aux charges de travail d'IA, consultez Gérer les clusters GKE optimisés pour l'IA.
Pour en savoir plus sur la planification de jobs sur GKE avec Kueue, consultez Déployer un système par lots à l'aide de Kueue.