Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Enable GPU scheduling features

Última atualização: Jun 27, 2026

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)

ack.node.gpu.schedule: default

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

ack.node.gpu.schedule: cgpu

ack.node.gpu.schedule: core_mem

ack.node.gpu.schedule: share

ack.node.gpu.schedule: mps

Ideal para tarefas leves simultâneas, como multilocação e inferência. Melhora a utilização da GPU.

  • cgpu: Poder de computação compartilhado com memória de GPU isolada, baseado no cGPU da Alibaba Cloud.

  • core_mem: Poder de computação e memória de GPU isolados.

  • share: Poder de computação e memória de GPU compartilhados sem isolamento.

  • mps: Poder de computação compartilhado com memória de GPU isolada, baseado no NVIDIA Multi-Process Service (MPS) com cGPU da Alibaba Cloud.

ack.node.gpu.placement: binpack

ack.node.gpu.placement: spread

Otimiza a alocação de recursos em nós com múltiplas GPUs quando o agendamento compartilhado cgpu, core_mem, share ou mps está ativado.

  • binpack: (Padrão) Preenche uma GPU com Pods antes de alocar a próxima, reduzindo a fragmentação de recursos. Ideal para maximizar a utilização ou economizar energia.

  • spread: Distribui os Pods pelas GPUs para reduzir o impacto de falhas em uma única placa. Adequado para cargas de trabalho de alta disponibilidade.

Agendamento com reconhecimento de topologia

ack.node.gpu.schedule: topology

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

aliyun.accelerator/nvidia_name: <GPU card name>

Use estes rótulos para definir a memória da GPU e a contagem de placas para os trabalhos.
aliyun.accelerator/nvidia_mem: <GPU memory per card>
aliyun.accelerator/nvidia_count: <total number of GPU cards>

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.

  1. Instale o componente ack-ai-installer

    1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

    2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Applications > Cloud-native AI Suite.

    3. 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 .
    4. 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.

  2. Ative o agendamento compartilhado

    1. Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha Nodes > Node Pools.

    2. 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 Node Labels em Node Labels, defina a Key como ack.node.gpu.schedule e selecione um dos seguintes valores de rótulo: cgpu, core_mem, share ou mps (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 Node Labels em Node Labels, defina a Key como ack.node.gpu.placement e selecione um dos seguintes valores de rótulo: binpack ou spread.

  3. Verifique o agendamento compartilhado

    cgpu/share/mps

    Verifique se o agendamento compartilhado cgpu, share ou mps está 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, share ou mps está ativado.

    core_mem

    Verifique se o agendamento compartilhado core_mem está 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.percentage e aliyun.com/gpu-mem confirmam que o agendamento compartilhado core_mem está ativado.

    binpack

    Use a ferramenta de consulta de recursos de GPU para verificar a alocação de recursos de GPU no nó:

    kubectl inspect cgpu

    Saí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 binpack está ativa.

    spread

    Use a ferramenta de consulta de recursos de GPU para verificar a alocação de recursos de GPU no nó:

    kubectl inspect cgpu

    Saí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 spread está 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.

  1. Instale o componente ack-ai-installer.

  2. 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=topology
    Ativar 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 .
  3. Verifique o agendamento com reconhecimento de topologia

    Verifique se o agendamento com reconhecimento de topology está ativado. Substitua <NODE_NAME> pelo nome do seu nó.

    kubectl get nodes <NODE_NAME> -o yaml | grep aliyun.com/gpu

    Saída esperada:

    aliyun.com/gpu: "2"

    Um valor diferente de zero para aliyun.com/gpu confirma que o agendamento com reconhecimento de topology está ativado.

Agendamento por modelo de placa

Agende trabalhos em nós com um modelo de GPU especificado ou evite modelos específicos.

  1. 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_name

    Saí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

    Métodos alternativos de verificação

    Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha Workloads > Pods. Para um Pod em execução (por exemplo, tensorflow-mnist-multigpu-***), clique em Terminal na coluna Actions. Selecione o container desejado na lista suspensa e execute os seguintes comandos.

    • Consulte o modelo da placa: nvidia-smi --query-gpu=gpu_name --format=csv,noheader --id=0 | sed -e 's/ /-/g'

    • Consulte a memória de GPU de cada placa: nvidia-smi --id=0 --query-gpu=memory.total --format=csv,noheader | sed -e 's/ //g'

    • Consulte o número total de placas GPU no nó: nvidia-smi -L | wc -l

  2. Ative o agendamento por modelo de placa

    1. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Workloads > Jobs.

    2. 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", substitua Tesla-V100-SXM2-32GB pelo modelo real da placa do seu nó.

      Detalhes do YAML

      apiVersion: batch/v1
      kind: Job
      metadata:
        name: tensorflow-mnist
      spec:
        parallelism: 1
        template:
          metadata:
            labels:
              app: tensorflow-mnist
          spec:
            nodeSelector:
              aliyun.accelerator/nvidia_name: "Tesla-V100-SXM2-32GB" # Runs the application on a Tesla V100-SXM2-32GB GPU.
            containers:
            - name: tensorflow-mnist
              image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5
              command:
              - python
              - tensorflow-sample-code/tfjob/docker/mnist/main.py
              - --max_steps=1000
              - --data_dir=tensorflow-sample-code/data
              resources:
                limits:
                  nvidia.com/gpu: 1
              workingDir: /root
            restartPolicy: Never

      Após a criação do trabalho, escolha Workloads > Pods . 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", substitua Tesla-V100-SXM2-32GB pelo modelo real da placa do seu nó.

      Detalhes do YAML

      apiVersion: batch/v1
      kind: Job
      metadata:
        name: tensorflow-mnist
      spec:
        parallelism: 1
        template:
          metadata:
            labels:
              app: tensorflow-mnist
          spec:
            affinity:
              nodeAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  nodeSelectorTerms:
                  - matchExpressions:
                    - key: aliyun.accelerator/nvidia_name  # Card model scheduling label
                      operator: NotIn
                      values:
                      - "Tesla-V100-SXM2-32GB"            # Prevents the Pod from being scheduled to a node with a Tesla-V100-SXM2-32GB card.
            containers:
            - name: tensorflow-mnist
              image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5
              command:
              - python
              - tensorflow-sample-code/tfjob/docker/mnist/main.py
              - --max_steps=1000
              - --data_dir=tensorflow-sample-code/data
              resources:
                limits:
                  nvidia.com/gpu: 1
              workingDir: /root
            restartPolicy: Never

      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.