La función Trae tu propio nodo de Google Distributed Cloud (solo software) en hardware bare metal te permite aprovechar tu hardware avanzado, incluidas las máquinas con GPUs, para obtener el mejor rendimiento y flexibilidad en tus clústeres.
En este documento se describe cómo instalar y usar el operador de GPU de NVIDIA para configurar clústeres de hardware desnudo creados con Google Distributed Cloud para usarlos con GPUs de NVIDIA.
El operador de GPU NVIDIA usa el framework de operadores para gestionar los componentes de software de NVIDIA necesarios para aprovisionar y gestionar dispositivos de GPU. Te recomendamos que utilices el operador de GPU de NVIDIA para disfrutar de las siguientes ventajas y flexibilidad:
Elección del tipo de GPU: la versión solo de software de Google Distributed Cloud es compatible con una amplia gama de tipos de GPU admitidos por 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 compatible con GPUs NVIDIA. Además, puedes usar controladores de GPU preinstalados o instalar controladores dinámicamente con el operador de GPU NVIDIA.
Elección de modelos de implementación: puedes usar GPUs de NVIDIA en cualquier tipo de clúster con nodos de trabajador: clústeres de usuario, clústeres independientes o clústeres híbridos.
Esta página está dirigida a administradores y operadores de TI que gestionan el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de usuario de GKE. Google Cloud
Antes de empezar
Antes de seguir los pasos que se indican en las siguientes secciones, asegúrate de que cumples los requisitos que se detallan a continuación:
Clúster operativo: asegúrate de tener un clúster Bare Metal funcional creado con Google Distributed Cloud.
GPUs NVIDIA: asegúrate de que las GPUs NVIDIA estén instaladas en los nodos de trabajo del clúster. En la siguiente sección sobre cómo instalar el operador de GPU NVIDIA se incluyen los pasos para verificar que las GPUs se han instalado correctamente y que el sistema operativo las reconoce.
Versión compatible del controlador de NVIDIA: la versión del controlador de NVIDIA que utilices debe ser compatible con tu GPU, tu sistema operativo y la versión de CUDA que usen tus aplicaciones. Tienes las siguientes opciones de instalación de controladores de NVIDIA:
Usa el operador de GPU NVIDIA para instalar la versión adecuada del controlador de GPU NVIDIA, tal como se describe en las siguientes secciones.
Usa el controlador de NVIDIA preinstalado en la imagen de tu sistema operativo.
Sigue las instrucciones de la guía de inicio rápido de instalación de controladores de NVIDIA para instalar manualmente el controlador de NVIDIA.
Helm versión 3.0.0 o posterior: instala la interfaz de línea de comandos de Helm para gestionar paquetes en tu estación de trabajo de administrador. Utiliza 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
Instalar y verificar el operador de GPU NVIDIA
En los pasos siguientes se explica cómo instalar el operador de GPU de NVIDIA en tu clúster de hardware desnudo y cómo confirmar que funciona con tus GPUs:
En el caso de los dispositivos de GPU conectados a través de Peripheral Component Interconnect Express (PCIe), ejecuta el siguiente comando para obtener una lista de buses PCI del sistema con "NVIDIA" en su nombre:
sudo lspci | grep NVIDIA
El resultado debería ser similar al siguiente:
25:00.0 3D controller: NVIDIA Corporation Device 20b5 (rev a1)
Puedes usar la herramienta de línea de comandos de la interfaz de gestión del sistema de NVIDIA (
nvidia-smi
) en un nodo determinado para obtener información más detallada sobre los dispositivos de GPU:nvidia-smi
El resultado debería ser similar al siguiente:
+---------------------------------------------------------------------------------------+ | 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 | +---------------------------------------------------------------------------------------+
Añade el repositorio de NVIDIA Helm en la estación de trabajo de administrador:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo update
Instala el operador de GPU NVIDIA.
Cuando instalas el operador de GPU NVIDIA, hay tres variaciones básicas de comandos:
Instala el operador de GPU NVIDIA con la configuración predeterminada:
helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator
Usa la marca
--set
para transferir un conjunto de pares clave-valor delimitados por comas y especificar las opciones de configuración:helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set OPTION_1_NAME=OPTION_1_VALUE,OPTION_2_NAME=OPTION_2_VALUE
Para ver una lista detallada de las opciones de configuración, consulta Opciones de personalización de gráficos comunes en la documentación de NVIDIA. Para obtener información sobre la logística de usar la marca
--set
, consulta Formato y limitaciones de--set
en la documentación de Helm.Inhabilita la instalación de controladores si ya has instalado el controlador de la GPU NVIDIA en tus nodos:
De forma predeterminada, el operador de GPU NVIDIA despliega el controlador de GPU más reciente o el especificado en todos los nodos de trabajador de GPU del clúster. Para ello, todos los nodos de trabajo con GPUs deben ejecutar la misma versión del sistema operativo para usar el contenedor del controlador de GPU de NVIDIA. Para evitarlo, puedes instalar manualmente los controladores de GPU en los nodos y ejecutar el comando
helm install
con--set driver.enabled=false
para evitar que el operador de GPU NVIDIA despliegue los controladores.helm install --wait --generate-name \ -n gpu-operator --create-namespace \ nvidia/gpu-operator \ --set driver.enabled=false
Para ver casos de implementación habituales y comandos de ejemplo, consulta la sección Casos de implementación habituales de la documentación de NVIDIA.
Verifica que se exporta el recurso de GPU:
Una vez que se haya instalado el operador de GPU NVIDIA con un controlador de GPU y un complemento de dispositivo que funcionen correctamente, deberías ver que el recuento de GPUs se ha configurado correctamente en el campo
Allocatable
del recurso de nodo.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7
Sustituye
GPU_NODE_NAME
por el nombre de la máquina del nodo con la GPU que estás probando.El resultado debería ser similar al siguiente:
Allocatable: cpu: 127130m ephemeral-storage: 858356868519 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 509648288Ki nvidia.com/gpu: 1 pods: 250
Para verificar que las GPUs funcionan, ejecuta el siguiente trabajo de GPU de ejemplo, 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 EOF
Sustituye
CLUSTER_KUBECONFIG
por la ruta del archivo kubeconfig del clúster.Consulta los registros del resultado del trabajo de ejemplo:
kubectl logs job/test-job-gpu --kubeconfig=CLUSTER_KUBECONFIG
El resultado debería ser similar al siguiente:
+---------------------------------------------------------------------------------------+ | 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 se usa el operador de GPU de NVIDIA con clústeres creados con Google Distributed Cloud:
Si instalas una versión reciente de NVIDIA GPU Operator, es posible que las configuraciones de containerd que aplique el operador se sobrescriban durante las actualizaciones o las mejoras del clúster o del grupo de nodos.
Las versiones compatibles de Google Distributed Cloud instalan la versión 1.6 de LTS de containerd, que no habilita la interfaz de dispositivo de contenedor (CDI). Si sigues las instrucciones de Compatibilidad con la interfaz de dispositivo de contenedor de la documentación de NVIDIA, es posible que el tiempo de ejecución
nvidia-cdi
no funcione. El clúster debería seguir funcionando correctamente, pero es posible que algunas funciones de CDI no estén disponibles.Los grupos de nodos de balanceadores de carga ejecutan automáticamente un trabajo de actualización cada 7 días. Este trabajo sobrescribe las configuraciones de containerd, incluidas las que ha añadido el operador de GPU NVIDIA.
Prácticas recomendadas
Para minimizar los conflictos y los problemas con las configuraciones de NVIDIA, te recomendamos que tomes las siguientes precauciones:
Crea 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
. Restaura el archivoconfig.toml
después de que se haya completado correctamente la actualización o la actualización y reinicia containerd para que se apliquen los cambios de configuración.Para evitar posibles conflictos o problemas con la configuración de containerd, no utilices nodos de GPU como nodos de balanceador de carga (
loadBalancer.nodePoolSpec
).
Obtener asistencia
Si necesitas más ayuda relacionada con el uso de GPUs con Google Distributed Cloud, ponte en contacto con el equipo de Asistencia de Google Cloud.
Si tienes problemas para configurar o usar el hardware de la GPU en tu sistema operativo, ponte en contacto con el proveedor del hardware o, si procede, con el equipo de Asistencia de NVIDIA directamente.
Valoramos mucho tu opinión.