Implementa cargas de trabajo de contenedores de GPU

En esta página, se describe cómo implementar cargas de trabajo de contenedores de GPU en la SKU optimizada para IA de Google Distributed Cloud (GDC) Sandbox.

Implementa cargas de trabajo de contenedores de GPU

El SKU optimizado para IA de GDC Sandbox incluye cuatro GPUs NVIDIA H100 HBM3 de 80 GB en el clúster de infraestructura de la organización. Se puede acceder a estas GPUs con el nombre del recurso nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3. En esta sección, se describe cómo actualizar la configuración de un contenedor para usar estas GPUs.

Las GPUs en el SKU optimizado para IA de GDC Sandbox están asociadas con un proyecto preconfigurado, "sandbox-gpu-project". Debes implementar tu contenedor con este proyecto para usar las GPUs.

Antes de comenzar

  • Para ejecutar comandos en el clúster de infraestructura de la organización, asegúrate de tener el kubeconfig del clúster org-1-infra, como se describe en Trabaja con clústeres:

    • Configura y autentica la línea de comandos de gdcloud.
    • Genera el archivo kubeconfig para el clúster de infraestructura de la organización y asigna su ruta de acceso a la variable de entorno KUBECONFIG.
  • Para ejecutar las cargas de trabajo, debes tener asignada la función sandbox-gpu-admin. De forma predeterminada, el rol se asigna al usuario platform-admin. Puedes asignar el rol a otros usuarios accediendo como platform-admin y ejecutando el siguiente comando:

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

Configura un contenedor para que use recursos de GPU

  1. Agrega los campos .containers.resources.requests y .containers.resources.limits a la especificación del contenedor para solicitar GPUs para la carga de trabajo. Todos los contenedores del proyecto sandbox-gpu-project pueden solicitar hasta un total de 4 GPUs en todo el proyecto. En el siguiente ejemplo, se solicita una GPU como parte de la especificación del contenedor.

    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. Los contenedores también requieren permisos adicionales para acceder a las GPUs. Para cada contenedor que solicite GPUs, agrega los siguientes permisos a la especificación del contenedor:

    securityContext:
    seLinuxOptions:
      type: unconfined_t
    
  2. Aplica el archivo de manifiesto del contenedor:

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