web-dev-qa-db-ja.com

ImportError:libcublas.so.9.0:共有オブジェクトファイルを開けません

現在、Gpuサポートシステムにcuda 8.0とcuda 9.0がインストールされています。 kerasモジュールからのインポート中にこのエラーに遭遇しました。ネイティブテンソルフローランタイムのロードに失敗したようです。私が受け取ったエラーログは:

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

同様の投稿について読みましたが、問題を解決できませんでした。ほとんどの場合、これは2つのcudaバージョン間の衝突だと思います。誰もこれを解決する方法を教えてもらえますか?前もって感謝します。

35
arvind

LD_LIBRARY_PATHを指すように、/usr/local/cuda-9.0/lib64を更新する必要があります。 .bashrcファイル(または使用する他の端末)に次の行を追加します

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

Tensorflowバイナリは、現在のところCuda 9.1をサポートしていません。そのため、ソリューションは、Tensorflowを source からインストールするだけの場合があります。

Tensorflow用にCuda 9.1 + cuDNN 6をインストールしているときに、上記の問題も発生しました。

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

さらに、次の2つのオプションがあります。

  1. CUDA 8. + Tensorflow-Tensorflowバイナリで動作するCUDAの最も安定したリリース。

  2. CUDA 9. + Tensorflow-Tensorflow Binariesと互換性のある最新のCUDAバージョン。

5
daVincere

次のコードを試してください

 pip3 install --upgrade tensorflow-gpu==1.4

ターミナルでこのコマンドpip3 install --upgrade tensorflow-gpu==1.4を入力すると、テンソルフローは1.4.0にダウングレードされます。このバグは、テンソルフロー1.6.0が原因です。

4
S. Theon

Tensorflowバージョン> = 1.5には、CUDAバージョン> 8.0が必要です。したがって、CUDAバージョン8.0を使用している場合、テンソルフローバージョンを1.4にダウングレードできます。

pip install tensorflow-gpu==1.4

1

私はtfをAnaconda環境にインストールしようとしましたが、同じ問題がありました。 CUDAとcuDNNをインストールした後、最初に新しい環境を作成し、次にその環境でpip install tensorflow-gpuを作成する必要がありました

0
DKS-

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

それが役立つことを願っています:)

0
Hemin Ali

Ubuntu 16.04から18.04にアップグレードした後、この問題が発生しました。 Tensorflow 1.12.0でCUDA 9.1をインストールしましたが、そのバージョンの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は正常に機能しています。

0
Don Kirkby

この問題は、Googleのprotobufコンパイラに関連しているため、テンソルフローは共有オブジェクトファイル(この例ではlibcublas.so.9.0)を見つけることができません。

ソースからprotobuf(3.5.0)の最新バージョンをビルドすることも助けにはなりませんでした。私のために働いたのは、システム全体のprotobufコンパイラをインストールすることでした apt install protobuf-compiler Ubuntu 16.04で。そして、pythonバージョンをインストールします pip3インストールprotobuf。 9.1はまだTensorflowのビルド済みバイナリと互換性がないため、CUDA 9.0を使用しています。

次を使用して、システム全体のprotobufバージョンを確認できます。 protoc-バージョン 16.04の2.6.1です。 protoc pythonバージョンは3.5.2.post1です。お役に立てれば。以前のバージョンのtensorflowとCUDA 8を使用して同様の問題が発生し、このトラブルシューティング手順を文書化しました。同じ手順を使用して、テンソルフロー1.8.0も使用できます。

0
Siddhartha Dash

私は次の手順で解決しました:

# 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
0
susan097

私はそのエラーを持っていますが、エラーメッセージは直接関連していないように見えましたが、GPUメモリの不足に関連していました。他の人が示唆したように、サーバーを再起動しようとしましたが、それ以上の反復(エポック)を取得できませんでした。この問題を解決するために、同じサーバーイメージをまだ使用しているクラウドプロバイダーから、より大きなインスタンスのGPUサーバーインスタンスをアップグレードしました。

それが他の誰かの助けになることを願っています。

0
Claude COULOMBE