基于docker的caffe環(huán)境搭建方法
為什么要用docker, 熟悉docker 其實(shí)已經(jīng)很久了,自從實(shí)習(xí)的時(shí)候覺得它是一個(gè)利器以來一直沒有機(jī)會(huì)使用它,這幾天在折騰caffe環(huán)境中,覺得是時(shí)候用上Docker了。
需求:構(gòu)建一個(gè)獨(dú)立的容器,里面安裝了caffe 的所有依賴,在需要跑代碼的時(shí)候,直接運(yùn)行它。
優(yōu)點(diǎn):可以解決各種依賴問題,比如這個(gè)軟件需要安裝gcc 4.7 ,而另外一個(gè)需要安裝gcc 4.8 等等互斥的環(huán)境需求。
Docker 安裝
docker 的安裝和基本使用,可以參照我上面的兩篇博客:安裝篇 和 使用篇 。
構(gòu)建鏡像
構(gòu)建鏡像有兩種方法:
1,寫Dockerfile,優(yōu)點(diǎn)是便于共享;
2,從容器中commit,優(yōu)點(diǎn)是簡單方便,但是不方便共享。
由于安裝caffe環(huán)境需要眾多的依賴包,而且由于網(wǎng)絡(luò)方面的原因,這些依賴包往往不能一次夠裝好,為了方便起見,這里直接啟動(dòng)一個(gè)基本的容器,然后從里面安裝依賴包。
這邊選擇基本的ubuntu:14.04 來開始構(gòu)建環(huán)境,
1,啟動(dòng)容器:
需要更改dns,是因?yàn)槿绻麤]有的話,容器上不了網(wǎng)。
2,依賴包安裝
進(jìn)入容器之后,所有的操作就跟普通的一個(gè)樣了。
首先安裝一些基本的工具:
apt-get install wget apt-get install unzip apt-get install python-pip
新建路徑,后面所有的caffe代碼都放在這里
mkdir /home/crw/Caffe cd /home/crw/Caffe
opencv 的安裝:
github上面有一個(gè)一鍵安裝的,但是在容器里面一鍵安裝不了,后面我是把它里面的腳本一句一句的搞出來執(zhí)行。
#opencv一句一句的運(yùn)行 arch=$(uname -m) if [ "$arch" == "i686" -o "$arch" == "i386" -o "$arch" == "i486" -o "$arch" == "i586" ]; then flag=1; else flag=0; fi echo "Installing OpenCV 2.4.9" mkdir OpenCV cd OpenCV sudo apt-get -y install libopencv-dev sudo apt-get -y install build-essential checkinstall cmake pkg-config yasm sudo apt-get -y install libtiff4-dev libjpeg-dev libjasper-dev sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev sudo apt-get -y install python-dev python-numpy sudo apt-get -y install libtbb-dev sudo apt-get -y install libqt4-dev libgtk2.0-dev sudo apt-get -y install libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev wget http://archive.ubuntu.com/ubuntu/pool/multiverse/f/faac/faac_1.28-6.debian.tar.gz vi /etc/hosts ifconfig sudo apt-get -y install x264 v4l-utils ffmpeg wget -O OpenCV-2.4.9.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download unzip OpenCV-2.4.9.zip cd opencv-2.4.9 mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON .. make -j4 sudo make install sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf' sudo ldconfig cd ..
caffe 和python依賴包:
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 libgflags-dev libgoogle-glog-dev liblmdb-dev sudo apt-get install libatlas-base-dev
安裝cuda:
這里面?zhèn)€小技巧就是,如何從host 主機(jī)導(dǎo)入數(shù)據(jù)到容器中,可以使用如下命令(在host上運(yùn)行)
sudo cp cuda_7.5.18_linux.run /var/lib/docker/aufs/mnt/92562f161e51994949dd8496360265e5d54d32fbe301d693300916cd56d4e0a2/home/crw/Caffe sudo cp cudnn-7.0-linux-x64-v3.0-prod.tgz /var/lib/docker/aufs/mnt/92562f161e51994949dd8496360265e5d54d32fbe301d693300916cd56d4e0a2/home/crw/Caffe sudo cp caffe-master.zip /var/lib/docker/aufs/mnt/92562f161e51994949dd8496360265e5d54d32fbe301d693300916cd56d4e0a2/home/crw/Caffe
其中,那一長串?dāng)?shù)字,是你的容器的完全id,可以用命令
./cuda_*_linux.run -extract=`pwd` ./NVIDIA-Linux-x86_64-*.run -s --no-kernel-module ./cuda-linux64-rel-*.run -noprompt
安裝cudnn:
tar -xvf cudnn-7.0-linux-x64-v3.0-prod.tgz cp cuda/include/cudnn.h /usr/local/cuda/include/ cp cuda/lib64/* /usr/local/cuda/lib64/
安裝caffe:
cd caffe-15.12.07/ cp Makefile.config.example Makefile.config vi Makefile.config make all make test
安裝caffe 的python綁定
cd python/ apt-get install python-pip for req in $(cat requirements.txt); do pip install $req; done sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
下面這幾個(gè)包需要手動(dòng)自己去裝,用上面的命令一直裝不好。
apt-get install python-scipy for req in $(cat requirements.txt); do pip install $req; done pip install -U scikit-learn for req in $(cat requirements.txt); do pip install $req; done pip install scikit-image for req in $(cat requirements.txt); do pip install $req; done
然后
make pycaffe
最后, 新建一個(gè)路徑,以便于磁盤映射
mkdir /media/crw/MyBook
所有的環(huán)境都做好了之后,就可以commit 了
docker commit 92562f161e519 my-ubuntu-caffe
這樣,就在本地環(huán)境中,制作好了一個(gè)轉(zhuǎn)好caffe gpu環(huán)境的容器了。
啟動(dòng)caffe啟動(dòng)容器:
sudo docker run -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,文件映射,掛載一個(gè)host主機(jī)的磁盤到容器路徑下,這里設(shè)置為相同,可以減少一些不必要的麻煩。
運(yùn)行caffe模型訓(xùn)練
會(huì)有提示說找不到cuda啥的,設(shè)置一下環(huán)境變量即可。
$ export CUDA_HOME=/usr/local/cuda $ export LD_LIBRARY_PATH=${CUDA_HOME}/lib64 $ PATH=${CUDA_HOME}/bin:${PATH} $ export PATH
cd /media/crw/MyBook/Experience/FaceRecognition/Softmax/try3_3 ./train.sh
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
docker swarm外部驗(yàn)證負(fù)載均衡時(shí)不生效的解決方案
這篇文章主要介紹了docker swarm外部驗(yàn)證負(fù)載均衡時(shí)不生效的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04使用docker-compose連接到宿主機(jī)網(wǎng)絡(luò)
這篇文章主要介紹了使用docker-compose連接到宿主機(jī)網(wǎng)絡(luò),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01MacOS?Docker?安裝的實(shí)現(xiàn)步驟
本文主要介紹了MacOS?Docker?安裝的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06windows宿主機(jī)和docker容器設(shè)置掛載共享文件夾的步驟
這篇文章主要介紹了windows宿主機(jī)和docker容器設(shè)置掛載共享文件夾的步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11使用Maven和遠(yuǎn)程Docker基于Dockerfile構(gòu)建SpringBoot應(yīng)用鏡像
本文重點(diǎn)給大家介紹使用Maven和遠(yuǎn)程Docker基于Dockerfile構(gòu)建SpringBoot應(yīng)用鏡像的相關(guān)操作,感興趣的朋友跟隨小編一起看看吧2024-06-06