Ubuntu 18.04 caffe GPU
第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
- 有一定几率安装失败而导致后续步骤出现问题,所以要确保以上依赖包都已安装成功,验证方法就是重新运行安装命令,如验证 git cmake build-essential是否安装成功共则再次运行以下命令:
sudo apt-get install git cmake build-essential
界面提示如下则说明已成功安装依赖包,否则继续安装直到安装成功。
-
[email protected]:~$ sudo apt-get install git cmake build-essential
-
正在读取软件包列表... 完成
-
正在分析软件包的依赖关系树
-
正在读取状态信息... 完成
-
build-essential 已经是最新版 (12.1ubuntu2)。
-
cmake 已经是最新版 (3.5.1-1ubuntu3)。
-
git 已经是最新版 (1:2.7.4-0ubuntu1.1)。
-
下列软件包是自动安装的并且现在不需要了:
-
lib32gcc1 libc6-i386
-
使用'sudo apt autoremove'来卸载它(它们)。
-
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 94 个软件包未被升级。
第2步 禁用 nouveau
安装好依赖包后需要禁用 nouveau,只有在禁用掉 nouveau 后才能顺利安装 NVIDIA 显卡驱动,禁用方法就是在 /etc/modprobe.d/blacklist-nouveau.conf 文件中添加一条禁用命令,首先需要打开该文件,通过以下命令打开:
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
打开后发现该文件中没有任何内容,写入:
blacklist nouveau option nouveau modeset=0
保存时命令窗口可能会出现以下提示:
** (gedit:4243): WARNING **: Set document metadata failed: 不支持设置属性 metadata::gedit-position
无视此提示~,保存后关闭文件,注意此时还需执行以下命令使禁用 nouveau 真正生效:
sudo update-initramfs -u
第3步 配置环境变量
同样使用 gedit 命令打开配置文件:
sudo gedit ~/.bashrc
打开后在文件最后加入以下两行内容:
-
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
保存退出。
Install CUDA
CUDA Toolkit 10.0 Archive
linux x86_64 Ubuntu 18.04 rinfile(local)
Download Installer for Linux Ubuntu 18.04 x86_64
Base Installer |
Installation Instructions: | |
|
STEP1:CUDA官网选择适合自己系统的版本下载。
我的系统是Ubuntu18.04、64位,选择CUDA10版本如下:
STEP2:安装CUDA
在命令行中键入:
sudo sh cuda_10.0.130_410.48_linux.run
一直按Enter直至把声明读完(太多了吧!)
如果驱动是独立安装了,一定要选择不安装驱动!选择如下:
会提示:
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 10.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run -silent -driver
这是因为我们在安装CUDA的时候没有选择安装驱动,提示需要安装驱动,忽略就行。
STEP3:添加环境变量:
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存并退出
source ~/.bashrc
STEP4:测试是否安装成功
上面的选项选择安装了CUDA例子,运行其中一个来测试是否安装成功:
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
结果如下就表明成功啦
STEP5:安装CUDNN
在官网下载安装包,需要注册登录才能下载。选择适合自己的版本
下载完成后解压并进入文件夹:
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
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
在终端查看CUDNN版本:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
安装 opencv3.4.5
进入官网 : http://opencv.org/releases.html , 选择 3.4.5 版本的 source , 下载 opencv-3.4.5.zip
解压到你要安装的位置,命令行进入已解压的文件夹 opencv-3.4.5 目录下,执行:
-
mkdir build # 创建编译的文件目录
-
cd build
-
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
-
make -j8 #编译
安装 caffe
首先在你要安装的路径下 clone :
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 文件内容:
1.应用 cudnn
-
将
-
#USE_CUDNN := 1
-
修改成:
-
USE_CUDNN := 1
2.应用 opencv 版本
-
将
-
#OPENCV_VERSION := 3
-
修改为:
-
OPENCV_VERSION := 3
3.使用 python 接口
-
将
-
#WITH_PYTHON_LAYER := 1
-
修改为
-
WITH_PYTHON_LAYER := 1
4.修改 python 路径
-
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
如果最后提示不支持compute_20,就把这句删掉,最后效果是
-
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
-
-gencode arch=compute_35,code=sm_35 \
-
-gencode arch=compute_50,code=sm_50 \
-
-gencode arch=compute_52,code=sm_52 \
-
-gencode arch=compute_60,code=sm_60 \
-
-gencode arch=compute_61,code=sm_61 \
-
-gencode arch=compute_61,code=compute_61
这里贴出 方便大家参考
然后修改 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
Caffe源码中安装Python的必要项
# 在终端输入
cd /home/caffe/python
for req in $(cat requirements.txt); do pip install $req; done
6.4. 编译
# 进入caffe的根目录下
cd /home/caffe
sudo make clean
sudo make all -j4 //(-j4表示使用4核处理器执行当前指令)
sudo make test -j4 //最好加上sudo防止有些文件的访问权限不够
sudo make runtest -j4
此步可能会报错,解决方法参见博客:Ubuntu18.04 LTS下Caffe-GPU版本安装常见错误
sudo make pycaffe -j4 //配置pycaffe
返回上一目录,输入Python测试
Congratulations!Caffe-GPU编译成功!
7. MNIST 模型
#进入Caffe根目录
cd /home/caffe
7.1. 数据集准备
#下载数据集
sudo ./data/mnist/get_mnist.sh
#转换数据格式
sudo ./examples/mnist/create_mnist.sh
7.2. 数据集训练
#训练
sudo ./examples/mnist/train_lenet.sh
#训练完成后如下所示:
7.3. 数据集测试
有三种接口可以进行数据集测试,分别是命令行、Python和MATLAB,笔者采用命令行进行测试。
在在caffe根目录下创建文件。在终端输入:
touch test_lenet.sh
sudo gedit test_lenet.sh
在文件中添加:
./build/tools/caffe.bin test -modelexamples/mnist/lenet_train_test.prototxt -weightsexamples/mnist/lenet_iter_10000.caffemodel -iterations 100
#在终端执行
sudo sh test_lenent.sh
Congratulations!测试成功!至此,Caffe-GPU版本安装测试完毕!