MelonTeam 移动终端前沿技术的探索者

配置tensorflow GPU 版本填坑路

2017-07-29
soapyang
ios

导语 运气好按照教程一把过,运气不好遇到一堆抓狂的问题,记录下踩到的坑

如果是练习教程中的例子tensorflow cpu 版本够用了,要训练的话还是gpu版本要快很多,

本文记录了在我们配备的主流Mac电脑上,安装gpu版本常见问题和解决方法

显卡为:

  芯片组型号:    NVIDIA GeForce GTX 775M
  类型:    GPU
  总线:    PCIe
  PCIe Lane 宽度:    x16
  VRAM(总和):    2048 MB
  供应商:    NVIDIA (0x10de)  
一. 环境


Mac OSX 10.12
Python:3.6.2
CUDA Toolkit 8.0
cuDNN 5.1

 二. tensorflow 的安装

 参考官方教程,https://www.tensorflow.org/install/install_mac, 不再赘述

建议

1 如果你使用Pycharm编辑器的话,Pycharm自带虚拟环境创建,建议安装到PyCharm的虚拟环境中。

2如果你裸写,建议使用virtualenv来安装tensorflow

三. 安装CUDA

1.安装 CUDA Driver 8.0:

请到如下地址安装最新版 CUDA Driver for Mac:
http://www.nvidia.com/object/mac-driver- archive.html

安装完成后再偏好设置里会看到这个选项

2. 安装 CUDA Toolkit 8.0:
建议在线下载 dmg 安装包安装 CUDA Toolkit 8.0,下载地址如下:
https://developer.nvidia.com/compute/cuda/8.0/Prod/local_installers/cuda_8.0 .55_mac-dmg

3.配置CUDA环境,这一步出了很多问题,基本上都会遇到ImportError: dlopen和Segmentation fault: 11两个问题,安装下面的配置就可以了,

输入

sudo open ~/.bash_profile

 在打开文件后面追加以下内容

export PATH
export CUDA_HOME=/usr/local/cuda
export DYLD_LIBRARY_PATH=${CUDA_HOME}/lib:${CUDA_HOME}/extras/CUPTI/lib:/Developer/NVIDIA/CUDA-8.0/lib
export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH
export PATH=$DYLD_LIBRARY_PATH:$PATH

完成后是这个样子的,记得保存,用下面的命令刷新,如果遇到没权限之类的,重启电脑吧….顺便休息以下

. ~/.bash_profile

 4.编译使用 CUDA 的 deviceQuery

cd /usr/local/cuda/samples
sudo make -C 1_Utilities/deviceQuery
./bin/x86_64/darwin/release/deviceQuery

5 安装 cuDNN 5.1:
下载地址如下:
https://developer.nvidia.com/compute/machine- learning/cudnn/secure/v5.1/prod_20161129/8.0/cudnn-8.0-osx-x64-v5.1-tgz

然后解压并进入该目录,执行如下操作:

sudo mv include/cudnn.h /Developer/NVIDIA/CUDA-8.0/include/
sudo mv lib/libcudnn* /Developer/NVIDIA/CUDA-8.0/lib
sudo ln -s /Developer/NVIDIA/CUDA-8.0/lib/libcudnn* /usr/local/cuda/lib/

好了,大功告成。

但是如果你运行例子遇到以下错误

ImportError: dlopen(/Users/valiantliu/tensorflow/lib/python3.6.1/site-packages/tensorflow/python/_pywrap_tensorflow.so, 10):   
Library not loaded: @rpath/libcudart.7.5.dylib
Referenced from: /Users/valiantliu/tensorflow/lib/python3.6.1/site-packages/tensorflow/python/_pywrap_tensorflow.so
Reason:   
image not found

 是第3步的环境没有配置好,找不到CUDA的库,重新配置以下

如果遇到

I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.dylib locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcudnn.dylib locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.dylib locally
Segmentation fault: 11

 这个错误也是和第2步有关,检测是不是有这一句话,总之LD_LIBRARY_PATH也要有值。

export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH

如果运行Import tensorflow 出现以下内容,说明就安装成功了,散花

python -c "import tensorflow as tf"
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcublas.8.0.dylib locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcudnn.5.dylib locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.8.0.dylib locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.1.dylib locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.8.0.dylib locally`

四. 可能你高高兴兴的去跑训练,发现IDE里又报错了,My God,人生如此艰难

ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so, 10): 
Library not loaded: @rpath/libcudart.7.5.dylib
  Referenced from: /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so
  Reason: image not found

解决方法是

增加以下配置

1 DYLD_LIBRARY_PATH  /usr/local/cuda/lib:/usr/local/cuda/extras/CUPTI/lib:/Developer/NVIDIA/CUDA-8.0/lib  
2 LD_LIBRARY_PATH /usr/local/cuda/lib:/usr/local/cuda/extras/CUPTI/lib:/Developer/NVIDIA/CUDA-8.0/lib  

如果没有第一行,会出现Image error问题,如果没有第二行,python进程会crash,默默终止了。

好走到这里应该可以正常运行了,如果出现oom错误,调小程序参数。

还有每次运行之后,显卡的内存看起来并没有正常释放,导致第二次运行必现oom,需要重启电脑,如果有其他好方法,也留言造福大家。


上一篇 ARKit浅析V1.0

说一说

目录