1. 程式人生 > >Ubuntu配置Caffeonspark教程

Ubuntu配置Caffeonspark教程

後續說明:最近又在新的機子上裝了一遍caffeonspark,發現我原來說的需要在caffe-public資料夾下再編譯一遍caffe的步驟是多餘的,因為編譯caffeonspark的過程中自己會到caffe-public這個資料夾下再編譯一次。上次之所以以為得手動編譯一次,可能是因為它自動編譯時失敗了,而手動編譯之後又重新work了。但是還是要注意,如果配置caffe時進行了自定義的改動,也要在caffe-public資料夾下進行相應的改動(特別是opencv3.0)。汗。。。所以如果編譯過程中出錯的話可以根據提示去Makefile檔案下看看執行的命令,有助於編譯的進行。

        今年2月,Yahoo 對外發布了 CaffeOnSpark 人工智慧的原始碼

,它被設計成為一個Spark深度學習包。最近因為專案需要,我開始嘗試在自己的電腦上配置caffeonspark,打算在單機上配置好後再分佈到叢集上。然而根據雅虎在github網站上關於配置caffeonspark的教程Running CaffeOnSpark Locally,我走了很多彎路。因為那個網站上的教程說的比較簡略,特別是在配置caffe時只是貼出了caffe官網的配置教程連結,一些注意事項並沒有說道;而且有一些prerequisites也沒有提出來。後來根據自己的摸索總算把它配好了,這裡寫出來當做一個總結,方便之後的查閱,也希望能給他人一個借鑑,儘量少走彎路。

1.下載

這裡首先把接下來需要直接用到的安裝包先列出來,方便提前下載:

1.1 首先是CaffeOnSpark原始碼,可以從github上下載zip包,或者使用命令下載:

git clone https://github.com/yahoo/CaffeOnSpark.git --recursive
這個原始碼包裡內建了caffe的原始碼包,供接下來編譯caffe使用。

1.2 spark和haddop,spark不必說肯定要下載,另外根據github網站上的教程,還需要下載hadoop,這個我不知是必須的還是為了方便在hadoop叢集上使用,不過這裡就先按照它的要求來做,反正不會有壞處。spark和hadoop的下載地址:

1.3 Apache Maven,這是一個軟體(特別是Java軟體)專案管理及自動構建工具,由Apache軟體基金會所提供。之所以需要用到這個,是在編譯CaffeOnSpark時makefile裡面的命令用到了mvn,這個在github網站的教程裡並沒有提到。

1.4 OpenCV,之所以要opencv,是因為在配置caffe時需要的,如果你的電腦上之前安裝過opencv的話,這個可以忽略。OpenCV的下載在下面配置caffe的教程裡有連結。

2. 環境配置

這裡的每一個環境的設定都是單獨配置某個應用時需要設定的,包括配spark,caffe,maven等,所以如果你之前在/etc/profile檔案裡面設定過某一個環境變數,在這裡就可以忽略它。開啟/etc/profile檔案,輸入:

export HADOOP_HOME=/path/to/hadoop
export PATH=${HADOOP_HOME}/bin:${PATH}
export SPARK_HOME=/path/to/spark
export PATH=${SPARK_HOME}/bin:${PATH}
export MAVEN_HOME=/path/to//maven
export PATH=${MAVEN_HOME}/bin:${PATH}

  以上步驟完成了對spark,hadoop,maven環境的設定(對於spark的設定其實不止這麼簡單,還需要設定java等環境,可以看我另外一篇部落格64位UBUNTU 下安裝和配置使用python的spark),接下來就是要配置caffe了。值得注意是,即使你之前在你的電腦上配置過caffe,這裡還是需要在CaffeOnSpark/caffe-public路徑下再次編譯caffe,不過caffe所需要的環境就不需要再次設定了。如果你之前沒配置過caffe,可以根據這個教程來,只是注意要在CaffeOnSpark/caffe-public下編譯caffe,而且不需要再下載caffe安裝包。對於makefile.config和makefile檔案的修改,也是在這個路徑裡面進行,除了caffe配置教程裡的修改,這裡還需要對makefile.config檔案加入這一句:

INCLUDE_DIRS += ${JAVA_HOME}/include
這裡也用到了java的環境。

3. 編譯CaffeOnSpark

如果你上面的步驟都完成了,就可以退到/path/to/CaffeOnSpark路徑下編譯CaffeOnSpark,執行命令:

sudo make build

使用sudo 為了保證編譯過程中對系統訪問的許可權.但是最好之前先執行:

alias sudo="sudo env PATH=$PATH"
因為系統預裝的 sudo 在編譯時預設使用了 --with-secure-path 引數,因此當前使用者使用 sudo 時,之前設定的環境變數 $PATH 會被覆蓋.通過新增上面那行別名設定,就會在執行 sudo 時把當前的 $PATH 的值再套用上,達到想要的效果。

如果前面的步驟都正確完成,就會開始對CaffeOnSpark進行編譯(如下圖),過程中需要下載很多東西,所以需要較長時間,請耐心等待。

如果網路不好的話,可能也會出現編譯出錯的提示(主要是maven相關的),可以等到網路穩定了再make build一次。

編譯完成後,再執行下面兩條命令:

export LD_LIBRARY_PATH=${CAFFE_ON_SPARK}/caffe-public/distribute/lib:${CAFFE_ON_SPARK}/caffe-distri/distribute/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-7.0/lib64:/usr/local/mkl/lib/intel64/


完成以上的工作後,就可以根據github網站上教程的例子進行測試,能正常執行說明配置成功了。