Faça a gestão das cargas de trabalho de contentores de GPU

Pode ativar e gerir recursos da unidade de processamento de gráficos (GPU) nos seus contentores. Por exemplo, pode preferir executar blocos de notas de inteligência artificial (IA) e aprendizagem automática (AA) num ambiente de GPU. O suporte de GPU está ativado por predefinição no dispositivo isolado do Google Distributed Cloud (GDC).

Antes de começar

Para implementar GPUs nos seus contentores, tem de ter o seguinte:

  • A função de administrador do espaço de nomes (namespace-admin) para implementar cargas de trabalho de GPU no espaço de nomes do seu projeto.

  • O caminho kubeconfig para o cluster do Kubernetes de metal exposto. Inicie sessão e gere o ficheiro kubeconfig se não tiver um.

Configure um contentor para usar recursos da GPU

Para usar GPUs num contentor, conclua os seguintes passos:

  1. Confirme se os nós do cluster do Kubernetes suportam a sua atribuição de recursos de GPU:

    kubectl describe nodes NODE_NAME
    

    Substitua NODE_NAME pelo nó que gere as GPUs que quer inspecionar.

    A saída relevante é semelhante ao seguinte fragmento:

    Capacity:
      nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
    Allocatable:
      nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
    
  2. Adicione os campos .containers.resources.requests e .containers.resources.limits à especificação do contentor. Uma vez que o cluster do Kubernetes está pré-configurado com máquinas de GPU, a configuração é a mesma para todas as cargas de trabalho:

     ...
     containers:
     - name: CONTAINER_NAME
       image: CONTAINER_IMAGE
       resources:
         requests:
           nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
         limits:
           nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
     ...
    

    Substitua o seguinte:

    • CONTAINER_NAME: o nome do contentor.
    • CONTAINER_IMAGE: a imagem do contentor para aceder às máquinas com GPU. Tem de incluir o caminho do registo de contentores e a versão da imagem, como REGISTRY_PATH/hello-app:1.0.
  3. Os contentores também requerem autorizações adicionais para aceder às GPUs. Para cada contentor que solicite GPUs, adicione as seguintes autorizações à especificação do contentor:

    ...
    securityContext:
     seLinuxOptions:
       type: unconfined_t
    ...
    
  4. Aplique o ficheiro de manifesto do contentor:

    kubectl apply -f CONTAINER_MANIFEST_FILE \
        -n NAMESPACE \
        --kubeconfig CLUSTER_KUBECONFIG
    

    Substitua o seguinte:

    • CONTAINER_MANIFEST_FILE: o ficheiro YAML para o recurso personalizado da carga de trabalho do contentor.
    • NAMESPACE: o espaço de nomes do projeto no qual implementar as cargas de trabalho do contentor.
    • CLUSTER_KUBECONFIG: o ficheiro kubeconfig para o cluster do Kubernetes bare metal para o qual está a implementar cargas de trabalho de contentores.
  5. Verifique se os pods estão em execução e a usar as GPUs:

    kubectl get pods -A | grep CONTAINER_NAME \
        -n NAMESPACE \
        --kubeconfig CLUSTER_KUBECONFIG
    

    A saída relevante é semelhante ao seguinte fragmento:

    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
    Ready:          True
    Restart Count:  0
    Limits:
      nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE:  1
    Requests:
      nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE:  1