基于docker的caffe环境搭建方法
为什么要用docker,熟悉docker其实已经很久了,自从实习的时候觉得它是一个利器以来一直没有机会使用它,这几天在折腾caffe环境中,觉得是时候用上Docker了。
需求:构建一个独立的容器,里面安装了caffe的所有依赖,在需要跑代码的时候,直接运行它。
优点:可以解决各种依赖问题,比如这个软件需要安装gcc4.7,而另外一个需要安装gcc4.8等等互斥的环境需求。
Docker安装
docker的安装和基本使用,可以参照我上面的两篇博客:安装篇 和使用篇。
构建镜像
构建镜像有两种方法:
1,写Dockerfile,优点是便于共享;
2,从容器中commit,优点是简单方便,但是不方便共享。
由于安装caffe环境需要众多的依赖包,而且由于网络方面的原因,这些依赖包往往不能一次够装好,为了方便起见,这里直接启动一个基本的容器,然后从里面安装依赖包。
这边选择基本的ubuntu:14.04来开始构建环境,
1,启动容器:
sudodockerrun--dns8.8.8.8--dns8.8.4.4--nameubuntu_caffe-i-tubuntu:14.04/bin/bash
需要更改dns,是因为如果没有的话,容器上不了网。
2,依赖包安装
进入容器之后,所有的操作就跟普通的一个样了。
首先安装一些基本的工具:
apt-getinstallwget apt-getinstallunzip apt-getinstallpython-pip
新建路径,后面所有的caffe代码都放在这里
mkdir/home/crw/Caffe cd/home/crw/Caffe
opencv的安装:
github上面有一个一键安装的,但是在容器里面一键安装不了,后面我是把它里面的脚本一句一句的搞出来执行。
#opencv一句一句的运行 arch=$(uname-m) if["$arch"=="i686"-o"$arch"=="i386"-o"$arch"=="i486"-o"$arch"=="i586"];thenflag=1;elseflag=0;fi echo"InstallingOpenCV2.4.9" mkdirOpenCV cdOpenCV sudoapt-get-yinstalllibopencv-dev sudoapt-get-yinstallbuild-essentialcheckinstallcmakepkg-configyasm sudoapt-get-yinstalllibtiff4-devlibjpeg-devlibjasper-dev sudoapt-get-yinstalllibavcodec-devlibavformat-devlibswscale-devlibdc1394-22-devlibxine-devlibgstreamer0.10-devlibgstreamer-plugins-base0.10-devlibv4l-dev sudoapt-get-yinstallpython-devpython-numpy sudoapt-get-yinstalllibtbb-dev sudoapt-get-yinstalllibqt4-devlibgtk2.0-dev sudoapt-get-yinstalllibfaac-devlibmp3lame-devlibopencore-amrnb-devlibopencore-amrwb-devlibtheora-devlibvorbis-devlibxvidcore-dev wgethttp://archive.ubuntu.com/ubuntu/pool/multiverse/f/faac/faac_1.28-6.debian.tar.gz vi/etc/hosts ifconfig sudoapt-get-yinstallx264v4l-utilsffmpeg wget-OOpenCV-2.4.9.ziphttp://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download unzipOpenCV-2.4.9.zip cdopencv-2.4.9 mkdirbuild cdbuild cmake-DCMAKE_BUILD_TYPE=RELEASE-DCMAKE_INSTALL_PREFIX=/usr/local-DWITH_TBB=ON-DBUILD_NEW_PYTHON_SUPPORT=ON-DWITH_V4L=ON-DINSTALL_C_EXAMPLES=ON-DINSTALL_PYTHON_EXAMPLES=ON-DBUILD_EXAMPLES=ON-DWITH_QT=ON-DWITH_OPENGL=ON.. make-j4 sudomakeinstall sudosh-c'echo"/usr/local/lib">/etc/ld.so.conf.d/opencv.conf' sudoldconfig cd..
caffe和python依赖包:
sudoapt-getinstalllibprotobuf-devlibleveldb-devlibsnappy-devlibopencv-devlibhdf5-serial-devprotobuf-compiler sudoapt-getinstall--no-install-recommendslibboost-all-dev sudoapt-getinstalllibgflags-devlibgoogle-glog-devliblmdb-dev sudoapt-getinstalllibatlas-base-dev
安装cuda:
这里面个小技巧就是,如何从host主机导入数据到容器中,可以使用如下命令(在host上运行)
sudocpcuda_7.5.18_linux.run/var/lib/docker/aufs/mnt/92562f161e51994949dd8496360265e5d54d32fbe301d693300916cd56d4e0a2/home/crw/Caffe sudocpcudnn-7.0-linux-x64-v3.0-prod.tgz/var/lib/docker/aufs/mnt/92562f161e51994949dd8496360265e5d54d32fbe301d693300916cd56d4e0a2/home/crw/Caffe sudocpcaffe-master.zip/var/lib/docker/aufs/mnt/92562f161e51994949dd8496360265e5d54d32fbe301d693300916cd56d4e0a2/home/crw/Caffe
其中,那一长串数字,是你的容器的完全id,可以用命令
dockerinspect-f '{{.Id}}'ubuntu_caffe#ubuntu_caffe是容器的名字
./cuda_*_linux.run-extract=`pwd` ./NVIDIA-Linux-x86_64-*.run-s--no-kernel-module ./cuda-linux64-rel-*.run-noprompt
安装cudnn:
tar-xvfcudnn-7.0-linux-x64-v3.0-prod.tgz cpcuda/include/cudnn.h/usr/local/cuda/include/ cpcuda/lib64/*/usr/local/cuda/lib64/
安装caffe:
cdcaffe-15.12.07/ cpMakefile.config.exampleMakefile.config viMakefile.config makeall maketest
安装caffe的python绑定
cdpython/ apt-getinstallpython-pip forreqin$(catrequirements.txt);dopipinstall$req;done sudoapt-getinstallpython-numpypython-scipypython-matplotlibipythonipython-notebookpython-pandaspython-sympypython-nose
下面这几个包需要手动自己去装,用上面的命令一直装不好。
apt-getinstallpython-scipy forreqin$(catrequirements.txt);dopipinstall$req;done pipinstall-Uscikit-learn forreqin$(catrequirements.txt);dopipinstall$req;done pipinstallscikit-image forreqin$(catrequirements.txt);dopipinstall$req;done
然后
makepycaffe
最后,新建一个路径,以便于磁盘映射
mkdir/media/crw/MyBook
所有的环境都做好了之后,就可以commit了
dockercommit92562f161e519my-ubuntu-caffe
这样,就在本地环境中,制作好了一个转好caffegpu环境的容器了。
启动caffe启动容器:
sudodockerrun-ti\ --device/dev/nvidia0:/dev/nvidia0\ --device/dev/nvidiactl:/dev/nvidiactl\ --device/dev/nvidia-uvm:/dev/nvidia-uvm\ -v/media/crw/MyBook:/media/crw/MyBook\ my-ubuntu-caffe/bin/bash
1,显卡直通使用,
2,文件映射,挂载一个host主机的磁盘到容器路径下,这里设置为相同,可以减少一些不必要的麻烦。
运行caffe模型训练
会有提示说找不到cuda啥的,设置一下环境变量即可。
$exportCUDA_HOME=/usr/local/cuda $exportLD_LIBRARY_PATH=${CUDA_HOME}/lib64 $PATH=${CUDA_HOME}/bin:${PATH} $exportPATH
cd/media/crw/MyBook/Experience/FaceRecognition/Softmax/try3_3 ./train.sh
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。