首页 > 技术文章 > ubuntu16.04.01 CUDA8.0安装Caffe

HugoLester 2017-03-02 12:19 原文

 

Ubuntu16.04系统下CUDA8.0配置Caffe教程

由于最近安装了Ubuntu16.04,苦于之前配置Caffe的教程都在版本14.04左右,无奈只能自己摸索,最终配置成功。本文教程的特点是不需要降级gcc的版本,毕竟cuda7.5不支持gcc5以上(默认不支持,实际支持),避免出现一系列乱七八糟的问题,反正之前我是碰到了。 
本文是在参考caffe官网教程以及http://www.linuxidc.com/Linux/2015-07/120449.htm结合自己总结经验而来,对此表示感谢。

1. 所需文件下载 
1.1 Ubuntu16.04在官网下载,然后在windows下用UltraISO制作,相关文章搜索有一大片,此处不再赘述。 
1.2 cuda8.0,下载的版本是ubuntu16.04的run文件,个人感觉比较方便。 
1.3 cudnn5.0,进去之后如果有注册过nvidia的账户直接点击download,否则需要注册一个账户,注册完之后有一个调查,随便选几个钩就可以,然后下一步是接受条款开始就可以下载了。 
1.4 caffe下载就在官方的github下载就可以了 
2. 显卡驱动安装 
2. 直接在ubuntu系统设置,软件和更新里面,选择中国的服务器源刷新之后,点击附加驱动选项,在Nvidia Corporation选择367,然后点击应用更改,下载安装完之后重启。 

安装显卡驱动后可以用nvidia-smi测试

出现这个界面就说明安装成功了,但是之后你要在系统设置的电源选项里面设置不要挂起,就是各种不要挂起,但是我的是笔记本,合盖的时候还是会挂起,

挂起之后,只能强制关机,然后冷启动。

我的电脑可能太独特了(我的电脑是Alienware15r2),有时候扬声器有声音,有时候没有声音,线性耳机是一直没有声音,没有声音的时候,我就用蓝牙耳机连接才能有声音,重启的话,得看人品,有时候好使,有时候还是没声音。

 如果你的电脑配置一般,恰巧想换电脑的话,奉劝你不要买预装windows的电脑,现在的电脑都是win10,体验很差,安装ubuntu后也是各种驱动不兼容,不如直接买Mac,虽然贵了点,但是还是很好用的,进行深度学习的训练可以安装虚拟机跑cpu版本,或者ssh连接服务器进行训练。

3. Cuda8.0安装 
3.1 以文件名为cuda.run为例,终端下输入 
sh cuda.run --override 启动安装程序,此处有大量的条款,一路空格到最后 输入accept,依次输入y回车,然后n(不安装显卡驱动),然后一路y回车,有一个地方需要输入密码,还有两个地方确认安装路径,直接回车即可,完成安装,默认安装路径是/usr/local 
将下载下来的cudnn-8.0-linux-x64-v5.0-ga.tgz 解压之后,解压后的cuda文件夹先打开里面的include文件夹,空白右键在终端打开输入: 
sudo cp cudnn.h /usr/local/cuda/include/ 
cd ~/cuda/lib64 
sudo cp lib* /usr/local/cuda/lib64/ 
继续更新文件链接

cd /usr/local/cuda/lib64/ 
sudo rm -rf libcudnn.so libcudnn.so.5 
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5 
sudo ln -s libcudnn.so.5 libcudnn.so
 
然后设置环境变量 
sudo gedit /etc/profile 
在末尾加入 
PATH=/usr/local/cuda/bin:$PATH 
export PATH
 
保存之后创建链接文件 
sudo vim /etc/ld.so.conf.d/cuda.conf 
键盘按i进入编辑状态,添加文字 
/usr/local/cuda/lib64 
然后按esc,输入:wq保存退出。 
终端下接着输入 
sudo ldconfig 使链接生效

4. 生成Cuda Sample测试 
首先在此之前先把需要的依赖包都安装好,为接下来make caffe做准备 
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 libatlas-base-dev 
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev 
然后开始make samples ,终端下 
/home/lester/NVIDIA_CUDA-8.0_Samples
sudo make all -j4 
cd /home/lester/NVIDIA_CUDA-8.0_Samples 
sudo make all -j4 
这就应该开始make了,此处大约有5、6分钟。完成之后 
cd /home/lester/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release

./deviceQuery 
会出现类似以下的信息 

< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) > 
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GTX 750 Ti
Result = PASS
 
这就说明成功了。

5. Python配置 
将之前github下载的caffe压缩文件解压缩到任一目录,然后安装python 
python的版本安装有两种方式: 
第一是直接安装anaconda,去官网下载 ,选择linux 64bit 2.7版本下载安装,anaconda安装方便但是需要在最后的make配置文件中更改python包含路径。 
第二种方法就是使用原生的python2.7版本,终端下 
sudo apt-get install python-pip 安装pip 
这里我们用pip安装一些python需要的依赖包,不过为了避免各种问题,也可以通过apt-get安装,反正我这两种方式都安装了一遍(-.-) 
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
以caffe默认解压到/home/user(你的用户名)/ ,文件夹名名称caffe为例 
cd /home/user/caffe/python 
sudo su 
for req in $(cat requirements.txt); do pip install $req; done 
这里用pip安装可能速度很慢,很可能下载好几个小时,推荐用清华大学的pip源临时安装,所以命令改为如下: 
for req in $(cat requirements.txt); do pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done 
这里如果第一次有很多红字错误,建议再运行几遍指导安装成功,对于黄字提示无需理会,可能是pip版本需要更新。

6.NCCL安装(貌似是用于多显卡并行加速用的)

这个直接git clone https://github.com/NVIDIA/nccl

cd nccl/

make CUDA_HOME=<cuda install path> test

举个例子,我运行的命令是make CUDA_HOME=/usr/local/cuda test

vim /etc/profile

于文件末尾处添加你的nccl动态库路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/hugo/nccl/build/lib

sourch ~/.bashrc

./build/test/single/all_reduce_test 10000000

sudo make install

sudo ldconfig

然后应该就可以了

我在nccl这里安装借鉴的是http://www.cnblogs.com/darkknightzh/p/5717234.html

 

7. Caffe编译过程 

我的caffe是直接下载压缩包然后解压的,直接使用git克隆,会又莫名其妙的问题,我就没管它,反正直接下载压缩包再解压不报错
接下来要进入最后的步骤了,终端中 
cd /home/user/caffe 
cp Makefile.config.example Makefile.config 
gedit Makefile.config 
将USE_CUDNN := 1 取消注释,在 
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include后面打上一个空格 然后添加/usr/include/hdf5/serial 如果没有这一句可能会报一个找不到hdf5.h的错误

就像这样,你可以直接复制粘贴过去

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/lib


PYTHON_INCLUDE := /usr/include/python2.7 \ 
  /usr/lib/python2.7/dist-packages/numpy/core/include
先不做更改。 

如果你电脑上有多个相同型号的显卡,并且安装了nccl,那么去掉USE_NCCL=1之前的注释。
第二,在make过程中还会报一个ld找不到libhdf5 和libhdf5_hl的链接问题,这个原因可能也是因为hdf5的问题,首先看/usr/lib/x86_64-linux-gnu 目录下有没有libhdf5.so和libhdf5_hl.so,如果有的话,查看属性是否有正确的链接(正常情况下应该是没有这两个文件),然后右键在终端中打开 
sudo ln libhdf5_serial.so.10.1.0 libhdf5.so 
sudo ln libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so 
注意,10.1.0和10.0.2可能不同电脑安装版本不同,注意看当前目录下存在的文件然后 
sudo ldconfig 生效 
接下来就是直接编译的过程 
cd /home/user/caffe 
make all -j4 
make test -j4 
make runtest 
make pycaffe 
make matcaffe 
如果编译没报错正常的话,基本就没问题了。测试python打开 

我到这一步import caffe 是找不到模块的,然后就有了第8步
8. 使Caffe的python接口永久生效

sudo gedit /etc/profile
profile最后添加: export PYTHONPATH=/root/$CAFFE_ROOT/python:$PYTHONPATH
source /etc/profile

在命令行直接输入caffe显示找不到命令

sudo gedit ~/.bashrc

在最后添加上export PATH=/home/你的用户名/caffe/build/tools:$PATH

 

source ~/.bashrc


注意:

有一些python库没有安装,在import caffe测试时会出错,常见的库缺失错误:

ImportError: No module named skimage.io

执行命令

easy_install scikit-image

sudo pip install scikit-image

9.运行训练mnist网络问题

cd /caffe/data/mnist

./get_mnish.sh

回到caffe目录下

./excamples/mnist/create_mnist.sh(这条命令一定要在caffe根目录下运行,不知道为什么,不在根目录运行就说找不到文件,坑爹)

./excamples/mnist/train_lenet.sh

然后在命令行上就可以看到mnist训练集的训练情况了

如果你看不懂显示的是什么,可以看我的其他博客

 

经过三天的无法导入numpy模块,中间我试过将Pyhton2.7.12升级到2.7.13,卸载Python,卸载模块,各种方法,然后还是不好使,我在咒骂ubuntu和caffe之后选择了屈服,重装ubuntu,竟然好使了,之前也是莫名其妙就不好使了,唉,坑啊。。。。。。。。。

我参考了这两篇博客,有些是直接复制过来的,加入了一点我遇到的错误和解决方法。

http://www.cnblogs.com/balmy/p/5742872.html

http://blog.csdn.net/g0m3e/article/details/51420565

有-时-会-需-要-一-些-越-(-f-a-n-)-狱(q-i-a--n-g)-才-能-看-的-资-料,-可-以-使-用-蓝-灯-,-专-业-版-速-度-更-快,

可-以-输-入-我-的-邀-请-码- H9WHX5 -来-获-得-三-个-月-的-蓝-灯-专-业-版-!-立-即-下-载- https://github.com/getlantern/forum

推荐阅读