- Introdução
- Requisitos de rede
- Requisitos e instalação de um nó
- Requisitos e instalação de vários nós
- Pós-instalação
- Acesso ao AI Center
- Provisionamento de um tenant do AI Center
- Atualização dos certificados do Orchestrator e do Identity Server
- Redimensionamento de PVC
- Adição de um novo nó ao cluster
- Instalação offline de pacotes de ML
- Configuração do cluster
- Configuração da pós-instalação do FQDN
- Backup e restauração do cluster
- Uso da pilha de monitoramento
- Configuração de uma autenticação do Kerberos
- Provisionamento de uma GPU
- Uso do arquivo de configuração
- Agendamento de nós
- Manage node scheduling
- Migração e atualização
- Guia básico de solução de problemas
Manage node scheduling
O agendamento de nós é especialmente útil para lidar melhor com o hardware e garantir que as réplicas de ML (pods), habilidades ou pipelines. Você deve usá-los principalmente em duas situações:
- Quando você tiver um nó de GPU, certifique-se de que apenas a carga de trabalho que requer GPU seja agendada nesse nó
- Para isolar melhor suas cargas de trabalho de ML para que não perturbem outros aplicativos.
Por padrão, todos os nós com os recursos necessários são considerados iguais pelo agendador do kubernetes.
Existem dois métodos para direcionar o agendamento de réplicas de ML (pods), habilidades ou pipelines para nós específicos, e ambos são compatíveis com o UiPath AI Center:
- Atribuir pods a nós usando afinidade de nó: isso é útil ao colocar pods de ML com outros pods em um nó. Vários rótulos podem ser aplicados a um nó.
- Taints e tolerâncias: destinados a um nó dedicado, repelindo todos os pods (
NoSchedule
) ou impondo uma baixa preferência de agendamento (PreferNoSchedule
) para pods que não correspondem aos critérios de agendamento. Embora vários taints possam ser aplicados a um(s) nó(s), os taints de nó suportam apenas a lógica booleana “AND”.
Node affinity é uma propriedade dos Pods que os atrai para um conjunto de nós, seja como uma preferência ou um requisito. As manchas, por outro lado, permitem que um nó repela um conjunto de pods.
O primeiro método cria uma afinidade entre réplicas e nós usando rótulos de nós, enquanto o segundo método aplica antiafinidade contaminando os nós.
PodSpec
das réplicas de ML são projetados para oferecer suporte a ambos os métodos e são personalizados com base na seleção de GPU ou não GPU na implantação.
No caso em que um nó de agente foi adicionado para expandir o pool de recursos e você deseja influenciar o agendamento de pods de ML nele, pode aplicar afinidade de nó. Faça isso adicionando um rótulo ao nó usando o seguinte comando:
- Para CPU:
kubectl label node <node_name> node.type=aic.ml.cpu
- Para a GPU:
kubectl label node <node_name> node.type=aic.ml.gpu
A afinidade do nó não garante que o nó seja dedicado a atender cargas de trabalho de ML e não impede que outros pods de carga de trabalho sejam agendados para o mesmo nó em que os rótulos são aplicados.
Para dedicar um nó, você precisa usar taints ou uma combinação de afinidade de nó e taints. Para dedicar um nó de agente para servir pods de GPU ou CPU de ML, você pode aplicar os seguintes taints aos nós:
- Para CPU:
kubectl taint node <node_name> aic.ml/cpu=present:NoSchedule
- Para a GPU:
kubectl taint node <node_name> nvidia.com/gpu=present:NoSchedule
Para dedicar um nó de agente para atender pods de GPU de ML e influenciar o agendamento de pods de CPU de ML para os mesmos nós, você pode usar uma combinação de afinidade e taints de nó:
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