本文介绍了在GPU服务器(已安装ubuntu16.04.2系统,方法自行搜索,版本是16.04就可以)上搭建CAFFE深度学习环境的方法,参考了其他几位前辈的博客,并在此基础上结合我在实际操作过程中遇到的问题加以补充完善,最终完成了服务器的配置。



主要步骤:

  1. 安装依赖包  + 禁用新风 
  2. 配置环境变量 
  3. 下载 + 安装CUDA 8.0  + 验证是否安装成功 
  4. 安装cudnn 
  5. 安装opencv3.1 
  6. 安装朱古力
  7. 安装pycaffe
  8. 配置可远程访问的网络环境
  9. 使用MNIST数据集验证来自Caffe是否安装成功

第1步安装依赖包+禁用新风

安装后续步骤或环境必需的依赖包,依次输入以下命令:

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

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

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

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

sudo apt-get install git cmake build-essential

安装好依赖包后只有禁用nouveau才能顺利安装NVIDIA显卡驱动,禁用方法就是在/etc/modprobe.d/blacklist-nouveau.conf文件中添加一条禁用命令,首先需要打开该文件:

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

打开后发现该文件中没有任何内容,写入:

blacklist nouveau option nouveau modeset = 0

保存时命令窗口可能会出现以下提示(无视此提示就可以):

**(gedit:4243):警告**:设置文档元数据失败:不支持设置属性metadata :: gedit-position

保存后关闭文件,注意此时还需执行以下命令使禁用nouveau生效: 

sudo update-initramfs –u

第2步配置环境变量

同样使用gedit命令打开配置文件:

sudo gedit ~/.bashrc

(这一命令用处非常大,在最后CAFFE编译提示找不到某个库文件时,搜索该库文件所在位置,使用该命令进入配置文件后,添加该库文件的路径)

打开后在文件最后加入以下两行内容:

export LD_LIBRARY_PATH = / usr / lib / x86_64-linux-gnu:$ LD_LIBRARY_PATH

export LD_LIBRARY_PATH = / lib / x86_64-linux-gnu:$ LD_LIBRARY_PATH

保存退出。

 

第3步下载+安装CUDA 8.0+验证是否安装成功

进入https://developer.nvidia.com/cuda-80-ga2-download-archive  ,依次选择CUDA类型然后下载即可。

GPU服务器安装吃鸡 gpu服务器搭建_显卡驱动

1.5G的CUDA中包含了nvidia显卡驱动安装包,此时注意你是否已经安装过nvidia显卡驱动(一般重新装系统之后的机器都没有nvidia显卡驱动),若无法保证已安装的nvidia显卡驱动一定正确,那就卸载掉之前安装的nvidia显卡驱动,然后开始安装CUDA 8.0;若可以保证已安装正确的nvidia显卡驱动,则直接开始安装CUDA 8.0,在安装过程中选择不再安装nvidia显卡驱动。

为了方便开始安装过程的路径查找,把下载的CUDA安装文件移动到HOME路径下,然后通过Ctrl + Alt + F1进入文本模式,输入帐号密码登录,在文本模式登录后首先关闭桌面服务:

sudo service lightdm stop

 然后通过Ctrl + Alt + F7发现已经无法成功返回图形化模式,说明桌面服务已成功关闭,注意此步对接下来的nvidia驱动安装尤为重要,必需确保桌面服务已关闭。

再次通过Ctrl + Alt + F1进入文本模式,然后运行CUDA安装文件进行安装,直接通过sh命令运行安装文件即可:

sudo sh cuda_8.0.61_375.26_linux.run --no-opengl-libs

其中cuda_8.0.61_375.26_linux.run是我的CUDA安装文件名,而你需替换为自己的CUDA安装文件名,若此时忘记可直接通过ls文件查看文件名,这也是把CUDA安装文件移动到HOME下的另一个原因。

执行此命令约1分钟后会出现0%信息(这是安装前需要阅读的条款,不用看),此时长按回车键让此百分比增长,直到100%,然后输入接受。然后选择是否安装nvidia驱动,若之前未安装则输入“y”,若确保已安装正确驱动则输入“n”。

剩下的选择则都输入“y”确认安装或默认路径安装,开始安装,此时若出现安装失败提示可可为未关闭桌面服务或在已安装nvidia驱动的情况下重复再次安装nvidia驱动,安装成功后会显示:

Driver :Installed
Toolkit :Installed in /usr/local/cuda-8.0
Samples :Installed in /home/fnlee

之后输入重启命令重启就OK了:

Reboot

重启后登录进入系统,配置CUDA环境变量,与第2步相同,使用gedit命令打开配置文件:

sudo gedit ~/.bashrc

在该文件最后加入以下两行并保存:

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

export LD_LIBRARY_PATH = / usr / local / cuda / lib64:$ LD_LIBRARY_PATH

使该配置生效:

source ~/.bashrc


验证CUDA 8.0是否安装成功,分别执行以下命令:

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

sudo make

./deviceQuery

若看到类似以下信息则说明cuda已安装成功:

GPU服务器安装吃鸡 gpu服务器搭建_显卡驱动_02

第4步安装cudnn

登录官网:https//developer.nvidia.com/rdp/cudnn-download  ,下载对应cuda版本和linux系统的cudnn压缩包,注意官网下载cudnn需要注册帐号(建议用邮箱注册,网站响应可能会比较慢,耐心等待,多次尝试就好)并登录。

GPU服务器安装吃鸡 gpu服务器搭建_linux_03

下载完成后解压,得到一个cuda文件夹,该文件夹下包含和lib64两个文件夹,命令行进入cuda / include路径下,然后进行以下操作:

sudo cp cudnn.h /usr/local/cuda/include/

然后命令行进入cuda / 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.10 libcudnn.so.5  #生成软衔接

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

安装完成后可用

nvcc -V

命令验证是否安装成功,若出现以下信息则表示安装成功:

GPU服务器安装吃鸡 gpu服务器搭建_显卡驱动_04

用NVIDIA-SMI查看显卡情况(也可以验证安装成功):

GPU服务器安装吃鸡 gpu服务器搭建_GPU服务器安装吃鸡_05

第5步安装opencv3.1.0

进入官网:http:   //opencv.org/releases.html,选择3.1.0版本的源码,下载opencv-3.1.0.zip

解压到你要安装的位置,命令行进入已解压的文件夹opencv-3.1.0目录下,执行:

mkdir build

cd build

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

解决opecv3.1与cuda8.0不兼容的问题:

修改/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp文件内容,如图: 

GPU服务器安装吃鸡 gpu服务器搭建_CUDA_06

 保存之后编译:

make -j  #编译

在编译过程中可能会遇到:

“安装OpenCv 3.1的过程中要下载ippicv_linux_20151201,由于网络的原因,这个文件下载失败。”


下载完后替换opencv-3.1.0 / 3rdparty / ippicv / downloads / linux- *目录下的同名文件,重新make -j。

编译成功后安装:

sudo make install

安装完成后通过查看opencv版本验证是否安装成功:

pkg-config --modversion opencv

 验证结果:

GPU服务器安装吃鸡 gpu服务器搭建_CUDA_07

第6步安装caffe

首先在你要安装的路径下(首页)下载caffe:

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

进入caffe,将Makefile.config.example文件复制一份并更名为Makefile.config,也可以在caffe目录下直接调用以下命令完成复制操作:

sudo cp Makefile.config.example Makefile.config

复制一份的原因是编译caffe时需要的是Makefile.config文件,而Makefile.config.example只是caffe给出的配置文件例子,不能用来编译caffe。

然后修改Makefile.config文件,在caffe目录下打开该文件:

sudo gedit Makefile.config

 修改Makefile.config文件内容:

GPU服务器安装吃鸡 gpu服务器搭建_显卡驱动_08

 

修改python路径(如果已经安装好Anaconda就直接用这两行下边Anaconda的路径):

将
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  
*******楼主之后又从头开始配了一台cuda9.0+opencv3.4.0的服务器,完成上述部分后无需设置以下三步就编译通过了********
修改caffe目录下的Makefile文件:
将:
NVCCFLAGS + = - ccbin = $(CXX)-Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS + = -D_FORCE_INLINES -ccbin = $(CXX)-Xcompiler -fPIC $(COMMON_FLAGS)
 
将:
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
 
修改/usr/local/cuda/include/host_config.h文件:
将
#error--不支持的GNU版本!不支持超过4.9的gcc版本!
改为
// #error--不支持的GNU版本!不支持超过4.9的gcc版本!

******************************************************************三步******************************************************************

可以开始编译了,在caffe目录下执行:

make all –j

若编译过程出现错误,修改后必须运行

make clean

之后再次编译。

 

编译成功后可进行测试:

make runtest –j

若出现如下结果,则表示朱古力安装成功:

GPU服务器安装吃鸡 gpu服务器搭建_linux_09

我在测试时出现了错误(找不到libopencv_core.so.3.1这个动态链接库):

GPU服务器安装吃鸡 gpu服务器搭建_CUDA_10

解决方法:

搜索到libopencv_core.so.3.1的路径为:/usr/local/cuda-8.0/lib64

将其添加到配置文件中,使用gedit命令打开配置文件:

sudo gedit ~/.bashrc

在该文件最后加入这一行并保存:

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

使该配置生效:

source ~/.bashrc

如果仍有同样的错误可以尝试依次输入以下命令:

sudo ldconfig

cat /etc/ld.so.conf

如果仍有问题,可以搜索“的Linux搜索不到共享库的解决方法”

加载共享库时出错:xxx.so.x“ 错误的原因和解决办法


 

第7步安装pycaffe

在上一步成功安装caffe之后,就可以通过caffe去训练数据集了,需要在命令行下通过caffe命令进行操作,而这一步pycaffe的安装是为了更方便的去使用caffe,实际上大多数都是通过python来操作caffe的,可以更方便的编写和执行python代码。

cd caffe

sudo make pycaffe -j

我编译pycaffe时出现的错误:

python / caffe / _caffe.cpp:10:31:致命错误:numpy / arrayobject.h:没有这样的文件或目录

解决方法:

sudo apt-get install python-numpy

再次编译就可以安装成功了。

 

第8步配置可远程访问的网络环境

当我们搭好之前的所有环境后,需要使用XSHELL和信息xFTP远程连接服务器,直接连一般都会失败因此在连接之前需要安装OpenSSH的,命令如下:

sudo apt-get install openssh-server openssh-client

安装完成之后,执行netstat -tnl命令,查看22端口是否开通:

GPU服务器安装吃鸡 gpu服务器搭建_linux_11

LISTEN状态说明设置成功。

 

第9步使用MNIST数据集验证Caffe是否安装成功