目前我在Gpu支持系统中安装了cuda 8.0和cuda 9.0。从keras模块导入时遇到此错误。它说像无法加载原生tensorflow运行时。我收到的错误日志是:
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.
当我运行nvcc --version时,返回的cuda版本为
Cuda compilation tools, release 8.0, V8.0.61
我读过一些类似的帖子,但无法解决我的问题。大多数情况下,我认为这是两个cuda版本之间的冲突。谁能告诉我如何解决这个问题?提前谢谢。
答案 0 :(得分:33)
您需要更新LD_LIBRARY_PATH
,以便它指向/usr/local/cuda-9.0/lib64
。
将以下行添加到.bashrc
文件(或您使用的任何其他终端)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64/
答案 1 :(得分:4)
尝试以下代码
pip3 install --upgrade tensorflow-gpu==1.4
在终端中输入此命令pip3 install --upgrade tensorflow-gpu==1.4
后,张量流将降级为1.4.0。这个bug由tensorflow 1.6.0引起。
答案 2 :(得分:4)
Tensorflow二进制文件目前不支持Cuda 9.1。 因此解决方案可能只是从source安装Tensorflow。
我为Tensorflow安装了Cuda 9.1 + cuDNN 6时也遇到了上述问题,这对我有用。
此外,您还有以下两个选项:
答案 3 :(得分:1)
Tensorflow版本> = 1.5需要CUDA版本> 8.0。因此,如果您具有CUDA版本8.0,则可以将tensorflow版本降级为1.4。
pip install tensorflow-gpu==1.4
答案 4 :(得分:0)
此问题与Google的protobuf编译器有关,因为tensorflow无法找到共享对象文件,在本例中为libcublas.so.9.0。
构建最新版本的protobuf(3.5.0)来自源代码也没有帮助。对我有用的是在Ubuntu 16.04上通过 apt install protobuf-compiler 安装系统范围的protobuf编译器。并通过 pip3 install protobuf 安装python版本。我使用的是CUDA 9.0,因为9.1还没有与tensorflow预先建立的二进制文件兼容。
您可以使用 protoc --version 检查系统范围的protobuf版本,该版本是16.04上的2.6.1。 protoc python版本是3.5.2.post1。希望这可以帮助。使用早期版本的tensorflow和CUDA 8时,我遇到了类似的问题,并记录了此故障排除过程。使用相同的程序,我也可以使用tensorflow 1.8.0。
答案 5 :(得分:0)
我遇到了这个错误,但它与缺少GPU内存有关,尽管该错误消息似乎并不直接相关。正如其他建议一样,我尝试重新启动服务器,但仅获得了更多的迭代次数。为了解决该问题,我从云提供商升级了一个更大的GPU服务器实例,仍然使用相同的服务器映像。
我希望可以帮助别人。
答案 6 :(得分:0)
无论何时安装新版本的cuda,都需要检查可能已添加的永久路径。
要在终端运行中进行检查
gedit ~/.bashrc
如果看到旧的cuda路径,则需要将其更改为新的。
例如我的是:
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/lib/nvidia-384
我将cuda路径和nvidia路径都更改了,因为我还将驱动程序升级到:
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/lib/nvidia-390
希望有帮助:)
答案 7 :(得分:0)
从Ubuntu 16.04升级到18.04后,我遇到了这个问题。我已经在Tensorflow 1.12.0中安装了CUDA 9.1,并且该版本的Tensorflow需要CUDA 9.0。当我尝试安装CUDA 9.0时,它破坏了我的视频驱动程序。
幸运的是,我找到了安装multiple CUDA libraries的说明。到目前为止,我唯一需要的部分是下载安装程序脚本,使用--silent --toolkit --override
选项运行它,然后设置LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64
。我还将/usr/local/cuda
上的符号链接设置回了/usr/local/cuda-9.1
,但不确定是否需要。
到目前为止,Tensorflow运行正常。
答案 8 :(得分:0)
我试图在Anaconda环境中安装tf,并且遇到了同样的问题。安装CUDA和cuDNN后,我必须先创建一个新环境,然后在该环境pip install tensorflow-gpu
答案 9 :(得分:0)
我通过以下步骤解决了
# Add NVIDIA package repository
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
sudo apt install ./cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
sudo apt update
# Install CUDA and tools. Include optional NCCL 2.x
sudo apt install cuda9.0 cuda-cublas-9-0 cuda-cufft-9-0 cuda-curand-9-0 \
cuda-cusolver-9-0 cuda-cusparse-9-0 libcudnn7=7.2.1.38-1+cuda9.0 \
libnccl2=2.2.13-1+cuda9.0 cuda-command-line-tools-9-0
# Optional: Install the TensorRT runtime (must be after CUDA install)
sudo apt update
sudo apt install libnvinfer4=4.1.2-1+cuda9.0
答案 10 :(得分:0)
我在Google Colab上遇到了同样的问题, 看来我们必须安装Cuda 9.0才能克服它。 (Cuda 9.2无效)
只需遵循:
!wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda-repo-ubuntu1704-9-0-local_9.0.176-1_amd64-deb
!ls # Check if required cuda 9.0 amd64-deb file is downloaded
!dpkg -i cuda-repo-ubuntu1704-9-0-local_9.0.176-1_amd64-deb
!ls /var/cuda-repo-9-0-local | grep .pub
!apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
!apt-get update
!sudo apt-get install cuda-9.0
答案 11 :(得分:0)
发生这种情况是因为系统正在寻找合适的 cuda 版本来运行训练。我在 conda 中以一种简单的方式解决了这个问题。
转到此 link 并找到适合您的 tensorflow 的 cuda 版本。
找到后,执行此操作。
搜索特定的 cudatoolkit 版本
conda search cudatoolkit
conda install cudatoolkit=*give_your_version_number_here*
接下来安装对应的cudnn
按 conda search cudnn
搜索,这将显示您刚安装的 cudnn
对应的 cudatoolkit
。
最后安装,
conda install cudnn=*your_version_number*
P.S -> 这就是 conda 的美妙之处。不要弄脏你的手,当你没有 ;)