前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >配置tensorflow GPU 版本填坑路

配置tensorflow GPU 版本填坑路

作者头像
MelonTeam
发布2018-01-04 15:28:50
1.4K0
发布2018-01-04 15:28:50
举报
文章被收录于专栏:MelonTeam专栏MelonTeam专栏

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

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

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

显卡为:

代码语言:javascript
复制
  芯片组型号:    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两个问题,安装下面的配置就可以了,

输入

代码语言:javascript
复制
sudo open ~/.bash_profile

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
. ~/.bash_profile

 4.编译使用 CUDA 的 deviceQuery

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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/

好了,大功告成。

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

代码语言:javascript
复制
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的库,重新配置以下

如果遇到

代码语言:javascript
复制
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也要有值。

代码语言:javascript
复制
export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH

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

代码语言:javascript
复制
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,人生如此艰难

代码语言:javascript
复制
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

解决方法是

增加以下配置

代码语言:javascript
复制
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,需要重启电脑,如果有其他好方法,也留言造福大家。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档