[系统配置]:Ubuntu16.04 安装配置深度学习配置:GPU加速 Cuda+cudnn+opencv+caffe

目录

一. 电脑配置:

二. 安装过程

1.安装相关依赖项

2.安装NVIDIA驱动

一,下载安装驱动法

二.终端直接下载安装驱动法。

3.安装CUDA

4.配置cuDNN

5.安装opencv3.1(我是根据我自己的视频来装的)

6.配置caffe

MNIST数据集测试


Caffe已经是第三次安装配置了,为什么是第三次呢?因为我实在是低估了深度学习对于硬件的要求。第一次我在自己笔记本上配置的单核,CPU only ... 结果是,样例数据跑了4小时,这还怎么玩?第二次在台式机上,因为台式机比较low,I5处理器4核,没有NVIDIA的GPU。我把别人训练好的模型下载下来,然后自己测试,发现真的成功了,心里小激动~ 然而,当我自己训练模型时,我训练7天..... 关键是7天了还在跑.....

心想,我这个穷逼难道要自己掏钱买个服务器?那怎么可能。还好,老师人非常好,给我找了个服务器~ 现在终于是劳资大显身手的时候了。

整个配置过程很长啊,坑多,没有linux基础的就别来了,你会崩溃的。我参考了好几个帖子,基本上每个帖子都有或多或少的问题,文章结尾的时候,我会留下前辈们的文章地址,算是对他们的尊敬和对我帮助的感谢。好,下面切入正题!


一. 电脑配置

系统:Ubuntu16.04 GPU:NVIDIA GTX 750 Ti (提示:在linux下可以通过 lspci | grep -i vga 查看)。该命令可能不显示具体型号 而只显示 nvidia device 10b2等可直接看下面驱动安装的第二种方法。

二. 安装过程

1.安装相关依赖项

(安装caffe的依赖包可以提前安装的 ,在家目录ubuntu@ubuntu:~$  安装)不安装caffe可以跳过。

1 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

2 sudo apt-get install --no-install-recommends libboost-all-dev

3 sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev

4 sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

2.安装NVIDIA驱动

(第一种方法需要自行下载安装包,前期是已经知道,NVIDIA驱动的型号:当不知型号时第二种可更方便简洁的安装驱动。)

一,下载安装驱动法

(1)查询NVIDIA驱动

首先去官网 http://www.nvidia.com/Download/index.aspx?lang=en-us 查看适合自己显卡的驱动并下载:

驱动文件后缀名应当是以.run结尾的。我们要把这个文件移动到家目录下,原因是下面我们要切换到文字界面下,如果放到~/下载 下面,我们没有办法进入下载这个目录(没有中文输入法,且中文全部是乱码http://images2015.cnblogs.com/blog/829125/201612/829125-20161209213231522-2037277696.pnghttp://images2015.cnblogs.com/blog/829125/201612/829125-20161209213703694-1463638869.png

图1 输入显卡型号 图2 显卡驱动搜索结果

我的显卡型号是NVIDIA GTX 750 Ti,系统是linux 64位,按照要求选择后点击search. 图2是搜索结果,点击下载就好了。

我下载后的驱动文件是:NVIDIA-Linux-x86_64-375.39.run

(2)安装驱动

在终端下输入

(ubuntu@ubuntu:~$): sudo gedit /etc/modprobe.d/blacklist.conf

输入密码后在最后一行加上 blacklist nouveau . 这里是将Ubuntu自带的显卡驱动加入黑名单。

在终端输入:

 sudo update-initramfs -u

重启电脑~
这里要尤其注意,安装显卡驱动要先切换到文字界面(按Ctrl+Alt+F1~F6),我电脑是按Ctrl+Alt+F1.所以,启动电脑后,先进入文字界面,输入电脑名(我电脑是ubuntu),密码。

然后,输入命令

sudo service lightdm stop

现在可以安装驱动了,先进入家目录 cd ~

然后:输入 

 sudo chmod 755 NVIDIA-Linux-x86_64-367.39.run(381.22.run)  //获取权限

      再输入

sudo ./NVIDIA-Linux-x86_64-375.39.run  //安装驱动

依次按

Accept
Continue installation

安装完成之后

sudo service lightdm start·

完成后,再次重启电脑。

安装完成之后输入以下指令进行验证: sudo nvidia-smi ,若列出了GPU的信息列表则表示驱动安装成功。如下图:

http://images2015.cnblogs.com/blog/829125/201612/829125-20161209214437960-282445699.png

二.终端直接下载安装驱动法。

首先,检测你的NVIDIA图形卡和推荐的驱动程序的模型。执行命令:

$ ubuntu-drivers devices

输出结果为:

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==

modalias : pci:v000010DEd00001180sv00001458sd0000353Cbc03sc00i00

vendor   : NVIDIA Corporation

model    : GK104 [GeForce GTX 680]

driver   : nvidia-304 - distro non-free

driver   : nvidia-340 - distro non-free

driver   : nvidia-384 - distro non-free recommended

driver   : xserver-xorg-video-nouveau - distro free builtin

== cpu-microcode.py ==

driver   : intel-microcode - distro free

从中可以看到,这里有一个设备是GTX 680 ,对应的驱动是NVIDIA -304,340,384 ,而推荐是安装384版本的驱动。

接下来 安装驱动

你可以选择,安装所有推荐的驱动,如下命令

$ sudo ubuntu-drivers autoinstall

你也可以选择,只安装其中一个驱动,命令如下

$ sudo apt install nvidia-340

OK 驱动安装完成


在终端下输入

(ubuntu@ubuntu:~$): sudo gedit /etc/modprobe.d/blacklist.conf

输入密码后在最后一行加上 blacklist nouveau . 这里是将Ubuntu自带的显卡驱动加入黑名单。

在终端输入:

sudo update-initramfs -u

安装完成之后输入以下指令进行验证: sudo nvidia-smi ,若列出了GPU的信息列表则表示驱动安装成功。如下图:

http://images2015.cnblogs.com/blog/829125/201612/829125-20161209214437960-282445699.png

3.安装CUDA

CUDA是NVIDIA的编程语言平台,想使用GPU就必须要使用cuda。

(1)下载CUDA

首先在官网上(https://developer.nvidia.com/cuda-downloads)下载CUDA:

http://images2015.cnblogs.com/blog/829125/201612/829125-20161209214952726-1587842434.png

(2)md5sum  cuda_8.0.61_375.26_linux.run看下载是否完整,若不完整后面md5和前面网页后提示打开的md5不一样

:官方提供的md5

我的

相同这下载完整(注:在安装的那台电脑上下,如用其他电脑下载拷贝过来就是错的)

(3) 下载完成后执行以下命令:

1 sudo chmod 777 cuda_8.0.61_375.26_linux.run
2 sudo  ./cuda_8.0.61_375.26_linux.run

注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia367驱动时,一定要选择否:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。

输入命令后如下图所示:停留在下图画红线地方时,一直按回车键到100%

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

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?
(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/zhou ]:

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

Installing the CUDA Samples in /home/zhou …
Copying samples to /home/zhou/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/zhou, 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_2961.log

(4)环境变量配置

打开~/.bashrc文件:

 sudo gedit ~/.bashrc

将以下内容写入到~/.bashrc尾部:

1 export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

2 export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

3 export PYTHONPATH=/home/ubuntu/caffe/python$PYTHONPATH

加完环境变量执行

source ~/.bashrc

输入:

sudo ldconfig //环境变量立即生效

(5)测试CUDA的samples

1 cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

2 sudo make

3 sudo ./deviceQuery

如果显示一些关于GPU的信息,则说明安装成功。

http://images2015.cnblogs.com/blog/829125/201612/829125-20161212083843073-359111555.png

(6) 测试cuda的samples

cd  /home/ubuntu/NVIDIA_CUDA-8.0_Samples

make

也不知道是我的错觉还是什么的,比以前快很多啊,大概等7分钟左右吧。

4.配置cuDNN


cuDNN是GPU加速计算深层神经网络的库。
首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号(用QQ邮箱即可注册)才能下载。下载版本号如下图:

http://images2015.cnblogs.com/blog/829125/201612/829125-20161212085118167-664580564.png

下载cuDNN5.1之后进行解压:

sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz

显示如下文件:

*cuda/include/cudnn.h
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.5
cuda/lib64/libcudnn.so.5.1.5
cuda/lib64/libcudnn_static.a*

同时在家目录下生成cuda的文件夹(可能有锁),通过sudo chown ubuntu cuda/ -R解锁,(这步我直接拷贝硬盘中的cuda文件夹,没有进行解压解锁操作)

若进行sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz 解压后得到的是

说明你下载的问件是有问题的。

进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:

cd cuda/include

sudo cp cudnn.h /usr/local/cuda/include  #复制头文件

再将进入lib64目录下的动态文件进行复制和链接:

cd ..

cd lib64

sudo cp lib* /usr/local/cuda/lib64/    #复制动态链接库

cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5    #删除原有动态文件

sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5  #生成软衔接

sudo ln -s libcudnn.so.5 libcudnn.so      #生成软链接

这步根据自己解压文件来修改,如解压后是libcudnn.so.5.1.10.  就要把libcudnn.so.5.1.5改为libcudnn.so.5.1.5其他的一样

继续执行以下指令:

sudo chmod a+r /usr/local/cuda/include/cudnn.h

sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

然后设置环境变量和动态链接库:

$ sudo gedit /etc/profile$ sudo gedit /etc/profile

然后再打开的文件末尾加上(“=”前后不要有空格)

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

保存之后创建链接文件:

$ sudo gedit /etc/ld.so.conf.d/cuda.conf

输入 /usr/local/cuda/lib64

$ sudo ldconfig

使用sample里面的例子来测试还需要编译。因为当前的cuda还不支持gcc5.0以上的版本,在编译之前,我们需要修改配置文件,否则无法编译成功。

$ cd /usr/local/cuda-8.0/include

$ sudo cp host_config.h host_config.h.bak #备份编译头文件

$ cd /usr/local/cuda-7.5/include

$ sudo cp host_config.h host_config.h.bak   #备份编译头文件

$ sudo gedit host_config.h

#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!

#endif /* __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9) */

然后进入用例文件进行编译(注意执行第二步命令时候需要较长时间是正常现象):

$ cd /usr/local/cuda/samples
$ sudo make all -j4
$ cd /usr/local/cuda/samples/bin/x86_64/linux/release
$ sudo ./deviceQuery
$ cd /usr/local/cuda/samples
$ sudo make all -j4
$ cd /usr/local/cuda/samples/bin/x86_64/linux/release
$ sudo ./deviceQuery

执行命令后出现如下信息则说明显卡驱动和cuda安装成功。

5.安装opencv3.1(我是根据我自己的视频来装的)


从官网(Releases - OpenCV)下载Opencv,并将其解压到你要安装的位置,假设解压到了/home/opencv。

1 unzip opencv-3.1.0.zip
2 sudo cp ./opencv-3.1.0 /home
3 sudo mv opencv-3.1.0 opencv

安装前准备,创建编译文件夹:

需要安装一些软件包(2018年1月17日安装的时候跳过坑,之后就重新编译了):

sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev  
cd ~/opencv
mkdir build
cd build

配置(就是在build文件夹下):

1 sudo apt install cmake
2 sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

编译:

sudo make -j8

-j8表示并行计算,根据自己电脑的配置进行设置,配置比较低的电脑可以将数字改小或不使用,直接输make。

可能出现问题:

http://images2015.cnblogs.com/blog/829125/201612/829125-20161226214933961-1834057412.png

这是因为opecv3.0与cuda8.0不兼容导致的。解决办法:修改 ~/opencv/modules/cudalegacy/src/graphcuts.cpp文件内容,如图:

http://images2015.cnblogs.com/blog/829125/201612/829125-20161226215240632-1765032753.png

其中, #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000) 是我们修改的。
以上只是将opencv编译成功,还没将opencv安装,需要运行下面指令进行安装:

sudo make install

周是OpenCV的第一课,楼主之前都是在windows下用opencv。昨天尝试在ubuntu配置opencv环境,配置好后运行测试代码出现了错误。
但最终在这个论坛里找到了解决方法。由于那个帖子在别的板块,故将其引用过来分享给大家
/usr/bin/ld: warning: libOpenCV_core.so.3.1, needed by //usr/local/lib/libopencv_imgcodecs.so, may conflict with libopencv_core.so.2.4
/usr/bin/ld: /tmp/ccDhjMld.o: undefined reference to symbol '_ZN2cv6String10deallocateEv'
//usr/local/lib/libopencv_core.so.3.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

解决方案

sudo apt-get autoremove libopencv-dev

6.配置caffe

(1)使用Git

直接下载Caffe非常简单,或者去GitHub - BVLC/caffe: Caffe: a fast open framework for deep learning.下载。由于我习惯去github上找代码,所以就直接去下载的源码。

下载完成后,会在家目录下的下载里找到caffe-master.zip,用unzip命令解压到家目录下,然后重命名为caffe.

(2)因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config: sudo cp Makefile.config.example Makefile.config

(3) 打开并修改配置文件:
sudo gedit Makefile.config #打开Makefile.config文件 根据个人情况修改文件:
a.若使用cudnn,则

#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
b.若使用的opencv版本是3的,则

#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
c.若要使用python来编写layer,则
#WITH_PYTHON_LAYER := 1
修改为 WITH_PYTHON_LAYER := 1
d.重要的一项 :
# Whatever else you find you need goes here. 下面的

1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

修改为:

1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include (空格)/usr/include/hdf5/serial
2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial      

这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径.

(4)修改makefile文件
打开makefile文件,做如下修改:
将:

NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

替换为:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

(5)编辑/usr/local/cuda/include/host_config.h

这步我没操作,因为操作了老是在后面编译caffe时出错)将其中的第115行注释掉:将

#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

改为

//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

(6)编译
make all –j4 #-j根据自己电脑配置决定
编译过程中可能会出现如下错误:
错误内容1:
"fatal error: hdf5.h: 没有那个文件或目录"
解决办法:
step1:在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。
将:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
替换为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include  (空格)/usr/include/hdf5/serial/
stept2:在Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。
将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
错误内容2:
"libcudnn.so.5 cannot open shared object file: No such file or directory"
解决办法是将一些文件复制到/usr/local/lib文件夹下:
#注意自己CUDA的版本号!

1 sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
2 sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
3 sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
4 sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig

(8)测试

sudo make runtest

如果运行之后出现下图,说明caffe配置成功。

http://images2015.cnblogs.com/blog/829125/201612/829125-20161216222255120-811606555.png

到此caffe配置完毕!

MNIST数据集测试


配置caffe完成后,我们可以利用MNIST数据集对caffe进行测试,过程如下:

1.将终端定位到Caffe根目录
cd ~/caffe

2.下载MNIST数据库并解压缩
./data/mnist/get_mnist.sh

3.将其转换成Lmdb数据库格式
./examples/mnist/create_mnist.sh

4.训练网络
./examples/mnist/train_lenet.sh
训练的时候可以看到损失与精度数值,如下图:

http://images2015.cnblogs.com/blog/829125/201612/829125-20161227115816304-1936786688.png

可以看到最终训练精度是0.9914。

如果出现错误,可以尝试:sudo ./examples/mnist/train_lenet.sh

实在还不行就要换驱动了

Ubuntu16.04 安装配置Caffe - 一生不可自决 - 博客园  ##主要参考

ubuntu16.04安装caffe_gt630m python-CSDN博客  ##主要参考

http://www.2cto.com/kf/201702/594221.html

http://www.2cto.com/os/201607/528798.html

提示信息-炼数成金-Dataguru专业数据分析社区  ##opencv出现的错误解决方法

ubuntu 系统 opencv3.1.0 安装 - simplelovecs - 博客园  ##安装opencv

百度网盘-链接不存在  ##下载cudnn

需要 cuda cudnn安装包可以私我要链接。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值