2016-08-02 24 views
19

Tôi đang sử dụng OS X El Capitan (10.11.4).'Thư viện không được tải: @ rpath/libcudart.7.5.dylib' Lỗi TensorFlow trên Mac

Tôi vừa tải xuống TensorFlow sử dụng hướng dẫn cài đặt pip here.

Tất cả mọi thứ diễn ra khá suôn sẻ, mặc dù tôi đã có được một vài thông điệp cảnh báo như:

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. Mặc dù tôi chỉ cần cài đặt pip.

Sau đó, khi tôi thử nghiệm TensorFlow bằng Python, tôi đã nhận lỗi:

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

Bây giờ, khi tôi cố gắng làm pip uninstall tensorflow-0.10.0rc0 nó nói với tôi rằng nó không được cài đặt.

Điều gần nhất tôi thấy giống với vấn đề này là this issue trong tài liệu TensorFlow GitHub (mà tôi chưa thử).

Làm cách nào tôi có thể gỡ cài đặt mọi thứ đã cài đặt và nhận TensorFlow và chạy đúng cách?

+2

Có thể bạn đã cài đặt phiên bản hỗ trợ GPU, nhưng chưa cài đặt CUDA? – mrry

+0

@mrry rất có thể. CUDA là gì? Làm thế nào để cài đặt nó? –

+0

Có phải nó đã cho tôi biết cài đặt CUDA ở đâu đó trong hướng dẫn và tôi đã bỏ lỡ nó? –

Trả lời

35

Thông báo lỗi này được hiển thị nếu bạn cài đặt phiên bản Mac OS hỗ trợ GPU của TensorFlow (có sẵn từ bản phát hành 0.10 trở đi) trên máy không cài đặt CUDA.

Để khắc phục lỗi này, cài đặt phiên bản CPU cho Python 2.7 hoặc 3.x, như sau:

# 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 

Xem phiên bản tensorflow: https://www.tensorflow.org/versions/

+2

Tôi vừa đăng bài để cài đặt phiên bản CPU chỉ hoạt động tốt nhất. Cảm ơn! –

+0

Tại sao không cài đặt CUDA? Tôi muốn tận dụng lợi thế của GPU của mình. Không phải là nhanh hơn sao? – williamcodes

+1

Nếu bạn có GPU có khả năng CUDA, thì bạn chắc chắn nên cài đặt CUDA! Lưu ý rằng GPU tích hợp trong hầu hết các máy Mac gần đây không phải là CUDA, nhưng bạn có thể kiểm tra xem máy của bạn có phải là [theo các hướng dẫn này] hay không (http://docs.nvidia.com/cuda/cuda-installation-guide-mac -os-x/# cuda-enabled-gpu). – mrry

3

Để thêm vào @mrry's answer, nếu bạn đã có CUDA đã cài đặt nhưng bạn vẫn gặp lỗi, có thể là do các thư viện CUDA không nằm trên đường dẫn của bạn. Thêm dòng sau vào ~/.bashrc hoặc ~/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" 

Bỏ ghi chú một trong các CUDA_HOME s hoặc chỉnh sửa nó để nó chứa CUDA của bạn cài đặt. Nếu bạn không biết vị trí được cài đặt, hãy thử:

find/-name "*libcudart*" 
1

CUDA cài đặt chắc chắn là điều cần thiết, như đảm bảo rằng tất cả các đường dẫn đều chính xác. Tôi đang chạy:

  • TensorFlow 0.12r0
  • OSX 10.12.1
  • python 2,7 từ brew
  • virtualenv để tách các môi trường python tôi
  • CUDA 8.0.55
  • cudnn-8.0 -osx-x64-v5.1

Trên hệ thống của tôi, tôi cũng gặp phải các vấn đề khác khi xuất hiện lem bắt nguồn từ các thư viện động bên trong tham chiếu đường dẫn tương đối.

Để khám phá @rpath đang được tham chiếu từ _pywrap_tensorflow.so đoạn mã sau được điều hành:

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

mà trở về, trong số những thứ khác, như sau:

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) 

Có thể thấy rằng các thư viện động đang cố gắng tìm các thư viện CUDA trong môi trường ảo của tôi, nơi tôi đã cài đặt TensorFlow bằng pip. Nó không tìm kiếm trong các đường dẫn môi trường hệ thống của tôi.

Tách xung quanh giải pháp là liên kết động các thư viện CUDA từ vị trí /usr/local/cuda/lib của chúng vào các gói trang web nơi pip cài đặt TensorFlow bên trong môi trường ảo của tôi.

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 . 

Cần phải liên kết lại khi pip nâng cấp TensorFlow từ bên trong môi trường ảo.

Tôi nghĩ rằng tất cả sẽ quay trở lại quá trình biên dịch gốc của TensorFlow được thực hiện để cài đặt pip và tôi không biết cách gửi bản sửa lỗi, hoặc thậm chí nếu tôi đúng. Có lẽ việc biên dịch ban đầu của Tensorflow cần phải năng động hơn và không tĩnh.

Best of luck!

Các vấn đề liên quan