写在前面的话

已经炼了几个月的丹了,虽然还没有从入门到卧室,但也从一无所知到现在有所了解了。回想起从零开始学习深度学习时,最令我头痛的不是数学公式,也不是神经网络结构,而是配置深度学习的电脑环境,网上的这方面的教程还是很多的,比如七月在线的这篇,虽然很多人对这个AI教育机构持怀疑态度,但这篇博文还是很不错的。

我之所以写这篇文章是因为几天前,跑代码时发现TensorFlow不工作了,正常的工作状态应该是运行时会出现这样一句话:TensorFlow运行时提示信息

然而没有出现,并且电脑卡死机了,我就猜测没有用到GPU,而是在用CPU,于是我决定卸载了已经安装的TensorFlow(已经无法使用,不知什么原因),再重新安装,然后发现TensorFlow已经更新到了1.6版本,相对应的依赖库也都更新了......再后来就有了这篇文章。

正文关于我的电脑

我的电脑配置是NVIDIA GTX 1080显卡,因特尔 i7-8700k,16G内存,Ubuntu 16.04操作系统,系统自带Python 2.7.12(除此之外,我还用Anaconda安装了一个Python 2.7.13和一个Python 3.6.2),在此次更新之前,在Python 2.7.12下安装了TensorFlow 1.3,CUDA 8.0,以及cuDNN 6.0。关于本机我装的三个版本的PythonUbuntu系统安装,显卡驱动安装

因为我这次只是重装了TensoFlow,所以安装Ubuntu系统,安装显卡驱动就不再赘述啦,教程也比较多,可以看看上面我提到的七月在线的这篇博文。我是在卸载了已有的TensorFlow后,发现最新的TensorFlow版本支持CUDA 9.0,而CUDA这个版本需要最新的显卡驱动,所以我就更新了显卡驱动,具体操作是在Ubuntu系统左端的菜单栏找到System Settings,然后选下方的Software & Updates,再点击上方的Additional Drivers,你就会看到NVIDIA Corporation,找一个最高的version,选中再点Apply Changes,静候升级就好啦。系统更新显卡驱动步骤

打开Terminal(终端,可使用 Ctrl+Alt+T 的快捷键组合),输入以下代码,查看显卡信息,其中 1 代表每 1s 刷新一次数据。

yn@yn419:~$ watch -n 1 nvidia-smi显卡信息

可见本电脑显卡驱动版本为 390.25, 显卡型号为 GeForce GTX 1080, 包括显存,利用率等信息。

当然也可前往NVIDIA官网下载对应显卡版本的驱动。CUDA 9.0 下载与安装

先去NVIDIA网站选择CUDA Toolkit9.0(Sept 2017),按自己系统版本选择如下, 最后点击 Download(1.6 GB)。CUDA Web

文件比较大,下载完成后会在系统的Downloads目录里出现,文件名字是cuda_9.0.176_384.81_linux.run,打开一个终端,cd到此.run文件所在的路径下,或者直接在此文件所在的目录里文件夹里右键鼠标,然后选Open in Terminal即可,接着运行以下代码:

yn@yn419:~/Downloads$ sudo sh cuda_9.0.176_384.81_linux.run

可能会出现一个类似使用说明的东西,一直点回车看完就行了,然后会出现一些选项问题,除了Install NVIDIA Accelerated Graphics Driver for linux(因为已经提前安装了显卡驱动,所以这里选择不安装)?选择n(no)以外,其他的都选y(yes)就行了,安装结束后,我们要开始添加环境变量了,首先随便打开一个终端,执行以下代码打开环境变量:

yn@yn419:~$ sudo gedit ~/.bashrc(or .profile)

在 .bashrc 文件末尾处加上CUDA 9.0的环境变量,如下代码:

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

千万别忘了点击右上角的Save(保存)按键,不然环境变量可没设置成功,接下来就试试看CUDA 9.0 是否安装成功了吧,打开终端,先cd 到 下面的目录,再执行 sudo make,接着执行 ./deviceQuery,代码如下:

yn@yn419:~$ cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
yn@yn419:/usr/local/cuda-9.0/samples/1_Utilities/deviceQuery$ sudo make
yn@yn419:/usr/local/cuda-9.0/samples/1_Utilities/deviceQuery$ ./deviceQuery

然后你就会看到,这就说明,你的CUDA 9.0安装成功,且环境变量也配置完成了。cuDNN 7.0 下载与安装

先去NVIDIA网站下载cuDNN,这个比较麻烦一点,需要先注册一个账号,然后会让你做一个类似于调查问卷的东西,之后才能下载,记得要先勾选那个I Agree,然后如下图所选版本下载即可。

然后会弹出对应各个系统的版本,然后如下图所选,进行下载。

下载完成后,在系统Downloads目录下会出现一个cuDNN的压缩文件,名字是cudnn-9.0-linux-x64-v7.tgz,然后解压此文件,具体操作可以是右键点击文件,选择Extract Here(在此解压),解压完成后,进行如下代码操作。

yn@yn419:~$ sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
yn@yn419:~$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
yn@yn419:~$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*

这样我们就完成了cuDNN 7.0 的安装。TensorFlow 安装

你可能会问为什么我非要安装CUDA 9.0,cuDNN 7.0 呢,因为TensorFlow的官网就是这样要求的,经过上面的几步,这些我们都已经安装了,所以可以安心地安装TensorFlow了。

TensorFlow的官网提供了以下5种安装方式,但我推荐大家使用 pip 进行安装。

随便打开一个终端,运行代码,注意是选择Python 2.7 且 GPU Support的。

yn@yn419:~$ pip install tensorflow-gpu

如果安装失败,可以尝试用以下方式进行安装,代码如下:

yn@yn419:~$ sudo pip install --upgrade tfBinaryURL
yn@yn419:~$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.6.0-cp27-none-linux_x86_64.whl

不同版本的URL值(也就是最后一句的那个网址)可以在这里找到,执行完代码静静等待安装就行了,如果还是不成功,那只能尝试其他的4种方法了。

完结撒花

到这里我们就配置好了基于Ubuntu 16.04(虽然我也没教你怎么安装),Python 2.7 (系统自带的,跟我也没啥关系),CUDA 9.0 ,cuDNN 7.0 ,TensorFlow 1.6 的深度学习环境了,回头看看是不是很简单呢,我们来import 一下 TensorFlow试一试:

没有什么问题,这个警告我也查过,是没有问题的,看样子是成功了呢,我平时写代码都用的pycharm,那我们用pycharm再观察一下,Python2.7 下确实安上了 TensorFlow 1.6呢,大功告成!

深度学习的框架还有很多,目前我也只用过TensorFlow和pyTorch,这里必须吐槽一下,相对于TensorFlow,pyTorch的安装简直太简单了。

最后一哆嗦

谢谢各位丹友的耐心阅读,祝大家在炼丹的路上一帆风顺,早日炼出各种灵丹妙药修得正果

补充

根据我同学 张ZY的问题反馈, 在.bashrc中配置过 CUDA 9.0 的环境变量后, 使用终端调出 Python , 然后 import tensorflow 不会报错, 但在 Pycharm 这个 IDE 里就会报错, 报错内容大致为 :

‘ImportError: libcudart.so.9: cannot open shared object file: No such file or directory’

起初认为是他没有在 Pycharm 里给工程配置解释器, 尝试进行如下操作:

在 Pycharm 里 File -> Settings -> Project: (你的工程名) -> Project Interpreter , 然后给你对应的工程选择安装了 Tensorflow 的 Python 版本

结果好像没什么用, 后来张同学在网上找到了解决方案, 简而言之就是没有给 Pycharm 配置 CUDA 的环境变量, 具体操作是找到 Pycharm 安装目录, 然后打开 bin 目录, 找到目录下的

pycharm.sh 文件, 右键 open with 选 gedit

然后找到这一句

LD_LIBRARY_PATH="$IDE_BIN_HOME:$LD_LIBRARY_PATH" "$JAVA_BIN"

我的在第207行, 然后在前边加上下边这句 CUDA 的环境变量

LD_LIBRARY_PATH='/usr/local/cuda/lib64'

别忘了右上角的保存, 然后问题就解决了, 又可以完结撒花了~

补充 2.0 (更新于 2018.6.20)

昨天有幸得到了一台服务器的使用权限, 服务器上除了装了显卡驱动, CUDA9.0 和 cuDNN7.0以外, 其他的深度学习框架都没有安装, 我在安装TensorFlow过程中发现无法安装,尝试了很多种方法都不奏效, 最终发现问题出在了系统的版本上, 服务器的系统版本是64位的Ubuntu14.04,