洋洋洒洒一大篇,就没截图了,这几天一直在折腾这个东西,实在没办法,不想用Linux但是,为了Caffe,只能如此了,安装这些东西,遇到很多问题,每个问题都要折磨很久,大概第一次就是这样的。想想,之后应用,应该还会遇到很多问题吧,不过没办法了,骑虎难下!!这里有个建议是,如果将来要做大数据集,最好事先给Linux留多点空间,比如Imagenet,估计500G都不为过。另外,请阅读完,至少一个部分再进行动手操作,避免多余的工作,写作能力有限,尽请见谅。
这篇安装指南,适合零基础,新手操作,请高手勿要吐槽!
简单介绍一下:Caffe,一种Convolutional Neural Network的工具包,和Alex的cuda-convnet功能类似,但各有特点。都是使用C++ CUDA进行底层编辑,Python进行实现,原作不属于Ubuntu 12,也有大神发布了Windows版,但其他相关资料较少,不适合新手使用,所以还是Ubuntu的比较适合新手。(相对而言)
本文主要包含5个部分,包括:
第一部分 Linux安装
第二部分 nVidia驱动和CUDA Toolkit的安装和调试
第三部分 Caffe的安装和测试
第四部分 Python安装和调试
第五部分 Matlab安装和调试
- 第一部分 Linux安装
PS:今天还是重新装了,把home分区扩大到500G。所以建议真的要大数据实验的小伙伴,也趁早考虑。
删除所有域名服务器,保留:nameserver 127.0.0.1
- 第二部分:nVidia驱动和CUDA Toolkit的安装和调试
二、Verify You Have a Supported Version of Linux
三、Verify the System Has gcc Installed
四、Download the NVIDIA CUDA Toolkit
五、Handle Conflicting Installation Methods
六、Graphical Interface Shutdown
七、Interaction with Nouveau
1. 将nouveau添加到黑名单,防止它启动
$ sudo vi nvidia-graphics-drivers.conf
写入:blacklist nouveau
检查:$ cat nvidia-graphics-drivers.conf
2. 对于:/etc/default/grub,添加到末尾。
$ sudo vi /etc/default/grub
末尾写入:rdblacklist=nouveau nouveau.modeset=0
保存并退出: wq!
检查:$ cat /etc/default/grub
3. 官网提供的操作:
$ sudo update-initramfs -u
PS:其实,这一连串的工作,有点没搞懂,因为有的命令和文件不存在。原理理解了,但是步骤还是有点模糊,不过,我是照上面的操作完成了,后面的也没出问题,应该应付过去了吧。
八、Installation
鉴于安装过程中遇到的一些问题和启示,建议先安装官方最新版的显卡驱动,然后再安装CUDA,这里可能是CUDA内置的驱动不太完整,或者适应性差了一点。GTX显卡驱动的下载地址如下(Tesla版的驱动,请大家自己去nVidia的官网下载):
下载地址:
http://www.geforce.cn/drivers
$ sudo sh ./NVIDIA-Linux-x86_64-340.24.run
切换到cuda_6.5.11_rc_linux_64.run 所在的目录,然后执行安装命令:
$ sudo sh cuda_6.5.11_rc_linux_64.run
再次提醒,安装前一定要执行 md5sum ,我第一次安装就是执行了,发现不一样,然后没有理它直接安装,导致安装的Sumary里显示Driver成功,Toolkit和Samples失败,第二次在装就好了。
至于如果发现md5检测不一致,怎么办?别逗了,去nVidia重新下载就行了,地球人都知道,别无限循环就好^_^!
安装完会提示丢失了四个库:libGLU.so, libx11.so, libxmu.so, libxi.so 这个木有关系,下一步就是解决这个问题的。
九、Extra Libraries
十、驱动装完了,可以回到GUI界面了,也可以继续留这里玩文本。。。
十一、POST-INSTALLATION ACTIONS
这一步就是验证一下安装是否正确,编译和完成以下CUDA自带的程序,建议做一下~
$ export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH
2. (Optional) Install Writable Samples
3. Verify the Installation
b. Compiling the Examples
次日,这里安装完,就可以编译了,切换目录到~/NVIDIA_CUDA-6.5_Samples,记性没问题的话,应该还记得它是安装在Home文件夹的,穿越过去就好了,然后执行:
$ make
c. Running the Binaries
$ ./deviceQuery
PS:如果测试的时候出现说运行版驱动和实际驱动不符(英文原文不记得了,没记下来),原因可能是因为后面安装的nvidia-cuda-toolkit更新了配置文件,所以和原始的Cuda-Samples的配置或者是驱动程序有变化,所以检测无法编译通过。考虑下面的解决方法:
1. 卸载现有驱动
$ sudo nvidia-installer --uninstall
2. 下载合适版本的驱动,并安装:
下载地址:
http://www.geforce.cn/drivers
$ sudo sh ./NVIDIA-Linux-x86_64-340.24.run3. 重装CUDA Toolkit
$ sudo sh cuda_6.5.11_rc_linux_64.run
好了,到这里所有nVidia CUDA的安装就结束了,下面看看Caffe如何安装
- 第三部分 Caffe的安装和测试
一、安装BLAS,这里可以选择(ATLAS,MKL或者OpenBLAS),我这里使用MKL,首先下载并安装英特尔® 数学内核库 Linux* 版MKL,下载链接是:https://software.intel.com/en-us/intel-education-offerings,可以下载Student版的,先申请,然后会立马收到一个邮件(里面有安装序列号),打开照着下载就行了。下载完之后,要把文件解压到home文件夹(或直接把tar.gz文件拷贝到home文件夹,为了节省空间,安装完记得把压缩文件给删除喔~),或者其他的ext4的文件系统中。
$ tar zxvf cpp_studio_xe_2013_sp1_update3.tar.gz (如果你是直接拷贝压缩文件过来的)
$ chmod a+x /home/username/cpp_studio_xe_2013_sp1_update3 -R
$ sudo ./install_GUI.sh
2. 记得把解压后的studio_xe软件包丢到home下,或者干脆直接在home里解压,注意这里它是保存在home/username, 这里的username是你的用户名。这一步主要是,让安装程序处于linux的文件系统中,为了修改权限做保证。
$ sudo passwd root
二、MKL与CUDA的环境设置
$ cd /etc/ld.so.conf.d
/opt/intel/mkl/lib/intel64
2. 新建cuda.conf,并编辑之:
$ sudo vi cuda.conf
3. 完成lib文件的链接操作,执行:
三、安装OpenCV
2. 切换到文件保存的文件夹,然后安装依赖项:
3. 安装openCV,因为不知道有什么区别,所以就安装最新版opencv2_4_8吧,有偏好可以根据自己的要求进行设置:
保证网络畅通,因为软件需要联网这里时间较长,请耐心等待。。。,所以就安四、安装其他依赖项
$ ./ configure
$ sudo make install
2. 其他依赖项,确保都成功
如果安装过程中出现错误,E: Sub-process /usr/bin/dpkg returned an error code (1),可能是因为sudo apt-get install出现到意外,不用着急,可以试试这个解决办法:
$ cd /var/lib/dpkg
$ sudo mv info info.bak
$ sudo mkdir info
$ sudo apt-get --reinstall install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
五、安装Caffe并测试
$ make test
$ sudo apt-get install protobuf-c-compiler protobuf-compiler
2. 提示“src/caffe/util/math_functions.cu(140): error: calling a host function("std::signbit ") from a globalfunction("caffe::sgnbit_kernel ") is not allowed”
解决办法:
得到作者,大神Yangqing Jia的回复,解决方法如上,没有二致。
六、使用MNIST数据集进行测试
$ sudo sh ./get_mnist.sh
2. 重建LDB文件,就是处理二进制数据集为Caffe识别的数据集,以后所有的数据,包括jpe文件都要处理成这个格式
$ sudo sh ./create_mnist.sh
3. 训练mnist
$ sudo sh ./train_lenet.sh
至此,Caffe安装的所有步骤完结,下面是一组简单的数据对比,实验来源于MNIST数据集,主要是考察一下不同系统下CPU和GPU的性能。可以看到明显的差别了,虽然MNIST数据集很简单,相信复杂得数据集,差别会更大,Ubuntu+GPU是唯一的选择了。
- 第四部分 Python安装和调试
$ sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
/usr/lib/python2.7/dist-packages/numpy/core/include
PYTHON_LIB := /usr/local/lib
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
3. 这里非常重要的是,为了确保支持Caffe Notebook里的程序,需要使用到IDE环境,并且支持iPython输出。
- 第五部分 Matlab安装和调试
由于该软件为商业软件,请大家自行寻找,安装学习,并确保不使用做商业目的,下载24小时删除......
(PS:我的原则是能GUI就GUI,喜欢CMD的可以参照执行)
4. 安装
5.创建快捷方式
2. 选择安装目录:/usr/local/MATLAB/R2014a
6.配置Caffe
修改文件:Makefile.config
MATLAB_DIR := /usr/local/MATLAB/R2014a
7.编译Matlab用到的caffe文件
$ make matcaffe
PS:我安装过程中遇到的一些问题
第二部分,第七步,官方提供的操作没有执行,后面也没有出错。
第三部分,一安装BLAS,由于ubuntu14.04安装cpp_studio_xe_2013_sp1_update3.tar.gz 有问题,所以安装的parallel_studio_xe_2015_update3。
安装前先执行sudo apt-get install build-essential, sudo apt-get install lib6-dev, sudo apt-get install g++-multilib, sudo apt-get install libc6-dev-i386, sudo apt-get install libstdc++6
若安装libboost-all-dev出错,则改安装libboost1.55-all-dev
3. 安装openCV 安装opencv2.4.9
注意,中途可能会报错
opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization解决方法在此: http://code.opencv.org/issues/3814 下载 NCVPixelOperations.hpp 替换掉opencv2.4.9内的文件, 重新build(即重新运行一遍
sudo ./opencv2_4_9.sh。
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
如果提示: make: protoc: 命令未找到,那是因为protoc没有安装,安装一下就好了。
$ sudo apt-get install protobuf-c-compiler protobuf-compiler
我用的方法
http://www.cnblogs.com/cj695/p/4498270.html
装好后 创建文件/etc/ld.so.conf.d/libprotobuf.conf
写入 /usr/local/lib
sudo ldconfig
protoc --version检查是否安装成功
六、使用MNIST数据集进行测试
新的caffe要在caffe的主目录下进行,否则会出错
安装matlab
http://www.linuxidc.com/Linux/2014-04/100644.html
sudo ./install_auto_linux.sh自动安装
命令行启动matlab
cd /usr/local/bin/
sudo ln -s /usr/local/MATLAB/R2013a/bin/matlab matlab
Ubuntu下两个gcc版本切换
Ubuntu系统使用的gcc版本随着发布版本的不同而不同,在编译Android系统时不同的版本推荐用不同的gcc去编译,那么可不可以改变系统的gcc来适应android编译环境的需求呢?答案是可以的。
先看看我们系统用的gcc和g++是什么版本
gcc -v
可以获得的信息如下
gcc version 4.4.6 (Ubuntu/Linaro 4.4.6-11ubuntu2)
如果我们想使用gcc4.5怎么办?首先看看有没有安装gcc4.5,
ls /usr/bin/gcc*
结果只有/usr/bin/gcc /usr/bin/gcc-4.4两个,那么我们需要安装
sudo apt-get install gcc-4.5 gcc-4.5-multilib g++-4.5 g++-4.5-multilib
安装好后输入以下指令:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.5 40
接着输入:
sudo update-alternatives --config gcc
会看到如下的选项
有 3 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。
选择 路径 优先级 状态
------------------------------------------------------------
* 0 /usr/bin/gcc-4.4 50 自动模式
1 /usr/bin/gcc-4.4 50 手动模式
2 /usr/bin/gcc-4.5 40 手动模式
3 /usr/bin/gcc-4.6 30 手动模式
要维持当前值[*]请按回车键,或者键入选择的编号:
要想用哪个gcc就输入编号吧。
同样也要设置一下g++的
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.5 40
如果想删除可选项的话可以键入以下指令:
sudo update-alternatives --remove gcc /usr/bin/gcc-4.5
再用gcc -v 来看一下版本是否改变了。
mex问题