2.Linux Sever(Ubuntun16.04)的Caffe环境配置(CUDA8.0+CUDNN5.1)

目录:前记;linux常用命令介绍;下载cuda和cuDNN;安装过程

一.前记:

       传统机器学习还没掌握透彻,但是这个行当就是这样,没有那么多的时间让你串行执行任务,把某项技能或某本书学的透彻了再去学其他,要达到并行的效果。既有系统性又能需要什么学什么,不断解决问题,不断完成任务。最近两天实验室买了新机器,而且因为比赛deadline将近,所以赶紧在新机器上安装caffe环境~这种有需求的学习,既激动又有一定的效果~

二.linux server start:

第一次接触linux server,还是挺兴奋的。没有图像化界面,只有一个类似windows的命令行窗口,所有工作都是根据命令去执行,所以在安装caffe的过程中也熟悉了一些linux命令(每条命令前面基本上都要加sudo)。

1.添加用户: useradd zjz

2.添加用户并且创建一个用户目录:useradd -d /usr/zjz -m zjz

3.如果已登录当前用户修改自己密码:passwd

4.超级管理员可以修改任何人的密码,比如:passwd zjz

5.复制文件: cp 源文件路径(绝对路径和相对路径均可) 目标文件路径

6.复制目录 :cp -r 源目录路径(绝对路径和相对路径均可) 目标目录路径

7.删除文件:rm 文件路径

8.删除目录:rm -rf 目录路径

9.解压tar或者tar.gz文件: tar zxvf xxx.tar.gz

10.运行.run文件:sh xxx.run


三.caffe准备

我们在跑深度学习程序时,基本上都要用到GPU。实验室服务器有两块GPU,型号为TiTan和TiTan X。计算力达到6.1。

1.从官网下载cuda8.0   地址为: https://developer.nvidia.com/cuda-downloads

计算行业正在从只使用CPU到“CPU与GPU并用的协同处理”,CUDA(Compute Unified Devices Architecture)是NVIDIA在2006年推出的一种并行计算平台编程模型,通俗讲就是加强并行计算能力(像是在CPU进行的数值计算,总之就是GPU上也可以做大规模计算了吧)。在没有CUDA之前,GPU一般只用来进行图形渲染(如通过OpenGL,DirectX)


下载下来是“cuda_8.0.61_375.26_linux.run”

2.下载cuDNN5.1  官网地址:  https://developer.nvidia.com/cudnn

cuDNN是NVIDIA CUDA的深层神经网络库,是一个GPU加速的深层神经网络库,cuDNN为标准例程提供高度调优的实现,例如正向或反向卷积,池化,归一化,激活层。cuDNN是NVIDIA深度学习SDK的一部分。


3.将cuda和cuDNN复制到linux server上,这里可以本机通过远程传,也可以直接把移动硬盘插在服务器上,我用的第二种,有点low了。。

系统初始好像是读取不到NTFS的硬盘,所以先用命令安装ntfs-39:sudo apt-get install ntfs-39

然后查看系统磁盘情况:sudo fdisk -l 找到自己的移动硬盘名称

然后挂载: sudo mount /dev/sdb1 /media   其中/dev/sdb1是自己的移动硬盘名称   /media是挂载点(挂载到linux的地方)

然后复制cuda和cuDNN,复制完成后卸载挂载点: sudo umount /media


四.安装过程

0.安装gcc和g++编译器

sudo apt-get install gcc g++

1.安装nvidia驱动,虽然cuda安装时也再选择安装驱动,但是cuda自带的驱动有些老,我们需要在官网上找到适合自己GPU的驱动:

官网地址:  http://www.nvidia.com/Download/index.aspx?lang=en-us


执行如下语句:从此开始有很多依赖包,我也不知道什么意思,就无脑安装吧。。。


sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-381(这里换成自己的驱动型号)
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev
执行完后,重启(sudo reboot)

重启后输入:nvidia-smi

出现GPU列表,就说明驱动安装成功了。


2.安装cuda

之前我们已经把cuda复制到Linux Server了,现在开始安装,进入我们保存cuda的目录下,运行cuda_8.0.61_375.26_linux.run

sudo sh cuda_8.0.61_375.26_linux.run

执行后会有一系列需要确认,但是一定要注意第一步会让你确认是否安装nvidia375的驱动,一定要选择否,要不然之前安装的新版本的驱动就被覆盖了。剩下的就都是默认安装了~安装完成后会有下面的类似信息:


安装完毕后,再声明一下环境变量,并将其写入到~/.bashrc尾部

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后设置环境变量和动态链接库,在命令行输入:

sudo vim /etc/profile

在文件末尾添加:

export PATH = /usr/local/cuda/bin:$PATH
保存之后,创建链接文件  sudo vim /etc/ld.so.conf.d/cuda.conf

在文件末尾添加: /usr/local/cuda/lib64

最后执行 sudo ldconfig   使链接立即生效


3.测试cuda的Samples

cd /usr/local/cuda-7.5/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery

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


4.使用cuDNN

下载下来的cuDNN是一个压缩包,我们解压后会生成一个cuda目录,如下所示:


该目录下有两个文件:include和lib64

首先进入include

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

然后进入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.0 libcudnn.so.5  #生成软衔接(注意自己的版本是不是5.1.0,这步不要直接照抄)
sudo ln -s libcudnn.so.5 libcudnn.so      #生成软链接

5.安装opencv3.1.0  因为caffe的很多功能都还是要用opencv的


(1)首先安装Ubuntu系统的一堆依赖项:sudo apt-get install --assume-yes libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

(2)然后安装OpenCV需要的一些依赖项

sudo apt-get install build-essential cmake git

sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

(3)在终端中,自己先创建一个目录,比如在/home下sudo mkdir opencv-3.1.0

然后cd opencv-3.1.0,执行

git clone https://github.com/Itseez/opencv.git

git clone https://github.com/Itseez/opencv_contrib.git

下载下来后会默认创建一个目录,cd进去

建立一个编译目录(例如:/build)把cmake后的文件都放在这里边、

mkdir build

cd build

然后开始cmake,注意几个cmake的参数。

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D 

OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib/modules/> ..

其中 CMAKE_BUILD_TYPE=Release / Debug

OPENCV_EXTRA_MODULES_PATH 就是用来指定要编译的扩展模块,

后边加上刚下载的opencv_contrib模块的路径即可。

然后编译:sudo make -j8

最后安装: sudo make install

6.安装caffe

首先又是各种依赖包:

sudo apt-get update 
sudo apt-get install -y build-essential cmake git pkg-config 
 sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler 
 sudo apt-get install -y libatlas-base-dev 
 sudo apt-get install -y --no-install-recommends libboost-all-dev 
 sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev 
 sudo apt-get install -y python-pip 
 sudo apt-get install -y python-dev 
 sudo apt-get install -y python-numpy python-scipy
自己在/home下创建sudo mkdir caffe

cd caffe

sudo git clone https://github.com/BVLC/caffe.git

cd caffe

sudo cp Makefile.config.example Makefile.config   //将Makefile.config.example的内容复制到Makefile.config 
//因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子 
sudo vim Makefile.config //打开Makefile.config文件
打开之后修改如下内容:
//若使用cudnn,则将# USE_CUDNN := 1 修改成: USE_CUDNN := 1 
//若使用的opencv版本是3的,则将# OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3 
//若要使用python来编写layer,则需要将# WITH_PYTHON_LAYER := 1 修改为 WITH_PYTHON_LAYER := 1 
//重要的一项 将# Whatever else you find you need goes here.下面的 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 
修改为: INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial 
      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的位置,所以需要更改这一路径

//若使用MATLAB接口的话,则要讲MATLAB_DIR换成你自己的MATLAB安装路径
MATLAB_DIR := /usr/local
MATLAB_DIR := /usr/local/matlab2014a
打开makefile文件,
在CXXFLAGS += -MMD -MP下面添加:
CXXFLAGS += -std=c++11
将
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
编辑/usr/local/cuda/include/host_config.h,将其中的第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!
之后再

make all -j8
make runtest

MakeFile.config主要改动的地方:




MakeFile的主要改动地方:


7.NCCL安装。

如果要用多GPU同时工作,还需要安装NCCL,在caffe之后再安装其他的东西,还需要更改下MakeFile.config下的一些配置,

然后重新编译caffe即可。

cd /home

sudo git clone https://github.com/NVIDIA/nccl

cd nccl

sudo make all -j8

sudo make install

sudo ldconfig

重新编译caffe吧~

还有一点想提的,我们在实际操作caffe中,一定要参考caffe给的官方示例哦,在安装caffe时会有examples目录,

示例都在examples目录里面~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值