Caffe安装手册(Ubuntu 18.04+CUDA 9.0+Anaconda2)

Caffe安装 Ubuntu 18.04+CUDA 9.0+Anaconda2

一、 关于Caffe

Caffe是一个常用的深度学习框架,具有表达力强、速度快和模块化的思想,由伯克利视觉学习中心(Berkeley AI Research,BVLC)和社区贡献者开发。Yangqing Jia在加州大学伯克利分校攻读博士期间创建了这个项目。Caffe主要应用在视频、图像处理方面的应用上。

二、 安装环境

OS:Ubuntu 18.04 LTS
Python:Anaconda2-5.2.0-Linux-x86_64(Python 2.7)
NVIDIA Driver:390.48
CUDA:9.0(包括Patch 1-3)
cuDNN:v7.0.5
OpenCV:3.2.0
Boost:1.65

三、 安装步骤

1. 安装和配置Anaconda2

1.1 下载Anaconda2

下载地址:https://www.anaconda.com/download/#linux,选择Python 2.7版本下载,文件为.sh后缀

1.2 安装
进入到.sh文件的目录,打开终端运行:

bash Anaconda2-5.2.0-Linux-x86_64.sh

按Enter完成End User License Agreement的浏览,输入yes同意协议:
EULA
确认默认安装路径(/home/username/anaconda)或指定安装路径:
安装路径
输入yes确认将Anaconda2添加到环境变量:
环境变量
输入no跳过安装VSCode,完成安装:
跳过安装
1.3 切换默认Python为Anaconda2
运行以下命令,其中/usr/local/anaconda2为安装路径

sudo update-alternatives --install /usr/bin/python python /usr/local/anaconda2/bin/python2 100
sudo ldconfig

运行python可以看到已经切换为Anaconda2 Python:

注:该命令可以切换Python版本:

sudo update-alternatives --config python

2. 安装NVIDIA驱动

2.1 更新软件源

sudo apt-get update
sudo apt-get upgrade

2.2 安装驱动

通过以下命令查看待安装的驱动:

ubuntu-drivers devices

自动进行驱动安装:

sudo ubuntu-drivers autoinstall

重新启动完成安装:

sudo reboot

2.3 验证安装
运行命令以下命令,可以看到GPU信息:

nvidia-smi

nvidia-smi

3. 降级GCC版本

由于Ubuntu 18.04自带GCC 7.0版本过高,与CUDA 9.0可能存在兼容性问题,因此需要进行降级,具体步骤如下:

3.1 安装GCC 5.5.0

sudo apt-get install gcc-5 g++-5

3.2 切换默认GCC版本

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50

3.3 验证GCC版本

gcc --version

gcc-version

4. 安装CUDA

4.1 安装依赖库

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev
sudo apt-get install libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

4.2 下载CUDA 9.0
下载Base Installer和3个Patch,下载地址:
https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1704&target_type=deblocal

4.3 安装
进入到下载完成的安装文件路径,依次运行以下命令:

sudo dpkg -i cuda-repo-ubuntu1704-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update-2_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update-3_1.0-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

如果出现以下错误:

The following packages have unmet dependencies:
cuda : Depends: cuda-9-0 (>= 9.0.176) but it is not going to beinstalled
E: Unable to correct problems, you have held broken packages.

原因可能为Ubuntu的源存在问题,可以进行以下步骤:
1) 备份原始源文件:

sudo cp /etc/apt/sources.list /etc/apt/sources_backup.list

2) 打开源列表:

sudo vim /etc/apt/sources.list

3) 在最后加入以下内容:

deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse

4) 重新更新源和并安装CUDA:

sudo apt-get update
sudo apt-get install cuda

在/usr/local目录下可以看到cuda和cuda-9.0两个文件夹,表明安装成功。

4.4 环境变量配置
1) 打开环境变量文件:

sudo vim ~/.bashrc

2) 加入以下内容,其中CUDA_HOME为上一步所看到的路径:

export CUDA_HOME=/usr/local/cuda-9.0
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CUPTI/lib64:$LD_LIBRARY_PATHs
export PATH=/usr/local/cuda-9.0/bin:$PATH

3) 更新变量:

source ~/.bashrc

4.5 验证安装

运行以下命令,可以看到CUDA的版本:

nvcc -V

nvcc
1)进入例子文件

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

2)执行make命令

sudo make 

3) 运行Demo

./deviceQuery

如果结果有GPU的信息,说明安装成功。
deviceQuery

5. 安装cuDNN

5.1 下载cuDNN

下载与CUDA 9.0对应的Linux版本,下载地址:https://developer.nvidia.com/rdp/cudnn-archive
cudnn
5.2 解压并安装

tar -xvzf 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*

6. 安装Caffe

6.1 安装依赖库

sudo apt install caffe-cuda
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev
sudo apt-get install 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

6.2 下载Caffe
在将要安装Caffe的路径打开终端,运行:

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

6.3 配置Caffe
1) 进入Caffe目录,复制模板文件:

cd caffe
sudo cp Makefile.config.example Makefile.config

2) 对Caffe的Makefile.config进行修改:

sudo vim Makefile.config

3) 取消第5行注释,使用cuDNN:
usecudnn
4) 取消第21行注释,使用OpenCV 3:
opencv
5) 将37和38行内容注释,修改后为:
3738
6) 将51行附近BLAS改为open:
51
7) 将70和71行附近的PHTHON_INCLUDE注释,修改下方ANACONDA_HOME为之前的安装路径,取消注释ANACONDA_HOME下方的PHTHON_INCLUDE,如下图所示:
7071
8) 修改第87行附近的PYTHON_LIB:
87
9) 取消注释94行附近的WITH_PYTHON_LAYER:
94
10) 修改97和98行附近的变量为:

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

9798
11) 对Makefile进行修改:

sudo vim Makefile

12) 将第415行修改为:

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

415
13) 进入caffe的python目录

cd python 

14) 运行以下命令,安装剩下的依赖(可能部分有错,可以尝试忽略)

for req in $(cat requirements.txt); do pip install $req; done
sudo pip install --upgrade pip
pip install python-dateutil==2.6.1
pip install argparse
pip install msgpack

注:如果遇到Import Error:cannot import name main,可以参考第四章第3节解决。

6.4 编译和安装Caffe
1)进入Caffe目录,依次运行以下命令(其中6为CPU的核心数,根据实际配置修改):

sudo make clean

2)编译

sudo make all -j6

makeall
3)编译测试

sudo make test -j6

maketest
4)拷贝库文件(其中HOME/anaconda2为Anaconda2的安装路径)

sudo cp $HOME/anaconda2/lib/libhdf5_hl.so.100.1.0 /usr/lib/
sudo cp $HOME/anaconda2/lib/libhdf5_hl.so.100.1.0 /usr/lib/x86_64-linux-gnu/
sudo cp -s $HOME/anaconda2/lib/libhdf5.so.101.1.0 /usr/lib/libhdf5.so.101
sudo cp -s $HOME/anaconda2/lib/libhdf5.so.101.1.0 /usr/lib/x86_64-linux-gnu/libhdf5.so.101
sudo ldconfig

6.5 验证安装
1)测试1:自带测试
在Caffe目录运行

sudo make runtest -j6

测试结果通过如下图所示:
runtest

2)测试2:基于数据集的测试
下载数据集:

sudo ./data/mnist/get_mnist.sh

转换数据格式:

sudo ./examples/mnist/create_mnist.sh

训练:

sudo ./examples/mnist/train_lenet.sh

train
在Caffe目录下创建文件,并修改内容:

touch test_lenet.sh
sudo vim test_lenet.sh

文件内容为:

./build/tools/caffe.bin test -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -iterations 100

测试:

sudo sh test_lenet.sh

测试正常的结果如下图:
test
6.6 安装和测试pycaffe
1)安装pycaffe
在Caffe目录运行:

sudo apt-get install python-numpy
sudo apt-get install graphviz
pip install pydot
sudo make pycaffe -j6

2)编辑环境变量

sudo gedit ~/.bashrc

3)将下面内容加入到打开文件的最后(其中/home/fan/Documents/caffe为caffe的路径)

export PYTHONPATH=/home/fan/Documents/caffe/python:$PYTHONPATH

4)刷新

source ~/.bashrc

5)测试1:自带测试

sudo make pytest

pytest
6)测试2:其他测试

python
import caffe

如果不报错即pycaffe安装正确

四、 其他

如出现以下错误:
/sbin/ldconfig.real: /usr/lib/libhdf5_hl.so.100 is not a symbolic link
解决步骤:

cd /usr/lib
sudo mv libhdf5_hl.so.100 libhdf5_hl.so.100.org
sudo ln -s libhdf5_hl.so.100.org libhdf5_hl.so.100
sudo ldconfig

2. 常见错误:CUDACC_VER is no longer supported

主要原因:CUDA与Eigen3的版本不兼容,其中的变量名不一致
解决步骤:
1)打开Eigen的头文件

sudo vim /usr/include/eigen3/Eigen/src/Core/util/Macros.h

2)将第402行中的

defined __CUDACC_VER__ && __CUDACC_VER__ >= 80000

替换为

defined __CUDACC_VER_MAJOR__ && __CUDACC_VER_MAJOR__ >= 8

3)将第416行中的

defined(__CUDACC_VER__) && (EIGEN_COMP_CLANG || __CUDACC_VER__ >= 70500)

替换为

defined(__CUDACC_VER_MAJOR__) && (EIGEN_COMP_CLANG || __CUDACC_VER_MAJOR__ >= 7)

4)将第815行中的

defined(__CUDACC_VER__)

替换为

defined(__CUDACC_VER_MAJOR__)

5)完成后重新执行出错之前的命令

3. 常见错误:pip时Import Error: cannot import name main

可能的原因: pip更新后库里面的函数有所变动
解决步骤:
打开pip文件:

sudo vim /usr/bin/pip

将其中的:

from pip import main
if __name__ == '__main__':
    sys.exit(main())

替换为:

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

4. 其他可能需要的依赖

pip install protobuf==2.6.1

5. 多GPU环境

需要安装NCCL,参考安装步骤:
https://zhuanlan.zhihu.com/p/33714726

五、 参考资料

[1] https://blog.csdn.net/cau_ayao/article/details/80578600
[2] https://blog.csdn.net/CAU_Ayao/article/details/80582900
[3] https://blog.csdn.net/cham_3/article/details/72141753

猜你喜欢

转载自blog.csdn.net/zf6770/article/details/81222826