Solución Error Nvidia NVML: Driver/library version mismatch en Linux
El error Failed to initialize NVML: Driver/library version mismatch ocurre frecuentemente en servidores y estaciones de trabajo Linux (especialmente en distribuciones basadas en Ubuntu y Debian) al ejecutar nvidia-smi o iniciar contenedores con Docker GPU. Esta incidencia se produce cuando una actualización del sistema (como unattended-upgrades o apt upgrade) actualiza las librerías en espacio de usuario (libnvidia-*.so), pero el módulo del kernel de Nvidia (nvidia.ko) que continúa cargado en memoria RAM corresponde a la versión previa.
DIAGNÓSTICO RÁPIDO // MATRIZ DE RESOLUCIÓN
La Solución Paso a Paso
-
1
Paso 1: Comprobar la discrepancia de versiones entre el Kernel y NVML
Verifica la versión del módulo cargado en el kernel frente a la versión de la librería en espacio de usuario:
BASH# Versión del módulo actualmente cargado en el kernel cat /proc/driver/nvidia/version # Versión de los paquetes y librerías instaladas en el sistema dpkg -l | grep -i nvidia-utilsSi observas números de versión distintos (por ejemplo, el kernel corriendo
535.183.01y el sistema habiendo actualizado a535.183.06), el driver requiere recargarse. -
2
Paso 2: Identificar y detener los procesos que consumen la GPU
Para poder descargar los módulos del kernel, ningún proceso puede estar interactuando con
/dev/nvidia*:BASH# Listar los procesos que bloquean la GPU sudo fuser -v /dev/nvidia* 2>/dev/nullDetén temporalmente los servicios que típicamente hacen uso de la tarjeta gráfica (contenedores Docker, gestores de interfaz gráfica o servidores de inferencia):
BASH# Detener Docker y Ollama (o tu servicio de IA) sudo systemctl stop docker sudo systemctl stop ollama 2>/dev/null || true # En caso de entornos de escritorio, detener el gestor de pantalla sudo systemctl stop gdm3 2>/dev/null || sudo systemctl stop lightdm 2>/dev/null || trueSi quedan procesos residuales bloqueando el descriptor de archivo, finalízalos de forma forzada:
BASHsudo fuser -k -9 /dev/nvidia* 2>/dev/null -
3
Paso 3: Descargar los módulos de Nvidia de la memoria del Kernel
Descarga en orden de dependencia inversa todos los módulos relacionados con Nvidia:
BASHsudo rmmod nvidia_uvm sudo rmmod nvidia_drm sudo rmmod nvidia_modeset sudo rmmod nvidiaSi el comando devuelve
rmmod: ERROR: Module nvidia is in use, vuelve a verificar consudo lsof /dev/nvidia*para cerrar el proceso restante. -
4
Paso 4: Recargar el módulo Nvidia actualizado
Una vez descargados los módulos anteriores, carga nuevamente el driver para que el kernel sincronice con las nuevas librerías:
BASHsudo modprobe nvidia sudo modprobe nvidia_modeset sudo modprobe nvidia_uvm sudo modprobe nvidia_drm -
5
Paso 5: Validar con nvidia-smi y reanudar servicios
Ejecuta la herramienta de telemetría de Nvidia para confirmar que la comunicación con NVML se ha restablecido:
BASHnvidia-smiDeberías ver de inmediato la tabla de telemetría de la GPU con el consumo, temperatura y la versión del driver sincronizada. Luego, reanuda tus servicios habituales:
BASHsudo systemctl start docker sudo systemctl start ollama 2>/dev/null || true
Preguntas Frecuentes
¿Por qué ocurre este error automáticamente en servidores Ubuntu y Debian?
El paquete unattended-upgrades aplica parches de seguridad automáticamente durante la madrugada. Cuando el repositorio de Canonical o Nvidia publica una actualización menor del driver, apt instala los nuevos archivos binarios y librerías, pero no puede reiniciar el módulo del kernel en caliente sin intervención, generando el desfase.
¿Qué ocurre si no puedo detener el servidor para reiniciar?
El procedimiento de descarga y carga con rmmod y modprobe está diseñado específicamente para entornos de producción y clústeres de cálculo donde un reinicio del host físico no es factible o interrumpiría cargas de trabajo no vinculadas a la GPU.
¿Cómo puedo evitar que el driver de Nvidia se actualice sin mi consentimiento?
Puedes congelar la versión actual del driver utilizando el gestor de paquetes de tu distribución:
sudo apt-mark hold nvidia-driver-* nvidia-utils-*
Consejo de Prevención
Prácticas de seguridad recomendadas:
- Bloquea la actualización automática de drivers de GPU en entornos de producción mediante
apt-mark holdpara programar los upgrades de forma manual y controlada. - Excluye los paquetes de Nvidia del archivo
/etc/apt/apt.conf.d/50unattended-upgradesen la secciónUnattended-Upgrade::Package-Blacklist. - Configura alertas de monitoreo con Prometheus y
node_exporterodcgm-exporterpara detectar caídas en la inicialización de NVML antes de que afecten a usuarios finales.