python 3.x - instalar - ImportError: libcublas.so.9.0: no se puede abrir el archivo de objeto compartido
keras tensorflow (8)
Actualmente tengo cuda 8.0 y cuda 9.0 instaladas en el sistema de soporte de Gpu. Me encontré con este error al importar desde el módulo keras. Dice que no se pudo cargar el tiempo de ejecución de tensorflow nativo. El registro de errores que recibí fue:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/usr/local/lib/python3.5/dist-
packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module(''_pywrap_tensorflow_internal'', fp, pathname, description)
File "/usr/lib/python3.5/imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "/usr/lib/python3.5/imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "Try1.py", line 11, in <module>
from keras.models import Sequential
File "/usr/local/lib/python3.5/dist-packages/Keras-2.0.9-py3.5.egg/keras/__init__.py", line 3, in <module>
File "/usr/local/lib/python3.5/dist-packages/Keras-2.0.9-py3.5.egg/keras/utils/__init__.py", line 6, in <module>
File "/usr/local/lib/python3.5/dist-packages/Keras-2.0.9-py3.5.egg/keras/utils/conv_utils.py", line 3, in <module>
File "/usr/local/lib/python3.5/dist-packages/Keras-2.0.9-py3.5.egg/keras/backend/__init__.py", line 83, in <module>
File "/usr/local/lib/python3.5/dist-packages/Keras-2.0.9-py3.5.egg/keras/backend/tensorflow_backend.py", line 1, in <module>
File "/usr/local/lib/python3.5/dist-packages/tensorflow/__init__.py", line 24, in <module>
from tensorflow.python import *
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 73, in <module>
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module(''_pywrap_tensorflow_internal'', fp, pathname, description)
File "/usr/lib/python3.5/imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "/usr/lib/python3.5/imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
Failed to load the native TensorFlow runtime.
Cuando ejecuto nvcc --version, la versión de cuda devuelta es,
Cuda compilation tools, release 8.0, V8.0.61
Leí sobre una publicación similar pero no pude resolver mi problema. Sobre todo creo que este es un choque entre dos versiones cuda. ¿Alguien puede decirme cómo resolver esto? Gracias por adelantado.
Cada vez que instale una nueva versión de cuda, deberá verificar la ruta permanente que se haya agregado.
para comprobar esto en la ejecución de la terminal
gedit ~/.bashrc
Si ve que el antiguo camino de cuda está allí, debe cambiarlo por el nuevo.
por ejemplo el mio era:
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/lib/nvidia-384
Cambié tanto la ruta cuda como la ruta nvidia ya que también actualicé el controlador para:
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/lib/nvidia-390
Espero que ayude :)
La versión de Tensorflow> = 1.5 requiere la versión de CUDA> 8.0. Entonces, si tiene la versión 8.0 de CUDA, puede degradar su versión de tensorflow a 1.4.
pip install tensorflow-gpu==1.4
Los binarios de Tensorflow no son compatibles con Cuda 9.1 a partir de ahora. Así que la solución podría ser simplemente instalar Tensorflow desde la source .
Yo también tuve el problema mencionado anteriormente mientras instalé Cuda 9.1 + cuDNN 6 para Tensorflow y esto es lo que funcionó para mí.
Además, tienes las siguientes dos opciones:
Prueba el siguiente código
pip3 install --upgrade tensorflow-gpu==1.4
Después de escribir este comando, pip3 install --upgrade tensorflow-gpu==1.4
en el terminal, el tensorflow bajará a 1.4.0. Este error causado por tensorflow 1.6.0.
Recibí ese error, pero estaba relacionado con la falta de memoria de la GPU, aunque el mensaje de error no parecía estar directamente relacionado. He intentado reiniciar el servidor, como sugerían otros, pero solo he ganado algunas iteraciones más (épocas). Para resolver el problema, actualicé la instancia del servidor de GPU para una más grande de mi proveedor en la nube que todavía usa la misma imagen de servidor.
Espero que pueda ayudar a alguien más.
Tendrá que actualizar su LD_LIBRARY_PATH
, de modo que apunte a /usr/local/cuda-9.0/lib64
. Agregue la siguiente línea a su archivo .bashrc
(o cualquier otro terminal que use)
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64/
Tuve este problema después de actualizar de Ubuntu 16.04 a 18.04. Instalé CUDA 9.1 con Tensorflow 1.12.0, y esa versión de Tensorflow necesita CUDA 9.0. Cuando intenté instalar CUDA 9.0, se rompieron mis controladores de video.
Afortunadamente, encontré instrucciones para instalar varias bibliotecas CUDA . Las únicas partes que necesitaba hasta ahora son descargar el script del instalador, ejecutarlo con las opciones --silent --toolkit --override
y luego configurar LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64
. También puse el enlace simbólico en /usr/local/cuda
nuevo a /usr/local/cuda-9.1
, pero no estoy seguro de que sea necesario.
Hasta ahora, Tensorflow está funcionando bien.
Este problema está relacionado con el protobuf-compiler de Google debido a que tensorflow no encuentra el archivo de objeto compartido, en este caso, libcublas.so.9.0.
Construir la última versión de protobuf (3.5.0) desde la fuente tampoco ayudó. Lo que me funcionó fue instalar el compilador protobuf de todo el sistema a través de apt install protobuf-compiler en Ubuntu 16.04. E instale la versión de python a través de pip3 instale protobuf . Estoy usando CUDA 9.0 ya que 9.1 aún no es compatible con el binario precompilado de tensorflow.
Puede verificar la versión de protobuf en todo el sistema usando protoc --version que es 2.6.1 en 16.04. La versión de Protoc Python es 3.5.2.post1. Espero que esto ayude. Tuve un problema similar al usar versiones anteriores de tensorflow y CUDA 8, y había documentado este procedimiento de solución de problemas. Utilizando el mismo procedimiento, también puedo usar tensorflow 1.8.0.