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
.
- Configura y autentica la línea de comandos de
Para ejecutar las cargas de trabajo, debes tener asignada la función
sandbox-gpu-admin
. De forma predeterminada, el rol se asigna al usuarioplatform-admin
. Puedes asignar el rol a otros usuarios accediendo comoplatform-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
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
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
Aplica el archivo de manifiesto del contenedor:
kubectl apply -f ${CONTAINER_MANIFEST_FILE_PATH} \ -n sandbox-gpu-project \ --kubeconfig ${KUBECONFIG}