Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Configure a política de seleção de GPU para compartilhamento de GPU

Última atualização: Jun 27, 2026

Por padrão, o agendador aloca recursos de GPU preenchendo uma GPU em um nó antes de passar para a próxima. Essa abordagem ajuda a evitar a fragmentação da memória da GPU. No entanto, em alguns cenários, pode ser necessário distribuir Pods entre várias GPUs para minimizar o impacto nas cargas de trabalho caso uma única GPU falhe. Este tópico descreve como configurar a política de seleção de GPU para compartilhamento de GPU.

Pré-requisitos

Como funciona

Ao usar o compartilhamento de GPU em um nó com várias GPUs, escolha entre duas políticas para alocar GPUs aos Pods:

  • Binpack: (Padrão) O agendador preenche uma GPU em um nó antes de alocar recursos de outra. Essa estratégia evita a fragmentação da memória da GPU.

  • Spread: O agendador distribui os Pods da forma mais uniforme possível entre todas as GPUs disponíveis em um nó. Esse método minimiza a quantidade de cargas de trabalho afetadas se uma única GPU falhar.

O exemplo a seguir mostra um nó com duas GPUs, cada uma com 15 GiB de memória de GPU. O Pod1 solicita 2 GiB de memória de GPU e o Pod2 solicita 3 GiB.

Procedimento

A política de seleção de GPU padrão para um nó é Binpack. Para utilizar a política Spread no compartilhamento de GPU, siga estas etapas.

Etapa 1: Crie um node pool

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

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

  1. Na página Node Pools, clique em Create Node Pool no canto superior direito.

  2. Na página Create Node Pool, defina os parâmetros e clique em Confirm. A tabela a seguir descreve os principais parâmetros. Para obter informações sobre outros parâmetros, consulte Crie e gerencie um node pool.

    Parâmetro

    Descrição

    Instance type

    Em Architecture, selecione GPU-accelerated instance e escolha um tipo de instância.

    A política Spread só é efetiva em nós com múltiplas GPUs. Selecione um tipo de instância com mais de uma GPU.

    Expected nodes

    Especifique o número inicial de nós no node pool. Defina como 0 caso não deseje criar nós imediatamente.

    Node label

    Clique em 1.jpg para adicionar os dois rótulos seguintes:

    • Defina Key como ack.node.gpu.schedule e Value como cgpu. Isso ativa o compartilhamento de GPU e o isolamento de memória da GPU.

    • Defina Key como ack.node.gpu.placement e Value como spread. Isso habilita a política Spread para o nó.

Etapa 2: Envie um job

  1. Faça login no console do ACK. 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 Workloads > Jobs.

  3. No canto superior direito da página, clique em Create from YAML. Copie o conteúdo YAML abaixo para o editor Template, modifique-o conforme indicado nos comentários e clique em Create.

    Detalhes do YAML

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: tensorflow-mnist-spread
    spec:
      parallelism: 3
      template:
        metadata:
          labels:
            app: tensorflow-mnist-spread
        spec:
          nodeSelector:
             kubernetes.io/hostname: <NODE_NAME> # Replace <NODE_NAME> with the name of a GPU node in your cluster to better observe the effect, for example, cn-shanghai.192.0.2.109.
          containers:
          - name: tensorflow-mnist-spread
            image: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:tensorflow-1.5
            command:
            - python
            - tensorflow-sample-code/tfjob/docker/mnist/main.py
            - --max_steps=100000
            - --data_dir=tensorflow-sample-code/data
            resources:
              limits:
                aliyun.com/gpu-mem: 4 # Requests 4 GiB of gpu memory.
            workingDir: /root
          restartPolicy: Never

    Descrição do arquivo YAML:

    • Este arquivo YAML define um Job que utiliza o exemplo TensorFlow MNIST. O Job cria três Pods, e cada Pod solicita 4 GiB de memória de GPU.

    • Um Pod solicita 4 GiB de memória de GPU ao definir aliyun.com/gpu-mem: 4 na seção resources.limits da especificação do Pod.

    • Para observar o efeito em um único nó, o arquivo YAML adiciona um nodeSelector, kubernetes.io/hostname: <NODE_NAME>, para agendar os Pods em um nó específico.

Etapa 3: Verifique a política Spread

Use a ferramenta de inspeção de GPU para consultar a alocação de recursos de GPU no nó:

kubectl inspect cgpu

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%)

A saída indica que os três Pods foram agendados em GPUs diferentes no mesmo nó. Isso confirma que a política Spread está em vigor.