Intento importar normalmente el paquete de Python de TensorFlow, pero aparece el siguiente error:
Aquí está el texto de la imagen del terminal de arriba:
2020-02-23 19:01:06.163940: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libnvinfer.so.6'; dlerror: libnvinfer.so.6: cannot open shared object file: No such file or directory 2020-02-23 19:01:06.164019: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libnvinfer_plugin.so.6'; dlerror: libnvinfer_plugin.so.6: cannot open shared object file: No such file or directory 2020-02-23 19:01:06.164030: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:30] Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly. <module 'tensorflow_core._api.v2.version' from '/home/saman/miniconda3/envs/testconda/lib/python3.7/site-packages/tensorflow_core/_api/v2/version/__init__.py'Esto es una advertencia, no un error. Todavía puedes usar TensorFlow. Las bibliotecas compartidas libnvinfer y libnvinfer_plugin son opcionales y solo se requieren si usa las capacidades de TensorRT de nvidia.
Las instrucciones de instalación de TensorFlow enumeran las dependencias de la GPU:
El siguiente software NVIDIA® debe estar instalado en su sistema:
- Controladores de GPU NVIDIA®: CUDA 10.1 requiere 418.x o superior.
- Kit de herramientas CUDA®: TensorFlow es compatible con CUDA 10.1 (TensorFlow >= 2.1.0)
- CUPTI se envía con el kit de herramientas CUDA.
- CuDNN SDK (>= 7.6)
- (Opcional) TensorRT 6.0 para mejorar la latencia y el rendimiento para la inferencia en algunos modelos.
Puede instalarlos en Ubuntu 18.04 con los siguientes comandos (tomados de la documentación de TensorFlow ):
# Add NVIDIA package repositories wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.1.243-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1804_10.1.243-1_amd64.deb sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub sudo apt-get update wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb sudo apt-get update # Install NVIDIA driver sudo apt-get install --no-install-recommends nvidia-driver-430 # Reboot. Check that GPUs are visible using the command: nvidia-smi # Install development and runtime libraries (~4GB) sudo apt-get install --no-install-recommends \ cuda-10-1 \ libcudnn7=7.6.4.38-1+cuda10.1 \ libcudnn7-dev=7.6.4.38-1+cuda10.1 # Install TensorRT. Requires that libcudnn7 is installed above. sudo apt-get install -y --no-install-recommends libnvinfer6=6.0.1-1+cuda10.1 \ libnvinfer-dev=6.0.1-1+cuda10.1 \ libnvinfer-plugin6=6.0.1-1+cuda10.1La mayoría de estos mensajes son advertencias, no errores. Simplemente significan que las bibliotecas para usar una GPU Nvidia no están instaladas, pero no es necesario tener ninguna GPU Nvidia para usar Tensorflow, por lo que no necesita estas bibliotecas. El comentario de jakub dice cómo desactivar las advertencias:
export TF_CPP_MIN_LOG_LEVEL="2"Sin embargo, también ejecuto Tensorflow sin cosas de Nvidia y hay un mensaje más que es un error, no una advertencia:
2020-04-10 10:04:13.365696: E tensorflow/stream_executor/cuda/cuda_driver.cc:351] failed call to cuInit: UNKNOWN ERROR (303)Debería ser irrelevante porque también se refiere a cuda, que es para Nvidia. Sin embargo, no parece ser un error fatal.
Recibí esta advertencia como resultado de una actualización (accidental) del paquete libvnifer6. Se actualizó a 6.0.1-1+cuda10.2 mientras que la instalación original usaba 6.0.1-1+cuda10.1 .
Después de desinstalar paquetes que hacían referencia cuda10.2 y volver a ejecutar
sudo apt-get install -y --no-install-recommends libnvinfer6=6.0.1-1+cuda10.1 \ libnvinfer-dev=6.0.1-1+cuda10.1 \ libnvinfer-plugin6=6.0.1-1+cuda10.1esta advertencia se fue.
Puede descargar el archivo zip de tensorRT 6 y luego debe pegar el archivo de la carpeta x86 linux en /usr/lib/cuda, asegúrese de que la carpeta lib en la carpeta x86_linux que descargó se cambie el nombre a lib64. Después de pegar todos los archivos en el directorio cuda, reinicie el sistema. Ahora el motor Cuda y TensorRT funcionará sin problemas en su sistema.
Pasé como 5 horas resolviendo este problema. Para mi caso, creo que significa que tiene la versión incorrecta de la biblioteca. libnvinfer.so.6 se encuentra en 'TensorRT-*/lib' y el número 6 significa que tensorFlow está buscando la libvinfer de TensorRT6. Entonces, si es "no se pudo cargar la biblioteca dinámica libnvinfer.so.5", significa que necesita TensorRT 5 para ejecutar el código.
Igual que arriba, si muestra No se pudo cargar la biblioteca dinámica 'libcudart.so.10.0', necesita la biblioteca en cuda 10.0 para ejecutar el código.
Por lo tanto, sería útil actualizar su tensorrt/Cuda/Cudnn para que coincida con su versión de tensorflow. Tenga en cuenta que su versión tensorrt/cuda/cudnn también debe coincidir entre sí.
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb sudo apt-get updateUn poco de información de la respuesta de jakub. Esto podría ocurrir si no instala el repositorio de "aprendizaje automático". Pruebe esto si ya instaló CUDA con éxito pero sigue recibiendo el error.
Luego instale TensorRT. Requiere que libcudnn7 esté instalado arriba.
sudo apt-get install -y --no-install-recommends libnvinfer6=6.0.1-1+cuda10.1 \ libnvinfer-dev=6.0.1-1+cuda10.1 \ libnvinfer-plugin6=6.0.1-1+cuda10.1