Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Ative o compartilhamento de múltiplas GPUs com o agendamento de GPU compartilhada

Última atualização: Jun 27, 2026

Durante o desenvolvimento de modelos, é comum precisar de várias placas GPU sem demandar grandes quantidades de recursos. Alocar cada placa GPU exclusivamente para uma plataforma de desenvolvimento pode resultar em desperdício. O compartilhamento de múltiplas GPUs permite que um Pod utilize alocações iguais de memória GPU de várias placas, sem ocupar nenhuma delas de forma exclusiva. Clusters ACK Pro oferecem suporte a esse recurso com isolamento de memória GPU, possibilitando uma utilização mais granular dos recursos.

Pré-requisitos

Verifique se os seguintes itens foram atendidos:

Limitações

O compartilhamento de múltiplas GPUs oferece isolamento de memória GPU apenas com compartilhamento de poder de computação, não suportando alocação dedicada de poder de computação.

Como funciona

Esse mecanismo permite que um único Pod solicite memória GPU de várias placas. Cada placa contribui com uma parte igual da memória.

Modo

Descrição

Compartilhamento de GPU única

O Pod utiliza parte dos recursos de uma única placa GPU.

Compartilhamento de múltiplas GPUs

O Pod abrange várias placas GPU, e cada uma fornece uma quantidade igual de memória GPU.

Fórmula de alocação: Se um Pod solicitar N GiB de M placas GPU, cada placa alocará N/M GiB.

Por exemplo, um Pod que solicita 8 GiB distribuídos em 2 placas recebe 4 GiB de cada uma.

Restrições:

  • O resultado de N/M deve ser um número inteiro.

  • Todas as M placas GPU devem estar no mesmo nó Kubernetes.

image

Configure o compartilhamento de múltiplas GPUs

  1. Faça login no console 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. Na página Jobs, clique em Create from YAML. Cole o seguinte YAML em Template e clique em Create.

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: tensorflow-mnist-multigpu
    spec:
      parallelism: 1
      template:
        metadata:
          labels:
            app: tensorflow-mnist-multigpu
            aliyun.com/gpu-count: "2"    # Number of GPU cards to use
        spec:
          containers:
          - name: tensorflow-mnist-multigpu
            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: 8    # Total GPU memory in GiB across all cards
            workingDir: /root
          restartPolicy: Never

    Parâmetros principais:

    Parâmetro

    Tipo

    Descrição

    aliyun.com/gpu-count

    String (rótulo do Pod)

    Quantidade de placas GPU. Defina em metadata.labels. Exemplo: "2" solicita memória de 2 placas.

    aliyun.com/gpu-mem

    Inteiro (limite de recurso)

    Memória GPU total (GiB) somada entre todas as placas. Defina em resources.limits. Exemplo: 8 representa 8 GiB no total — 4 GiB por placa.

Verifique o isolamento de memória GPU

Após o início do Job, confirme se o Pod acessa somente a memória GPU alocada para ele.

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

  2. Para o Pod desejado (por exemplo, tensorflow-mnist-multigpu-***), clique em Actions > Terminal e execute:

    nvidia-smi

    Saída esperada:

    Wed Jun 14 03:24:14 2023
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 470.161.03   Driver Version: 470.161.03   CUDA Version: 11.4     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  Tesla V100-SXM2...  On   | 00000000:00:09.0 Off |                    0 |
    | N/A   38C    P0    61W / 300W |    569MiB /  4309MiB |      2%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    |   1  Tesla V100-SXM2...  On   | 00000000:00:0A.0 Off |                    0 |
    | N/A   36C    P0    61W / 300W |    381MiB /  4309MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    +-----------------------------------------------------------------------------+

    Confirme os seguintes pontos na saída:

    • Duas placas GPU listadas (GPU 0 e GPU 1), correspondendo a aliyun.com/gpu-count: "2".

    • Cada placa exibe 4309 MiB de memória total — ou seja, 4 GiB por placa, e não os 16.160 MiB físicos, o que confirma o isolamento de memória GPU.

  3. Para o mesmo Pod, clique em Actions > Logs. Verifique se esta saída aparece duas vezes (uma vez por placa):

    totalMemory: 4.21GiB freeMemory: 3.91GiB

    Um valor de totalMemory próximo a 4 GiB por placa — em vez dos 16.160 MiB físicos — confirma que o isolamento de memória GPU está ativo.