El aspecto trae tu propio nodo de Google Distributed Cloud (solo software) en equipos físicos te permite aprovechar tu hardware avanzado, incluidas las máquinas con GPU, para obtener el mejor rendimiento y flexibilidad para tus clústeres.
En este documento, se describe cómo instalar y usar el operador de GPU de NVIDIA para configurar clústeres de equipos físicos creados con Google Distributed Cloud para usarlos con GPU de NVIDIA.
El operador de GPU de NVIDIA usa el framework del operador para administrar los componentes de software de NVIDIA necesarios para aprovisionar y administrar dispositivos de GPU. Te recomendamos que uses el operador de GPU de NVIDIA para obtener la siguiente flexibilidad y ventajas:
Elección del tipo de GPU: Google Distributed Cloud solo con software es compatible con una amplia variedad de tipos de GPU compatibles con el operador de GPU de NVIDIA más reciente.
Elección del sistema operativo compatible: Los nodos de trabajo del clúster pueden usar cualquier sistema operativo (SO) compatible con las GPU de NVIDIA, y tienes la opción de usar controladores de GPU preinstalados o la instalación dinámica de controladores con el operador de GPU de NVIDIA.
Elección de modelos de implementación: Puedes usar GPU de NVIDIA en cualquier tipo de clúster con nodos de trabajo: clústeres de usuario, clústeres independientes o clústeres híbridos.
Esta página está destinada a administradores de TI y operadores que administran el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en Google Cloud el contenido de, consulta Roles y tareas comunes del usuario de GKE.
Antes de comenzar
Antes de realizar los pasos de las siguientes secciones, asegúrate de tener listos los siguientes requisitos:
Clúster operativo: Asegúrate de tener un clúster de equipos físicos funcional creado con Google Distributed Cloud.
GPU de NVIDIA: Asegúrate de que las GPU de NVIDIA estén instaladas en los nodos de trabajo del clúster. En la siguiente sección para instalar el operador de GPU de NVIDIA, se incluyen los pasos para verificar que las GPU estén instaladas correctamente y que el sistema operativo las reconozca.
Versión compatible del controlador de NVIDIA: La versión del controlador de NVIDIA que uses debe ser compatible con tu GPU, tu sistema operativo y la versión de CUDA que usan tus aplicaciones. Tienes las siguientes opciones de instalación del controlador de NVIDIA:
Usa el operador de GPU de NVIDIA para instalar la versión adecuada del controlador de GPU de NVIDIA como se describe en las siguientes secciones.
Usa el controlador de NVIDIA preinstalado en la imagen del sistema operativo.
Usa las instrucciones de la Guía de inicio rápido de instalación del controlador de NVIDIA para instalar el controlador de NVIDIA de forma manual.
Helm versión 3.0.0 o posterior: Instala la interfaz de línea de comandos de Helm para la administración de paquetes en tu estación de trabajo de administrador. Usas Helm para instalar el operador de GPU de NVIDIA. Puedes ejecutar los siguientes comandos para descargar e instalar la herramienta de línea de comandos de Helm:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \ && chmod 700 get_helm.sh \ && ./get_helm.sh
Instala y verifica el operador de GPU de NVIDIA
Los siguientes pasos te guiarán en la instalación del operador de GPU de NVIDIA en tu clúster de equipos físicos y te ayudarán a confirmar que funciona con tus GPU:
Para los dispositivos de GPU conectados a través de Peripheral Component Interconnect Express (PCIe), ejecuta el siguiente comando para obtener una lista de buses PCIe del sistema con "NVIDIA" en su nombre:
sudo lspci | grep NVIDIAEl resultado es similar a este:
25:00.0 3D controller: NVIDIA Corporation Device 20b5 (rev a1)Puedes usar la herramienta de línea de comandos de la interfaz de administración del sistema de NVIDIA (
nvidia-smi) en un nodo determinado para obtener información más detallada sobre los dispositivos de GPU:nvidia-smiEl resultado es similar a este:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.183.01 Driver Version: 535.183.1 CUDA Veersion 12.2 | |-----------------------------------------+----------------------+----------------------| | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA A100 80GB PCIe Off | 00000000:25:00.0 Off | 0 | | N/A 30C P0 44W / 300W | 0MiB / 81920MiB | 0% Default | | | | Disabled | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | No running processes found | +---------------------------------------------------------------------------------------+Agrega el repositorio de Helm para NVIDIA en la estación de trabajo de administrador:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo updateInstala el operador de GPU de NVIDIA.
Cuando instalas el operador de GPU de NVIDIA, hay tres variaciones básicas de comandos:
Instala el operador de GPU de NVIDIA con la configuración predeterminada:
helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set cdi.enabled=true \ --set cdi.default=trueUsa la marca
--setpara pasar un conjunto de pares clave-valor delimitados por comas para especificar las opciones de configuración:helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set cdi.enabled=true \ --set cdi.default=true \ --set OPTION_1_NAME=OPTION_1_VALUE,OPTION_2_NAME=OPTION_2_VALUEPara obtener una lista detallada de las opciones de configuración, consulta Opciones comunes de personalización de gráficos en la documentación de NVIDIA. Para obtener información sobre la logística del uso de la marca
--set, consulta El formato y las limitaciones de--seten la documentación de Helm.Inhabilita la instalación del controlador si ya instalaste el controlador de GPU de NVIDIA en tus nodos:
De forma predeterminada, el operador de GPU de NVIDIA implementa el controlador de GPU más reciente o especificado en todos los nodos de trabajo de GPU del clúster. Esto requiere que todos los nodos de trabajo con GPU ejecuten la misma versión del sistema operativo para usar el contenedor del controlador de GPU de NVIDIA. Para evitar esto, puedes instalar los controladores de GPU en los nodos de forma manual y ejecutar el comando
helm installcon--set driver.enabled=falsepara evitar que el operador de GPU de NVIDIA implemente controladores.helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set cdi.enabled=true \ --set cdi.default=true \ --set driver.enabled=false
Para ver situaciones de implementación comunes y comandos de muestra, consulta Situaciones de implementación comunes en la documentación de NVIDIA.
Verifica la exportación de recursos de GPU:
Después de instalar el operador de GPU de NVIDIA con un controlador de GPU y un complemento de dispositivo que se ejecutan correctamente, deberías ver que el recuento de GPU está configurado correctamente en el campo
Allocatablepara el recurso del nodo.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7Reemplaza
GPU_NODE_NAMEpor el nombre de la máquina del nodo con la GPU que estás probando.El resultado es similar a este:
Allocatable: cpu: 127130m ephemeral-storage: 858356868519 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 509648288Ki nvidia.com/gpu: 1 pods: 250Para verificar que las GPU funcionen, ejecuta el siguiente trabajo de GPU de muestra, que ejecuta el comando
nvidia-smi:export NODE_NAME=GPU_NODE_NAME cat <<EOF | kubectl create --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: batch/v1 kind: Job metadata: name: test-job-gpu spec: template: spec: runtimeClassName: nvidia containers: - name: nvidia-test image: nvidia/cuda:12.0.0-base-ubuntu22.04 command: ["nvidia-smi"] resources: limits: nvidia.com/gpu: 1 nodeSelector: kubernetes.io/hostname: ${NODE_NAME} restartPolicy: Never EOFReemplaza
CLUSTER_KUBECONFIGpor la ruta de acceso del archivo kubeconfig del clúster.Verifica los registros para obtener el resultado del trabajo de muestra:
kubectl logs job/test-job-gpu --kubeconfig=CLUSTER_KUBECONFIGEl resultado es similar a este:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.183.01 Driver Version: 535.183.1 CUDA Veersion 12.2 | |-----------------------------------------+----------------------+----------------------| | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA A100 80GB PCIe Off | 00000000:25:00.0 Off | 0 | | N/A 30C P0 44W / 300W | 0MiB / 81920MiB | 0% Default | | | | Disabled | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | No running processes found | +---------------------------------------------------------------------------------------+
Limitaciones
Se aplican las siguientes limitaciones cuando usas el operador de GPU de NVIDIA con clústeres creados con Google Distributed Cloud:
Si instalas una versión reciente del operador de GPU de NVIDIA, las configuraciones de containerd que aplica el operador podrían sobrescribirse durante las actualizaciones del clúster o del grupo de nodos.
Usa la interfaz de dispositivos de contenedor (CDI) para las cargas de trabajo de GPU. Para versiones anteriores de Google Distributed Cloud que usan containerd 1.6, es posible que algunas capacidades de CDI no estén disponibles.
Los grupos de nodos del balanceador de cargas ejecutan automáticamente un trabajo de actualización cada 7 días. Este trabajo sobrescribe las configuraciones de containerd, incluidas las que agrega el operador de GPU de NVIDIA.
Prácticas recomendadas
Para minimizar los conflictos y los problemas con tus configuraciones de NVIDIA, te recomendamos que tomes las siguientes precauciones:
Haz una copia de seguridad del archivo de configuración de containerd,
/etc/containerd/config.toml, antes de actualizar el clúster o los grupos de nodos. Este archivo contiene la configuración de tiempo de ejecución denvidia. Restablece el archivoconfig.tomldespués de que se complete la actualización correctamente y reinicia containerd para que los cambios de configuración surtan efecto.Para evitar posibles conflictos o problemas con la configuración de containerd, no uses nodos de GPU como nodos de balanceador de cargas (
loadBalancer.nodePoolSpec).
Obtener asistencia
Si necesitas asistencia adicional relacionada con el uso de GPU con Google Distributed Cloud, comunícate con Atención al cliente de Cloud.
Si tienes problemas relacionados con la configuración o el uso del hardware de GPU en tu sistema operativo, consulta con el proveedor de hardware o, si corresponde, directamente con la asistencia de NVIDIA.
Apreciamos tus comentarios.