ImportError: libcublas.so.9.0: невозможно открыть файл общих объектов

В настоящее время у меня есть cuda 8.0 и cuda 9.0, установленные в системе поддержки Gpu. Я столкнулся с этой ошибкой при импорте из модуля 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. Может ли кто-нибудь сказать мне, как это решить? Спасибо заранее.

Ответ 1

Вам необходимо обновить LD_LIBRARY_PATH, чтобы он /usr/local/cuda-9.0/lib64 на /usr/local/cuda-9.0/lib64. Добавьте следующую строку в ваш файл .bashrc (или любой другой используемый вами терминал)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64/

Ответ 2

Попробуйте использовать следующий код

 pip3 install --upgrade tensorflow-gpu==1.4

После ввода этой команды pip3 install --upgrade tensorflow-gpu==1.4 в терминал, tenorflow будет понижаться до 1.4.0. Эта ошибка, вызванная тензорным потоком 1.6.0.

Ответ 3

Двоичные файлы Tensorflow не поддерживают Cuda 9.1 на данный момент. Таким образом, решение может быть просто установить Tensorflow из исходного кода.

У меня тоже была вышеупомянутая проблема, когда я установил Cuda 9.1 + cuDNN 6 для Tensorflow, и это то, что мне помогло.

https://devtalk.nvidia.com/default/topic/1026198/cuda-setup-and-installation/cuda-9-0-importerror-libcublas-so-8-0

Кроме того, у вас есть следующие две опции:

  1. CUDA 8.0 + Tensorflow - самый стабильный выпуск CUDA, который работает с бинарными файлами Tensorflow.

  2. CUDA 9.0 + Tensorflow - последняя версия CUDA, с которой совместимы двоичные файлы Tensorflow.

Ответ 4

Версия Tensorflow> = 1.5 требует версию CUDA> 8.0. Так что, если у вас CUDA версии 8.0, вы можете понизить версию tenorflow до 1.4.

pip install tensorflow-gpu==1.4

Ответ 5

Эта проблема связана с Google protobuf-компилятором, из-за которого тензор потока не может найти общий объектный файл, в данном случае, libcublas.so.9.0.

Сборка последней версии protobuf (3.5.0) из исходного кода также не помогла. Для меня работало установить общесистемный компилятор protobuf через apt install protobuf-compiler на Ubuntu 16.04. И, установите версию Python через pip3 установить protobuf. Я использую CUDA 9.0, так как 9.1 еще не совместим с предварительно созданным бинарным файлом tenorflow.

Вы можете проверить общесистемную версию protobuf, используя protoc --version, который является 2.6.1 16.04. Версия Python Protoc - 3.5.2.post1. Надеюсь это поможет. У меня была похожая проблема с использованием более ранних версий tenorflow и CUDA 8, и я задокументировал эту процедуру устранения неполадок. Используя ту же процедуру, я могу использовать tenensflow 1.8.0 тоже.

Ответ 6

Я получил эту ошибку, но это было связано с нехваткой памяти графического процессора, хотя сообщение об ошибке, казалось, не было напрямую связано. Я пытался перезагрузить сервер, как предлагали другие, но я получил только несколько итераций (эпох). Чтобы решить эту проблему, я обновил экземпляр сервера графического процессора для более крупного экземпляра от моего облачного провайдера, все еще используя тот же образ сервера.

Я надеюсь, что это может помочь кому-то еще.

Ответ 7

Всякий раз, когда вы устанавливаете новую версию 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

Надеюсь, это поможет :)

Ответ 8

У меня была эта проблема после обновления с Ubuntu 16.04 до 18.04. Я установил CUDA 9.1 с Tensorflow 1.12.0, и для этой версии Tensorflow требуется CUDA 9.0. Когда я попытался установить CUDA 9.0, он повредил мои видео драйверы.

К счастью, я нашел инструкции по установке нескольких библиотек CUDA. Единственные части, которые мне до сих пор были нужны, это загрузить скрипт установщика, запустить его с параметрами --silent --toolkit --override, а затем установить LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64. Я также установил символическую ссылку в /usr/local/cuda обратно на /usr/local/cuda-9.1, но я не уверен, если это необходимо.

Пока что Tensorflow работает нормально.

Ответ 9

Я пытался установить tf в среде Anaconda, и у меня возникла та же проблема. После установки CUDA и cuDNN мне пришлось сначала создать новую среду, а затем в этом env pip install tensorflow-gpu

Ответ 10

Я решил следующие шаги:

# 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