Je construis TensorFlow à partir du code source. La construction semble réussir; Cependant, lorsque mon programme TensorFlow appelle import tensorflow
, l'une des erreurs suivantes, voire les deux:
ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory
ImportError: libcudnn.5: cannot open shared object file: No such file or directory
Premier pour l'erreur suivante:
ImportError: libcudart.so.8.0: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type
assurez-vous que votre LD_LIBRARY_PATH
inclut votre répertoire lib64
dans le chemin où vous avez installé votre paquet cuda. Vous pouvez le faire en ajoutant une ligne export
dans votre .bashrc
. Pour Omar, cela ressemblait à ceci:
J'ai corrigé cela en ajoutant simplement le chemin cuda à mon .bashrc
export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
Pour moi, je devais faire la ligne d'Omar et aussi: export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/
parce que j'ai deux répertoires impliquant cuda (probablement pas le meilleur).
Deuxième , êtes-vous sûr d’avoir installé le cuDNN? Notez que cela diffère du paquet cuda habituel. Vous devrez vous enregistrer, puis télécharger et installer le package à partir de la page suivante: https://developer.nvidia.com/cudnn
Troisième , j'ai eu le même problème:
ImportError: libcudnn.5: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type
Il s'avère qu'il n'y a pas de libcudnn.5
dans mes répertoires /usr/local/cuda/lib64
ou /usr/local/cuda-8.0/lib64
. Cependant, j'ai un fichier libcudnn.so.6.*
. Pour résoudre le problème, j'ai créé un lien symbolique:
ln -s libcudnn.so.6.* libcudnn.so.5
dans mon répertoire /usr/local/cuda/lib64
. Maintenant tout fonctionne pour moi. Votre répertoire pourrait être différent si vous aviez déjà cuDNN
, et votre libcudnn.so.6.*
pourrait être une version différente, vérifiez donc.
Je suis tombé sur le même problème
In [1]: import tensorflow
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>()
40 sys.setdlopenflags(_default_dlopen_flags | ctypes.RTLD_GLOBAL)
---> 41 from tensorflow.python.pywrap_tensorflow_internal import *
42 from tensorflow.python.pywrap_tensorflow_internal import __version__
/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py in <module>()
27 return _mod
---> 28 _pywrap_tensorflow_internal = swig_import_helper()
29 del swig_import_helper
/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py in swig_import_helper()
23 try:
---> 24 _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
25 finally:
/usr/local/lib/python3.5/imp.py in load_module(name, file, filename, details)
241 else:
--> 242 return load_dynamic(name, filename, file)
243 Elif type_ == PKG_DIRECTORY:
/usr/local/lib/python3.5/imp.py in load_dynamic(name, path, file)
341 name=name, loader=loader, Origin=path)
--> 342 return _load(spec)
343
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory
During handling of the above exception, another exception occurred:
ImportError Traceback (most recent call last)
<ipython-input-1-a649b509054f> in <module>()
----> 1 import tensorflow
/usr/local/lib/python3.5/site-packages/tensorflow/__init__.py in <module>()
22
23 # pylint: disable=wildcard-import
---> 24 from tensorflow.python import *
25 # pylint: enable=wildcard-import
26
/usr/local/lib/python3.5/site-packages/tensorflow/python/__init__.py in <module>()
49 import numpy as np
50
---> 51 from tensorflow.python import pywrap_tensorflow
52
53 # Protocol buffers
/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>()
50 for some common reasons and solutions. Include the entire stack trace
51 above this error message when asking for help.""" % traceback.format_exc()
---> 52 raise ImportError(msg)
53
54 # pylint: enable=wildcard-import,g-import-not-at-top,unused-import,line-too-long
ImportError: Traceback (most recent call last):
File "/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/usr/local/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/usr/local/lib/python3.5/site-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/local/lib/python3.5/imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "/usr/local/lib/python3.5/imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/install_sources#common_installation_problems
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
J'ai installé Cudnn 6.0 alors qu'il a besoin de libcudnn.so.5
, apparemment, il n'a pas pu trouver libcudnn.so.5
. Il semble que votre tensorflow ait besoin de Cudnn 5.x, alors installez cudnn 5.x
Assurez-vous que vous avez déjà installé cuda 8.0 et exporté les fichiers PATH
et LD_LIBRARY_PATH
.
Pour installer cudnn 5.x, essayez les commandes suivantes
$ tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
$ cd cuda/lib64/
$ ls -l
total 150908
lrwxrwxrwx 1 Doom doom 13 Nov 7 2016 libcudnn.so -> libcudnn.so.5
lrwxrwxrwx 1 Doom doom 18 Nov 7 2016 libcudnn.so.5 -> libcudnn.so.5.1.10
-rwxr-xr-x 1 Doom doom 84163560 Nov 7 2016 libcudnn.so.5.1.10
-rw-r--r-- 1 Doom doom 70364814 Nov 7 2016 libcudnn_static.a
Ici, vous verrez 2 fichiers de liens symboliques, et il vous suffit de copier libcudnn.so.5.1.10
et libcudnn_static.a
vers /usr/local/cuda/lib64
$ cd /usr/local/cuda/lib64/
$ Sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5
$ Sudo ln -s libcudnn.so.5 libcudnn.so
$ ls -l libcudnn*
lrwxrwxrwx 1 root root 13 May 24 09:24 libcudnn.so -> libcudnn.so.5
lrwxrwxrwx 1 root root 18 May 24 09:24 libcudnn.so.5 -> libcudnn.so.5.1.10
-rwxr-xr-x 1 root root 84163560 May 24 09:23 libcudnn.so.5.1.10
-rw-r--r-- 1 root root 70364814 May 24 09:23 libcudnn_static.a
cudnn.h
dans le répertoire include
vers /usr/local/cuda/include
$ Sudo cp cudnn.h /usr/local/cuda/include/
J'espère que cela vous aidera!
J'ai corrigé cela en ajoutant simplement le chemin cuda à mon .bashrc
export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
N'oubliez pas que vous devez d'abord accéder à la page nvidia Deep Learning, enregistrer et télécharger le fichier CUDNN, extraire et copier les fichiers des dossiers include et lib64 dans votre installation cuda.
J'ai vu une erreur similaire (au bas de cet article), mais je me suis plaint de libcudnn.so.6 au lieu de libcudart.so.8.0 (voir une note au dessous de).
Solution:
Remarque:
les instructions d'installation de Tensorflow (à partir du 20/2017/2017) nécessite l'installation de cuDNN v5.1 , mais mon installation de Tensorflow (en suivant les instructions pour installation dans virtualenv ) est requise de configuration v6.x (comme indiqué par l'erreur). Je ne sais pas s'il s'agit d'une erreur de mon côté ou d'une documentation Tensorflow. Néanmoins, la solution ci-dessus a fonctionné pour moi.
Erreur rencontrée:
In [1]: import tensorflow as tf
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-41389fad42b5> in <module>()
----> 1 import tensorflow as tf
/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/__init__.py in <module>()
22
23 # pylint: disable=wildcard-import
---> 24 from tensorflow.python import *
25 # pylint: enable=wildcard-import
26
/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/__init__.py in <module>()
47 import numpy as np
48
---> 49 from tensorflow.python import pywrap_tensorflow
50
51 # Protocol buffers
/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>()
50 for some common reasons and solutions. Include the entire stack trace
51 above this error message when asking for help.""" % traceback.format_exc()
---> 52 raise ImportError(msg)
53
54 # pylint: enable=wildcard-import,g-import-not-at-top,unused-import,line-too-long
ImportError: Traceback (most recent call last):
File "/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/home/haseeb/.virtualenvs/attention_transformer/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/install_sources#common_installation_problems
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
Cuda-9.0 à partir de maintenant
Faites les choses suivantes. J'espère que ça aide :
$ Sudo apt-get install cuda-9.0
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64
Télécharger cuDNN for 9.0 (vous devez vous enregistrer avant de télécharger) https://developer.nvidia.com/rdp/form/cudnn-download-survey
$ Sudo dpkg -i libcudnn7_7.1.2.21-1+cuda9.0_AMD64.deb
Fermez tous les terminaux et ouvrez un nouveau
$ source activate tensorflow
$ python
>> import tensorflow as tf
Vous ne devriez pas avoir d'erreur après cela.
Mystérieusement, mon libcudnn.so.5
a été installé à ~/cuda/lib64
. Pour les gens comme moi, il faut changer
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:~/cuda/lib64"
à
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/yourusername/cuda/lib64"
Commencez par installer la bibliothèque CUDA (version 7.5) à partir de ici
Instructions d'installation: 1- Sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_AMD64.deb
2- Sudo apt-get update
3- Sudo apt-get install cuda
Deuxièmement, installez le fichier CuDNN à partir de ici
Troisièmement, exportez le chemin cuDNN:
export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
Si vous avez une erreur du type ", vous devez réinstaller le paquet libcudnnX ", procédez comme suit ici
Sur MacOS, ce problème est souvent dû à l'exécution de bazel dans un environnement sandbox, ce qui ne respecte pas le jeu LD_LIBRARY_PATH défini dans votre shell local. Je ne voudrais pas m'intéresser au mérite de l'intégration profonde du bac à sable dans un outil de construction.
La solution de contournement simple consiste à créer un lien symbolique entre les bibliothèques et/usr/local/lib.
cd /usr/local/lib && ln -s ../cuda/lib/libcudart.8.0.dylib
Vérifiez les exigences de NVIDIA pour exécuter TensorFlow avec prise en charge du processeur graphique ( lien ):
CUDA® Toolkit 8.0
Les pilotes NVIDIA associés à CUDA Toolkit 8.0
cUDNN v6.0
Carte GPU avec CUDA Compute Capacité 3.0 ou supérieure
La bibliothèque libcupti-dev, qui est l'interface des outils de profil NVIDIA CUDA
J'ai installé le cuda v5.1 et le message ci-dessous reste toujours:
ImportError: libcudart.so.8.0: cannot open shared object file:
No such file or directory
Je me suis donc énervé parce que tout semblait aller bien, alors j'ai décidé de vérifier mon GPU avec la commande (sous Linux):
glxinfo | grep GeForce
Et j'ai remarqué que mon GPU NVIDIA n'est pas supporté:
OpenGL renderer string: **GeForce GTX 560M**/PCIe/SSE2
Dans ce lien vous pouvez trouver une liste, comme celle-ci:
Ma solution était donc d’utiliser le flux tensoriel sans prise en charge du processeur graphique. Moi aussi:
pip uninstall tensorflow-gpu
J'installe sans support:
pip install tensorflow
Les erreurs précédentes sont généralement causées par le fait de ne pas spécifier de numéro de version pour le SDK Cuda ou le nom de fichier personnalisé lorsque vous exécutez le script configure
. En d'autres termes, lors de l'exécution du script configure
, spécifiez toujours un numéro de version en réponse aux deux questions suivantes:
Please specify the Cuda SDK version you want to use, e.g. 7.0.
Please specify the cuDNN version you want to use.
N'acceptez pas les valeurs par défaut du système.
Problème général de contournement courant lié à GPU, CUDA et Docker:
A. Si vous êtes confronté à un apprentissage lié à l'apprentissage automatique/approfondi, utilisez nvidia-docker et non native-docker. Pour installer nvidia-docker, suivez ces étapes simples.
Les conteneurs Docker sont indépendants de la plate-forme, mais également du matériel. Cela pose un problème lorsque vous utilisez du matériel spécialisé tel que les GPU NVIDIA, qui nécessitent des modules de noyau et des bibliothèques de niveau utilisateur pour fonctionner. Par conséquent, Docker ne prend pas en charge de manière native les GPU NVIDIA dans les conteneurs.
B. Si vous voulez accéder au GPU avec docker, ne construisez jamais un conteneur à partir de zéro, vous serez frit avec un certain nombre d'erreurs. Au lieu de cela, utilisez n'importe quel conteneur du hub Nvidia-Docker. Choisissez une image spécifique, copiez son fichier Docker et exécutez Sudo nvidia-docker build -t happyapp .
. [happyapp est votre nouveau nom d'application]. Votre conteneur sera prêt en 5 minutes (dépend de la vitesse du réseau: p).
C. Ne téléchargez jamais un nvidia-docker sous une version cuda/cudnn Si vous souhaitez installer et exécuter Tensorflow sur celui-ci. Si vous le faites, vous obtiendrez libcudnn.so.6 ou libcudnn.so.9 ou libcusolver.so.8. erreurs connexes et vous ferez peine à contourner ces erreurs. Utilisez plutôt une image pré-construite de Docker Tensorflow: Sudo nvidia-docker run -it tensorflow/tensorflow:latest-gpu /bin/bash
TensorFlow 1.2.1 est compatible avec la norme cuDNN 5.1, mais pas encore avec la version 6.0. Il suffit donc d’installer CUDNN 5.1. En plus de cela, il semble que vous manquiez de CUDA 8.0.