web-dev-qa-db-fra.com

Après avoir créé TensorFlow à partir des sources, avoir vu les erreurs libcudart.so et libcudnn

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
43
Barry Rosenberg

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.

62
Luis Valle

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

CUDNN INSTALLATION

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

Extraire les fichiers tgz

$ tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz

Vérifier les fichiers

$ 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

Faire des fichiers de liens symboliques

$ 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

Copier 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!

41
GoingMyWay

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.

10
omarc7

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:

  1. Télécharger ' cuDNN v6.0 Bibliothèque pour Linux ':
    • Allez à https://developer.nvidia.com/rdp/cudnn-download
    • Cliquez sur ' Télécharger le fichier nuDN v6.0 (27 avril 2017) pour CUDA 8.0 '
    • Cliquez ensuite sur ' cuDNN v6.0 Library for Linux '. Un fichier (nommé ' cudnn-8.0-linux-x64-v6.0.tgz ') sera téléchargé.
  2. Suivez les instructions de Alexander Yau ci-dessus installer la bibliothèque cuDNN v6.0.


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.
5
mohaseeb

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.

3
Punit Vara

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"
2
Michael Ma

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

enter image description here

Deuxièmement, installez le fichier CuDNN à partir de icienter image description here

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

1
Wesam Na

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

1
Adnan Y

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:

enter image description here

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
1
Andre Araujo

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.

1
Barry Rosenberg

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

0
Patel Sunil

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.

0
Bohumir Zamecnik