admin管理员组

文章数量:1530085

感谢欧新宇的分享,此配置贴大部分参考他的博客。

http://ouxinyu.github.io/Blogs/20140723001.html

 

     此贴历经坎坷,一入DL深似海啊,配个caffe玩玩足足折腾了我半个多月,就在我想放弃之时,峰回路转,成功了,其中心酸只有自己知道啊。起初安装ubuntu因为引导问题折腾了一三天左右,然后各种方式安装及引导ubuntu手到擒来,半小时搞定。然后开始在笔记本安装cuda,出现各种问题不说,最终无法进入GUI折腾了近一个星期,其间重装了不下15次系统,最后才发现好像是optimus双显卡的问题,也罢,直接卸载也不愿在笔记本上折腾了。再然后在单显卡台机上安装cuda,非常顺利,接着开始安装各种依赖库及配置环境,遇到问题疯狂google(百度真心不行啊),这样折腾了有一个星期之久,最终遇到一个连google都搜不到的问题,思考半晌,考虑放弃这么高大上的东西了。在不忍删除辛苦安装的系统用再生龙备份之余,想想试试ubuntu12.04,结果虽然遇到不少问题,都曲折的解决了,最终一天终于搞定了,一把鼻涕一把泪啊!我想应该是属于比较倒霉的,跟着别人的教程按部就班,但是每一步都出现问题,本人又是linux新手,出现问题只能google,所以浪费了太长时间。现在回头想想,好像真的没什么地方很难解决的,理应一天时间搞完的,最多有一些版本之间的冲突,真心觉得时间花费的有点不值。总之,成功了,也是醉了。。。


     简单介绍一下:Caffe,一种Convolutional Neural Network的工具包,和Alex的cuda-convnet功能类似,但各有特点。都是使用C++ CUDA进行底层编辑,Python进行实现,原作不属于Ubuntu 12,也有大神发布了Windows版,但其他相关资料较少,不适合新手使用,所以还是Ubuntu的比较适合新手。


    本人为Linux新手,安装ubuntu和cuda折腾了一个多星期,起初是因为ubuntu安装导致引导失效,中途每次都需要手动引导进入系统,然后安装cuda失败后用ultraISO制作U盘启动重新安装才恢复正常。至于安装过程可以参考:http://blog.sciencenet/home.php?mod=space&uid=1583812&do=blog&id=839793


一、CUDA Toolkit的安装和调试 这里其实可以参考nVidia 官方提供的CUDA安装手册,全英文的,我就是参考这个文档完成后面的配置和验证工作。https://developer.nvidia/rdp/cuda-65-rc-toolkit-download#linux。一般要输入你的用户名和密码,就是下载6.5的那个账号。 1、Verify You Have a CUDA-Capable GPU 执行下面的操作,然后验证硬件支持GPU CUDA,只要型号存在于 https://developer.nvidia/cuda-gpus,就没问题了 $ lspci | grep -i nvidia 2、Verify You Have a Supported Version of Linux $ uname -m && cat /etc/*release 重点是“ x86_64”这一项,保证是x86架构,64bit系统 3、Verify the System Has gcc Installed $ gcc --version 4、Download the NVIDIA CUDA Toolkit 下载地址: https://developer.nvidia/cuda-toolkit 在根目录下新建cuda_install文件夹,把run文件放进去 mkdir cuda_install 验证地址: https://developer.nvidia/rdp/cuda-rc-checksums $ md5sum filename 例如:md5sum cuda_6.5.14_linux_64.run,然后与官网核对 5、安装必要的一些库和头文件文件 sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 如果有依赖冲突的,建议分开安装。 6、Handle Conflicting Installation Methods 根据官网介绍,之前安装的版本都会有冲突的嫌疑 所以,之前安装的Toolkit和Drievers就得卸载,屏蔽,等等(因为我是新系统,没有安装过nvidia驱动,所以此步可以省略) sudo apt-get --purge remove nvidia* 7、Graphical Interface Shutdown 退出GUI,也就是X-Win界面,操作方法是:同时按:CTRL+ALT+F1(F2-F6),切换到TTY1-6命令行模式。 关闭桌面服务: $ sudo stop lightdm 8、Interaction with Nouveau     这是卡住本人将近一个星期的问题,我原来用的是笔记本,双显卡,装了不下二十次,不管按照何种方法,最终装完cuda之后图形界面就只剩下墙纸,只有鼠标可以动,进不了桌面还打不开终端,最后换了一个台式机,半天所有东西全部搞定。原来以为是nouveau过于顽固,怎么样都卸不掉,之后顿悟,可能是optimus显卡问题,默认3D渲染由nvidia独显完成,而2D渲染由intel集显完成,但是我的机子是华硕的,BIOS里面无法关闭集显(貌似thinkpad可以),所以没有进一步尝试,反正台式机环境搭好了。     如果遇到以上问题,可以移步: http://wenku.baidu/link?url=hjEIoYx-spMxyrU-zy057bOBb4dtYUc7s6bj8CM-TTJ4-QPQTmc9KX3DQ0ZZCfhJpkar0To8y54Cc2gR8LwTOLRCQ8TS4iUUPXavaw7o2Eu     可能装了这个bumblebee显卡调节程序可能解决问题,也可以参考此贴: http://wwwblogs/bsker/archive/2011/10/03/2198423.html     还有一个之前没找到的帖子,白白浪费了那么长时间。。。用prime解决这个问题 http://wwwblogs/zhcncn/p/3989572.html     百度经验也有: http://jingyan.baidu/article/046a7b3efe8c58f9c27fa98b.html Nouveau是一个开源的显卡驱动,Ubuntu 14.04 默认安装了,但是它在nvidia驱动安装过程中会有冲突,所以要禁用它。 以下是欧新宇同学的过程,反正我按照这个没有成功,大家可以试试,因为在第三步中我的boot文件夹里没有initramfs,只有initrd,重新生成initrd貌似不起作用,这就是linux新手的悲哀,出了问题完全不知道原因。如果有高人指点一下,小弟感激不尽! (1)将nouveau添加到黑名单,防止它启动 $ cd /etc/modprobe.d
$ sudo vi nvidia-graphics-drivers.conf 写入:blacklist nouveau 保存并退出: wq! 检查:$ 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)官网提供的操作:(感觉上这一小步,可以略过,不执行,执行了也会报错) sudomv/boot/initramfs (uname -r).img /boot/initramfs-$(uname -r)-nouveau.img 然后重新生成initrd文件 sudodracut/boot/initramfs (uname -r).img $(uname -r)
$ sudo update-initramfs -u 上面那条是nVidia官方提供的命令,不知道为什么在我这里会提示dracut是不存在的命令,也许是版本问题,或者少了什么包,不过无所谓,第二条命令也可以搞定,应该是一样的功能。 我试过在ubuntu12.04下安装,只要修改/etc/modprobe.d/blacklist.conf就可以解决问题,可是ubuntu14.04中这个文件是只读的,所以我就给它添加了写的权限,强制修改了。 sudo chmod +w /etc/modprobe.d/blacklist.conf sudo vi /etc/modprobe.d/blacklist.conf 在里面加入: blacklist nouveau options nouveau modeset=0 由于试过很多种方法,最终是哪种方法成功禁用了nouveau,说实话我还真不记得了,大家可以互相交流。 测试nouveau是否被禁用成功很简单: (1)重启之后明显感觉画质变差 (2)lsmod | grep nouveau,如果显示为空,那么就是卸载成功了。 9、Installation 默认情况下,可以跳过显卡驱动的安装,直接安装CUDA,因为它包含了Drivers,Toolkit和Sample三个部分,但是如果出现问题,可以尝试二次安装CUDA或者利用官方的显卡驱动,来进行处理。GTX显卡驱动的下载地址如下(Tesla版的驱动,请大家自己去nVidia的官网下载): 下载地址: http://www.geforce/drivers $ sudo sh ./NVIDIA-Linux-x86_64-340.24.run (Optional) 切换到cuda_6.5.14_linux_64.run 所在的目录,然后执行安装命令: $sudo cd cuda_install $ sudo sh cuda_6.5.11_rc_linux_64.run 再次提醒,安装前一定要执行 md5sum ,如果不一样会导致安装的Sumary里显示Driver成功,Toolkit和Samples失败,需要重新下载run文件。 这里会一路问你各种问题,基本上就是Accept-yes-Enter-yes-Enter-yes-Enter, 接受协议,安装的默认位置确认。 10、驱动装完了,可以回到GUI界面了 $ sudo start lightdm (在这里又出现问题,开机重启后进不了GUI,估计是显卡版本有问题,本机配置Nvidia Quadro K600显卡,官网下载专用驱动,按以上步骤重新安装,在CUDA安装过程中的第一步提示是否安装显卡驱动选择no) 检查显卡是否安装成功可以用命令 sudo apt-get install mesa-utils glxinfo | grep -i nvidia 11、POST-INSTALLATION ACTIONS 这一步就是验证一下安装是否正确,编译和完成以下CUDA自带的程序,建议做一下~ (1)Environment Setup exportPATH=/usr/local/cuda6.5/bin: PATH
exportLDLIBRARYPATH=/usr/local/cuda6.5/lib64: LD_LIBRARY_PATH 环境变量配置完,使用nvcc -V命令检查cuda是否安装正确,这里开始使用普通用户操作,始终提示没有安装cuda toolkit,最后改到root用户下就显示成功了。 (2)(Optional) Install Writable Samples $ cuda-install-samples-6.5.sh 安装到Home下,搞定了之后可以在GUI下调整一下,主要是前面的要求,会有一个Sample的文件夹 NVIDIA_CUDA-6.5_Samples在Home的根目录下就ok了。因为后面编译测试各方面什么的方便。其实如果之前安装CUDA驱动和Toolkit一切正常,这一步基本可以省略,应该会自动建立,但检查一下无妨。 (3)Verify the Installation a. 验证驱动的版本,其实主要是保证驱动程序已经安装正常了 $ cat /proc/driver/nvidia/version b. Compiling the Examples $ nvcc -V 不出意外的话应该会提示,nvcc没有安装,其实就是,nvidia-cuda-toolkit的编译器没有安装完整,总之,根据提示继续就好了 $ sudo apt-get install nvidia-cuda-toolkit 这里安装完,就可以编译了,切换目录到~/NVIDIA_CUDA-6.5_Samples: $ cd /home/username/NVIDIA_CUDA-6.5_Samples
$ make c. Running the Binaries 运行编译好的文件,例如看看设备的基本信息和带宽信息: $ cd /bin/x86_64/linux/release
$ ./deviceQuery
$ ./bandwidthTest PS:如果测试的时候出现说运行版驱动和实际驱动不符,原因可能是因为后面安装的nvidia-cuda-toolkit更新了配置文件,所以和原始的Cuda-Samples的配置或者是驱动程序有变化,所以检测无法编译通过。考虑下面的解决方法: (1)卸载现有驱动 $ sudo nvidia-installer --uninstall (2)下载合适版本的驱动,并安装: 下载地址: http://www.geforce/drivers $ sudo sh ./NVIDIA-Linux-x86_64-340.24.run (3)重装CUDA Toolkit $ sudo sh cuda_6.5.11_rc_linux_64.run Nvidia Cuda安装结束 二、Caffe的安装和测试 对于Caffe的安装严格遵照官网的要求来: http://caffe.berkeleyvision/installation.html 1、安装BLAS 这里可以选择(ATLAS,MKL或者OpenBLAS),我这里使用MKL,首先下载并安装英特尔® 数学内核库 Linux* 版MKL,下载链接是: https://software.intel/en-us/intel-education-offerings,可以下载Student版的,先申请,然后会立马收到一个邮件(里面有安装序列号),打开照着下载就行了。下载完之后,要把文件解压到home文件夹,或者其他的ext4的文件系统中。 接下来是安装过程,先授权,然后安装: $ tar zxvf parallel_studio_xe_2015.tgz (如果你是直接拷贝压缩文件过来的) $ chmod a+x /home/username/parallel_studio_xe_2015 -R
$cd parallel_studio_xe_2015 $ sudo ./install_GUI.sh 然后进入图形安装模式,跟windows差不多,其中序列号就是邮箱发过来的那个。这里使用root权限安装。 $ sudo passwd root 2、MKL与CUDA的环境设置 文件夹切换到/etc/ld.so.conf.d,并进行如下操作 (1)新建intel_mkl.conf, 并编辑之: $ cd /etc/ld.so.conf.d
$ sudo vi intel_mkl.conf 加入:/opt/intel/lib/intel64         /opt/intel/mkl/lib/intel64 (2)新建cuda.conf,并编辑之: $ sudo vi cuda.conf 加入:/usr/local/cuda/lib64         /lib (3) 完成lib文件的链接操作,执行: $ sudo ldconfig -v (这里我按照这样的方法最终编译出现cblas找不到的问题,应该是MKL安装有问题,但是又没办法解决,最终我就按照官网的方法安装了ATLAS
sudo apt-get install libatlas-base-dev 一句话就搞定,虽然性能可能比不上MKL,但是将就着能用就行。 ) 3、安装OpenCV (1)这里我用他的方法发现报错,所以按照依赖包以正常方式安装 sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev 这里libtiff4-dev出现依赖错误,于是分开安装就解决了。 (2)根据官网提示,还要安装python,于是: sudo apt-get install python-pip sudo apt-get install python-dev sudo apt-get install python-numpy (3)下载官网opencv压缩包,我下载的是opencv-3.0.0-alpha.zip,移动到主目录下,解压: unzip opencv-3.0.0-alpha 然后执行以下命令: cd opencv-3.0.0-alpha mkdir release cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. (这里可能会遇到CMakeList.txt找不到的问题,把“..”换成CMakeList.txt的所在目录opencv-3.0.0-alpha就可以了) make sudo make install 这个过程时间比较久,耐心等待。。。 下面配置library,打开/etc/ld.so.conf.d/opencv.conf,加入/usr/local/lib: sudo su vi /etc/ld.so.conf.d/opencv.conf
sudo ldconfig -v 然后更改变量: sudo gedit /etc/bash.bashrc 添加: PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH 至此opencv安装配置完成,最后随便写个hello.cpp,包含#include <opencv2/core/core.hpp>进行测试,在命令行输入: g++ hello.cpp -o hello `pkg-config --cflags --libs opencv` 编译不报错就说明配置正确,其中有个问题弄了半天要注意, 这个命令中的单引号不是平常的单引号,而是键盘上tab键上面那个符号
(在14.04下opencv安装还算顺利,但是后来转到12.04下安装opencv-3.0.0出现一堆错误,折腾了很长时间,最终换成opencv-2.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/issues/3814,重新下载 NCVPixelOperations.hpp取代opencv2.4.9中的即可。
如果遇到这个错误,参考 http://www.foreverlee/    /usr/bin/ld: cannot find -lcufft    /usr/bin/ld: cannot find -lnpps    /usr/bin/ld: cannot find -lnppi    /usr/bin/ld: cannot find -lnppc    /usr/bin/ld: cannot find -lcudart 编译命令改为 g++ -L /usr/local/cuda/lib64/ hello.cpp -o hello `pkg-config --cflags --libs opencv`4、安装其他依赖项 (1) Google Logging Library(glog),下载地址: https://code.google/p/google-glog/,然后解压安装: $ tar zxvf glog-0.3.3.tar.gz $cd glog-0.3.3 $ ./configure $ make $ sudo make install 如过没有权限就chmod a+x glog-0.3.3 -R , 或者索性 chmod 777 glog-0.3.3 -R , 装完之后,这个文件夹就可以kill了。 (历经坎坷,最终ubuntu14.04由于不知名错误实在无法解决,投入到了ubuntu12.02的怀抱。 这里需要安装另外两个依赖项:gflags、lmdb。不装之后编译会出问题。 参考: http://www.shwley/index.php/archives/52/ # glog wget https://google-glog.googlecode/files/glog-0.3.3.tar.gz  tar zxvf glog-0.3.3.tar.gz  cd glog-0.3.3 ./configure  make && make install  # gflags wget https://github/schuhschuh/gflags/archive/master.zip  unzip master.zip  cd gflags-master  mkdir build && cd build  export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1 make  sudo make install  # lmdbgit  clone git://gitorious/mdb/mdb.git  cd mdb/libraries/liblmdb  make && make install ) (2)其他依赖项,确保都成功 $ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev 如果安装过程中出现错误,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 如果使用的是2014年9月之后的新版Caffe,对于ubuntu 14.04来说,需要安装以下依赖文件: $ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler 5、安装Caffe并测试 1. 切换到Caffe的下载文件夹,然后执行: $ cp Makefile.config.example Makefile.config 修改新生成的Makefile.config文件,修改“ BLAS := mkl”(我这里装的就是ATLAS,所以不用改,使用默认配置就行)。 希望使用nVidia开发的cuDNN来加速Caffe模型运算的同学,在安装完cuDNN之后,确保Makefile.config文件中的 USE_CUDNN := 1处于启用状态。幸运的是,新版的Caffe已经默认集成了cuDNN的库文件,不需要做额外的设置了。 cuDNN的安装方法如下: cuDNN Introdution and Download 下载cuDNN之后解压,进入解压后的文件夹: $ sudo cp cudnn.h /usr/local/include
$ sudo cp libcudnn.so /usr/local/lib
$ sudo cp libcudnn.so.6.5 /usr/local/lib
$ sudo cp libcudnn.so.6.5.18 /usr/local/lib 链接cuDNN的库文件 $ sudo ln -sf /usr/local/lib/libcudnn.so.6.5.18 /usr/local/lib/libcudnn.so.6.5 不做链接,可能会出现这个报错:“./build/tools/caffe: error while loading shared libraries: libcudnn.so.6.5: cannot open shared object file: No such file or directory”那是因为cuDNN没有链接成功,只能做一下硬链接。 下面可以编译caffe-master了!!! $ make all
$ make test
$ make runtest
这里出现libcudnn.so.6.5:cannot open shared object file,查看LD_LIBRARY_PATH发现环境变量没问题,折腾了半天发现cuda的配置文件没有加进去,就是上面安装MKL时候的cuda.conf忘了写了。 错误Fixed: 1. 如果提示: make: protoc: 命令未找到,那是因为protoc没有安装,安装一下就好了。 $ sudo apt-get install protobuf-c-compiler protobuf-compiler 2. (该问题已经在9月以后的Caffe中得到作者修复)提示“src/caffe/util/math_functions.cu(140): error: calling a host function("std::signbit ") from a globalfunction("caffe::sgnbit_kernel ") is not allowed” 解决办法: 修改 ./include/caffe/util/math_functions.hpp 224行 删除(注释):using std::signbit; 修改:DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = signbit(x[i])); 为:DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, y[i] = std::signbit(x[i])); 得到作者,大神Yangqing Jia的回复,解决方法如上,没有二致。 六、使用MNIST数据集进行测试 Caffe默认情况会安装在 CAFFEROOT  home/username/caffe-master,所以下面的工作,默认已经切换到了该工作目录。下面的工作主要是,用于测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:http://caffe.berkeleyvision/gathered/examples/mnist.html 1. 数据预处理 可以用下载好的数据集,也可以重新下载,我网速快,这里就偷懒直接下载了,具体操作如下: $ cd data/mnist
$ sudo sh ./get_mnist.sh 2. 重建LDB文件,就是处理二进制数据集为Caffe识别的数据集,以后所有的数据,包括jpe文件都要处理成这个格式 $ cd examples/mnist
$ sudo sh ./create_mnist.sh 生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夹,这里包含了LDB格式的数据集 PS: 这里可能会遇到一个报错信息: Creating lmdb... ./create_mnist.sh: 16: ./create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found 解决方法是,直接到Caffe-master的根目录执行,实际上新版的Caffe,基本上都得从根目录执行。 ~/caffe-master$ sudo sh examples/mnist/create_mnist.sh 3. 训练mnist $ sudo sh examples/mnist/train_lenet.sh 至此,Caffe安装的所有步骤完结,下面是一组简单的数据对比,实验来源于MNIST数据集,主要是考察一下不同系统下CPU和GPU的性能。可以看到明显的差别了,虽然MNIST数据集很简单,相信复杂得数据集,差别会更大,Ubuntu+GPU是唯一的选择了。 测试平台:i7-4770K/16G/GTX 770/CUDA 6.5 MNIST Windows8.1 on CPU:620s MNIST Windows8.1 on GPU:190s MNIST Ubuntu 14.04 on CPU:270s MNIST Ubuntu 14.04 on GPU:160s MNIST Ubuntu 14.04 on GPU with cuDNN:35s Cifar10_full on GPU wihtout cuDNN:73m45s = 4428s  (Iteration 70000) Cifar10_full on GPU with cuDNN:20m7s = 1207s  (Iteration 70000)

本文标签: Ubuntucaffe