Ubuntu16.04系统 GPU1070Ti下搭建Caffe++Nvidia显卡驱动+Cuda9.0+Cudnn7.0.5
前言 :
为了能跑个深度学习特意买了一台式机,其实主要是想用cuda来加速,我的机器显卡是1070Ti,买的时候激情澎湃左挑右选,到货后更是热血沸腾的开始了caffe深度学习环境的搭配,但是激情和热血很快就被配置学习环境中各种曲折和困难给消磨掉了,以至于后来都不想配置caffe了,其实开始确实不怎么想用caffe,想用TF,但公司在用caffe。虽然caffe和TF各有所长,但caffe在安装过程中的各种坑确实招致很多人的吐槽,假如你是个新手也没有其他限制,建议安装TF吧,毕竟这些就是一个库和工具,真正困难和难搞的是一些算法、工程实践过程。
总之caffe的GPU深度学习环境的搭配确实一条坎坷曲折的道路,如果你一次搞定,那确实很厉害了,多少估计也有些运气的成分(在网上找到或参考的配置资料,正好适用你)。
caffe的GPU深度学习环境的搭配为啥这么坎坷啦?caffe GPU配置的大致过程:
安装Ubuntu-->安装一堆依赖库-->安装Nvidia显卡驱动(Nvidia的显卡驱动安装确实蛋疼,不知道这么大个公司怎么这个都搞不好)-->安装cuda-->配置cudnn-->安装opencv及接口-->编译caffe
这是一个串联的过程,在编译caffe之前任何一个小误差,都可能将导致失败,其中最困难当属cuda的安装配置。并且很多人对这配置过程都没啥经验,虽然找到的参考资料上的机器、GPU啥的都一样,也照着参考一步步来着,结果中间出现了各种错误,这更别提参考的资料上的机器、GPU不一样的情况了。其实这主要是由下面原因造成的:
1、不细心+不耐心
如果ubuntu已经安装好,其他软件包下载准备好的情况,感觉最快也得2小时左右吧,因此这个配置过程有些长,最好是抽空一天来配置它,不要中断,断断续续的配置更容易出错,在配置过程中一定要有耐性。如果多次配置还是没决绝问题,还不如从头开始在配。很多时候推倒重来比在原来错误道路上折腾来的快。
2、参考资料中作者有疏漏或记录不全
网上的博客或文章不乏优秀的和记录详细的,但有些作者还是有疏漏的,我觉的最好还是参考官网的安装和配置过程来比较好,
啰嗦了这么多其实就是想主要把配置caffe的一些思考和一些放之四海而皆准的学习经验总结一下。下面就把配置的一些要点做些记录和说明,这里假设已经安装好了Ubuntu16.04。
预先安装的一些工具和库:
git : sudo apt-get install git
cmake : sudo apt-get install cmake
build-essential: sudo apt-get install build-essential
一、安装Nvidia显卡驱动过程
ubuntu下安装Nvidia显卡驱动确实很不人性化。
首先进入官网驱动下载地方:https://www.nvidia.com/Download/index.aspx?lang=en-us
1、Nvidia显卡驱动的选择和下载
我在NVIDIA Driver Downloads下的Option 1下选择了我显卡参数和当前操作系统,然后单机SEAECH,就会出现如下图:
这是支持1070Ti最新的驱动,好像我当时看到还有其他的版本不知这会儿又看不到了。点击DOWNLOAD下载它。
2、安装Nvidia显卡驱动(最好把下载的驱动放置在home下)
2.1、在终端输入:sudo gedit /etc/modprobe.d/blacklist.conf
2.2、在打开的文件最后一行添加:blacklist nouveau
此条语句表示讲自带驱动加入黑名单,然后保存此文件,保存时命令窗口可能会出现以下提示:
** (gedit:4243): WARNING **: Set document metadata failed: 不支持设置属性 metadata::gedit-position,无视此提示~,保存后关闭文件
2.3、在终端中输入:sudo update-initramfs -u
此时禁用 nouveau 才真正生效
2.4、重启电脑后,在终端键入:lsmod | grep nouveau
可以查看nouveau有没有运行,没有输出表示禁止生效了
2.5、进入shell命令行界面 (Ctrl+Alt+F1-F4命令行界面,Ctrl+Alt+F7 可以回到图形化界面),输入用户名和密码,
然后键入:sudo service lightdm stop
2.6、在shell命令行中执行:
cd ~ #我的驱动文件放置在home下
sudo chmod a+x 驱动文件 #赋予文件权限
sudo sh 驱动文件 #安装驱动
2.7、重启电脑后,进入终端,键入:nvidia-smi
如果会显示信息说明正确安装。
在安装驱动中一些好的博客或文章放置于此:
1、Linux安装NVIDIA显卡驱动的正确姿势 https://blog.****.net/wf19930209/article/details/81877822
2、https://blog.****.net/qq_31261509/article/details/78755968
3、https://blog.****.net/ghw15221836342/article/details/79571559#commentBox
二、安装CUDA9.0过程
1、CUDA9.0的下载
首先进入官网:https://developer.nvidia.com/cuda-toolkit-archive
然后,点击CUDA Toolkit 9.0 (Sept 2017), Online Documentation,进入下面:
选好你的系统及配置,在此我参考的博客使用的run版本,其他版本没试过
2、CUDA9.0的安装
cuda的安装特别需要注意的是:
在正式安装选择时,一定要先知道当选择选项 Install NVIDIA Accelerated Graphics Driver for nvidia*时候选择取消(cuda是自带驱动的,但前面我们以手动安装过了驱动了,至于为啥不用自带的驱动我也不清楚,参考的博客很多都是选择手动安装驱动),其他选项选择yes,或则回车,并且查看协议时候有快捷键CART + D 进行翻页
cuda安装过程参考的文章或博客:
1、Ubuntu16.04 + Caffe + CUDA + cudnn 的配置详细教程&& Ubuntu18.04 可用
https://blog.****.net/qq_31261509/article/details/78755968
2、CentOS6.7 + GTX1070Ti + CUDA 9.0 + cuDNN 7.0.5搭建深度学习环境
https://blog.****.net/zryowen123/article/details/80054605
3、https://blog.****.net/10km/article/details/61915535
cuda安装中出现诸如:
Installing the CUDA Toolkit in /usr/local/cuda-8.0 …
Missing recommended library: libGLU.so
Missing recommended library: libX11.so
Missing recommended library: libXi.so
Missing recommended library: libXmu.so
按第3篇博客解决就行。不过弄好了后需要在按照前面的过程安装一次cuda就行
三、cudnn7.0.5配置
cudnn的下载确实有点费事,需要在官网注册个账号,但注册过程由于连外网经常中断,所以会有些恼火。而且和cuda9.0搭配的cudnn版本也有好多个,为了少走弯路,我还是按照参考的博客来选择cudnn7.0.5,其他应该没问题,没有试过。
1、cudnn7.0.5下载及安装
首先去官网:https://developer.nvidia.com/rdp/cudnn-archive
然后点击,Download cuDNN v7.0.5 (Dec 5, 2017), for CUDA 9.0,出现如下(红色圈区域是我选择的安装方式):
我在此参考官网的,点击:cuDNN Install Guide,你将在其中看到如下图所示:
教程中提供了两种安装方式,我选择第二种即deb文件安装。网上的博客大多选择第一种的tar文件安装,而且还有软连接,不管选择那种感觉还是按照官网的指导文件安装好些。
2、安装成功检测
cudnn安装成功与否,有个检验方式,这个在指导文件中也有说明,如下图:
按照说明执行这几条命令就可以了。
在执行第4条即./mnistCUDNN命令,出现:
/mnistCUDNN: error while loading shared libraries: libcudart.so.9.0: cannot open shared object file: No such file or directory
解决方法参考:https://blog.****.net/weixin_39123145/article/details/81979270
sudo cp /usr/local/cuda-9.0/lib64/libcudart.so.9.0 /usr/local/lib/libcudart.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcublas.so.9.0 /usr/local/lib/libcublas.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcurand.so.9.0 /usr/local/lib/libcurand.so.9.0 && sudo ldconfig
四、OpenCV3.3.1及opencv_contrib的安装配置
为了后面方面,一次性把contrib也配置了,免得需要的时候又来折腾。
OpenCV的安装及配置网上有很多博客,在此只稍微整理汇总一下:
1、OpenCV官网:https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html,官网的安装指导过程很详细
2、http://www.cnblogs.com/klchang/p/7510526.html
3、https://blog.****.net/qq_21033779/article/details/77567919
其实最主要是配置cmake的一些参数,我需要配置python接口,参数如下:
-
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-
-D CMAKE_INSTALL_PREFIX=/usr/local \
-
-D INSTALL_PYTHON_EXAMPLES=ON \
-
-D INSTALL_C_EXAMPLES=ON \
-
-D OPENCV_EXTRA_MODULES_PATH=/home/dq/opencv-3.3.1/opencv_contrib-3.3.1/modules \
-
-D PYTHON_EXECUTABLE=/usr/bin/python \
-
-D BUILD_EXAMPLES=ON ..
五、caffe的安装与配置
caffe的安装配置最好还是参照官网来配置,我在此只罗列我注意的地方
1、caffe 依赖库的安装
-
boost : sudo apt-get install --no-install-recommends libboost-all-dev
-
gflags : sudo apt-get install libgflags-dev
-
glog : sudo apt-get install libgoogle-glog-dev
-
LevelDB : sudo apt-get install libleveldb-dev
-
LMDB : sudo apt-get install liblmdb-dev
-
ProtoBuf : sudo apt-get install libprotobuf-dev
-
ProtoBuf compiler: sudo apt-get install protobuf-c-compiler protobuf-compiler
-
HDF5 : sudo apt-get install libhdf5-serial-dev
-
snappy : sudo apt-get install libsnappy-dev
-
OpenBlas : sudo apt-get install libopenblas-dev
-
atlas : sudo apt-get install libatlas-base-dev
-
选择性安装:
-
opencv : sudo apt-get install libopencv-dev #我们前面安装了OpenCV3.3.1这里就不要安装这个库了
其实这些库安装去官网复制命令然后运行就可以了,我之所以把这些库一个个单独列出来是因为我当初在在安装中少了库然后瞎折腾了好些,所以单独列一下吧,确保每一个都安装正确。
2、配置文件的修改及pycaffe编译
配置文件的修改及编译我也是参考网上的,在此只给出链接:
1、https://blog.****.net/yhaolpz/article/details/71375762
2、https://blog.****.net/qq_31261509/article/details/78755968
3、https://blog.****.net/zryowen123/article/details/80054605
这几篇博客中基本都一样,但我在修改中没有修改 /usr/local/cuda/include/host_config.h 文件 ,因为我的这个文件是空的
六、caffe中的mnist示例
caffe 安装后一般需要进行测试一下,我们选用mnist来测试一下,这个可以参考:
https://blog.****.net/lingyunxianhe/article/details/85014912
好了至此就算配置完了caffe并初步感受了下caffe的运行过程,据说这是一个很不错的框架,如此就开始一段新的学习旅程吧
最后非常感谢那些无私分享他们配置过程的那些网友。