- Notes de publication
- Avant de commencer
- Démarrage
- Installation d'AI Center
- Migration et mise à niveau
- Projets
- Jeux de données
- Labellisation des données
- Paquets ML
- Paquets prêts à l’emploi
- Pipelines
- Compétences ML
- Journaux ML
- Document UnderstandingTM dans AI Center
- Comment
- Gestion de la planification des nœuds
- Licences
- Guide de dépannage de base
Gestion de la planification des nœuds
La planification des nœuds est particulièrement utile pour mieux gérer le matériel et s'assurer que les réplicas ML (pods), les compétences ou les pipelines. Vous devez les utiliser principalement dans deux situations :
- Lorsque vous avez un nœud GPU pour vous assurer que seule la charge de travail nécessitant un GPU est planifiée sur ce nœud
- Pour mieux isoler vos charges de travail ML afin qu'elles ne perturbent pas les autres applications.
Par défaut, tous les nœuds disposant des ressources requises sont considérés comme égaux par le planificateur kubernetes.
Il existe deux méthodes par lesquelles vous pouvez diriger la planification des réplicas ML (pods), des compétences ou des pipelines vers des nœuds spécifiques, et les deux sont prises en charge dans UiPath® AI Center:
- Attribuer des pods aux nœuds à l'aide de l'affinité du nœud (Node Affinity) : cela est utile lors de la colocalisation de pods ML avec d'autres pods sur un nœud. Plusieurs libellés peuvent être appliqués à un nœud.
- Rejets et tolérances : destiné à un nœud dédié, repoussant tous les pods (
NoSchedule
) ou imposant une faible préférence de planification (PreferNoSchedule
) pour les pods qui ne correspondent pas aux critères de planification. Bien que plusieurs rejets puissent être appliqués à un ou plusieurs nœuds, les rejets de nœud ne prennent en charge que la logique booléenne « AND ».
L'affinité de nœud est une propriété des pods qui les attire vers un ensemble de nœuds, soit en tant que préférence, soit en tant qu'exigence. Les rejets, en revanche, permettent à un nœud de repousser un ensemble de pods.
La première méthode crée une affinité entre les réplicas et les nœuds à l'aide de libellés de nœud, tandis que la seconde méthode applique l'anti-affinité en entachant les nœuds.
PodSpec
des réplicas ML sont conçus pour prendre en charge les deux méthodes et sont personnalisés en fonction de la sélection GPU ou non GPU lors du déploiement.
Dans le cas où un nœud d'agent a été ajouté pour étendre le pool de ressources et que vous souhaitez influencer la planification des pods ML dessus, vous pouvez appliquer l'affinité de nœud. Pour ce faire, ajoutez un libellé au nœud à l'aide de la commande suivante :
- Pour le processeur :
kubectl label node <node_name> node.type=aic.ml.cpu
- Pour le GPU :
kubectl label node <node_name> node.type=aic.ml.gpu
L'affinité de nœud ne garantit pas que le nœud est dédié au service des charges de travail ML et n'empêche pas la planification d'autres pods de charge de travail sur le même nœud où les libellés sont appliqués.
Pour dédier un nœud, vous devez utiliser des rejets ou une combinaison d'affinité de nœud et de rejets. Pour dédier un nœud d'agent au service de pods GPU ou CPU ML, vous pouvez appliquer les rejets suivants aux nœuds :
- Pour le processeur :
kubectl taint node <node_name> aic.ml/cpu=present:NoSchedule
- Pour le GPU :
kubectl taint node <node_name> nvidia.com/gpu=present:NoSchedule
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