Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Configure compartilhamento de GPU sem isolamento de memória da GPU

Última atualização: Jun 27, 2026

Algumas cargas de trabalho de IA/ML gerenciam a memória da GPU por meio de APIs no nível do framework ou lógica de alocação personalizada. Nesses casos, a camada de isolamento de memória da GPU do ACK torna-se redundante e pode interferir no gerenciamento de memória da própria aplicação. Este tópico mostra como ative o compartilhamento de GPU em um node pool sem instale o módulo de isolamento de memória da GPU.

Importante

Utilize este modo apenas quando sua aplicação já gerencie internamente os limites de memória da GPU.

Caso precise tanto do compartilhamento de GPU quanto do isolamento de memória, consulte Configure compartilhamento de GPU com isolamento de memória.

Pré-requisitos

Antes de começar, verifique se você possui:

Como funciona

Ao ative o compartilhamento de GPU sem isolamento de memória:

  • O rótulo de nó ack.node.gpu.schedule=share ativa o compartilhamento de GPU no node pool.

  • O limite de recurso aliyun.com/gpu-mem informa ao agendador quanta memória de GPU o pod solicita. O ACK utiliza esse valor para decisões de agendamento e cálculos de proporção, mas não o impõe como um limite rígido de memória.

  • O pod visualiza toda a memória física da GPU (por exemplo, 16.384 MiB em uma V100). O ACK injeta duas variáveis de ambiente — ALIYUN_COM_GPU_MEM_CONTAINER e ALIYUN_COM_GPU_MEM_DEV — que a aplicação usa para calcular sua parcela e permanecer dentro do limite solicitado.

Etapa 1: Crie um node pool

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

  2. Clique no nome do cluster e escolha Nodes > Node Pools no painel de navegação à esquerda.

  3. Na página Node Pools, clique em Create Node Pool.

  4. Na caixa de diálogo Create Node Pool, configure os parâmetros a seguir e clique em Confirm Order. Para todos os outros parâmetros, consulte Crie e gerencie um node pool.

    Defina ack.node.gpu.schedule=share ativa o compartilhamento de GPU no node pool sem instale o módulo de isolamento de memória da GPU. Para ver todos os rótulos de agendamento de GPU suportados, consulte Rótulos para ative políticas de agendamento de GPU .

    Parâmetro

    Valor

    Instance type

    Defina Architecture como GPU-accelerated e selecione um ou mais tipos de instância com GPU. Este exemplo utiliza instâncias V100.

    Expected nodes

    Defina como 0 caso não queira provisionar nós imediatamente.

    Node labels

    Clique em Add Label, defina Key como ack.node.gpu.schedule e defina Value como share.

Etapa 2: Envie um job

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

  2. Clique no nome do cluster e escolha Workloads > Jobs no painel de navegação à esquerda.

  3. Clique em Create from YAML, cole o YAML a seguir na seção Template e clique em Create.

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: tensorflow-mnist-share
    spec:
      parallelism: 1
      template:
        metadata:
          labels:
            app: tensorflow-mnist-share
        spec:
          containers:
          - name: tensorflow-mnist-share
            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  # Request 4 GiB of GPU memory
            workingDir: /root
          restartPolicy: Never

    O limite aliyun.com/gpu-mem: 4 solicita 4 GiB de memória de GPU para fins de agendamento. Neste modo, ele não impede que outros pods utilizem a memória restante da GPU no mesmo dispositivo.

Verifique a configuração

Para confirme que o compartilhamento de GPU está ativo sem isolamento de memória, verifique se o pod enxerga toda a memória física da GPU, e não apenas a quantidade solicitada.

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

  2. Na coluna Actions do pod (por exemplo, tensorflow-mnist-share-***), clique em Terminal e execute:

    nvidia-smi

    Saída esperada:

    Wed Jun 14 06:45:56 2023
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 515.105.01   Driver Version: 515.105.01   CUDA Version: 11.7     |
    |-------------------------------+----------------------+----------------------+
    | 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   35C    P0    59W / 300W |    334MiB / 16384MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    +-----------------------------------------------------------------------------+

    O que verificar: O denominador no campo Memory-Usage deve exibir a memória física total da GPU — 16384MiB para uma V100. Se aparecer 4096MiB em vez disso, o isolamento de memória da GPU está ativo neste nó.

  3. Verifique as variáveis de ambiente que o ACK injeta no pod:

    ALIYUN_COM_GPU_MEM_CONTAINER=4   # GPU memory requested by this pod (GiB)
    ALIYUN_COM_GPU_MEM_DEV=16        # Total physical GPU memory (GiB)

    A aplicação utiliza essas variáveis para calcular sua taxa de uso de memória e permanecer dentro do limite solicitado:

    percentage = ALIYUN_COM_GPU_MEM_CONTAINER / ALIYUN_COM_GPU_MEM_DEV = 4 / 16 = 0.25

Próximos passos