El modelo trae tu propio nodo en el software de Distributed Cloud solo para Bare Metal te permite ejecutar cargas de trabajo aceleradas por GPU en tu propio hardware. Para preparar tus clústeres de equipos físicos para las GPU de NVIDIA, instala el operador de GPU de NVIDIA y, luego, verifica que las GPU se reconozcan y funcionen.
Descripción general del operador de GPU de NVIDIA
El operador de GPU de NVIDIA usa el framework de operadores 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 por las siguientes ventajas y flexibilidad:
Elección del tipo de GPU: El software de Distributed Cloud solo es compatible con una amplia gama de tipos de GPU compatibles con el operador de GPU de NVIDIA más reciente.
Elección del sistema operativo compatible: Los nodos trabajadores 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 las GPU de NVIDIA en cualquier tipo de clúster con nodos trabajadores: clústeres de usuario, independientes o híbridos.
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 trabajadores del clúster. La siguiente sección para instalar el operador de GPU de NVIDIA incluye pasos para verificar que las GPU estén instaladas correctamente y que tu 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 correcta 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.
Sigue las instrucciones de la Guía de inicio rápido para la instalación de controladores 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. Usa 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
En los siguientes pasos, se te guiará por la instalación del operador de GPU de NVIDIA en tu clúster de equipos físicos y se te ayudará a confirmar que funciona con tus GPU:
Para los dispositivos de GPU conectados a través de la interconexión de componentes periféricos (PCIe), ejecuta el siguiente comando para obtener una lista de los buses PCI del sistema con "NVIDIA" en su nombre:
sudo lspci | grep NVIDIAEl resultado es similar a lo 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 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 lo 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 | +---------------------------------------------------------------------------------------+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 variantes básicas del comando:
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 y 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 trabajadores de GPU del clúster. Esto requiere que todos los nodos trabajadores con GPU ejecuten la misma versión del sistema operativo para usar el contenedor del controlador de GPU de NVIDIA. Para solucionar este problema, 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 ejemplo, 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 ejecuten correctamente, deberías ver que el recuento de GPU se configuró de forma correcta en el campo
Allocatabledel recurso del nodo.kubectl describe node GPU_NODE_NAME | grep Allocatable -A7Reemplaza
GPU_NODE_NAMEpor el nombre de la máquina de nodo con la GPU que estás probando.El resultado es similar a lo siguiente:
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 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 EOFReemplaza
CLUSTER_KUBECONFIGpor la ruta de acceso del archivo kubeconfig del clúster.Verifica los registros para ver el resultado del trabajo de muestra:
kubectl logs job/test-job-gpu --kubeconfig=CLUSTER_KUBECONFIGEl resultado es similar a lo 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 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, es posible que se reemplacen las configuraciones de containerd que aplica el operador durante las actualizaciones del clúster o del grupo de nodos.
Usa la interfaz de dispositivo de contenedor (CDI) para las cargas de trabajo de GPU. En las versiones anteriores de Google Distributed Cloud que usan containerd 1.6, es posible que algunas funciones 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 reemplaza las configuraciones de containerd, incluidas las que agregó el operador de GPU de NVIDIA.
Prácticas recomendadas
Para minimizar los conflictos y problemas con tus parámetros de configuración 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 del entorno de ejecución denvidia. Restablece el archivoconfig.tomldespués de que la actualización se complete correctamente 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 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 la 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, comunícate con el proveedor de hardware o, si corresponde, directamente con el equipo de asistencia de NVIDIA.
Apreciamos tus comentarios.