Cómo monitorizar y gestionar GPUs NVIDIA en Ubuntu usando nvidia-smi

1. Introducción

Al utilizar una GPU en Ubuntu, es esencial monitorizar su estado con precisión. Esto es particularmente importante en cargas de trabajo que involucran aprendizaje profundo o renderizado gráfico, donde comprender el uso de la GPU y las versiones de los controladores es obligatorio. En este artículo explicamos cómo usar nvidia-smi, una herramienta de gestión de GPUs NVIDIA, y presentamos métodos para consultar la información de la GPU en Ubuntu.

2. Comprobando la información de la GPU con nvidia-smi

nvidia-smi es una herramienta de línea de comandos que permite monitorizar la utilización, el uso de memoria y otra información detallada sobre GPUs NVIDIA. Resulta especialmente útil para observar la actividad de la GPU en tiempo real o para obtener métricas de utilización detalladas.

Uso básico

Puedes usar el siguiente comando para monitorizar el uso de la GPU y la utilización de memoria en tiempo real:

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1

Este comando recupera información detallada, incluyendo la utilización de la GPU, el uso de memoria y la memoria disponible. La opción -l permite establecer el intervalo de actualización en segundos.

Formato de visualización y salida a archivo

Por defecto, los resultados se muestran en formato de tabla, pero puedes exportarlos como CSV para facilitar su procesamiento. Si deseas guardar la información en un archivo, especifica el destino con la opción -f.

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1 -f /path/to/output.csv

Esto te permite guardar registros de utilización de la GPU y analizarlos posteriormente.

3. Recuperando información de procesos con nvidia-smi

nvidia-smi también permite obtener información sobre los procesos que están usando la GPU en ese momento. Esto ayuda a identificar cuántos recursos de GPU consume cada proceso.

Obtención de información de procesos

Utiliza el siguiente comando para ver el PID y el uso de memoria de los procesos que utilizan la GPU:

nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv,noheader

Este comando devuelve una lista de procesos activos en la GPU y muestra el uso de memoria de cada uno.

Subcomando nvidia-smi pmon

La herramienta nvidia-smi incluye también el subcomando pmon, que proporciona un monitoreo detallado de los procesos de la GPU.

nvidia-smi pmon --delay 10 -s u -o DT

Esto muestra información de los procesos de la GPU a intervalos especificados. La opción --delay define el intervalo de actualización en segundos, y puedes elegir qué información mostrar.

4. Instalación y verificación de los controladores NVIDIA

Para usar una GPU NVIDIA en Ubuntu, es necesario instalar el controlador NVIDIA correcto. A continuación se describen los pasos para la instalación y la verificación.

Instalación del controlador

Primero, instala el controlador NVIDIA apropiado para tu sistema usando el siguiente comando:

sudo apt install nvidia-driver-510

Una vez completada la instalación, reinicia el sistema.

Verificación de la instalación

Después de reiniciar, ejecuta el siguiente comando para confirmar que el controlador está instalado correctamente:

nvidia-smi

Si aparecen la versión del controlador y la versión de CUDA, la instalación fue exitosa.

5. Verificando el funcionamiento de la GPU con TensorFlow

También puedes comprobar la funcionalidad de la GPU probándola con TensorFlow, un framework de aprendizaje automático.

Instalación de Anaconda

Primero, instala Anaconda y configura tu entorno:

bash ./Anaconda3-2022.05-Linux-x86_64.sh
conda update -n base conda
conda update anaconda
conda update -y --all
conda install tensorflow-gpu==2.4.1

Comprobación del reconocimiento de la GPU en TensorFlow

A continuación, verifica si TensorFlow reconoce la GPU:

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

Si el dispositivo GPU aparece en la lista, TensorFlow está detectando la GPU correctamente.

6. Monitoreo y registro de la GPU

nvidia-smi permite el monitoreo en tiempo real de la GPU y el registro de logs. Esto ayuda a seguir el uso de la GPU a lo largo del tiempo y a optimizar el rendimiento.

Monitoreo periódico

Para establecer un monitoreo periódico, use la opción -l para especificar el intervalo de actualización y, opcionalmente, registre los datos en un archivo:

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1 -f /var/log/gpu.log

Control programable mediante enlaces de Python

nvidia-smi proporciona enlaces de Python (nvidia-ml-py) que le permiten obtener información de la GPU de forma programática. Esto permite un monitoreo y control más personalizados desde scripts de Python.

7. Conclusión

nvidia-smi es una herramienta poderosa para comprobar y gestionar el uso de GPUs NVIDIA en Ubuntu. Este artículo explicó el uso básico, el monitoreo de procesos, la instalación de controladores y la verificación de GPU con TensorFlow. Utilice estas técnicas para maximizar el rendimiento de la GPU y optimizar su sistema.