1. 程式人生 > >叢集伺服器環境下安裝Caffe深度學習庫(GPU)

叢集伺服器環境下安裝Caffe深度學習庫(GPU)

關於配置Berkeley Caffe深度學習庫的帖子網上已經有很多了, 不過大多數都是基於本地機進行配置.

我個人的一部分研究涉及到用深度學習對數字病理學圖片進行分類(基於畫素),因為影象量很大所以需要用到叢集計算並利用GPU加速.個人覺得自己在演算法和理論上並不算深入,在具體應用上大概有一年左右經歷.

叢集環境下配置和本地機配置過程最大區別在於大多數情況下我們沒有根許可權, 因此需要把Caffe和依賴庫安裝在使用者目錄下.

我在兩個不同的叢集環境中進行過Caffe的配置和執行, 資源管理軟體分別是Grid Engine(CWRU)和SLURM(Buffalo), 二者在對於執行Caffe上大同小異,在具體環境和資源申請時候會有略微不同.

CWRU和Buffalo的叢集伺服器都支援模組管理,因此方便動態按需求載入和解除安裝資源. Caffe對於依賴庫的版本要求比較苛刻,因此使用模組管理可以更好的控制依賴庫版本和對應的環境變數.

首先,我們需要查一下Caffe依賴的庫,具體可以從官網查到,大致概括一下:

1.CUDA肯定是必須的, 如果用GPU.推薦7.0版本,6.5也行,5.5以下不確定是否會出問題

2.BLAS(線性代數和向量操作庫), 可以是ATLAS,MKS,OpenBLAS中的任意一個

3.Boost,大於1.55版本

4.OpenCVS,大於2.4版本(3.0可以)

5.protobuf, glog, gflags 等等

6.hdf5, leveldb, snappy, lmdb

7.如果需要python和matlab介面,需要分別編譯其各自介面:

   1)Python Caffe, python 2.7 或者 python 3.3+, numpy版本大於1.7, 含有boost的boost.python

   2)Matlab, MATLAB還有mex編譯器

8.cuDNN (如果GPU支援cuDNN並且想啟用cuDNN加速)

現在,我們先檢測一下叢集伺服器上有哪些庫已經安裝我們只需要載入即可,使用命令,module avial


可以發現其實很多庫已經存在,只需載入即可. 為了執行Caffe時方便,我的做法是寫一個指令碼,把所有要載入的庫都寫在裡面,用Caffe之前執行一下即可. 具體做法是, 我在這個路徑下簡歷一個檔案~/.usr/local/share/modulefiles/caffe_dependencies

  1. module load cmake
  2. module load hdf/5-1.8.11
  3. module load cuda/6.5
  4. module load intel-mpi/4.1.3
  5. module load vtk/6.0.0
  6. module load python/anaconda
  7. module load opencv/2.4.10
  8. module load boost/1.57.0
  9. module load mkl/11.2
  10. module load google-api/11.06.2014
到這裡,我們把能通過載入解決的依賴庫解決了,剩下就是得我們自己安裝在使用者目錄下. 我自己喜歡安裝在~/.usr/local目錄下,因此 cd ~/.usr/local 然後就是git一下列原始碼
  1. git clone https://github.com/google/leveldb.git
  2. git clone https://github.com/schuhschuh/gflags.git
  3. git clone https://github.com/google/protobuf.git
  4. git clone https://github.com/google/glog.git
  5. git clone https://gitorious.org/mdb/mdb.git
  6. git clone https://github.com/google/snappy.git
接下來安裝這些原始碼,主要有兩種方式,用cmake和用make, 大概總結為5步 1.cd進入原始碼資料夾
2.如果有autogen.sh,先執行一下
        3.如果用make編譯,則會有configure的指令碼檔案, 可以選擇檔案編譯安裝的位置,我的習慣是放在~/.usr/local下. 因此,
. ./configure --prefix=~/.usr/local/         4.如果使用cmake,則用以下命令:
mkdir build, cd build, cmake -DCMAKE_INSTALL_PREFIX=/nfs/01/cwr0463/.usr/local/ ..         5.make         6.make all 這裡需要注意幾點: 1. LevelDB沒有make install, 因此我們要手動新增,具體做法是 a)cp --preserve=links libleveldb.* /nfs/01/cwr0463/.usr/local/ b)cp -r include/leveldb /nfs/01/cwr0463/.usr/local/include 2. MDB沒有configure和cmake, 因此我們需要在Makefile中改變安裝路徑,具體 具體用vim進入Makefile, /操作符找到prefix, 改為想要的路徑, 我的是prefix  = ~/.usr/local/ 3. Gflags如果在編譯時沒有使用-fPIC會進行報錯,解決做法是 a)vim開啟CMakeCache.txt b)改變為CMAKE_CXX_FLAGS:STRING=-fPIC c)正常步驟繼續 安裝完所有依賴庫了,基本上完成一半工作.下面就是在寫一些指令碼讓shell能在和接觸的時候能發現一切剛才編譯的二進位制檔案已經標頭檔案和庫檔案.我的做法是在路徑下建立~/.usr/local/share/modulefiles/depends_xxw/1.0文字, 1.0文字內容為新增環境變數具體如下
set             root            /nfs/01/cwr0463/.usr/local/
prepend-path    PATH                    $root/bin
prepend-path    CPLUS_INCLUDE_PATH      $root/include
prepend-path    C_INCLUDE_PATH          $root/include
prepend-path    LD_LIBRARY_PATH         $root/lib
prepend-path    LIBRARY_PATH            $root/lib
prepend-path    MANPATH                 $root/share

好了,現在對於在自己目錄下編譯的庫設定完環境後,我們在開啟剛才的caffe_dependencies文字, 把1.0也加入進去.最終結果看上去類似這樣

[[email protected]:~/.usr/local/share/modulefiles]$ cat caffe_dependencies 

module use -a /user/xiangxui/.usr/local/share/modulefiles

module load depends_xxw/1.0

module load cmake

module load hdf/5-1.8.11

module load cuda/6.5

module load intel-mpi/4.1.3

module load vtk/6.0.0

module load python/anaconda

module load opencv/2.4.10

module load boost/1.57.0

module load mkl/11.2

module load google-api/11.06.2014

至此依賴庫及環境的設定就完成了. 接下來就開始編譯Caffe的過程

首先, 依舊git Caffe原始碼

git clone https://github.com/BVLC/caffe.git

根據官方建議,

cp Makefile.config.example Makefile.config

根據自己實際情況更改一些路徑和配置:

我個人使用cuDNN因此

< # USE_CUDNN := 1

改為

> USE_CUDNN := 1

因為使用mkl, 所以

< BLAS := atlas< # Custom (MKL/ATLAS/OpenBLAS) include and lib directories.改為
> BLAS := mkl> # Custom (MKL/ATLAS/OpenBLAS) include and lib directories

接下來繼續改變路徑到自己安裝的路徑, 需要注意的是PYTHON可能會有比較多的版本,每個版本的包含檔案可能存在幾個不同的位置,需要都進行包含

. 到這裡,所有的環境,路徑也設定完了. 不放心也可以用module list等命令確認一下 終於到了實際編譯caffe階段..... 1.因為我使用Python介面,所以需要單獨編譯,步驟是 a)cd進入caffe目錄下的python資料夾 b)使用命令 for req in $(cat requirements.txt)do pip install --user $reqdone 2.進入實際的Caffe編譯階段, 首先確認在伺服器上成功申請了GPU資源,並且編譯階段建議使用排錯(debug)模式或者互動(interactive)模式 SLURM為 fisbatch --partition=debug --nodes=1 --ntasks=16 --gres=gpu:1 GE為 qsub -I -q gpufermi -l nodes=2:ppn=8:gpus:2 3.最後就是 make all make run make runtest 也可以用自帶的一些例子進行一下測試比如
我的一個研究專案關於分類數字病理學影象畫素點為0或1(1為細胞核畫素,0為非細胞核畫素),用訓練好的模型得到最終結果為: 從左到又依次為原圖片,Caffe計算出來的概率圖片, Caffe自帶的argmax作用於概率圖片上的結果.對了,DL模型用的是Alexnet. 先寫這麼多了,歡迎大家交流討論

相關推薦

叢集伺服器環境安裝Caffe深度學習(GPU)

關於配置Berkeley Caffe深度學習庫的帖子網上已經有很多了, 不過大多數都是基於本地機進行配置. 我個人的一部分研究涉及到用深度學習對數字病理學圖片進行分類(基於畫素),因為影象量很大所以需要用到叢集計算並利用GPU加速.個人覺得自己在演算法和理論上並不算深入,在

Caffe學習1——在ubuntu16.04環境安裝Caffe(CPU)

目前在網上,已經存在很多的Caffe安裝教程。本文主要介紹筆者在安裝Caffe——CPU版本所遇到的問題(主要參考了網上的  部落格) ,以及相關解決方法。以下給出基於ubuntu 16.04系統的Caffe的CPU安裝步驟:1. 安裝gitsudo apt-get inst

深度學習第一步:windows+Anaconda安裝tensorflow深度學習框架

一共四步,一會就成功! 第一步,首先需要安裝Anaconda。 它是一個庫管理工具,能夠管理不同環境,不同環境下可以安裝不同python版本以及其他庫。安裝Anaconda這一步非常的簡單去Anaconda官方網站(https://www.continuum.

CentOS6.4編譯caffe深度學習框架實踐!!!

花了點時間在CentOS6.4伺服器上搭建caffe深度學習框架環境其中遇到了一些問題,最終還是解決. 先上圖看看: 應該很直觀了吧,其中細節注意: 1. 在編譯ATLAS時出現CPU頻率問題,我就直接使用yum源:yum install atlas-devel bla

基於Windows10 x64+visual Studio2013+Python2.7.12環境Caffe配置學習

GPU Computer Capability GTX660, 680, 760, 770 compute_30,sm_30 GTX780, Titan Z, Titan Black, K20, K40 compute_35,sm_35 GTX960, 970, 980, Titan X

ubuntu16.0.4環境搭建DeepNet深度學習框架

  四月份的時候就已經搭建了一次Deepnet框架,只是當時也沒有執行成功例子就那樣擱淺了。現在是因為發現神經網路利用hadoop並行不太可能,就果斷放棄搞了近一個月的hadoop,轉向GPU了。但是學習hadoop搭建環境也是搞了大概兩天吧,後來也是看視訊學習等,現在至少

caffe - windows上配置 C++ 開發環境 & ubuntu上安裝其它深度學習框架

過程 ubuntu 解決方案 ubun 核心 conda pytho 配置 caff windows 上配置C++開發環境的過程: ubuntu上配置caffe、tensorflow、mxnet的過程 基於 anaconda2 1、caffe pip不是

深度學習之Windows安裝caffe及配置Python和matlab介面

去年下半年看了相關目標檢測的論文,一些傳統的演算法,一些CVPR,TPAMI,ECCV,ICCV,,NIPS,比較前沿的進展,主要都是基於深度學習卷積神經網路方面的,包括RCNN,SPP-NET,Fast-RCNN,Faster-RCNN,以及YOLO,SSD,然後明天準備

Golang學習-第一篇 Golang的簡單介紹及Windows環境安裝、部署

需要 簡單 電腦 pan 生成文件 多核 -- pear () 序言 這是本人博客園第一篇文章,寫的不到位之處,希望各位看客們諒解。 本人一直從事.NET的開發工作,最近在學習Golang,所以想著之前學習的過程中都沒怎麽好好的將學習過程記錄下來。深感惋惜! 現在將Gola

Redis學習(一):Linux系統環境安裝及編譯Redis

一、簡介         Redis(Remote Dictionary Server)是由義大利人Salvatore Sanfilippo(網名:antirez)開發的一款記憶體快取記憶體資料庫。它是一個key-value儲存系統,它支援豐富的資料型別,如:String

資料探勘機器學習之Ubantu14.04、Centos7環境安裝LightGBM

xgboost的出現,讓大資料分析民工們告別了傳統的機器學習演算法們:RF、GBM、SVM、LASSO........。現在,微軟推出了一個新的boosting框架,想要挑戰xgboost的江湖地

Ubuntu 16環境安裝CUDA 8.0及Caffe

1.安裝CUDA 8.0 安裝CUDA之前,先檢查機器是否安裝了NVIDIA驅動。使用命令 nvidia-smi檢視GPU列表,同時顯示了驅動的版本。也可以通過命令nvidia-settings檢視GPU的詳細資訊。如果沒有安裝驅動,則執行下面的命令sudo add-apt

LINUX環境安裝VSFTP伺服器

1.首先檢查當前環境下是否已經安裝對應ftp軟體rpm -qa|grep vsftp如果已經安裝可以可以出現ftp對應版本資訊,未安裝則無回顯2.安裝VSFTP軟體,可以使用yum方式rpm包方式安裝(對應資源可在系統光碟package包下)yum install vsftp

Linux安裝TensorFlow等深度學習

                 Linux下安裝TensorFlow等深度學習庫 1. 介紹 主要參考:  [1] Tensorflow官網Tutorials  [2]&

Ubuntu16.04環境安裝CUDA、cudnn、Caffe、Tensorflow、pytorch

【主題】Ubuntu16.04環境下安裝CUDA、cudnn、Caffe、Tensorflow、pytorch 【環境】 筆記本: 筆記本:惠普 Pavilion NoteBook 系統環境:Ubuntu16.04+Win10 64位雙系統 顯示卡:NVIDIA  GT

centos7 環境安裝chrome及無GUI伺服器部署selenium

安裝chrome瀏覽器 配置yum源 在目錄 /etc/yum.repos.d/ 下新建檔案 google-chrome.repo cd /ect/yum.repos.d/ vim google-chrome.repo 寫入如下內容: [

memcached學習筆記1(windows 7 64bit 環境安裝memcached)

windows 7 64bit 環境下安裝memcached       2、安裝到windows服務,開啟cmd命令列,進入memcached目錄,執行memcached -d install命令,安裝服務。      如果在沒有安裝過的情況下,出現"failed t

深度學習環境安裝開源深度學習框架Tensorflow(Ubuntu16.04+CUDA+cuDNN+Anaconda+Tensorflow)

前一篇文章《Ubuntu16.04+GTX1050+CUDA8.0配置深度學習環境》 已經介紹瞭如何配置深度學習環境,本文介紹下如何配置深度學習框架Tensorflow。TensorFlow是谷歌基於D

Ubuntu 16.04 (+ win7 )雙系統安裝深度學習環境配置

遲遲不願裝win7+Ubuntu雙系統。是由於以前有一次安裝win7 64bit和win732bit雙系統的經歷,結果是正常使用一段時間後,系統會提示沒有啟用,很是心累。 故一直使用win7作為深度學習的環境。安裝軟體也各種花樣踩坑出坑,先後嘗試過使用使用虛擬

linux 伺服器centos7系統lamp環境安裝redis

前提是lamp環境已經安裝成功 開始安裝redis 1.安裝必要的包 yum install gcc 開啟要下載的路徑 cd usr/local/src 下載redis 解壓 tar zxvf redis-3.0.0.tar.gz cd r