1.Ubuntu16.04配置Caffe全過程

寫在前面

最近拿到了一臺新機器,安裝了Ubuntu16.04。原來在筆記本的Ubuntu16.04下配置成功過caffe(cpu only)機器matlab與python接口。
特將在新機器上配置caffe完整過程記錄如下。

0.機器配置

  • 處理器:Intel? Xeon(R) CPU E3-1231 v3 @ 3.40GHz × 8
  • 內存:Kingston 32G
  • 顯卡:NVIDIA GeForce GTX 1070
    顯卡型號可以用這個命令查詢:
    lspci |grep VGA
    機器配置查詢參考
  • 操作系統:Ubuntu17.04

1.Caffe下載

2.編譯前的準備

本部分根據Caffe官網Ubuntu下安裝教程以及部分網絡教程進行

2.1 General dependencies

執行此部分前最好先升級apt-get:
sudo apt-get update
然后分別執行下面兩句:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
(可能執行完這句后會再次提醒需要升級apt-get,再運行一遍升級命令就好了)
sudo apt-get install --no-install-recommends libboost-all-dev

此部分安裝完成

2.2 安裝NVIDIA顯卡驅動

這部分耗費了一個下午的時間總算安裝好了。

安裝這部分的時候,先參考了《Ubuntu-安裝-cuda7.0-單顯卡-超詳細教程》這篇文章(注意,不使用該文章中的方法安裝Cuda,否則報錯),按照二進制安裝包安裝的方式安裝顯卡驅動,一直報錯,說kernel modules配置錯誤,錯誤報告很長,最后的部分如下:

錯誤報告:
scripts/Makefile.build:294: recipe for target '/tmp/selfgz6789/NVIDIA-Linux-x86_64-375.26/kernel/nvidia-drm/nvidia-drm-fence.o' failed
make[2]: *** [/tmp/selfgz6789/NVIDIA-Linux-x86_64-375.26/kernel/nvidia-drm/nvidia-drm-fence.o] Error 1
make[2]: Target '__build' not remade because of errors.
Makefile:1524: recipe for target '_module_/tmp/selfgz6789/NVIDIA-Linux-x86_64-375.26/kernel' failed
make[1]: *** [_module_/tmp/selfgz6789/NVIDIA-Linux-x86_64-375.26/kernel] Error 2
make[1]: Target 'modules' not remade because of errors.
make[1]: Leaving directory '/usr/src/linux-headers-4.10.0-19-generic'
Makefile:81: recipe for target 'modules' failed
make: *** [modules] Error 2
ERROR: The nvidia kernel module was not created.
ERROR: Installation has failed.  Please see the file '/var/log/nvidia-installer.log' for details.  You may find suggestions on fixing installation problems in the README available on the Linux driver download page at www.nvidia.com.

后來根據這篇文章,采用apt-get方式安裝,成功,但步驟有所不同。

我的具體安裝步驟如下:
2.2.1 禁用舊的顯卡驅動
Ubuntu中自帶了適用于NVIDIA顯卡的nouveau驅動,但是與NVIDIA官方驅動相比還是有很大差距的,而且沒有官方驅動的話,也不能使用Cuda和cudnn。nouveau驅動與官方驅動沖突,因此,需要在安裝官方驅動之前禁用nouveau驅動。

之前嘗試過網上建議較多的添加blacklist的方法,發現都不能完全將nouveau驅動禁用。查看nouveau驅動是否完全被禁用命令如下:
lsmod | grep nouveau

于是采用另外一種方法,成功去除nouveau驅動。

執行 lsmod | grep nouveau 命令的結果

2.2.2 apt-get方式安裝驅動

  • 在命令行輸入:
    ubuntu-drivers devices

    查看建議的驅動版本

    采用有“recommended”那一行的驅動版本。

  • 按“Ctrl+Alt+F1”,切換到tty1。注意,這里輸入密碼時不能用小鍵盤,用鍵盤上方的橫排數字輸入密碼(密碼中有數字的情況下)。

  • 輸入命令“sudo su”,切換到root模式

  • 關閉顯示器管理器,命令:service lightdm stop

  • 安裝顯卡驅動,命令:apt-get install nvidia-375

  • 安裝完成,打開顯示器管理器,命令:service lightdm start

  • 登錄圖形化界面,打開Terminal,輸入cat /proc/driver/nvidia/version,查看顯卡信息,如安裝成功,如下所示:

  • NVIDIA顯卡驅動安裝完畢

2.3 安裝Cuda

安裝Cuda時可以退出tyy1了,回到圖形界面。安裝過程中曾經嘗試用run方法,但是不知什么原因一直失敗。因此直接采用deb方式安裝Cuda。步驟如下:

  • 安裝依賴庫
    apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libgl1-mesa-dev libglu1-mesa libglu1-mesa-dev libxi-dev
  • 選擇配置,直接從網站中下載deb文件


  • 根據官網提示的命令運行:
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

可以在/usr/local/中找到安裝好的文件夾:


  • 配置環境變量
    命令:sudo gedit /etc/profile
    在文件最后加上
PATH=/usr/local/cuda/bin:$PATH 
export PATH 
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export LD_LIBRARY_PATH 

命令:source /etc/profile
最好能夠退出(Logout)當前賬戶再登錄,以確保環境配置成功

  • 檢驗
    命令:nvcc --version,出現下圖結果:
  • 安裝cuda samples
    直接參考這篇博客Cuda Samples安裝部分。
    注意,采用deb方式安裝的Cuda,Sample文件夾不在home下,而直接保存在cuda目錄中。
  • ./deviceQuery執行結果


  • Cuda安裝測試完畢

2.4 安裝Cudnn6

注意:CUDA9.1需要與Cudnn7配合使用

  • 官方網站注冊賬號之后即可下載。
  • 采用下面的命令:
#解壓文件
tar -zxvf cudnn-6.5-linux-x64-v2.tgz
#切換路徑,復制文件
cd cuda
sudo cp lib/* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
#更新軟連接
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.6
sudo ln -s libcudnn.so.6.0.20 libcudnn.so.6
sudo ln -s libcudnn.so.6 libcudnn.so 
  • 在官網上沒有找到cudnn Sample,先不測試。
  • cudnn安裝完成

2.5 安裝MKL

  • 首先在官網申請免費下載。需要用edu結尾的郵箱申請。
  • 很快郵箱中會收到一封包含下載鏈接和序列號的郵件,直接點擊鏈接進入下載頁面即可下載。如下圖:


  • 下載完成后,使用sudo tar -xvf命令解壓文件夾,閱讀安裝指導pdf。
  • 根據安裝手冊,首先到官網進行序列號注冊。
  • 注冊完成后,采用GUI方式安裝mkl。運行install_GUI.sh文件。這里根據安裝指導和需要一步步安裝就好了。
  • 安裝完成后,使用source命令添加環境變量,命令source /[path to your intel]/intel/mkl/bin/mklvars.sh intel64。為了方便,我直接把該命令添加到~/.bashrc文件中了,每次啟動命令行可以添加好環境變量。
  • mkl安裝完成

2.6 安裝Matlab

(我之前在byr上下載了MatlabR2017A安裝包,沒想到現在byr不能登錄了。。。)
(好像2017版本的matlab不能接入caffe,我在make matcaffe的時候總有問題,所以暫時只是安裝好了MATLAB,沒有做與caffe的借口)
安裝包包括三個文件,分別是R2017a_glnxa64_dvd1.iso,R2017a_glnxa64_dvd2.iso,和Crack文件夾。網絡上其他版本基本上也是如此,比較常見的是一個ISO文件和一個Crack文件夾,安裝過程類似。

  • 首先要閱讀Crack文件夾中的Readme文件,里面有序列號以及安裝指導。
  • 安裝過程主要參考這篇博客
  • 主要使用以下幾個命令:
sudo mkdir /media/matlab       #新建文件夾
sudo mount -o loop [path]/[ISO文件] /media/matlab      #兩個ISO的話,先加載dvd1即可,dvd2以后用
sudo /media/matlab/install      #運行安裝文件
sudo umount /media/matlab   #安裝完成后取消掛載
  • 安裝完成后,用命令:sudo chmod -R a+w /××××/×××/matlab 把matlab所在的文件夾改成讀寫狀態,進行破解
  • 將Crack文件夾中的licence文件復制到安裝目錄下的licence文件夾內

Use license_standalone.lic to activate, or copy license_standalone.lic to %installdir%\licenses\ ,and run matlab without activation

  • 將Crack文件夾中 /R2017a/bin/glnxa64/libmwservices.so 復制到安裝目錄下的對應文件夾中

after the installation finishes copy the folders to %installdir% to overwriting the originally installed files

  • 到這里就安裝+破解完成。在Terminal中執行 ./%installdir%/bin/matlab 就可以運行Matlab了


2.6 安裝Opencv

  • github上已經有人寫好了腳本,可以直接根據需求下載安裝。
  • 需要說明的是,如果直接安裝最新版本,會安裝到opencv3,如果想安裝opencv2的話,可以進入相應的目錄,運行對應的腳本進行安裝。可以參考這個博客
  • 我直接運行的腳本進行的安裝,安裝完成后用pkg-config --modversion opencv命令查看opencv版本,如下圖:
  • opencv安裝完成

3.編譯caffe

第二部分介紹了caffe編譯前的各種準備工作,全部安裝完成后,就可以進行caffe的編譯了。

  • 首先進入caffe-master文件夾,直接采用caffe官網上提供的cmake方式進行編譯。

In lieu of manually editing Makefile.config to configure the build, Caffe offers an unofficial CMake build thanks to @Nerei, @akosiorek, and other members of the community. It requires CMake version >= 2.8.7. The basic steps are as follows:
mkdir build
cd build
cmake .. -DBLAS=MKL 這里由于我用了mkl,所以加上了‘-DBLAS=MKL’這一限制
make all -j '-j'是為了采用多核進行編譯,速度較快。還可以在j后面加上數字限制核的數量。如‘-j8’
make install -j
make runtest -j
make pycaffe 配置caffe的python接口

在編譯caffe的時候我開始用了make方式,一直報錯。采用cmake之后很順利,沒有遇到問題。至此caffe編譯完成,可以運行了。

4.mnist例子測試

  • mnist測試的例子網上有很多,例如這篇,可參考此步驟。
  • 測試結果:


    訓練開始

    訓練結束
  • caffe運行成功,16秒完成10000次循環,正確率可達99.05%

5.以上就是配置caffe全過程,如有疏漏,以后補充。

注:開始配置的時候是在Ubuntu17.04上,后來更換了16.04的系統。安裝步驟一樣。只是文中配圖還有一些是原來安裝的截圖,但不影響結果。在16.04系統上完全可用。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,345評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,494評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,283評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,953評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,714評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,410評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,940評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,776評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,210評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,654評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容