it-swarm.com.ru

'Библиотека не загружена: @ rpath/libcudart.7.5.dylib' Ошибка TensorFlow на Mac

Я использую OS X El Capitan (10.11.4).

Я только что скачал TensorFlow, используя инструкции по установке pip здесь .

Все прошло довольно гладко, хотя я получил несколько предупреждающих сообщений, таких как:

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.

а также

You are using pip version 6.0.8, however version 8.1.2 is available. Хотя я только что установил pip.

Затем, когда я тестировал TensorFlow в Python, я получил ошибку:

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

Теперь, когда я пытаюсь сделать pip uninstall tensorflow-0.10.0rc0, он говорит мне, что он не установлен.

Самая близкая вещь, которую я обнаружил, чтобы напоминать эту проблему, - эта проблема в документации TensorFlow GitHub (которую я не пробовал).

Как я могу удалить все, что он установил, и правильно запустить и запустить TensorFlow?

19
Pro Q

Это сообщение об ошибке отображается, если вы устанавливаете версию TensorFlow для Mac OS с поддержкой графического процессора (доступную начиная с версии 0.10) на компьютере, на котором не установлена ​​CUDA.

Чтобы исправить ошибку, установите версию процессора для Python 2.7 или 3.x следующим образом:

# 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

См. Тензор потока версий: https://www.tensorflow.org/versions/

35
mrry

Чтобы добавить к @ mrry's answer , если у вас уже установлена ​​CUDA, но вы все еще получаете сообщение об ошибке, это может быть связано с тем, что библиотеки CUDA не находятся на вашем пути. Добавьте следующее в ваш ~/.bashrc или ~/.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"

Раскомментируйте любой из CUDA_HOME или отредактируйте его так, чтобы он содержал вашу установку CUDA. Если вы не знаете, где он установлен, попробуйте:

find / -name "*libcudart*"
3
mirosval

Конечно, установка CUDA очень важна, так как она гарантирует, что все пути правильные. Я бегу:

  • TensorFlow 0.12r0 
  • OSX 10.12.1 
  • python 2.7 от варева 
  • virtualenv, чтобы отделить мою среду Python 
  • CUDA 8.0.55 
  • cudnn-8,0-OSX-64-V5.1

В моей системе у меня также были другие проблемы, когда казалось, что проблема происходит из динамических библиотек, которые внутренне ссылаются на относительные пути. 

Чтобы обнаружить @rpath, на который ссылается _pywrap_tensorflow.so, запускается следующий код:

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

который, помимо прочего, дал следующее:

Load command 15
      cmd LC_RPATH
      cmdsize 128
      path $Origin/../../_solib_darwin/[email protected]_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)

Видно, что динамическая библиотека пытается найти библиотеки CUDA в моей виртуальной среде, где я установил TensorFlow с помощью pip. Это не смотрит в пути моей системной среды. 

Решение проблемы заключается в том, чтобы динамически связать библиотеки CUDA из их местоположения /usr/local/cuda/lib с пакетами сайта, где pip установил TensorFlow в моей виртуальной среде.

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 .

Необходимо будет повторно связать, когда pip обновит TensorFlow из виртуальной среды.

Я думаю, что все это восходит к исходной компиляции TensorFlow, которая сделана для установки pip, и я не знаю, как отправить исправление, или даже если я прав. Возможно, оригинальная компиляция Tensorflow должна быть более динамичной, а не статичной.

Удачи!

1
norman_h