Debian8系统下,caffe的安装

时间:2021-05-05 16:42:49

首先,官方的参考文献为:http://caffe.berkeleyvision.org/installation.html

现在开始:

安装一些依赖包(对于gcc与g++编译器,就不多说了,可以apt-get install build-essentital),命令如下:

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

现在安装cuda,官方网站:https://developer.nvidia.com/cuda-zone

Debian8系统下,caffe的安装

点击downloads,然后出现下图,我选择的为linux下的x86_64架构下的ubuntu的14.04的runfile(local)安装包:

Debian8系统下,caffe的安装

安装时,参考官方文档http://developer.download.nvidia.com/compute/cuda/7.5/Prod/docs/sidebar/CUDA_Installation_Guide_Linux.pdf,下面说安装步骤(官方一些没有必要的骤没写):

1.确认有一个CUDA-Capable的显卡,可以输入以面命令,会出来一些信息,说明你的显卡符合条件。

lspci | grep -i nvidia

此外,还可以通过官方网站 http://developer.nvidia.com/cuda-gpus 来查看你的显卡是否符合。

2,确认系统有正确的内核头文坐件与开发包,直接输入以下命令安装就好啦(系统不一样,命令也不一样,具体看官方文档)

sudo apt-get install linux-headers-$(uname -r)

3,我采用的是runfile方式安装:

首先,禁掉linux系统本身自带的显卡驱动 nouveau,方法为在 /etc/modprobe.d/目录下建一个文件名为:blacklist-nouveau.conf,写入一些内容,具体如下:

vim /etc/modprobe.d/blacklist-nouveau.conf

写入:

blacklist nouveau options nouveau modeset=

执行:

sudo update-initramfs –u

其次,以命令行模式重启电脑,对于debian8,进入命令行模式的方法为,输入:

systemctl set-default multi-user.target

进入窗口方式的方法为,输入:

systemctl set-default graphical.target

好,现在我们用命令行重启电脑了,确认nouveau驱动没有启动,输入以下命令,不出现任何东西哦

lsmod | grep nouveau

好,现在找到我们下载的cuda_7.5.18.linux.run文件,给它可执行权限,安装它(记得用sudo,给它一些安装包写入的权限):

cd 〈cuda_7.5.18.linux.run文件所在的目录下〉 chmod +x cuda_7.5.18.linux.run sudo ./cuda_7.5.18.linux.run

在这个过程中,分问你安装路径,我直接默就好,还会问你是否安装一些包,我除了openGL没有安装,其余都安装了,因为,笔记本有核心显卡,屏幕显示会用核心显卡,如果安装了openGL,可能会出现显示不正常的现像;台式机没事。

下面是device node verification,看看是是否存在 /dec/nvidia*之类的文件和是否有读写权限,如果没有文件,我们自己添加,没有权限,自己改就好,添加方法,看这个脚本文件:

#!/bin/bash /sbin/modprobe nvidia if [ "$?" -eq ]; then
  # Count the number of NVIDIA controllers found.
NVDEVS

=`lspci | grep -i NVIDIA` N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l` NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l` N=`expr $N3D + $NVGA - ` for i in `seq $N`; do mknod -m /dev/nvidia$i c $i done mknod -m /dev/nvidiactl c else

  exit 

fi /sbin/modprobe nvidia-uvm if [ "$?" -eq ]; then

  # Find out the major device number used by the nvidia

-uvm driver D=`grep nvidia-uvm /proc/devices | awk '{print $1}'` mknod -m /dev/nvidia-uvm c $D else

  exit 

fi

现在我们回到图形桌面,方法如上面已说。设置环境变量,我的办法是在.bashrc里添加如下(我的是64位系统,完成后关):

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

如果32位的话,这样写:

export PATH=/usr/local/cuda-7.5/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib:$LD_LIBRARY_PATH

到此安装基本完成,现在一些确认安装成功的验证步骤:

查看安装的驱动信息(注意,对于iGPU/dGPU没作用):

cat /proc/driver/nvidia/version

查看CUDA Toolkit的版本,可以输入:

nvcc –V

现在,我们运行一下自带的examples,由于我是默认的安装路径,所以,进入~/~/NVIDIA_CUDA-7.5_Samples下,make.命令如下:

cd ~/NVIDIA_CUDA-.5_Samples make

完成以后,在~/NVIDIA_CUDA-7.5_Samples/bin/86_64/linux/release路径下(我的是这样的路径),分别运行deviceQuery与

bandwidthTest文件,会分别出现这样的结果(不一定一样,类似):

spire-V5-471G:~/NVIDIA_CUDA-.5_Samples/bin/x86_64/linux/release$ ./deviceQuery ./deviceQuery Starting... CUDA Device Query (Runtime API) version (CUDART static linking) Detected CUDA Capable device(s) Device : "GeForce GT 620M"
  CUDA Driver Version 

/ Runtime Version 7.5 / 7.5

  CUDA Capability Major

/Minor version number: 2.1

  Total amount of global memory:                 

MBytes ( bytes) ( ) Multiprocessors, ( ) CUDA Cores/MP: CUDA Cores GPU Max Clock rate: MHz (1.25 GHz) Memory Clock rate: Mhz Memory Bus Width: -bit L2 Cache Size: bytes Maximum Texture Dimension Size (x,y,z) 1D=(), 2D=(, ), 3D=(, , ) Maximum Layered 1D Texture Size, (num) layers 1D=(), layers Maximum Layered 2D Texture Size, (num) layers 2D=(, ), layers Total amount of constant memory: bytes Total amount of shared memory per block: bytes Total number of registers available per block:

  Warp size:
Maximum number of threads per multiprocessor:
Maximum number of threads per block:
Max dimension size of a thread block (x,y,z): (

, , ) Max dimension size of a grid size (x,y,z): (, , ) Maximum memory pitch: bytes Texture alignment: bytes Concurrent copy and kernel execution: Yes with copy engine(s) Run time limit on kernels: No Integrated GPU sharing Host Memory: No Support host page-locked memory mapping: Yes Alignment requirement for Surfaces: Yes Device has ECC support: Disabled Device supports Unified Addressing (UVA): Yes Device PCI Domain ID / Bus ID / location ID: / /

  Compute Mode:
     

< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >


deviceQuery, CUDA Driver 

= CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.5, NumDevs = , Device0 = GeForce GT 620M Result = PASS

yinheyi@yinheyi-Aspire-V5-471G:~/NVIDIA_CUDA-.5_Samples/bin/x86_64/linux/release$ ./bandwidthTest [CUDA Bandwidth Test] - Starting... Running on... Device : GeForce GT 620M Quick Mode Host to Device Bandwidth, Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB/s) 2843.5

 Device to Host Bandwidth, 

Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB/s) 3316.7


 Device to Device Bandwidth, 

Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB/s) 13068.0


Result 

= PASS NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled. yinheyi@yinheyi-Aspire-V5-

好啦,cuda安装完成啦。

现在再安装一下GPU Deployment Kit,下载地址:http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda_352_79_gdk_linux.run ,安装方法与上面一样,直接运行它就可以啦,不多说啦。

安装BLAS:对于BLAS的依赖,我选择安装ATLAS(还可以通过安装MKL, or OpenBLAS),方法为:

sudo apt-get install libatlas-base-dev

安装Python以及依赖的库:一般我们的系统都自带我python, 我的版本为2.7.

虽然安装我python,但是很多需要的库并没有,我们可以进入我们下载的caffe包(可以在这里下载)里面,打开 caffe包里面的 /python/requirements.txt文件,这里面就是它的依赖的库,在该目录下,可以通过下面命令下载(如果直接输入命令不管用,可以把它写入到一个脚本里面):

for req in $(cat requirements.txt); do pip install $req; done

如果提示找不到 pip 命令,则说明没有 pip 这个工具,那么下载它: https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz,然后解压,里面有一个setup.py的文件,执行这个文件就可以安装pip了。

sudo python setup.py install

有些电脑可能会提示 no moudle name setuptools 的错误,这是没有安装setuptools的原因。那就需要先安装一下setuptools, 到https://pypi.python.org/packages/source/s/setuptools/setuptools-19.2.tar.gz 下载安装包setuptools-19.2.tar.gz,然后解压执行:

sudo python setup.py install

当我用pip下载相关的库文件时,发现下载的速度好慢,老是失败,后来想改一下镜像源(豆瓣),方法如下Debian8系统下,caffe的安装:在~目录下建立.pip文件夹,cd .pip后使用vi pip.conf建立pip的配置文件,输入如下内容:

[global] timeout =
index

-url = http://pypi.douban.com/simple/ [install] use-mirrors = true

mirrors 

= http://pypi.douban.com/simple/ trusted-host = pypi.douban.com

然后,可以下载啦,速度还不错。

 
 

另外还有个办法,那就是安装anaconda,我就是用的这个方法,anaconda里面已经包括了很多的库文件。

anaconda的下载安装:

我们可以查看anaconda的安装包里都包括什么:https://docs.continuum.io/anaconda/pkg-docs

下载地址:https://www.continuum.io/downloads#linux          (这里有 anaconda的所有版本:https://repo.continuum.io/archive/

安装时,参考官方文档:https://docs.continuum.io/anaconda/install

找到下载好的文件,我的为Anaconda2-4.1.1-linux-x86_64.sh文件,给它可执行权限,直接运行就好啦,在安装过程中,最好选择默认的安装路径,即~/anaconda2,最后安装完成后会出现“Installation finished.” and “Thank you for installing Anaconda!”信息。

安装以后,它会自动的在 ~/.bashrc文件中加入PTAH变量,打开确认一下,如果没有,自己添加如下内容:

#下面的路径对应自己安装的anaconda的路径,下面是我的路径: export PATH="${HOME}/anaconda2/bin:$PATH"

下面, 我们再加一下它的动态库的路径:

#下面是我的路径,根据自己的具体路径自己修改一下就好: export LD_LIBRARY_PATH="${HOME}/anaconda2/lib:$LD_LIBRARY_PATH"

好啦,现在安装完成啦。

最后,To import the caffe Python module after completing the installation, add the module directory to your $PYTHONPATH by export PYTHONPATH=caffe的路经/python:$PYTHONPATH .我的做法就是在.bashrc中加入PYTHONPATH经路经。我加的是:

PYTHONPATH=”~/home/yinheyi/caffe/python:$PYTHONPATH"

可能还需要安装一些相关依赖,运行如下命令安装:

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

安装OpenCV:我是在官网上http://opencv.org/下载的,然后自己编译(也可以通过apt-get install来安装,具体方法自己google),可以参才考http://docs.opencv.org/2.4.13/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation.

1,首先下载opencv for linux,然后unpack.

2,然后解决安装之前的依赖问题:

[compiler] sudo apt-get install build-essential [required] sudo apt-get install cmake git libgtk2.-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev [optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394--dev

以上第一个是需要的编译器,第二个是需要的依赖包,第三个是可选择的包。

3,进入我们 opencv-2.4.13目录下,创建一个 新的目录,比如名字为release,然后进入release下,cmake就好啦(cmake需要一些参数的,不会用cmake的,自己百度或google学),具体命令如下(我的文件在用户目录下,即~/,第):

cd ~/opencv-2.4. mkdir release cd release cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

上面最后行的参数可以改的。

进入release目录下,执行:

make sudo make install

配置openCV参数设置
在/etc/ld.so.conf.d/opencv.conf文件中加入一行:/usr/local/lib ,(加入动态库,不明白的可以自己百度一下ldconfig)
可能会没有opencv.conf这个文件,那我们就自己创建一个:
sudo touch /etc/ld.so.conf.d/opencv.conf,然后写入 /usr/local/lib就可以啦。
使用下面这条命令:
sudo ldconfig

最后,在~/.bashrc文件里,加入这么一行。

export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"

安装:cudnn,下载地址:https://developer.nvidia.com/cudnn(如果你的GPU的compute capability的能力小于3.0,就不需要cudnn来加速,否则后面安装caffe时会出错,下面已经提到)

cudnn是专门针对Deep Learning框架设计的一套GPU计算加速方案,目前支持的DL库包括Caffe,ConvNet, Torch7等。安装的基本原理是把解压后的相关文件复制到CUDA工具箱的相关目录下(官方文档:http://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html)。操作如下:

$ tar -xzvf cudnn-9.0-linux-x64-v7.tgz
$ 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*
 

在复制的过程中,或许需要注意软链接的问题。

现在OK啦。

安装caffe:

先进入caffe包里,然后复制一份名为Makefile.config.example的文件为Makefile.config.根据自己的情况配置一下Makefile.config. 下面是我自己的配置文件。然后,执行:

make all
make test
make runtest

OK,完成啦。

在make runtest时,因为用的是anaconda,如果出现了这样的错误:

awk: symbol lookup error: $HOME/anaconda2/lib/libreadline.so.: undefined symbol: PC

解决方法:try to remove readline in anaconda lib so as to use the default system one.

进入到 anaconda的 lib 路径下(可以不用进入这个路径的),运行如下代码:

conda remove --force readline

在make runtest时,出现了这样的类似的错误:

: [----------] tests from CuDNNConvolutionLayerTest/, where TypeParam = double
[ RUN      ] CuDNNConvolutionLayerTest

/.TestSimpleConvolutionGroupCuDNN F1014 ::30.083176 cudnn_conv_layer.cpp:] Check failed: status == CUDNN_STATUS_SUCCESS ( vs. ) CUDNN_STATUS_ARCH_MISMATCH *** Check failure stack trace: ***

    @     0x2b082d0a8daa

(unknown) @ 0x2b082d0a8ce4 (unknown) @ 0x2b082d0a86e6 (unknown) @ 0x2b082d0ab687 (unknown) @ 0x739689 caffe::CuDNNConvolutionLayer<>::LayerSetUp() @ 0x42c1f0 caffe::Layer<>::SetUp() @ 0x49d776 caffe::CuDNNConvolutionLayerTest_TestSimpleConvolutionGroupCuDNN_Test<>::TestBody() @ 0x68d613 testing::internal::HandleExceptionsInMethodIfSupported<>() @ 0x6840b7 testing::Test::Run() @ 0x68415e testing::TestInfo::Run() @ 0x684265 testing::TestCase::Run() @ 0x6875a8 testing::internal::UnitTestImpl::RunAllTests() @ 0x687837 testing::UnitTest::Run() @ 0x41e9d0 main @ 0x2b0831cf1ec5 (unknown) @ 0x4261c7 (unknown) @ (nil) (unknown) make: *** [runtest] Aborted (core dumped) caffe::NetTest_TestReshape_Test<>::TestBody() @ 0x68d613 testing::internal::HandleExceptionsInMethodIfSupported<>() @ 0x6840b7 testing::Test::Run() @ 0x68415e testing::TestInfo::Run() @ 0x684265 testing::TestCase::Run() @ 0x6875a8 testing::internal::UnitTestImpl::RunAllTests() @ 0x687837 testing::UnitTest::Run() @ 0x41e9d0 main @ 0x2b2a9f778ec5 (unknown) @ 0x4261c7 (unknown) @ (nil) (unknown) make: *** [runtest] Aborted (core dumped)

原因在于,我的显卡为GT620M,它的compute capability为2.1,而cuDNN requires a GPU with CUDA compute capability 3.x or higher ,所以呢,我要把Makefile.config中的 USE_CUDNN:=1注释掉,重新编译,执行如下:

make clean

make all -j4 make test -j4 make runtest -j4

具体看的自己的显卡的compute capability,可以在官网看:https://developer.nvidia.com/cuda-gpus

最后,如果用python 接口,请执行:

make pycaffe

打开python, import caffe成功。

如果出现:ImportError: No module named google.protobuf.internal

那就直接在终端中安装protobuf就好,执行:

pip install protobuf

现在再试,OK,可以啦。

最最后,如果py-faster-rcnn就不能正常导入caffe,把~/.bashrc中的anaconda的PATH路径去掉。(这是我看到的,我也不知道什么意思,写进去吧, 万一如果出现了可以作为参考)

终结!