Ao implantar cargas de trabalho GPU em um ACK managed cluster Pro, atribua rótulos de agendamento de GPU (exclusivo, compartilhado, com reconhecimento de topologia) e rótulos de modelo de placa GPU para otimizar a utilização e direcionar o agendamento. O agendamento compartilhado e o agendamento com reconhecimento de topologia exigem a versão Pro; o agendamento por modelo de placa é compatível com todos os tipos de cluster. Use esses recursos para controlar a alocação de recursos.
Visão geral dos rótulos de agendamento
Os rótulos de agendamento de GPU identificam modelos de GPU e políticas de alocação para permitir o gerenciamento granular de recursos.
|
Modo de agendamento |
Valor do rótulo |
Casos de uso |
|
Agendamento exclusivo (Padrão) |
|
Indicado para tarefas críticas de desempenho que exigem acesso exclusivo à GPU, como treinamento de modelos e computação de alto desempenho (HPC). |
|
Agendamento compartilhado |
|
Ideal para tarefas leves simultâneas, como multilocação e inferência. Melhora a utilização da GPU.
|
|
|
Otimiza a alocação de recursos em nós com múltiplas GPUs quando o agendamento compartilhado
|
|
|
Agendamento com reconhecimento de topologia |
|
Atribui a combinação ideal de GPUs a um Pod com base na topologia física das GPUs dentro de um nó. Recomendado para tarefas sensíveis à latência de comunicação entre GPUs. |
|
Agendamento por modelo de placa |
Use estes rótulos para definir a memória da GPU e a contagem de placas para os trabalhos.
|
Agenda trabalhos em nós com um modelo específico de GPU ou evita nós com um modelo específico. |
Ativar recursos de agendamento
Um nó suporta apenas um modo de agendamento de GPU (exclusivo, compartilhado ou com reconhecimento de topologia) por vez. Ao ativar um modo, os recursos estendidos relatados pelos outros modos são definidos como 0.
Agendamento exclusivo
Sem rótulos de agendamento de GPU, o agendamento exclusivo é o modo padrão. Uma única placa GPU é a menor unidade de alocação para Pods.
Se você ativou outro modo de agendamento de GPU, apenas excluir o rótulo não restaura o agendamento exclusivo. Defina o rótulo como ack.node.gpu.schedule: default para restaurá-lo.
Agendamento compartilhado
O agendamento compartilhado está disponível apenas para o ACK managed cluster Pro. Consulte Limitações.
-
Instale o componente ack-ai-installer
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Na página Cloud-native AI Suite, clique em Deploy. Na página Cloud-native AI Suite, selecione Scheduling Policy Extension (Batch Task Scheduling, GPU Sharing, Topology-aware GPU Scheduling).
Para configurar a política de agendamento cGPU, consulte Instalar e usar o componente cGPU .
-
Na página Cloud-native AI Suite, clique em Deploy Cloud-native AI Suite.
Na lista de componentes da página Cloud-native AI Suite, verifique se o componente ack-ai-installer está instalado.
-
Ative o agendamento compartilhado
Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha .
-
Na página Node Pools, clique em Create Node Pool, configure os rótulos do nó e clique em Confirm.
Mantenha os valores padrão para as outras configurações. Consulte Visão geral dos rótulos de agendamento para casos de uso de rótulos.
-
Configure o agendamento compartilhado básico.
Clique no ícone Adicionar
em Node Labels, defina a Key como ack.node.gpu.schedulee selecione um dos seguintes valores de rótulo:cgpu,core_mem,shareoumps(requer a instalação do componente MPS Control Daemon). -
Configure o agendamento compartilhado de múltiplas placas.
Para nós com várias placas GPU, configure o agendamento de múltiplas placas para otimizar a alocação de recursos.
Clique no ícone Adicionar
em Node Labels, defina a Key como ack.node.gpu.placemente selecione um dos seguintes valores de rótulo:binpackouspread.
-
-
Verifique o agendamento compartilhado
cgpu/share/mpsVerifique se o agendamento compartilhado
cgpu,shareoumpsestá ativado. Substitua <NODE_NAME> pelo nome do seu nó.kubectl get nodes <NODE_NAME> -o yaml | grep -q "aliyun.com/gpu-mem"Saída esperada:
aliyun.com/gpu-mem: "60"Um valor diferente de zero confirma que o agendamento compartilhado
cgpu,shareoumpsestá ativado.core_memVerifique se o agendamento compartilhado
core_memestá ativado. Substitua<NODE_NAME>pelo nome do seu nó.kubectl get nodes <NODE_NAME> -o yaml | grep -E 'aliyun\.com/gpu-core\.percentage|aliyun\.com/gpu-mem'Saída esperada:
aliyun.com/gpu-core.percentage:"80" aliyun.com/gpu-mem:"6"Valores diferentes de zero para
aliyun.com/gpu-core.percentageealiyun.com/gpu-memconfirmam que o agendamento compartilhadocore_memestá ativado.binpackUse a ferramenta de consulta de recursos de GPU para verificar a alocação de recursos de GPU no nó:
kubectl inspect cgpuSaída esperada:
NAME IPADDRESS GPU0(Allocated/Total) GPU1(Allocated/Total) GPU2(Allocated/Total) GPU3(Allocated/Total) GPU Memory(GiB) cn-shanghai.192.0.2.109 192.0.2.109 15/15 9/15 0/15 0/15 24/60 -------------------------------------------------------------------------------------- Allocated/Total GPU Memory In Cluster: 24/60 (40%)A GPU0 está totalmente alocada (15/15) antes da GPU1 (9/15), confirmando que a estratégia
binpackestá ativa.spreadUse a ferramenta de consulta de recursos de GPU para verificar a alocação de recursos de GPU no nó:
kubectl inspect cgpuSaída esperada:
NAME IPADDRESS GPU0(Allocated/Total) GPU1(Allocated/Total) GPU2(Allocated/Total) GPU3(Allocated/Total) GPU Memory(GiB) cn-shanghai.192.0.2.109 192.0.2.109 4/15 4/15 0/15 4/15 12/60 -------------------------------------------------------------------------------------- Allocated/Total GPU Memory In Cluster: 12/60 (20%)Os recursos estão distribuídos uniformemente (4/15) entre GPU0, GPU1 e GPU3, confirmando que a política
spreadestá ativa.
Agendamento com reconhecimento de topologia
O agendamento com reconhecimento de topologia está disponível apenas para o ACK managed cluster Pro. Consulte Requisitos de versão dos componentes do sistema.
-
Ative o agendamento com reconhecimento de topologia
Adicione um rótulo para ativar o agendamento de GPU com reconhecimento de topologia. Substitua <NODE_NAME> pelo nome do seu nó.
kubectl label node <NODE_NAME> ack.node.gpu.schedule=topologyAtivar o agendamento de GPU com reconhecimento de topologia em um nó desativa cargas de trabalho de GPU sem reconhecimento de topologia. Para restaurar o agendamento exclusivo, execute
kubectl label node <NODE_NAME> ack.node.gpu.schedule=default --overwrite. -
Verifique o agendamento com reconhecimento de topologia
Verifique se o agendamento com reconhecimento de
topologyestá ativado. Substitua <NODE_NAME> pelo nome do seu nó.kubectl get nodes <NODE_NAME> -o yaml | grep aliyun.com/gpuSaída esperada:
aliyun.com/gpu: "2"Um valor diferente de zero para
aliyun.com/gpuconfirma que o agendamento com reconhecimento detopologyestá ativado.
Agendamento por modelo de placa
Agende trabalhos em nós com um modelo de GPU especificado ou evite modelos específicos.
-
Visualize o modelo da placa GPU
Consulte o modelo da placa GPU dos nós do cluster.
O campo NVIDIA_NAME mostra o modelo da placa GPU.
kubectl get nodes -L aliyun.accelerator/nvidia_nameSaída esperada:
NAME STATUS ROLES AGE VERSION NVIDIA_NAME cn-shanghai.192.XX.XX.176 Ready <none> 17d v1.26.3-aliyun.1 Tesla-V100-SXM2-32GB cn-shanghai.192.XX.XX.177 Ready <none> 17d v1.26.3-aliyun.1 Tesla-V100-SXM2-32GB -
Ative o agendamento por modelo de placa
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Na página Jobs, clique em Create from YAML. Use os exemplos a seguir para criar uma aplicação e ativar o agendamento por modelo de placa.
Especifique o modelo de placa
Garanta que sua aplicação seja executada em nós com um modelo específico de placa GPU.
Em
aliyun.accelerator/nvidia_name: "Tesla-V100-SXM2-32GB", substituaTesla-V100-SXM2-32GBpelo modelo real da placa do seu nó.Após a criação do trabalho, escolha . A lista de Pods confirma que o Pod foi agendado em um nó com o modelo de placa GPU correspondente.
Exclua o modelo de placa
Use rótulos de modelo de placa GPU com afinidade de nó para impedir o agendamento em certos modelos de placa.
Em
values: - "Tesla-V100-SXM2-32GB", substituaTesla-V100-SXM2-32GBpelo modelo real da placa do seu nó.Após a criação do trabalho, a aplicação não é agendada em nós onde
aliyun.accelerator/nvidia_nameéTesla-V100-SXM2-32GB, mas pode ser executada em nós de GPU com outros modelos de placa.