Habilita la predicción del estado de los nodos en un clúster de GKE

Después de crear un clúster de Google Kubernetes Engine (GKE) optimizado para IA, puedes habilitar la predicción del estado de los nodos. Si planeas programar cargas de trabajo con la programación consciente de la topología (TAS) y Kueue, habilitar la predicción del estado del nodo permite que el programador del clúster haga lo siguiente:

  1. Identifica los nodos que probablemente se degraden en las próximas cinco horas.

  2. Evita programar cargas de trabajo nuevas en esos nodos.

Este enfoque te ayuda a minimizar las interrupciones en las cargas de trabajo críticas y sensibles a las interrupciones, como las cargas de trabajo de entrenamiento a gran escala.

En este documento, se explica cómo habilitar la predicción del estado de los nodos en un clúster de GKE que usa nodos A4X Max, A4X, A4 o A3 Ultra. Para obtener información sobre cómo usar la métrica de predicción del estado del nodo en un panel de Cloud Monitoring cuando, por ejemplo, deseas solucionar problemas de rendimiento en un clúster de Slurm, consulta Supervisa instancias de Compute Engine y clústeres de Slurm.

Limitaciones

Antes de habilitar la predicción del estado del nodo en tu clúster de GKE, ten en cuenta las siguientes limitaciones:

  • El nodo debe usar los tipos de máquinas A4X Max, A4X, A4 o A3 Ultra.

  • El nodo debe usar el modelo de aprovisionamiento vinculado a la reserva.

Información sobre la predicción del estado de los nodos

Cuando habilitas la predicción del estado del nodo en un clúster de GKE, el CronJob aplica la etiqueta gke.google.com/recommended-to-run-large-training-workload a cada nodo del clúster. El CronJob establece los valores de la etiqueta según la probabilidad de que se deteriore el estado de la GPU de un nodo y actualiza estos valores cada 10 minutos. Si el valor de la etiqueta es true, el nodo está en buen estado. De lo contrario, si el valor de la etiqueta es false, es probable que el nodo se degrade en las próximas cinco horas. El valor de la etiqueta puede cambiar con el tiempo según el estado de la GPU del nodo.

Si ves que es probable que un nodo se degrade, puedes hacer una o ambas de las siguientes acciones:

  • Evita programar cargas de trabajo en el nodo. Puedes configurar Kueue para evitar la programación de cargas de trabajo en nodos que muestran un valor de false, como se describe en este documento.

  • Informa que el nodo está defectuoso. Si el nodo tiene problemas, como una temperatura alta de la GPU o un rendimiento lento, puedes informar que está defectuoso. Esta acción inicia un evento de mantenimiento del host para el nodo, lo que hace que esté disponible nuevamente para ejecutar cargas de trabajo después de que se complete el mantenimiento. Para obtener instrucciones, consulta Cómo informar sobre hosts defectuosos a través de GKE.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando gcloud components update para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.
  • Para conectarte a tu clúster, ejecuta el siguiente comando:

    gcloud container clusters get-credentials CLUSTER_NAME
    

    Reemplaza CLUSTER_NAME por el nombre del clúster.

Habilita la predicción del estado del nodo

Después de prepararte para programar cargas de trabajo en tu clúster de GKE con TAS, puedes habilitar la predicción del estado del nodo completando los siguientes pasos:

  1. Implementa el etiquetado automático de nodos

  2. Actualiza la configuración de tu trabajo

  3. Verifica el etiquetado de nodos

Implementa el etiquetado automático de nodos

Para implementar el etiquetado automático de nodos para la predicción del estado de los nodos en tu clúster de GKE, completa los siguientes pasos:

  1. Clona los aceleradores de hardware en el repositorio de Git de GKE:

    git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.git
    
  2. Ve al directorio topology-scheduler:

    cd container-engine-accelerators/gpudirect-tcpxo/topology-scheduler
    
  3. Crea el ConfigMap de Kubernetes que contiene las secuencias de comandos de Python, schedule-daemon.py y label-nodes-daemon.py, que consultan las puntuaciones de estado:

    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. Aplica la configuración de la cuenta de servicio para otorgar los permisos necesarios (leer métricas de Monitoring y aplicar parches a objetos de nodos) al CronJob:

    kubectl apply -f service-account.yaml
    
  5. Implementa el DaemonSet que programa el trabajo de etiquetado de nodos:

    kubectl apply -f label-nodes-daemon.yaml
    

Actualiza la configuración de tu trabajo

Para habilitar la predicción del estado del nodo cuando se usa Kueue, debes actualizar la configuración de tu trabajo para verificar los valores de predicción del estado y, si se admiten, los requisitos de topología antes de iniciar una carga de trabajo.

Para actualizar la configuración del trabajo y habilitar la predicción del estado del nodo, en el campo spec, agrega los siguientes campos:

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

Verifica el etiquetado de nodos

Después de que se ejecute el CronJob por primera vez, aproximadamente 10 minutos después de la implementación, verifica si aplicó la etiqueta gke.google.com/recommended-to-run-large-training-workload a tus nodos.

Consulta una lista de los nodos a los que se les aplicó la etiqueta gke.google.com/recommended-to-run-large-training-workload:

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

El valor de la etiqueta puede ser uno de los siguientes:

  • true: Se prevé que el nodo estará en buen estado en las próximas cinco horas.

  • false: Es probable que el nodo se degrade en las próximas cinco horas. Si configuraste tu trabajo como se describe en este documento, Kueue evitará programar nuevas cargas de trabajo en el nodo.

¿Qué sigue?