Linux下CUDA+CUDNN+TensorFlow安装笔记

来源:互联网 发布:天刀捏脸数据在哪儿看 编辑:程序博客网 时间:2024/06/05 11:13

之前用过TensorFlow的CPU版,现在买了个新电脑,就想把GPU也用起来,又因为目前大部分工作是在linux下做,所以有了在linux下安装cuda和TensorFlow的计划,快一个礼拜一直在搞这件事,重装了N次系统,cuda和TensorFlow终于是能用了。姑且写一下攻略吧,也算自己留个档。

注意事项

  1. 此攻略适用于广大使用Nvidia显卡的Ubuntu用户,CentOS,RedHat,Windows等等用户请自行阅读Nvidia各种安装说明,A卡用户出门左转。
  2. 双显卡用户注意,按此攻略安装的nvidia显卡驱动可以支持TensorFlow等等的机器学习计算,然而并不能优化图形界面。这个主要是因为我目前还没找到好的办法进行双显卡切换,搞了几次都搞到重装,心累,所以现在图形化界面还是用的Intel集显。如果大家有好办法欢迎共享。
  3. 关于软件版本以及安装方法,这里安装的是CUDA-8.0+CUDNN-7+TensorFlow-0.11.0,Nvidia驱动和CUDA都是脚本安装,CUDNN是Debian包安装,TensorFlow是pip直接安装。

废话不多说了。

原料

  • 一个有Nvidia显卡的电脑
    要知道N卡的型号,不知道的可用命令sudo lspci | grep -i nvidia查看,我的是GTX960M
  • 一个Ubuntu系统
    同样要明确系统版本,我的是16.04
  • GCC
    GCC为系统自带程序,无需自行安装。有安装教程说gcc需要降级到5以下,这个主要针对CUDA和你的Ubuntu系统版本,我用的gcc 5.4版本装CUDA8完全没有问题,Ubuntu14.04的用户最好降一降。
  • CUDA8安装脚本
    贴个链接指路,官网现在默认你安装的是9.0版本,然而9.0版本需要显卡驱动至少在384及以上,出于稳妥考虑装了8.0版本,同样对驱动有要求(在375及以上)。
  • CUDNN安装包
    链接指路下载前需要注册,然后要填个问卷,按步骤来就行很快,然后按照你的系统版本和你将要安装的cuda版本选择下载哪一个,Ubuntu用户不要选power8,可以看到一共有三个包可以下载,分别是Runtime Library,Developer Library和Code Samples,都下了吧反正也不大(你走)。
  • 驱动安装脚本
    链接指路,按照提示找到适合自己电脑显卡型号的驱动,下载得到一个脚本(.sh)文件。

步骤

卸载原有的N卡驱动

这一步主要是针对像我这种以前为了各种谜之目的装过Nvidia驱动而版本又不够高导致后面CUDA装了不能用的熊程序员,以及看了别家攻略安装失败了的你,不要觉得之前装过Nvidia驱动装错了就可以直接丢开
执行以下命令:

sudo apt-get --purge remove nvidia-*

对于之前从Nvidia官网下载安装过驱动的,如果你的驱动版本小于CUDA的要求(8.0至少375,9.0至少384),找到之前安装脚本所在的目录,执行以下命令:

sudo sh 你的脚本.sh --uninstall
禁用开源驱动nouveau

Ubuntu系统默认使用的驱动即为开源的驱动nouveau,我们需要禁用它并且之后也不需启用。
编辑系统配置文件blacklist.conf

sudo gedit /etc/modprobe.d/blacklist.conf

在其中添加下面两行:

blacklist nouveauoptions nouveau modeset=0

保存,退出,执行如下命令使配置生效:

sudo update-initramfs -u

重启电脑,至此开源驱动就已被禁用了,可用如下命令进行检查:

lsmod | grep nouveau

如果系统什么也没返回,说明nouveau禁用成功

关闭UEFI模式

这一步主要是安装驱动的需要。在UEFI模式下安装驱动需要为驱动生成签名,公钥需要存储在linux内核信任的某目录下,关于这方面没有找到什么资料,目前大部分的解决办法都是直接关闭UEFI模式。
UEFI的关闭方法与电脑型号有关,我的戴尔灵越是F2进入BIOS后在Boot标签下选择关闭Secure Boot,之后就可以选择从UEFI模式切换到Legacy模式,其他电脑型号请百度。

结束X server服务

在终端输入以下命令:

sudo service lightdm stop

之后如果直接死机请重启查看nouveau禁用设置是否正确。正常情况会黑屏,然后按Ctrl+Alt+F1进入字符终端界面,输入用户名和密码通过验证。

安装Nvidia驱动

进入存放驱动脚本的目录,执行以下命令:

sudo chmod a+x 你的脚本.shsudo ./你的脚本.sh -no-x-check -no-nouveau-check -no-opengl-files

执行脚本的三个参数是为了防止接下来循环登录。然后按照步骤进行就可以了,如果提示无法安装32-bit lib不用担心,回车继续就好。
安装完成后重新启动X server服务:

sudo service lightdm start

如果执行以上命令后能够正常进入图形界面,恭喜你安装驱动成功。

安装CUDA

进入CUDA安装脚本所在的目录,执行以下命令:

sudo sh 你的脚本.sh

首先会出现一段极长的协议,最后输入accept表示同意,然后会选择是否安装nvidia驱动367,选择no,遇到询问是否安装opengl的地方如果你是双显卡也务必选择不安装,其他同意或默认即可。
安装完成后需要将CUDA的路径加入环境变量,首先打开~/.bashrc文件,添加以下代码:

export PATH=/usr/local/cuda-8.0/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

中间不要加多余的空格,如果你安装的不是8.0版本则修改版本号,保存,然后打开/etc/profile,文末加上以下代码:

export PATH=/usr/local/cuda/bin:$PATH

保存,至此CUDA安装完毕。

安装CUDNN

进入CUDNN安装包所在目录,执行以下命令:

sudo dpkg -i runtime包.debsudo dpkg -i developer包.debsudo dpkg -i 代码sample包.deb

至此,CUDNN安装完成。

验证CUDA和CUDNN是否安装成功

CUDNN的code sample可以用来检查CUDNN和CUDA是否安装成功,执行以下命令:

sudo cp -r /usr/src/cudnn_samples_v7/ $HOMEcd $HOME/cudnn_samples_v7/mnistCUDNNsudo make cleansudo makesudo ./mnistCUDNN

正常情况下执行以上代码会得到Test passed!的结果。如果在make步出错,那么可能gcc需要降级;如果出现CUDA driver version is insufficient for CUDA runtime version,那么或许你的显卡驱动安装失败,或许你之前安装过低版本的nvidia的显卡又没有删掉。

安装TensorFlow

如果以上步骤都没有问题,恭喜你可以开始安装TensorFlow了。这里采用的是用pip安装的方法。首先安装pip和python dev:

sudo apt-get install python-pip python-dev

安装完毕后执行如下命令:

sudo pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.11.0-cp27-none-linux_x86_64.whl

如果出现无法访问的情况,找个翻墙软件翻个墙吧,通常来说是能够正常下载安装的。
至此TensorFlow安装完成。

验证TensorFlow是否安装成功以及是否是否能够使用GPU

注意:如果是关闭UEFI模式安装的GPU驱动,那么在使用GPU加速机器学习时也需要关闭UEFI模式,否则会报错。
打开一个python终端:

python

逐行敲入以下代码:

>>> import tensorflow as tf>>> hello = tf.constant('Hello, TensorFlow!')>>> sess = tf.Session()>>> print sess.run(hello)

如果出现以下字样,说明TensorFlow安装成功,并且能够成功启用GPU。

Ctrl+D关闭python终端。
如果出现以下错误,或许UEFI模式没有关闭,或许显卡驱动安装错误。

参考文档

  • Nvidia Driver官方安装指南
  • Nvidia Cuda官方安装指南
  • Nvidia CUDNN官方安装指南
  • ycszen的个人博客
  • TensorFlow中文社区