当前位置:   article > 正文

配置Tensorflow环境_搭建tensorflow-gpu环境

搭建tensorflow-gpu环境

前几个月入坑tensorflow,记录一下当初配置环境的流水账。

安装Python3.6

首先下载Python3.6 linux 版本
(1)进入https://www.python.org/downloads/source,选择下载Gzipped source tarball
这里写图片描述
下载的源码包是:Python-3.6.4.tgz。
我安装的目录是/usr/lib/,因为以前python2等较低版本的安装目录也是在此。当然这需要root权限。
进入目录Python-3.6.4/
配置安装目录
./configure --prefix=/usr/python3.6
接下来进行编译
make
执行安装:
make install
整个过程大约5-10分钟,安装成功之后,安装目录就在/usr/python3.6

系统中原来的python在/usr/bin/python,通过ls -l可以看到,python是一个软链接,链接到本目录下的python2.7
我们可以不用把这个删除,不对原来默认的环境做任何修改,只新建一个python3.6的软链接即可,只是需要执行python3.6代码时python要改成python3.6,或者python脚本头部解释器要改为#!/usr/bin/python3.6
建立软连接如下
ln -s /usr/python3.6/bin/python3.6 /usr/bin/python3.6
现在可以发现/usr/bin下面,有python,python3,python3.6等软连接,彼此互不干扰
这里写图片描述
这样我们就可以直接通过python3.6命令来使用对应版本的python

安装Tensorflow

网上并没有找到tensorflow1.3的更多资源,故下载的是GPU版本tensorflow1.5
网址:https://ci.tensorflow.org/view/tf-nightly/job/tf-nightly-linux/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP, TF_BUILD_PYTHON_VERSION=PYTHON3.6,label=gpu-linux/
得到tf_nightly_gpu-1.5.0.dev20171227-cp35-cp35m-linux_x86_64.whl文件
sudo pip install tf_nightly_gpu-1.5.0.dev20171227-cp35-cp35m-linux_x86_64.whl
但是此时报错:
其实可以通过whl获得很多信息,比如GPU版本,型号1.5,支持的python版本是3.5
这里写图片描述
后来我又下载了这样一个版本的tensorflow
tensorflow_gpu-1.4.1-cp36-cp36m-manylinux1_x86_64.whl
发现也会报错
而且发现在Python2.7版本,下一个最简单的cpu版本的tensorflow也会报如下的错误。
这里写图片描述
花了一段时间没有解决。这个时候,我就没有在172.31.200.123上面继续配置环境了,转而在172.31.200.122上面配置Python与Tensorflow的环境。

安装pip3

https://www.cnblogs.com/wenchengxiaopenyou/p/5709218.html
(2)直接利用pip3安装对应python的tensorflow
https://www.cnblogs.com/softzrp/p/7823330.html
为pip3设置软连接: sudo ln -s /usr/python3.6/bin/pip3 /usr/bin/pip3(删除软连接的操作:rm -rf /usr/bin/pip,之所以把软连接导向/usr/bin,是因为在这个目录下命令下可直接执行)
在上一篇博文中介绍到安装tensorflow1.4必须依赖cuda8.0以及cudnn6.0
但是发现,直接利用pip3 install tensorflow_gpu-1.4.1-cp36-cp36m-manylinux1_x86_64.whl,没有出现以前的错误。
在进行numpy的一个对应下载与设置
这里写图片描述
但是最后还是报错:
这里写图片描述

安装cuda8.0

参照官方文档:http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#axzz4TcLN9lqd
nvcc -V查看当前的cuda版本号
cuda 一般位于/usr/local目录下面,可以发现,122服务器上,现在只有cuda7.5
现在安装cuda8.0
cuda8.0下载地址:https://developer.nvidia.com/cuda-80-ga2-download-archive,选择对应版本
这里写图片描述
这里写图片描述
我选择安装的是runfile(local),下载得到:cuda_8.0.61_375.26_linux.run,按照其instruction进行安装。
在linux平台下,其默认安装目录是/usr/local/cuda
windows平台下,默认安装目录是ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v#.#
参考博客:http://www.linuxidc.com/Linux/2016-12/138849.htm
这里写图片描述
建立了一个软连接
后面发现在即使/usr/local下面已经有了cuda-8.0的文件,但是nvcc-V仍然是cuda-7.5
这个时候,进入/qijinwei/NVIDIA_CUDA-8.0_Samples
make
这里写图片描述
然后利用其中的example检验cuda是否真的安装成功
cd ~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release
./deviceQuery
这里写图片描述
说明并没有安装成功
重新安装nvidia驱动先卸载:
sudo apt-get purge nvidia-*
后面在对example进行编译运行,最后终于成功了,喜大普奔
这里写图片描述
那这样就算我cuda8.0已经安装成功,但是现在系统里面存在两个版本的cuda,那么运行nvcc -V,显示的版本依旧是cuda7.5,那么系统默认的版本是什么呢?
这里写图片描述
这个时候python3.6 import tensorflow as tf命令时:
发现报错信息发生了变化,以前是libcudnn.so.8不存在,现在变成了libcudnn.so.6不存在,说明前面所说的tensorflow1.4依赖于python3.6 与cudnn6.0是有道理的。

安装cudnn6.0

可能需要注册NVIDIA账号
下载地址https://developer.nvidia.com/rdp/cudnn-download
选择:Download cuDNN v6.0 (April 27, 2017), for CUDA 8.0
下载:cuDNN v6.0 Library for Linux
得到:cudnn-8.0-linux-x64-v6.0-ga.tgz(前面8.0代表cuda版本号,后面6.0代表cudnn型号)
解压缩:会生成cuda/include和cuda/lib64
(1)将cuda/include目录中的cudnn.h文件拷贝到/usr/local/cuda-8.0/include/目录下
(2)将cuda/lib64目录中的库拷贝到/usr/local/cuda-8.0/lib64/目录下
(3)将/usr/local/cuda-8.0/lib64/目录下的libcudnn库的权限改为777,执行:
sudo chmod 777 libcudnn*
进入/usr/local/cuda-8.0/lib64/
sudo rm -rf libcudnn.so libcudnn.so.6 #删除原有动态文件
sudo ln -s libcudnn.so.6.0.21 libcudnn.so.6#生成软链接
sudo ln -s libcudnn.so.6 libcudnn.so#生成软链接
最终如下所示:
这里写图片描述
这里写图片描述
发现会有这样一种警告,但是tensorflow已经可以成功运行了。
那先暂时不处理这个warnig,看一下代码能否跑得起来。

其它

运行论文源代码:https://github.com/YichenGong/Densely-Interactive-Inference-Network
PYTHONHASHSEED=0 python3.6 train_mnli.py DIIN demo_testing_SNLI --training_completely_on_snli
这里写图片描述
报错缺少sqlite3
参考博客:http://blog.51cto.com/hunt1574/1630974,https://www.cnblogs.com/if-then/p/6980265.html
这里写图片描述
这个问题的解决,我修改了如下
这里写图片描述
这个需要注册Kaggle,在它的网站上下测试集的数据。
这里写图片描述
实验更进一步
这里写图片描述
但是还是报错
这里写图片描述
修改python/tensorflow/nn.py 中import _linear的语句,因为可能是tensorflow版本不同的原因,导致_linear函数在不同的包下面。
from tensorflow.python.ops.rnn_cell_impl import _linear
这里写图片描述
现在已经成功跑了起来
谢天谢地

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/171323
推荐阅读
相关标签
  

闽ICP备14008679号