写在前面
最近拿到了一台新机器,安装了Ubuntu16.04。原来在笔记本的Ubuntu16.04下配置成功过caffe(cpu only)机器matlab与python接口。
特将在新机器上配置caffe完整过程记录如下。
0.机器配置
- 处理器:Intel® Xeon(R) CPU E3-1231 v3 @ 3.40GHz × 8
- 内存:Kingston 32G
- 显卡:NVIDIA GeForce GTX 1070
显卡型号可以用这个命令查询:
lspci |grep VGA
机器配置查询参考 - 操作系统:Ubuntu17.04
1.Caffe下载
- 根据Caffe官网上给出的链接,在Github上下载Caffe的Zip压缩包
- 提取到Home目录下,文件夹名为caffe-master
2.编译前的准备
本部分根据Caffe官网Ubuntu下安装教程以及部分网络教程进行
2.1 General dependencies
执行此部分前最好先升级apt-get:
sudo apt-get update
然后分别执行下面两句:
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
(可能执行完这句后会再次提醒需要升级apt-get,再运行一遍升级命令就好了)
sudo apt-get install --no-install-recommends libboost-all-dev
此部分安装完成
2.2 安装NVIDIA显卡驱动
这部分耗费了一个下午的时间总算安装好了。
安装这部分的时候,先参考了《Ubuntu-安装-cuda7.0-单显卡-超详细教程》这篇文章(注意,不使用该文章中的方法安装Cuda,否则报错),按照二进制安装包安装的方式安装显卡驱动,一直报错,说kernel modules配置错误,错误报告很长,最后的部分如下:
错误报告:
scripts/Makefile.build:294: recipe for target '/tmp/selfgz6789/NVIDIA-Linux-x86_64-375.26/kernel/nvidia-drm/nvidia-drm-fence.o' failed
make[2]: *** [/tmp/selfgz6789/NVIDIA-Linux-x86_64-375.26/kernel/nvidia-drm/nvidia-drm-fence.o] Error 1
make[2]: Target '__build' not remade because of errors.
Makefile:1524: recipe for target '_module_/tmp/selfgz6789/NVIDIA-Linux-x86_64-375.26/kernel' failed
make[1]: *** [_module_/tmp/selfgz6789/NVIDIA-Linux-x86_64-375.26/kernel] Error 2
make[1]: Target 'modules' not remade because of errors.
make[1]: Leaving directory '/usr/src/linux-headers-4.10.0-19-generic'
Makefile:81: recipe for target 'modules' failed
make: *** [modules] Error 2
ERROR: The nvidia kernel module was not created.
ERROR: Installation has failed. Please see the file '/var/log/nvidia-installer.log' for details. You may find suggestions on fixing installation problems in the README available on the Linux driver download page at www.nvidia.com.
后来根据这篇文章,采用apt-get方式安装,成功,但步骤有所不同。
我的具体安装步骤如下:
2.2.1 禁用旧的显卡驱动
Ubuntu中自带了适用于NVIDIA显卡的nouveau驱动,但是与NVIDIA官方驱动相比还是有很大差距的,而且没有官方驱动的话,也不能使用Cuda和cudnn。nouveau驱动与官方驱动冲突,因此,需要在安装官方驱动之前禁用nouveau驱动。
之前尝试过网上建议较多的添加blacklist的方法,发现都不能完全将nouveau驱动禁用。查看nouveau驱动是否完全被禁用命令如下:
lsmod | grep nouveau
于是采用另外一种方法,成功去除nouveau驱动。
2.2.2 apt-get方式安装驱动
-
在命令行输入:
查看建议的驱动版本
ubuntu-drivers devices
采用有“recommended”那一行的驱动版本。 -
按“Ctrl+Alt+F1”,切换到tty1。注意,这里输入密码时不能用小键盘,用键盘上方的横排数字输入密码(密码中有数字的情况下)。
-
输入命令“
sudo su
”,切换到root模式 -
关闭显示器管理器,命令:
service lightdm stop
-
安装显卡驱动,命令:
apt-get install nvidia-375
-
安装完成,打开显示器管理器,命令:
service lightdm start
-
登录图形化界面,打开Terminal,输入
cat /proc/driver/nvidia/version
,查看显卡信息,如安装成功,如下所示:
-
NVIDIA显卡驱动安装完毕
2.3 安装Cuda
安装Cuda时可以退出tyy1了,回到图形界面。安装过程中曾经尝试用run方法,但是不知什么原因一直失败。因此直接采用deb方式安装Cuda。步骤如下:
- 安装依赖库
apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libgl1-mesa-dev libglu1-mesa libglu1-mesa-dev libxi-dev
-
选择配置,直接从网站中下载deb文件
- 根据官网提示的命令运行:
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
可以在/usr/local/中找到安装好的文件夹:
- 配置环境变量
命令:sudo gedit /etc/profile
在文件最后加上
PATH=/usr/local/cuda/bin:$PATH
export PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export LD_LIBRARY_PATH
命令:source /etc/profile
最好能够退出(Logout)当前账户再登录,以确保环境配置成功
- 检验
命令:nvcc --version
,出现下图结果:
- 安装cuda samples
直接参考这篇博客Cuda Samples安装部分。
注意,采用deb方式安装的Cuda,Sample文件夹不在home下,而直接保存在cuda目录中。
-
./deviceQuery执行结果
- Cuda安装测试完毕
2.4 安装Cudnn6
注意:CUDA9.1需要与Cudnn7配合使用
- 在官方网站注册账号之后即可下载。
- 采用下面的命令:
#解压文件
tar -zxvf cudnn-6.5-linux-x64-v2.tgz
#切换路径,复制文件
cd cuda
sudo cp lib/* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
#更新软连接
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.6
sudo ln -s libcudnn.so.6.0.20 libcudnn.so.6
sudo ln -s libcudnn.so.6 libcudnn.so
- 在官网上没有找到cudnn Sample,先不测试。
- cudnn安装完成
2.5 安装MKL
- 首先在官网申请免费下载。需要用edu结尾的邮箱申请。
-
很快邮箱中会收到一封包含下载链接和序列号的邮件,直接点击链接进入下载页面即可下载。如下图:
- 下载完成后,使用
sudo tar -xvf
命令解压文件夹,阅读安装指导pdf。 - 根据安装手册,首先到官网进行序列号注册。
- 注册完成后,采用GUI方式安装mkl。运行install_GUI.sh文件。这里根据安装指导和需要一步步安装就好了。
- 安装完成后,使用source命令添加环境变量,命令
source /[path to your intel]/intel/mkl/bin/mklvars.sh intel64
。为了方便,我直接把该命令添加到~/.bashrc文件中了,每次启动命令行可以添加好环境变量。 - mkl安装完成
2.6 安装Matlab
(我之前在byr上下载了MatlabR2017A安装包,没想到现在byr不能登录了。。。)
(好像2017版本的matlab不能接入caffe,我在make matcaffe的时候总有问题,所以暂时只是安装好了MATLAB,没有做与caffe的借口)
安装包包括三个文件,分别是R2017a_glnxa64_dvd1.iso,R2017a_glnxa64_dvd2.iso,和Crack文件夹。网络上其他版本基本上也是如此,比较常见的是一个ISO文件和一个Crack文件夹,安装过程类似。
- 首先要阅读Crack文件夹中的Readme文件,里面有序列号以及安装指导。
- 安装过程主要参考这篇博客
- 主要使用以下几个命令:
sudo mkdir /media/matlab #新建文件夹
sudo mount -o loop [path]/[ISO文件] /media/matlab #两个ISO的话,先加载dvd1即可,dvd2以后用
sudo /media/matlab/install #运行安装文件
sudo umount /media/matlab #安装完成后取消挂载
- 安装完成后,用命令:
sudo chmod -R a+w /××××/×××/matlab
把matlab所在的文件夹改成读写状态,进行破解 - 将Crack文件夹中的licence文件复制到安装目录下的licence文件夹内
Use license_standalone.lic to activate, or copy license_standalone.lic to %installdir%\licenses\ ,and run matlab without activation
- 将Crack文件夹中 /R2017a/bin/glnxa64/libmwservices.so 复制到安装目录下的对应文件夹中
after the installation finishes copy the folders to %installdir% to overwriting the originally installed files
-
到这里就安装+破解完成。在Terminal中执行 ./%installdir%/bin/matlab 就可以运行Matlab了
2.6 安装Opencv
- github上已经有人写好了脚本,可以直接根据需求下载安装。
- 需要说明的是,如果直接安装最新版本,会安装到opencv3,如果想安装opencv2的话,可以进入相应的目录,运行对应的脚本进行安装。可以参考这个博客。
- 我直接运行的脚本进行的安装,安装完成后用
pkg-config --modversion opencv
命令查看opencv版本,如下图:
- opencv安装完成
3.编译caffe
第二部分介绍了caffe编译前的各种准备工作,全部安装完成后,就可以进行caffe的编译了。
- 首先进入caffe-master文件夹,直接采用caffe官网上提供的cmake方式进行编译。
In lieu of manually editing Makefile.config to configure the build, Caffe offers an unofficial CMake build thanks to @Nerei, @akosiorek, and other members of the community. It requires CMake version >= 2.8.7. The basic steps are as follows:
mkdir build
cd build
cmake .. -DBLAS=MKL
这里由于我用了mkl,所以加上了‘-DBLAS=MKL’这一限制
make all -j
'-j'是为了采用多核进行编译,速度较快。还可以在j后面加上数字限制核的数量。如‘-j8’
make install -j
make runtest -j
make pycaffe
配置caffe的python接口
在编译caffe的时候我开始用了make方式,一直报错。采用cmake之后很顺利,没有遇到问题。至此caffe编译完成,可以运行了。
4.mnist例子测试
- mnist测试的例子网上有很多,例如这篇,可参考此步骤。
-
测试结果:
训练开始
训练结束 - caffe运行成功,16秒完成10000次循环,正确率可达99.05%
5.以上就是配置caffe全过程,如有疏漏,以后补充。
注:开始配置的时候是在Ubuntu17.04上,后来更换了16.04的系统。安装步骤一样。只是文中配图还有一些是原来安装的截图,但不影响结果。在16.04系统上完全可用。
网友评论