Desplegar cargas de trabajo de contenedores de GPU

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

Desplegar cargas de trabajo de contenedores de GPU

La SKU de GDC Sandbox optimizada para IA incluye cuatro GPUs NVIDIA H100 de 80 GB HBM3 en el clúster org-infra. Se puede acceder a estas GPUs mediante el nombre de 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 de la SKU optimizada para IA de GDC Sandbox están asociadas a un proyecto preconfigurado, "sandbox-gpu-project". Para usar las GPUs, debes implementar el contenedor con este proyecto.

Antes de empezar

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

    • Configurar y autenticar con la línea de comandos gdcloud
    • Genera el archivo kubeconfig del clúster de infraestructura de la organización y asigna su ruta a la variable de entorno KUBECONFIG.
  • Para ejecutar las cargas de trabajo, debes tener asignado el rol sandbox-gpu-admin. De forma predeterminada, el rol se asigna al usuario platform-admin. Para asignar el rol a otros usuarios, inicia sesión como platform-admin y ejecuta el siguiente comando:

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

Configurar un contenedor para que use recursos de GPU

  1. Añade 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. Por cada contenedor que solicite GPUs, añade 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}