深度学习环境搭建(Ubuntu16.04+Tensorflow-gpu)

''

                              好好照顾自己,不要奢望别人来疼你,别人都很忙的。

 

                                                                                       ''

学了这么久,

还是得好好整理一下,

一方面总结自己,另一方面可以让大家少走弯路…

 

It's show time:

在深度学习入门之初,我建议大家:

        第一步:基于Linux平台搭建环境,一定安装Tensorflow-gpu版本;

        第二步:运行深度学习领域的hello world,mnist数据集,训练+测试,尤其是得测试自己手写的数字;

        第三步:了解现用的数据集,网络模型,自己整理一样,很有帮助;

        第四步:深入了解一个项目,比如做一个分类的,先用cifar10数据集;

                       从github上下载源代码,先跑通demo,然后看程序,理解大概的结构意思,再进行训练,测试;

                       这个过程是要大致搞清楚一个项目都有哪些部分组成:数据集+网络模型+训练config+demo;

        第五步:进行你真正意义上的第一个项目,自己准备数据集,利用标注工具手动标注;

                      转换数据格式,进行训练,最后测试, 评估你训练的模型;

        第六步:到这,你可能才刚刚入门,刚刚开始...

        第七步:优化模型,调参...

        第八步:不断的做项目,不断的总结,不断的进步

 

今天先来讲一讲环境的搭建~~

 

一 :安装显卡驱动

 

系统——系统设置——软件和更新——附加驱动——选 使用NVIDIA(专有,tested)——应用更改——等待结束

           深度学习环境搭建(Ubuntu16.04+Tensorflow-gpu)_第1张图片

(注:显卡驱动一定要这样安,这是最简单最佳的方式,不要看网上好多说根据你的显卡自己去下驱动这种方法,容易出错不说,还麻烦)

验证安装成功:nvidia-settings

   

 

二:安装CUDA8.0

 

大家可能疑惑?为什么装tensorflow-gpu要装CUDA、CUDNN?它们是什么关系?当时跟你们一样的迷茫好奇...

下面来解释下:   

先来讲讲CPU和GPU的关系和差别吧。截图来自(CUDA的官方文档):

深度学习环境搭建(Ubuntu16.04+Tensorflow-gpu)_第2张图片

从上图可以看出GPU(图像处理器,Graphics Processing Unit)和CPU(中央处理器,Central Processing Unit)在设计上的主要差异在于GPU有更多的运算单元(如图中绿色的ALU),而Control和Cache单元不如CPU多,这是因为GPU在进行并行计算的时候每个运算单元都是执行相同的程序,而不需要太多的控制。Cache单元是用来做数据缓存的,CPU可以通过Cache来减少存取主内存的次数,也就是减少内存延迟(memory latency)。GPU中Cache很小或者没有,因为GPU可以通过并行计算的方式来减少内存延迟。因此CPU的Cahce设计主要是实现低延迟,Control主要是通用性,复杂的逻辑控制单元可以保证CPU高效分发任务和指令。所以CPU擅长逻辑控制,是串行计算,而GPU擅长高强度计算,是并行计算。打个比方,GPU就像成千上万的苦力,每个人干的都是类似的苦力活,相互之间没有依赖,都是独立的,简单的人多力量大;CPU就像包工头,虽然也能干苦力的活,但是人少,所以一般负责任务分配,人员调度等工作。

可以看出GPU加速是通过大量线程并行实现的,因此对于不能高度并行化的工作而言,GPU就没什么效果了。而CPU则是串行操作,需要很强的通用性,主要起到统管和分配任务的作用。

CUDA的官方文档是这么介绍CUDA的:a general purpose parallel computing platform and programming model that leverages the parallel compute engine in NVIDIA GPUs to solve many complex computational problems in a more efficient way than on a CPU. 
换句话说CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。

在 CUDA 的架构下,一个程序分为两个部份:host 端和 device 端。Host 端是指在 CPU 上执行的部份,而 device 端则是在显示芯片上执行的部份。Device 端的程序又称为 “kernel”。通常 host 端程序会将数据准备好后,复制到显卡的内存中,再由显示芯片执行 device 端程序,完成后再由 host 端程序将结果从显卡的内存中取回。

这里写图片描述

在 CUDA 架构下,显示芯片执行时的最小单位是thread。数个 thread 可以组成一个block。一个 block 中的 thread 能存取同一块共享的内存,而且可以快速进行同步的动作。每一个 block 所能包含的 thread 数目是有限的。不过,执行相同程序的 block,可以组成grid。不同 block 中的 thread 无法存取同一个共享的内存,因此无法直接互通或进行同步。因此,不同 block 中的 thread 能合作的程度是比较低的。不过,利用这个模式,可以让程序不用担心显示芯片实际上能同时执行的 thread 数目限制。例如,一个具有很少量执行单元的显示芯片,可能会把各个 block 中的 thread 顺序执行,而非同时执行。不同的 grid 则可以执行不同的程序(即 kernel)。

这里写图片描述

cuDNN(CUDA Deep Neural Network library):是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。如果你要用GPU训练模型,cuDNN不是必须的,但是一般会采用这个加速库。

好了,知道了这些,下面就开始安装喽~

 

首先,上官网https://developer.nvidia.com/cuda-downloads     点击Legacy Releases是浏览以前的版本,因为现在的是9.2最新的版本是支持高版本的tensorflow的,但是咱是python2.7的,tensorflow也用不了那么高版本的,所以,基于自己电脑情况与项目需要,安装合适的版本,后面我也会讲在虚拟环境Virtualenv里安装python3.5以及高版本的tensorflow,此处安装的是cuda8.0;

深度学习环境搭建(Ubuntu16.04+Tensorflow-gpu)_第3张图片

深度学习环境搭建(Ubuntu16.04+Tensorflow-gpu)_第4张图片

深度学习环境搭建(Ubuntu16.04+Tensorflow-gpu)_第5张图片

按照图片进行选择,下载~

切记:下载runfile(local)类型的,方便,不要下载deb的,容易出错!

下载完成之后,在下载的文件目录执行

sudo sh cuda_8.0.44_linux.run --override

然后就进入安装过程,开始是一个协议,一直回车,就是安装的交互界面,开始的Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?  选择n,因为你已经安装驱动了。

Using more to view the EULA.
End User License Agreement
--------------------------


Preface
-------

The following contains specific license terms and conditions
for four separate NVIDIA products. By accepting this
agreement, you agree to comply with all the terms and
conditions applicable to the specific product(s) included
herein.


NVIDIA CUDA Toolkit


Description

The NVIDIA CUDA Toolkit provides command-line and graphical
tools for building, debugging and optimizing the performance
of applications accelerated by NVIDIA GPUs, runtime and math
libraries, and documentation including programming guides,
user manuals, and API references. The NVIDIA CUDA Toolkit
License Agreement is available in Chapter 1.


Default Install Location of CUDA Toolkit

Windows platform:

Do you accept the previously read EULA?
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
(y)es/(n)o/(q)uit: n

Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y

Enter Toolkit Location
 [ default is /usr/local/cuda-8.0 ]:  

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y

Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y 

Enter CUDA Samples Location
 [ default is /home/kinny ]: 

Installing the CUDA Toolkit in /usr/local/cuda-8.0 ...
Missing recommended library: libXmu.so

Installing the CUDA Samples in /home/kinny ...
Copying samples to /home/kinny/NVIDIA_CUDA-8.0_Samples now...
Finished copying samples.

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-8.0
Samples:  Installed in /home/kinny, but missing recommended libraries

Please make sure that
 -   PATH includes /usr/local/cuda-8.0/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA.

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.
To install the driver using this installer, run the following command, replacing  with the name of this run file:
    sudo .run -silent -driver

Logfile is /tmp/cuda_install_17494.log

接下来,就是最重要的配置CUDA环境变量了~

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

测试下:
nvidia-smi

深度学习环境搭建(Ubuntu16.04+Tensorflow-gpu)_第6张图片

OK,大功告成~

 

三 :安装CUDNN(CUDNN5.1)

 

除了安装CUDA以外,CUDNN也是必须的~

 进官网: https://developer.nvidia.com/cudnn    比较麻烦的是这个必须得注册才能下载,注册一下做一个问卷调查·

选择V5.1,for CUDA 8.0

下载完成以后,是.tgz压缩文件——提取到此处——进入cuda文件夹——此处打开终端

运行一下命令,将库和头文件copy到cuda目录~

注意:(一定是你自己安装的目录如/usr/local/cuda-8.0),不过你正确安装的话,ubuntu一般就会有软链接/usr/local/cuda -> /usr/local/cuda-8.0/ ;所以就直接copy到cuda文件夹就行,用下面的命令就不会出错~

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*

 

四:安装tensorflow-gpu (此处为1.2版本)

 

sudo pip install tensorflow-gpu==1.2

注:卸载是:sudo pip uninstall tensorflow-gpu==1.2

 

五:最关键的一步,添加库的路径(配置变量)

 

此处比较重要,成功前的最后一步~

法一:

  1. 打开终端并输入:

    sudo gedit ~/.bashrc

  2. 输入用户密码。这时输入的密码是不可见的。

  3. 前面的步骤会打开.bashrc文件,在其末尾添加:

    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
    export CUDA_HOME=/usr/local/cuda
  4. 使其立即生效,在终端执行:

    source ~/.bashrc

    或者重启电脑即可。

法二:

  1. 打开终端并输入:

    cd /etc/   

          sudo gedit ld.so.conf

      2.将cuda路径放进来

         /usr/local/cuda/lib64

      3.保存

      4.sudo ldconfig 

     步骤如图:

深度学习环境搭建(Ubuntu16.04+Tensorflow-gpu)_第7张图片

深度学习环境搭建(Ubuntu16.04+Tensorflow-gpu)_第8张图片

 

六:进行测试

进入python编译环境,导入TensorFlow,输出hello,Tensorflow!。

深度学习环境搭建(Ubuntu16.04+Tensorflow-gpu)_第9张图片

 

嘿嘿,

加油,各位!

2018年7月22日12:11:57

你可能感兴趣的:(深度学习环境搭建(Ubuntu16.04+Tensorflow-gpu))