- Primeros pasos
- Requisitos de red
- Requisitos de nodo único e instalación
- Requisitos multinodo e instalación
- Después de la instalación
- Acceso a AI Center
- Aprovisionar un tenant de AI Center
- Actualizar los certificados de Orchestrator e Identity Server
- Cambiar el tamaño de PVC
- Añadir un nuevo nodo al clúster
- Instalación sin conexión de paquetes ML
- Configurar el clúster
- Configurar la instalación posterior a FQDN
- Copia de seguridad y restauración del clúster
- Utilizar la pila de supervisión
- Configurar una autenticación de Kerberos
- Aprovisionar una GPU
- Utilizar el archivo de configuración
- Programación de nodos
- Manage node scheduling
- Migración y actualización
- Guía básica de resolución de problemas
Manage node scheduling
La programación de nodos es especialmente útil para manejar mejor el hardware y asegurarse de que las réplicas de ML (pods), las habilidades o los procesos. Debería usarlos principalmente en dos situaciones:
- Cuando tiene un nodo de GPU para asegurarse de que solo se programen en ese nodo la carga de trabajo que requiere GPU
- Para aislar mejor las cargas de trabajo de ML para que no molesten a otras aplicaciones.
De forma predeterminada, el programador de Kubernetes considera que todos los nodos que tienen los recursos necesarios.
Hay dos métodos en los que puedes dirigir la programación de réplicas ML (pods), habilidades o procesos a nodos específicos, y ambos son compatibles con UiPath AI Center:
- Asignar pods a nodos usando Afinidad de nodo: esto es útil cuando se colocan pods ML con otros pods en un nodo. Se pueden aplicar varias etiquetas a un nodo.
- Manchas y toleraciones: destinado a un nodo dedicado, ya sea rechazando todos los pods (
NoSchedule
) o imponiendo una preferencia de programación baja (PreferNoSchedule
) para los pods que no coinciden con los criterios de programación. Aunque se pueden aplicar múltiples corrupciones a uno (s) nodo (s), las corrupciones de nodo solo admiten la lógica booleana "Y".
La afinidad de nodo es una propiedad de los pods que los atrae a un conjunto de nodos, ya sea como preferencia o como requisito. Las corrupciones, por otro lado, permiten que un nodo repele un conjunto de pods.
El primer método crea una afinidad entre réplicas y nodos mediante etiquetas de nodo, mientras que el segundo método aplica antiafinidad manchando los nodos.
PodSpec
están diseñadas para admitir ambos métodos y se personalizan en función de la selección de GPU o no GPU en la implementación.
En el caso de que se haya añadido un nodo agente para expandir el grupo de recursos y quieras influir en la programación de los pods de ML en él, puedes aplicar la afinación de nodo. Hazlo añadiendo una etiqueta al nodo con el siguiente comando:
- Para CPU:
kubectl label node <node_name> node.type=aic.ml.cpu
- Para la GPU:
kubectl label node <node_name> node.type=aic.ml.gpu
La afinidad de nodo no garantiza que el nodo esté dedicado a servir cargas de trabajo de ML y no impide que se programen otros pods de carga de trabajo en el mismo nodo en el que se aplican las etiquetas.
Para dedicar un nodo, debe usar corrupciones o una combinación de afinidades y corrupciones de nodo. Para dedicar un nodo agente al servicio de ML GPU o pods de CPU, puedes aplicar las siguientes modificaciones a los nodos:
- Para CPU:
kubectl taint node <node_name> aic.ml/cpu=present:NoSchedule
- Para la GPU:
kubectl taint node <node_name> nvidia.com/gpu=present:NoSchedule
Para dedicar un nodo agente para servir pods de GPU de ML e influir en la programación de los pods de CPU de ML en los mismos nodos, puedes usar una combinación de afinidades y corrupciones de nodo:
kubectl taint node <node_name> nvidia.com/gpu=present:PreferNoSchedule
kubectl label node <node_name> node.type=aic.ml.cpu
kubectl taint node <node_name> nvidia.com/gpu=present:PreferNoSchedule
kubectl label node <node_name> node.type=aic.ml.cpu