web-dev-qa-db-fra.com

'Bibliothèque non chargée: @ rpath/libcudart.7.5.dylib' Erreur TensorFlow sur Mac

J'utilise OS X El Capitan (10.11.4).

Je viens de télécharger TensorFlow en utilisant les instructions d’installation de pip ici .

Tout s'est bien passé, même si j'ai reçu quelques messages d'avertissement tels que:

The directory '/Users/myusername/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with Sudo, you may want the -H flag.

et

You are using pip version 6.0.8, however version 8.1.2 is available. Même si je viens d'installer pip.

Ensuite, quand j'ai testé TensorFlow en Python, j'ai eu l'erreur:

>>> import tensorflow as tf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/__init__.py", line 23, in <module>
    from tensorflow.python import *
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/__init__.py", line 48, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module>
    _pywrap_tensorflow = swig_import_helper()
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/imp.py", line 243, in load_module
    return load_dynamic(name, filename, file)
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/_pywrap_tensorflow.so, 10): Library not loaded: @rpath/libcudart.7.5.dylib
  Referenced from: /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/_pywrap_tensorflow.so
  Reason: image not found

Maintenant, quand j'essaie de faire pip uninstall tensorflow-0.10.0rc0, il me dit qu'il n'est pas installé.

La chose la plus proche que j'ai trouvée pour ressembler à ce problème est ce problème dans la documentation TensorFlow GitHub (que je n'ai pas essayée).

Comment puis-je désinstaller ce qu'il a réellement installé et obtenir le bon fonctionnement de TensorFlow?

19
Pro Q

Ce message d'erreur s'affiche si vous installez la version Mac OS compatible avec le GPU de TensorFlow (disponible à partir de la version 0.10) sur un ordinateur sur lequel CUDA n'est pas installé.

Pour corriger l'erreur, installez la version de la CPU pour Python 2.7 ou 3.x en procédant comme suit:

# Mac OS X, CPU only, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0-py2-none-any.whl
$ Sudo pip install --upgrade $TF_BINARY_URL

# Mac OS X, CPU only, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0-py3-none-any.whl
$ Sudo pip3 install --upgrade $TF_BINARY_URL

Voir les versions de tensorflow: https://www.tensorflow.org/versions/

35
mrry

Pour ajouter à la réponse de @ mrry , si CUDA est déjà installé mais que l'erreur persiste, cela peut être dû au fait que les bibliothèques CUDA ne se trouvent pas sur votre chemin. Ajoutez les éléments suivants à votre ~/.bashrc ou ~/.zshrc:

# export CUDA_HOME=/Developer/NVIDIA/CUDA-7.5 ## This is the default location on macOS
export CUDA_HOME=/usr/local/cuda
export DYLD_LIBRARY_PATH="$CUDA_HOME/lib:$DYLD_LIBRARY_PATH"
export PATH="$CUDA_HOME/bin:$PATH"

Décommentez l'un des CUDA_HOMEs ou modifiez-le pour qu'il contienne votre installation CUDA. Si vous ne savez pas où il est installé, essayez:

find / -name "*libcudart*"
3
mirosval

Il est essentiel d’installer CUDA, tout comme de s’assurer que tous les chemins sont corrects. Je suis entrain de courir:

  • TensorFlow 0.12r0 
  • OSX 10.12.1 
  • python 2.7 du breuvage 
  • virtualenv pour séparer mes environnements python 
  • CUDA 8.0.55 
  • cudnn-8.0-osx-x64-v5.1

J'ai également rencontré d'autres problèmes sur mon système, qui semblent provenir des bibliothèques dynamiques référençant en interne les chemins relatifs. 

Pour découvrir que le @rpath étant référencé à partir de _pywrap_tensorflow.so, le code suivant est exécuté:

otool -l /Users/norman_h/.virtualenvs/env_name/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so

qui a retourné, entre autres, ce qui suit:

Load command 15
      cmd LC_RPATH
      cmdsize 128
      path $Origin/../../_solib_darwin/_U@local_Uconfig_Ucuda_S_Scuda_Ccudart___Uexternal_Slocal_Uconfig_Ucuda_Scuda_Slib (offset 12)
Load command 16
      cmd LC_RPATH
      cmdsize 48
      path ../local_config_cuda/cuda/lib (offset 12)
Load command 17
      cmd LC_RPATH
      cmdsize 56
      path ../local_config_cuda/cuda/extras/CUPTI/lib (offset 12)

On peut voir que la bibliothèque dynamique tente de trouver les bibliothèques CUDA dans mon environnement virtuel où j'ai installé TensorFlow avec pip. Cela ne regarde pas dans les chemins de mon environnement système. 

Un bidouillage de solution consiste à relier dynamiquement les bibliothèques CUDA de leur emplacement /usr/local/cuda/lib aux packages de site où pip a installé TensorFlow dans mon environnement virtuel.

mkdir /Users/norman_h/.virtualenvs/env_name/lib/python2.7/site-packages/tensorflow/local_config_cuda

cd /Users/norman_h/.virtualenvs/env_name/lib/python2.7/site-packages/tensorflow/local_config_cuda

ln -s /usr/local/cuda .

Il sera nécessaire de rétablir la liaison lorsque pip met à niveau TensorFlow à partir de l'environnement virtuel.

Je pense que tout cela remonte à la compilation originale de TensorFlow qui est faite pour l’installation du pip et je ne sais pas comment soumettre un correctif, ni même si j’ai raison. Peut-être que la compilation originale de Tensorflow doit être plus dynamique et non statique.

Bonne chance!

1
norman_h