深度学习环境tensorflow-gpu 1.4安装过程记录

文章修改自:deepin linux 15.5 + 小米笔记本pro 下的深度学习环境tensorflow-gpu 1.4版本搭建过程

我的另一篇文章:ubuntu 安装cuda9.0+cudnn7.1-与cuda8.0共存


参数:

  • 操作系统:Deepin Linux 15.5
  • 笔记本: 小米笔记本pro
  • 显卡:Nivdia MX150
  • tensorflow版本:1.4
  • cuda版本:8.0
  • cudnn版本:6

一、安装显卡驱动

用的是deepin 15.5系统,该系统提供驱动管理工具,可以很简单为显卡安装驱动。ubuntu系统提供的也有类似的工具,其他系统我不太熟悉,请自行研究。装驱动还是挺简单的,多搜一下就可以了。

下图是deepin的驱动管理工具,我为显卡安装了大黄蜂版的显卡驱动(bumblebee-nvidia和nvidia-driver),如下图,上面那个就是MX150的显卡驱动,下面那个是我的核显驱动,可以不用管它。

驱动管理器

选中对应驱动,保存即可。

打开终端,在终端内输入以下命令:

sudo apt-get update
sudo apt-get install nvidia-smi
  • 1
  • 2

通过nvidia-smi,我们可以查看显卡信息,以确认我们的驱动是否正确安装了。在终端内输入:

optirun nvidia-smi
  • 1

因为我们安装的是大黄蜂版的显卡驱动,所以显卡是由bumblebee进行管理的。为了降低能耗,平时独显是处于关闭状态的,如果有程序需要使用到独显,可以通过optirun进行启动。对于做深度学习训练这样可能太麻烦了,是有解决方法的,后面我会详细介绍。 
如果显卡驱动安装正确,运行上面的命令,你会看到类似于下面的输出: 

至此,驱动安装完成。

二、安装tensorflow-gpu

兼容原因,安装tensorflow-gpu 1.4版本(cuda-8 只适用tf-1.4)。

很简单,如果没安装pip的话,要先安装pip:

sudo apt-get install python-pip
  • 1

安装完成后,输入:

pip install tensorflow-gpu==1.4
  • 1

即可完成tensorflow-gpu 1.4版本的安装。

需要注意的是,tensorflow-gpu版本需要完成cuda和cudnn的安装才能运行。这个时候的tensorflow是不能运行的,在python中输入import tensorflow会报错。

请往下读。

三、安装cuda

为了兼容,我们这里安装cuda 8。

网上找了很多教程,结果还是在这里卡了很久,因为很多都不适用。别人用起来正常,在我这里可能就出错了。最后,我选择了相当简单粗暴的一种方法:

打开终端,输入如下命令:

sudo apt install nvidia-cuda-dev nvidia-cuda-toolkit nvidia-nsight nvidia-visual-profiler  
  • 1

打完收工,安装完毕!

四、安装 cudnn

兼容原因,这里安装cudnn 6。

首先,从官网下载压缩包cudnn-8.0-linux-x64-v6.0.tgz。免费下载,需要登录,如无账号请自行注册。下载地址为https://developer.nvidia.com/cudnn

下载完成后得到压缩包: 
压缩包

对压缩包进行解压,得到一个名为cuda的文件夹。正常来说,我们需要将cuda中的一些文件复制到/usr/local/cuda-8.0/***的路径下,并配置相关路径。但这里,我们的做法有点不同。

因为,我们是用apt-get安装的,所以,我们是不存在/usr/local/cuda-8.0/***路径的,也不需要配置环境路径。但复制还是要复制的,不过位置变了一下,这里是第二个卡住我的问题点,找了很久,知乎的一位答友吕俊奇的回答给了我启发(回答的链接我会放到文末的参考中),这里要做如下操作:

第一,将解压出来的cuda/include/下的cudnn.h文件复制到/usr/local/include/目录下。

第二,将cuda/lib64/目录下的所有文件复制到python环境的tensorflow包的tensorflow/python/目录下,比如,对我来说该路径就是/media/raini/deepin/software/deepin/anoconda3/envs/py35/lib/python3.5/site-packages/tensorflow/python,这个路径因人而异,请参考我的路径自行查找。

第三,复制好了之后Python导入TF报错如下:

ImportError: /media/raini/deepin/software/deepin/anoconda3/envs/py35/lib/python3.5/site-packages/tensorflow/python/libcudnn.so.6: file too short
Failed to load the native TensorFlow runtime.


因为 libcudnn.so.6 和 libcudnn.so.6 都是 libcudnn.so.6.0.21的软连接,如下:


所以,重做一遍软连接:

raini@biyuzhe~$ rm /media/raini/deepin/software/deepin/anoconda3/envs/py35/lib/python3.5/site-packages/tensorflow/python/libcudnn.so.6
raini@biyuzhe~$ ln -s /media/raini/deepin/software/deepin/anoconda3/envs/py35/lib/python3.5/site-packages/tensorflow/python/libcudnn.so.6.0.21 /media/raini/deepin/software/deepin/anoconda3/envs/py35/lib/python3.5/site-packages/tensorflow/python/libcudnn.so.6
raini@biyuzhe~$ rm /media/raini/deepin/software/deepin/anoconda3/envs/py35/lib/python3.5/site-packages/tensorflow/python/libcudnn.so

raini@biyuzhe~$ ln -s /media/raini/deepin/software/deepin/anoconda3/envs/py35/lib/python3.5/site-packages/tensorflow/python/libcudnn.so.6.0.21 /media/raini/deepin/software/deepin/anoconda3/envs/py35/lib/python3.5/site-packages/tensorflow/python/libcudnn.so


五、测试

至此,安装全部完成。我们测试一下是否安装成功。

在测试之前,埋一下前面的坑。

关于bumblebee版显卡驱动在深度学习训练中的开启和关闭: 
在进行训练前,在终端输入sudo tee /proc/acpi/bbswitch <<< ON,可开启显卡。 
在训练结束后,在终端输入sudo tee /proc/acpi/bbswitch <<< OFF,可关闭显卡。

开启显卡在终端中打开python,并尝试引入tensorflow:

python
>>> import tensorflow as tf
  • 1
  • 2

如果没有安装成功,会报错。 
如果没有报错,那说明安装的没有问题。继续输入:

>>> sess=tf.Session()
  • 1

会输出显卡信息: 
显卡信息

好了,恭喜,到了这里,你已经完成了全部内容,祝你好运!

参考

[1] Deepin15.4 下 CUDA 配置方法 
[2] deepin15.5下安装tensorflow 

[3] Ubuntu16.04无法安装CUDA吗? - 吕俊奇的回答 - 知乎


Logo

更多推荐