寫在前面
最近拿到了一臺新機器生年,安裝了Ubuntu16.04蛀缝。原來在筆記本的Ubuntu16.04下配置成功過caffe(cpu only)機器matlab與python接口。
特將在新機器上配置caffe完整過程記錄如下。
0.機器配置
- 處理器:Intel? Xeon(R) CPU E3-1231 v3 @ 3.40GHz × 8
- 內(nèi)存:Kingston 32G
- 顯卡:NVIDIA GeForce GTX 1070
顯卡型號可以用這個命令查詢:
lspci |grep VGA
機器配置查詢參考 - 操作系統(tǒng):Ubuntu17.04
1.Caffe下載
- 根據(jù)Caffe官網(wǎng)上給出的鏈接测砂,在Github上下載Caffe的Zip壓縮包
- 提取到Home目錄下苇羡,文件夾名為caffe-master
2.編譯前的準(zhǔn)備
本部分根據(jù)Caffe官網(wǎng)Ubuntu下安裝教程以及部分網(wǎng)絡(luò)教程進行
2.1 General dependencies
執(zhí)行此部分前最好先升級apt-get:
sudo apt-get update
然后分別執(zhí)行下面兩句:
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
(可能執(zhí)行完這句后會再次提醒需要升級apt-get这刷,再運行一遍升級命令就好了)
sudo apt-get install --no-install-recommends libboost-all-dev
此部分安裝完成
2.2 安裝NVIDIA顯卡驅(qū)動
這部分耗費了一個下午的時間總算安裝好了婉烟。
安裝這部分的時候,先參考了《Ubuntu-安裝-cuda7.0-單顯卡-超詳細(xì)教程》這篇文章(注意暇屋,不使用該文章中的方法安裝Cuda似袁,否則報錯),按照二進制安裝包安裝的方式安裝顯卡驅(qū)動咐刨,一直報錯叔营,說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.
后來根據(jù)這篇文章绒尊,采用apt-get方式安裝,成功仔粥,但步驟有所不同婴谱。
我的具體安裝步驟如下:
2.2.1 禁用舊的顯卡驅(qū)動
Ubuntu中自帶了適用于NVIDIA顯卡的nouveau驅(qū)動,但是與NVIDIA官方驅(qū)動相比還是有很大差距的躯泰,而且沒有官方驅(qū)動的話谭羔,也不能使用Cuda和cudnn。nouveau驅(qū)動與官方驅(qū)動沖突麦向,因此瘟裸,需要在安裝官方驅(qū)動之前禁用nouveau驅(qū)動。
之前嘗試過網(wǎng)上建議較多的添加blacklist的方法诵竭,發(fā)現(xiàn)都不能完全將nouveau驅(qū)動禁用话告。查看nouveau驅(qū)動是否完全被禁用命令如下:
lsmod | grep nouveau
于是采用另外一種方法,成功去除nouveau驅(qū)動。
2.2.2 apt-get方式安裝驅(qū)動
-
在命令行輸入:
ubuntu-drivers devices
查看建議的驅(qū)動版本
采用有“recommended”那一行的驅(qū)動版本卵慰。 按“Ctrl+Alt+F1”沙郭,切換到tty1。注意裳朋,這里輸入密碼時不能用小鍵盤病线,用鍵盤上方的橫排數(shù)字輸入密碼(密碼中有數(shù)字的情況下)。
輸入命令“
sudo su
”鲤嫡,切換到root模式關(guān)閉顯示器管理器送挑,命令:
service lightdm stop
安裝顯卡驅(qū)動,命令:
apt-get install nvidia-375
安裝完成暖眼,打開顯示器管理器惕耕,命令:
service lightdm start
-
登錄圖形化界面,打開Terminal罢荡,輸入
cat /proc/driver/nvidia/version
赡突,查看顯卡信息,如安裝成功区赵,如下所示:
NVIDIA顯卡驅(qū)動安裝完畢
2.3 安裝Cuda
安裝Cuda時可以退出tyy1了惭缰,回到圖形界面。安裝過程中曾經(jīng)嘗試用run方法笼才,但是不知什么原因一直失敗漱受。因此直接采用deb方式安裝Cuda。步驟如下:
- 安裝依賴庫
apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libgl1-mesa-dev libglu1-mesa libglu1-mesa-dev libxi-dev
-
選擇配置骡送,直接從網(wǎng)站中下載deb文件
- 根據(jù)官網(wǎng)提示的命令運行:
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/中找到安裝好的文件夾:
- 配置環(huán)境變量
命令: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)當(dāng)前賬戶再登錄昂羡,以確保環(huán)境配置成功
- 檢驗
命令:nvcc --version
,出現(xiàn)下圖結(jié)果:
- 安裝cuda samples
直接參考這篇博客Cuda Samples安裝部分摔踱。
注意虐先,采用deb方式安裝的Cuda,Sample文件夾不在home下派敷,而直接保存在cuda目錄中蛹批。
-
./deviceQuery執(zhí)行結(jié)果
- Cuda安裝測試完畢
2.4 安裝Cudnn6
注意:CUDA9.1需要與Cudnn7配合使用
- 在官方網(wǎng)站注冊賬號之后即可下載。
- 采用下面的命令:
#解壓文件
tar -zxvf cudnn-6.5-linux-x64-v2.tgz
#切換路徑篮愉,復(fù)制文件
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
- 在官網(wǎng)上沒有找到cudnn Sample腐芍,先不測試。
- cudnn安裝完成
2.5 安裝MKL
- 首先在官網(wǎng)申請免費下載试躏。需要用edu結(jié)尾的郵箱申請猪勇。
-
很快郵箱中會收到一封包含下載鏈接和序列號的郵件,直接點擊鏈接進入下載頁面即可下載颠蕴。如下圖:
- 下載完成后泣刹,使用
sudo tar -xvf
命令解壓文件夾,閱讀安裝指導(dǎo)pdf犀被。 - 根據(jù)安裝手冊项玛,首先到官網(wǎng)進行序列號注冊。
- 注冊完成后弱判,采用GUI方式安裝mkl襟沮。運行install_GUI.sh文件。這里根據(jù)安裝指導(dǎo)和需要一步步安裝就好了昌腰。
- 安裝完成后开伏,使用source命令添加環(huán)境變量,命令
source /[path to your intel]/intel/mkl/bin/mklvars.sh intel64
遭商。為了方便固灵,我直接把該命令添加到~/.bashrc文件中了,每次啟動命令行可以添加好環(huán)境變量劫流。 - mkl安裝完成
2.6 安裝Matlab
(我之前在byr上下載了MatlabR2017A安裝包巫玻,沒想到現(xiàn)在byr不能登錄了丛忆。。仍秤。)
(好像2017版本的matlab不能接入caffe熄诡,我在make matcaffe的時候總有問題,所以暫時只是安裝好了MATLAB诗力,沒有做與caffe的借口)
安裝包包括三個文件凰浮,分別是R2017a_glnxa64_dvd1.iso,R2017a_glnxa64_dvd2.iso苇本,和Crack文件夾袜茧。網(wǎng)絡(luò)上其他版本基本上也是如此,比較常見的是一個ISO文件和一個Crack文件夾瓣窄,安裝過程類似笛厦。
- 首先要閱讀Crack文件夾中的Readme文件,里面有序列號以及安裝指導(dǎo)俺夕。
- 安裝過程主要參考這篇博客
- 主要使用以下幾個命令:
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所在的文件夾改成讀寫狀態(tài)登舞,進行破解 - 將Crack文件夾中的licence文件復(fù)制到安裝目錄下的licence文件夾內(nèi)
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 復(fù)制到安裝目錄下的對應(yīng)文件夾中
after the installation finishes copy the folders to %installdir% to overwriting the originally installed files
-
到這里就安裝+破解完成。在Terminal中執(zhí)行 ./%installdir%/bin/matlab 就可以運行Matlab了
2.6 安裝Opencv
- github上已經(jīng)有人寫好了腳本悬荣,可以直接根據(jù)需求下載安裝菠秒。
- 需要說明的是,如果直接安裝最新版本氯迂,會安裝到opencv3践叠,如果想安裝opencv2的話,可以進入相應(yīng)的目錄嚼蚀,運行對應(yīng)的腳本進行安裝禁灼。可以參考這個博客轿曙。
- 我直接運行的腳本進行的安裝弄捕,安裝完成后用
pkg-config --modversion opencv
命令查看opencv版本,如下圖:
- opencv安裝完成
3.編譯caffe
第二部分介紹了caffe編譯前的各種準(zhǔn)備工作导帝,全部安裝完成后守谓,就可以進行caffe的編譯了。
- 首先進入caffe-master文件夾您单,直接采用caffe官網(wǎng)上提供的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后面加上數(shù)字限制核的數(shù)量受葛。如‘-j8’
make install -j
make runtest -j
make pycaffe
配置caffe的python接口
在編譯caffe的時候我開始用了make方式,一直報錯蜈彼。采用cmake之后很順利筑辨,沒有遇到問題。至此caffe編譯完成柳刮,可以運行了。
4.mnist例子測試
- mnist測試的例子網(wǎng)上有很多痒钝,例如這篇秉颗,可參考此步驟。
-
測試結(jié)果:
訓(xùn)練開始
訓(xùn)練結(jié)束 - caffe運行成功送矩,16秒完成10000次循環(huán)蚕甥,正確率可達(dá)99.05%
5.以上就是配置caffe全過程,如有疏漏栋荸,以后補充菇怀。
注:開始配置的時候是在Ubuntu17.04上,后來更換了16.04的系統(tǒng)晌块。安裝步驟一樣爱沟。只是文中配圖還有一些是原來安裝的截圖,但不影響結(jié)果匆背。在16.04系統(tǒng)上完全可用呼伸。