1. 程式人生 > >教你從頭到尾利用DL學梵高作畫:GTX 1070 cuda 8.0 tensorflow gpu版

教你從頭到尾利用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

說明:

  1. 我們自己下載的時候是在官方英文版頁面下載,中版網頁面似乎沒有Ubuntu14.04的下載頁。
  2. Ubuntu14.04版本選擇上建議使用英文原版,Kylin(麒麟:給中國使用者特別定製)版本不建議使用。原因:呵呵,外來和尚會念經
  3. Ubuntu16.04版本我們測試後發現進入桌面會螢幕閃動,分析原因似乎跟我們的顯示卡是1070版本有關(其實只要把GTX1070顯示卡驅動裝上就行),而Ubuntu14.04未出現以上狀況。所以考慮為廣大人民群眾減少麻煩,當您的顯示卡與我們類似(GTX1070\GTX1080),請參考本條建議。

UltraISO軟碟通:

說明:

3.2、 GTX1070顯示卡驅動

說明:

1)選項圖解

2)大家可以根據自己電腦配置進行選擇。

3.3、 CUDA

說明:

1)在NVIDIACUDA下載頁面下,選擇要使用的CUDA版本進行下載。

2)我們這裡使用CUDA8.0(頁面有提示GTX1070GTX1080支援8.0版本),學員如果沒有使用以上兩個版本的GPU,可以下載CUDA7.5DOWNLOAD(下載)。

3)下載需要註冊。

4)圖解選擇

 

3.4、 Cudnn

說明:

1)下載需要填寫一個調查問卷,就三個選項,建議認真填寫,畢竟人家免費給咱使用。

2)填寫完畢點選I Agree To前面的小方框,出現如下:

    點選下載後出現很多個選擇,勾選3個選項:Images、Image Classification、Tensorflow。

3.5、 Tensorflow

tensorflow github上面提到 4 種安裝方式,本教程使用 第四種 原始碼安裝

  1. Virtualenv installation
  2. Anaconda installation
  3. Docker installation
  4. Installing from sources

說明:

1)開啟下載頁面,往下翻,直到下圖這個位置:

(2) 點選Python 2開始下載。

最後,將所有下載檔案全部存放至自己的行動硬碟/U盤內,等待安裝時候使用。

四、 安裝

4.1、 安裝Ubuntu14.04

安裝Ubuntu14.04

說明:

1)我們直接安裝的英文原版系統,語言也是選擇英文的。

2)上述連結在--第三步:安裝型別上選擇的是--自定義。我們選擇的是--清除整個磁碟並且安裝,如果你有Windows系統,還會提示安裝Ubuntu14.04Windows並存模式。這個自行選擇,切記!這個地方謹慎選擇。

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鍵,就能進行編輯了,在本行命令前面新增#號,然後移動到複製出來的那條,修改quiettextEscShift+輸入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鍵,就能進行編輯了,在本行命令前面刪除#號,然後移動到複製出來的那條,命令前面新增#號,按EscShift+輸入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、 其他依賴安裝:

我們是在githubTensorflow官方網頁上,根據提示安裝,地址如上。

按步驟截圖如下

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,二零一六年九月二十五日。