Implemente cargas de trabalho de contentores de GPU

Esta página descreve como implementar cargas de trabalho de contentores de GPU na SKU otimizada para IA da sandbox do Google Distributed Cloud (GDC).

Implemente cargas de trabalho de contentores de GPU

A SKU otimizada para IA da GDC Sandbox inclui quatro GPUs NVIDIA H100 80GB HBM3 no cluster org-infra. Estas GPUs são acessíveis através do nome do recurso nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3. Esta secção descreve como atualizar a configuração de um contentor para usar estas GPUs.

As GPUs na SKU otimizada para IA da GDC Sandbox estão associadas a um projeto pré-configurado, "sandbox-gpu-project". Tem de implementar o contentor através deste projeto para usar as GPUs.

Antes de começar

  • Para executar comandos no cluster de infraestrutura da organização, certifique-se de que tem o kubeconfig do cluster org-1-infra, conforme descrito em Trabalhar com clusters:

    • Configurar e autenticar com a linha de comandos gdcloud e
    • gerar o ficheiro kubeconfig para o cluster de infraestrutura da organização e atribuir o respetivo caminho à variável de ambiente KUBECONFIG.
  • Para executar as cargas de trabalho, tem de ter a função sandbox-gpu-admin atribuída. Por predefinição, a função é atribuída ao utilizador platform-admin. Pode atribuir a função a outros utilizadores iniciando sessão como platform-admin e executando o seguinte comando:

    kubectl --kubeconfig ${KUBECONFIG} create rolebinding ${NAME} --role=sandbox-gpu-admin \
    --user=${USER} --namespace=sandbox-gpu-project
    

Configure um contentor para usar recursos da GPU

  1. Adicione os campos .containers.resources.requests e .containers.resources.limits à especificação do contentor para pedir GPUs para a carga de trabalho. Todos os contentores no sandbox-gpu-project podem pedir até um total de 4 GPUs em todo o projeto. O exemplo seguinte pede uma GPU como parte da especificação do contentor.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: sandbox-gpu-project
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            resources:
            requests:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
            limits:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
    
  1. 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
    
  2. Aplique o ficheiro de manifesto do contentor:

    kubectl apply -f ${CONTAINER_MANIFEST_FILE_PATH} \
        -n sandbox-gpu-project \
        --kubeconfig ${KUBECONFIG}