教你從頭到尾利用DL學梵高作畫:GTX 1070 cuda 8.0 tensorflow gpu版
教你從頭到尾利用DL學梵高作畫
作者:七月線上開發/市場團隊中的三人,驍哲、李偉、July。本教程主要由驍哲撰寫,李偉負責Linux命令部分。
時間:二零一六年九月二十五日
配置:GTX 1070 cuda 8.0 Ubuntu 14.04 cudnn 5.1 tensorflow gpu
交流:TensorFlow實戰交流Q群 472899334,有問題可以加此群共同交流。另探究實驗背後原理,請參看我們的深度學習線上課程:深度學習線上班。
一、前言
12年本部落格推出SVM三層境界,14年July團隊開始做機器學習線下班,也因此寫了一系列ML部落格。15年,July團隊正式創業,開始做七月線上 —— 國內領先的人工智慧教育平臺,最初涵蓋演算法、機器學習、深度學習三大重心。16年,七月線上從上半年的5個課程擴充套件到下半年的30個課程,講師團隊也從上半年的5人擴大至現有的19人(且到18年上半年,講師團隊已超過60人)。
與此同時,機器學習越來越火,且隨著計算機計算能力的提高深度學習則更趨火熱。公司在做深度學習的課程時,開發/市場同事也會順帶著學習學習,但從始至終都尚未跟著課程上的實驗實際動手做過。
直到最近,我們團隊人手漸漸齊了之後,發現可以動手做一些實驗了。為何呢?學一個東西,懂它理論之後,最重要的是付諸實踐,動手實驗一把,不然永遠只是紙上談兵。我們三雖然都不講課(一市場一PHP一打雜),但可以輔助講師團隊帶動更多學員一起做實驗、一起搞。
激情澎湃,心血來潮。
- 21號下午5點,同事李、許開始搞DL:用DL學梵高作畫。恩,是搞DL 不是搞ML。
- 接近6點的時候,開始卷積計算,等待的過程就像生孩子一樣。
- 晚上8點,CPU搞了一個半小時搞出來了,然後開始裝cuda,好用GPU搞幾副梵高筆下的畫。
- 0點,同事還在裝,因為GTX 1070下裝cuda8.0實在是費勁吶(1070+8.0之所以難裝,一個是網上教程很少,一個是1070 8.0都是剛出來的,特別是1070目前只能用cuda 8.0。可能960/970/980搭cuda 7.5會輕鬆太多)。
- 接下來,兩同事在黑暗中前行了一夜,趟遍無數坑。
- 22號早上6點半,cuda、TensorFlow終於編譯好,我..
- 22號早上8點,用DL學梵高作畫,GTX 1070 cuda 8.0 Ubuntu 14.04 cudnn 5.1 tensorflow gpu,折騰一整夜,趟遍無數坑,兩位同事一PHP一市場終於搞定。(恩,有人說,PHP是世界上最好的語言)。
我們搭建好之後,興高采烈的在微博上釋出(因為兩同事此前從未搞過DL,可以想象我們心情之興奮),發現咱5月DL班裡一學員之前也搭過這個配置,說:“裝cuda 和驅動花了幾天,經常出現黑屏”。也有朋友反饋:“配置這玩意確實很麻煩。”、以及“是真的很麻煩,我自己嘗試搭建就一直沒成功”。所以,很多朋友求教程。
事實上,GPU搭好後,最後跑下demo就幾分鐘的事,主要是整個搭建過程 很折騰。不信?你可以先不看本教程,然後自個從頭到尾搭一把1070+8.0,沒搭過1070+8.0之前就不要來輕易下結論了。真心話。
綜上,特此推出本份教程,是網上極少有的1070+8.0教程裡面最詳盡的一份(部分圖都是由驍哲用手機對著電腦拍下),希望讓更多人少走彎路。此外,我們更會在深度學習課程上帶領更多人跟我們一塊做DL實驗,一起玩。
二、配置
我們的配置為
- 硬體配置:酷睿i7-6700+GTX1070+500G固態硬碟+8G記憶體+主機板
- 軟體配置:Ubuntu14.04 +GTX1070顯示卡驅動+CUDA8.0+cudnn5.1+Tensorflow
三、下載
考慮到有些同學Linux操作不是很熟練,以下步驟儘量詳細,以讓每一個人都能玩一把。另,作業系統為全新安裝的Ubuntu14.04英文桌面版,如果已安裝其它版本或非全新安裝,步驟可相應調整。
3.1、 Ubuntu14.04
說明:
- 我們自己下載的時候是在官方英文版頁面下載,中文版網頁面似乎沒有Ubuntu14.04的下載頁。
- Ubuntu14.04版本選擇上建議使用英文原版,Kylin(麒麟:給中國使用者特別定製)版本不建議使用。原因:呵呵,外來和尚會念經
- Ubuntu16.04版本我們測試後發現進入桌面會螢幕閃動,分析原因似乎跟我們的顯示卡是1070版本有關(其實只要把GTX1070顯示卡驅動裝上就行),而Ubuntu14.04未出現以上狀況。所以考慮為廣大人民群眾減少麻煩,當您的顯示卡與我們類似(GTX1070\GTX1080),請參考本條建議。
UltraISO軟碟通:
說明:
3.2、 GTX1070顯示卡驅動
說明:
(1)選項圖解
(2)大家可以根據自己電腦配置進行選擇。
3.3、 CUDA
說明:
(1)在NVIDIA的CUDA下載頁面下,選擇要使用的CUDA版本進行下載。
(2)我們這裡使用CUDA8.0(頁面有提示GTX1070、GTX1080支援8.0版本),學員如果沒有使用以上兩個版本的GPU,可以下載CUDA7.5。DOWNLOAD(下載)。
(3)下載需要註冊。
(4)圖解選擇
3.4、 Cudnn
說明:
(1)下載需要填寫一個調查問卷,就三個選項,建議認真填寫,畢竟人家免費給咱使用。
(2)填寫完畢點選I Agree To前面的小方框,出現如下:
點選下載後出現很多個選擇,勾選3個選項:Images、Image Classification、Tensorflow。
3.5、 Tensorflow
tensorflow github上面提到 4 種安裝方式,本教程使用 第四種 原始碼安裝
- Virtualenv installation
- Anaconda installation
- Docker installation
- Installing from sources
說明:
(1)開啟下載頁面,往下翻,直到下圖這個位置:
(2) 點選Python 2開始下載。
最後,將所有下載檔案全部存放至自己的行動硬碟/U盤內,等待安裝時候使用。
四、 安裝
4.1、 安裝Ubuntu14.04
安裝Ubuntu14.04:
說明:
(1)我們直接安裝的英文原版系統,語言也是選擇英文的。
(2)上述連結在--第三步:安裝型別上選擇的是--自定義。我們選擇的是--清除整個磁碟並且安裝,如果你有Windows系統,還會提示安裝Ubuntu14.04與Windows並存模式。這個自行選擇,切記!這個地方謹慎選擇。
(3)感謝百度經驗上傳者!
4.2、 安裝GTX1070顯示卡驅動及CUDA8.0
注:安裝驅動需要在字元介面下安裝步驟:
(1)進入Ubuntu介面
(2)插入U盤,將內容拷貝至Desktop檔案下。熟悉Ubuntu的同學,這步可以按照自己習慣放置在其他資料夾下。
(3)如圖搜尋Terminal
(4) 將命令框圖示拖動到左邊欄裡或者桌面,以便使用。
(5) 開啟命令框,輸入 sudo –i
輸入開機密碼
輸入 sudo apt-get install vim
sudo vi /etc/default/grub
(6) 此時系統會進入一個文字頁面。在第20行前後會出現GRUB_CMDLINE_LINUX_DEFAULT="quiet"。將游標移動到這個命令最前端,然後鍵盤點選Esc鍵,再點選y鍵兩次,點一下p鍵。就會將本條指令複製一個放到下一行。然後點選i鍵,就能進行編輯了,在本行命令前面新增#號,然後移動到複製出來的那條,修改quiet為text,按Esc鍵。Shift+:輸入wq。
此時會調回命令框介面,輸入sudo update-grub2
輸入shutdown –r now重啟
(7) 重啟後進入字元介面,按照提示輸入你的使用者名稱及密碼
輸入sudo -i
輸入密碼
輸入cd /home/***(這個按Tab鍵自動匹配)/Desktop
輸入 ./NVIDIA-LIN…(這個按Tab鍵自動匹配) 或 /bin/bash 檔名
不懂的看圖如下
按回車鍵後出現
…………………………………………………………………………………………………………………………………………………………………………………………………………………………….
說明開始安裝
然後選擇Accept等等同意字樣
期間遇到協議的時候一直按空格鍵就行
協議完成後提示如圖
輸入accept
然後一路同意就行
(8) 安裝NVIDIA結束後,同樣操作安裝CUDA8.0,這裡需要注意其中一個地方需要填寫N才行,不能寫Y。如圖
其餘操作如圖
然後回車等待就行
(9) 類似剛剛第(5)步的執行
輸入sudo vi /etc/default/grub此時系統會進入一個文字頁面。在第20行前後會出現GRUB_CMDLINE_LINUX_DEFAULT="quiet"。將游標移動到這個命令最前端,然後鍵盤點選Esc鍵,再點選y鍵兩次,點一下p鍵。就會將本條指令複製一個放到下一行。然後點選i鍵,就能進行編輯了,在本行命令前面刪除#號,然後移動到複製出來的那條,命令前面新增#號,按Esc鍵。Shift+:輸入wq。
此時會調回命令框介面,輸入sudo update-grub
輸入shutdown –r now重啟
4.3、 Cudnn安裝
cd /home/***(自己的使用者名稱)/Desktop/###(這個命令意思是找到剛剛我們用U盤傳過來的檔案)
tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz###(解壓這個檔案)
sudo cp cuda/include/cudnn.h /usr/local/cuda/include###(複製)
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64###(複製)
sudochmoda+r/usr/local/cuda/include/cudnn.h/usr/local/cuda/lib64/libcudnn*
4.4、 其他依賴安裝:
我們是在github的Tensorflow官方網頁上,根據提示安裝,地址如上。
按步驟截圖如下
sudo apt-get install python-pip python-dev (這個不完整,完整版如下)
sudo apt-get install python-pip python-dev Python-scipy Pythoy-numpy git
4.5、 Bazel安裝
由於本教程使用tensorflow原始碼編譯/安裝,所以需要使用 bazel build。
自動跳轉
4.6、 numpy安裝
git clone git://github.com/numpy/numpy.git numpy
4.7、 Tensorflow安裝
還是剛剛的網址
./configure
如果configure 失敗 嘗試執行一下兩個命令export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
sudo pip install /home/***(你自己的使用者名稱)/Desktop/tensorflow-0.10.0-cp2-none-any.whl
bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
# To build with GPU support:
bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
mkdir _python_build
cd _python_build
ln -s ../bazel-bin/tensorflow/tools/pip_package/build_pip_package.runfiles/org_tensorflow/*.
ln -s ../tensorflow/tools/pip_package/*.
python setup.py develop
五、 測試Tensorflow
六、 實驗:模仿梵高繪畫
接下來,下載vgg19:
http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat
然後,把vgg放到neural-style的資料夾根目錄下
現在,在命令視窗cd /home/***(你自己的使用者名稱)/Desktop/
git clone https://github.com/anishathalye/neural-style.git
接著 你就能在桌面開啟這個檔案夾了
把你想修改的照片放入example資料夾內,然後在剛才的視窗命令接著輸入:
python neural_style.py --content ./example/***.jpg(此括號內不要複製:***代表你想要使用的圖片名稱) --styles ./example/ 1-style.jpg(此括號內不要複製:1-style.jpg是梵高星空圖片在資料夾內名稱,你也可以換其他的風格,改名稱就行了) --output ./example/$$$.jpg(此括號內不要複製:$$$代表你想要生成的圖片名稱)
例如我的輸入如下python neural_style.py –content ./example/1-content.jpg --styles./example/1-style.jpg--output ./example/1-output.jpg
接下來,就是見證奇蹟的時刻。
在計算機學到梵高作品星空的風格之後,讓計算機對指定圖片進行梵高式處理,如下圖所示
之前用CPU得一個半小時才能出來結果的,現在用GPU幾分鐘即可出結果。不枉費勁心思折騰GPU。
後記
兩位同事此前從未做過任何DL實驗,僅拼著一腔熱情、興趣、熱愛做這個實驗,剛做完時覺得很麻煩,因為很多坑網上都沒提過、全憑在黑暗中摸石頭過河,且前行整整一夜。但相信有此教程後,1070+8.0則不再麻煩,可能一兩個小時便能搞定(因為後來我們一下午連搞三遍,一遍比一遍快)。動嘴容易、動手方知沒那麼容易,但真正推動社會前行的永遠是實幹家,而非評論家。
這個實驗只是開始,我們開發/市場團隊還會輔助講師團隊帶動更多學員朋友做一系列更多實驗,比如char-rnn、WaveNet(用卷積神經網路模擬人的聲音)等等,哪怕實驗再簡單我們也會去做,因為:學計算機/ML/DL,第一要領就是動手、就是實驗,否則說再多都是紙上談兵。
創造價值、幫助眾人。貼兩張圖,是為念。最後探究實驗背後原理,請參看此課程:深度學習班。
七月線上開發/市場團隊驍哲、李偉、July,二零一六年九月二十五日。