想了一下还是把tensorflow安装的过程整理一下吧,万一时间久了忘了呢。
终于tensorflow的安装可以告一段落了,内心还是很兴奋的,这次还是好好的整理下。
尤其是注意的地方,往往时我折腾了好久,查阅了大量的资料,测试了好多次,才验证出来的硕果。
1、准备工作
1、更换源,好的软件源,直接决定你的安装速度。这里选择清华的。
操作:进入:设置 –> 软件和更新 –> Ubuntu软件,打开下载自:选择 其他,选择清华。点击 选择服务器 确认,在弹出框选择,重新载入。
2、更新软件包,防止有些工具没有安装上。
sudo apt update
3、打开:设置 –> 软件和更新 –> 附加驱动
选择NVIDIA公司专有的最新驱动,选择应用更改。时间较长,请耐心等待。
2、安装cuda
下载文件,这里我选择run本地文件,进入文件所在目录,并运行,XXX代指文件名,历史版本
sudo sh XXX.run
安装注意,这时会出现很多信息,按ctr+c关闭信息,再按accept接受。
接下来询问是否,安装驱动,输入n,不要安装。因为已经安装过。
一路输入y,或者回车。
进入/home/用户名/NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery,打开终端,输入
sudo make
然后输入
./deviceQuery
如果显示pass,说明cuda安装成功,如果显示说,cuda驱动不满足于cuda运行库,说明驱动太旧,或者cuda太新。参照修改。
3、下载并安装cudnn(本段参照于http://blog.csdn.net/m0_37924639/article/details/78785699)
下载cudnn,安装CUDNN
进入CUDNN安装包所在目录,执行以下命令:
sudo dpkg -i runtime包.deb sudo dpkg -i developer包.deb sudo dpkg -i 代码sample包.deb
报错查看此项https://blog.csdn.net/u011636567/article/details/77162217
至此,CUDNN安装完成。
验证CUDA和CUDNN是否安装成功
CUDNN的code sample可以用来检查CUDNN和CUDA是否安装成功,执行以下命令:
sudo cp -r /usr/src/cudnn_samples_v7/ $HOME cd $HOME/cudnn_samples_v7/mnistCUDNN sudo make clean sudo make sudo ./mnistCUDNN
正常情况下执行以上代码会得到Test passed!
的结果。如果在make步出错,那么可能gcc需要降级(由于一直未出现类似错误,作者未验证);
如果出现CUDA driver version is insufficient for CUDA runtime version
,说明你的显卡驱动版本低于cuda工具包的版本。
如果下载的是压缩包,那个运行库,可以使用下面的。
cd /home/***(自己的用户名)/Desktop/###(这个命令意思是找到刚刚我们用U盘传过来的文件) tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz###(解压这个文件) sudo cp cuda/include/cudnn.h /usr/local/cuda/include###(复制) sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64###(复制) sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
4、版本说明
1、显卡驱动要高于cuda版本,cudnn要选择和cuda版本一样的
2、建议安装的cuda版本和驱动的版本一致,比如我的驱动目前只能是384.11(9.0版本),最好安装cuda工具包9.0
3、安装对应的cudnn9.0
4、安装tensorflow
在配置完cudnn之后,可以直接在终端输入
sudo pip install tensorflow==1.5.0
或者安装CPU版本
sudo pip install tensorflow==1.5.0
如果网速不好的话,也可以自己在https://github.com/tensorflow/tensorflow下载whl文件,往下翻,在installation下面,然后使用
sudo pip install xxx.whl
5、简便安装的方法
如果确定了自己的显卡支持的最高版本驱动,可以直接参照下面的方法:
1、cuda的下载和安装
下载适合你的cuda版本(包含驱动,即驱动版本)
关闭目前的图形界面,
sudo service lightdm stop
按住ctr + alt + f1,进入命令行界面,输入帐号和密码,并且登录。
进入你的cuda下载目录,比如我的在Download里面
cd Download
sudo sh XXX.run --silent --overide
不输入参数,先accept,一路y或者回车默认
打开图像界面
sudo service lightdm start
进入图形界面,按下ctr + alt + f7
进入用户主路径
cd ~
进入cuda的例子make并且运行,验证是否正确安转cuda
cd /home/shuailing/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery
make
./dedeviceQuery
如果最后一行显示pass,说明安装成功。
注意:这个方法,我在工作站安装成功,在自己的电脑上失败,出现的现象时,反复登录。
解决方法:先安装显卡驱动,在安装cuda,在安装cuda的时候,询问是否安装cuda驱动(显卡驱动),选择否。
如果,出现了重启可以切换回之前的驱动。
2、下载并安装cudnn
下载cudnn,安装CUDNN
进入CUDNN安装包所在目录,执行以下命令:
sudo dpkg -i runtime包.deb sudo dpkg -i developer包.deb sudo dpkg -i Codesample包.deb
注意:这里需要按照这个顺序来进行,负责最后的代码测试包,是无法安装的。
如果测试说,找不到,libdart文件,说明没有把 cuda的lib库加入LD_LIBRARY_PATH中。
这个之前也加入过,但是总是有其他的意外,这里把加入环境变量,再说一便。
sudu gedit .bashrc
把下面两行加入.bashrc最后
export PATH=$PATH:/usr/local/cuda-9.0/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64
输入下面命令使其立即生效,之前的cudnn测试的窗口。需要重新打开,才能更新新的环境变量。
source .bashrc
如果是解压放入到库中的,还需要对其libcudnn进行链接,ln -s 源文件 目标文件
3、安装tensorflow-gpu
下载tensorflow-gpu,之后进入下载路径
pip安装
sudo pip install tensorflow_gpu-1.6.0-cp27-cp27mu-manylinux1_x86_64.whl
这个tensorflow-gpu==1.6.0,需要实测,cuda9+cudnn7.0可以用,之前用cuda9+cudnn7.1运行程序说,找到cudnn7.1版本,但是期望是7.0。程序报错。
4、验证
python import tensorflow
不报错说明安装成功。
6、源码安装
1、克隆tensorflow
git clone https://github.com/tensorflow/tensorflow
2、进入下载目录的tensorflow主目录,配置编译环境
./configure
除了Cuda、Cudnn相关的yes,其余的不相关的都选择n。剩下的默认回车就好。
3、完成之后编译
sudo bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package sudo mkdir /tmp/tensorflow_pkg sudo bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg sudo pip install/tmp/tensorflow_pkg/tensorflow-1.2.0rc2-cp27-cp27mu-linux_x86_64.whl
之前因为权限不够,编译出错不加载,执行第三条说找不到文件。现在全部加了权限。
4、参照上面的测试
5、最后的注意:
描述:在我运行程序的时候,终端运行正常使用GPU,可是在pycharm中运行就报错,说找不到libcublas.so.9.0.源码编译的时候也说找不到/usr/bin/ld的什么文件。
尝试的方法:tensorflow降级,结果不可以。实际上我的cuda和cudnn都是要求的9.0和7.0,明明在/usr/local/cuda/lib64中可以找到这个文件的。可是不论是降级还是配置cudnn的libcudnn.so的链接都不行。
后来,在手机上偶然查到。
解决方案:在/etc/ld.so.conf中最后一行添加/usr/local/cuda-9.0/lib64。或者在ld.so.conf.d这个目录新建一个档案,以.conf结尾(建议),最后输入sudo ldconfig使其立即生效。
解释:其实上面那个含有libculas的路径,正常的已经被添加到LD_LIBRARY_PATH中了,可是程序运行的时,不一定回读到这个变量,所以需要设置/etc/ld.so.conf把,含有libcublas的路进加入的系统中。