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 GPU 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 la SKU optimizada para IA de GDC Sandbox están asociadas con un proyecto preconfigurado, "sandbox-gpu-project" (presente solo en las instancias de la SKU optimizada para IA de GDC Sandbox). Debes implementar tu contenedor con este proyecto dentro del clúster org-1-infra 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. - generar el archivo kubeconfig para el clúster de infraestructura de la organización y asignar 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 asignado el rol
sandbox-gpu-admin. De forma predeterminada, el rol se asigna al usuarioplatform-admin. Puedes asignar el rol a otros usuarios accediendo comoplatform-adminy ejecutando el siguiente comando:kubectl --kubeconfig ${KUBECONFIG} create rolebinding ${NAME} --role=sandbox-gpu-admin \ --user=${USER} --namespace=sandbox-gpu-projectPara permitir el tráfico de red a tu contenedor, debes tener una política de red del proyecto. Para obtener más información, consulta Crea una política de red.
Configura un contenedor para que use recursos de GPU
Agrega los campos
.containers.resources.requestsy.containers.resources.limitsa la especificación del contenedor para solicitar GPUs para la carga de trabajo. Todos los contenedores dentro de 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 una concesión de
.containers.securityContextsecurityContext.seLinuxOptionsde tipounconfined_tal 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 securityContext: seLinuxOptions: type: unconfined_tAplica el archivo de manifiesto del contenedor:
kubectl apply -f ${CONTAINER_MANIFEST_FILE_PATH} \ -n sandbox-gpu-project \ --kubeconfig ${KUBECONFIG}