Implantar cargas de trabalho de contêineres de GPU

Nesta página, descrevemos como implantar cargas de trabalho de contêineres de GPU na SKU otimizada para IA do Sandbox do Google Distributed Cloud (GDC).

Implantar cargas de trabalho de contêineres de GPU

A SKU otimizada para IA do GDC Sandbox inclui quatro GPUs NVIDIA H100 de 80 GB HBM3 no cluster org-infra. Essas GPUs podem ser acessadas usando o nome do recurso nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3. Nesta seção, descrevemos como atualizar uma configuração de contêiner para usar essas GPUs.

As GPUs na SKU otimizada para IA do GDC Sandbox estão associadas a um projeto pré-configurado, "sandbox-gpu-project". É necessário implantar o contêiner usando esse projeto para usar as GPUs.

Antes de começar

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

    • Configure e autentique com a linha de comando gdcloud e
    • gere o arquivo kubeconfig para o cluster de infraestrutura da organização e atribua o caminho dele à variável de ambiente KUBECONFIG.
  • Para executar as cargas de trabalho, é preciso ter o papel sandbox-gpu-admin atribuído. Por padrão, a função é atribuída ao usuário platform-admin. Você pode atribuir a função a outros usuários fazendo login como platform-admin e executando o seguinte comando:

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

Configurar um contêiner para usar recursos de GPU

  1. Adicione os campos .containers.resources.requests e .containers.resources.limits à especificação do contêiner para solicitar GPUs para a carga de trabalho. Todos os contêineres no sandbox-gpu-project podem solicitar até quatro GPUs no total em todo o projeto. O exemplo a seguir solicita uma GPU como parte da especificação do contêiner.

    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 contêineres também exigem permissões extras para acessar GPUs. Para cada contêiner que solicita GPUs, adicione as seguintes permissões à especificação do contêiner:

    securityContext:
    seLinuxOptions:
      type: unconfined_t
    
  2. Aplique o arquivo de manifesto do contêiner:

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