1. 程式人生 > >Linux系統下深度學習框架Keras的搭建

Linux系統下深度學習框架Keras的搭建

關於計算機的硬體配置說明

推薦配置

如果您是高校學生或者高階研究人員,並且實驗室或者個人資金充沛,建議您採用如下配置:

  • 主機板:X99型號或Z170型號
  • CPU: i7-5830K或i7-6700K 及其以上高階型號
  • 記憶體:品牌記憶體,總容量32G以上,根據主機板組成4通道或8通道
  • SSD: 品牌固態硬碟,容量256G以上
  • 顯示卡:NVIDIA GTX 1080、NVIDIA GTX TITAN、NVIDIA GTX 1070、NVIDIA GTX 1060 (順序為優先建議,並且建議同一顯示卡,可以根據主機板插槽數量購買多塊,例如X99型號主機板最多可以採用×4的顯示卡)
  • 電源:由主機機容量的確定,一般有顯示卡總容量後再加200W即可

最低配置

如果您是僅僅用於自學或程式碼除錯,亦或是條件所限僅採用自己現有的裝置進行開發,那麼您的電腦至少滿足以下幾點:

  • CPU:Intel第三代i5和i7以上系列產品或同性能AMD公司產品
  • 記憶體:總容量4G以上

CPU說明

  • 大多數CPU目前支援多核多執行緒,那麼如果您採用CPU加速,就可以使用多執行緒運算。這方面的優勢對於伺服器CPU志強系列尤為關鍵

顯示卡說明

  • 如果您的顯示卡是非NVIDIA公司的產品或是NVIDIA GTX系列中型號的第一個數字低於4或NVIDIA的GT系列,都不建議您採用此類顯示卡進行加速計算,例如NVIDIA GT 910NVIDIA GTX 450 等等。
  • 如果您的顯示卡為筆記本上的GTX移動顯示卡(型號後面帶有標識M),那麼請您慎重使用顯示卡加速,因為移動版GPU很容易發生過熱燒燬現象。
  • 如果您的顯示卡,顯示的是諸如 HD5000,ATI 5650 等型別的顯示卡,那麼您只能使用CPU加速
  • 如果您的顯示卡為Pascal架構的顯示卡(NVIDIA GTX 1080,NVIDIA GTX 1070等),您只能在之後的配置中選擇CUDA 8.0 

基本開發環境搭建

1. Linux 發行版

linux有很多發行版,本文強烈建議讀者採用新版的Ubuntu 16.04 LTS 
一方面,對於大多數新手來說Ubuntu具有很好的圖形介面,與樂觀的開源社群;另一方面,Ubuntu是Nvidia官方以及絕大多數深度學習框架預設開發環境。 
個人不建議使用Ubuntu Kylin,之前提出有部分資訊表示,中國官方開發的這個版本有部分功能被“閹割”,你懂得。 
Ubuntu 16.04 LTS下載地址

http://www.ubuntu.org.cn/download/desktop 
 
通過U盤安裝好後,進行初始化環境設定。

2. Ubuntu初始環境設定

  • 安裝開發包 
    開啟終端輸入:
  1. # 系統升級
  2. >>> sudo apt update
  3. >>> sudo apt upgrade
  4. # 安裝python基礎開發包
  5. >>> sudo apt install -y python-dev python-pip python-nose gcc g++ git gfortran vim
  • 安裝運算加速庫 
    開啟終端輸入:
  1. >>> sudo apt install -y libopenblas-dev liblapack-dev libatlas-base-dev

3. CUDA開發環境的搭建(CPU加速跳過)

如果您的僅僅採用cpu加速,可跳過此步驟 
- 下載CUDA8.0

之後開啟終端輸入:

  1. >>> sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb
  2. >>> sudo apt update
  3. >>> sudo apt install cuda

自動配置成功就好。

  • 將CUDA路徑新增至環境變數 
    終端輸入:
  1. >>> sudo gedit /etc/bash.bashrc

bash.bashrc檔案中新增:

  1. export CUDA_HOME=/usr/local/cuda-8.0
  2. export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
  3. export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

之後source gedit /etc/bash.bashrc即可 
同樣,在終端輸入:

  1. >>> sudo gedit ~/.bashrc

.bashrc中新增如上相同內容 
(如果您使用的是zsh,在~/.zshrc新增即可)

  • 測試 
    終端輸入:
  1. >>> nvcc -V

會得到相應的nvcc編譯器相應的資訊,那麼CUDA配置成功了。 
記得重啟系統

4. 加速庫cuDNN(可選)

從官網下載需要註冊賬號申請,兩三天批准。網盤搜尋一般也能找到最新版。 
Linux目前就是cudnn-8.0-win-x64-v5.1-prod.zip。 
下載解壓出來是名為cuda的資料夾,裡面有bin、include、lib,將三個資料夾複製到安裝CUDA的地方覆蓋對應資料夾,在終端中輸入:

  1. >>> sudo cp include/cudnn./usr/local/cuda-8.0/include/
  2. >>> sudo cp lib64/* /usr/local/cuda-8.0/lib64/

Keras框架搭建

相關開發包安裝

終端中輸入:

  1. >>> sudo pip install ---pre pip setuptools wheel
  2. >>> sudo pip install ---pre numpy scipy matplotlib scikit-learn scikit-image
  3. >>> sudo pip install ---pre theano
  4. >>> sudo pip install ---pre keras

安裝完畢後,輸入python,然後輸入:

  1. >>>import theano
  2. >>>import keras

無錯輸出即可

Keras環境設定

  • 修改預設keras後端 
    終端中輸入:
  1. >>> gedit ~/.keras/keras.json
  • 配置theano檔案 
    終端中輸入:
  1. >>> gedit ~/.theanorc

並寫入以下:

  1. openmp=False
  2. device = gpu
  3. floatX = float32
  4. allow_input_downcast=True
  5. [lib]
  6. cnmem =0.8
  7. [blas]
  8. ldflags=-lopenblas
  9. [nvcc]
  10. fastmath =True

如果您的所安裝的是CPU加速版本,那麼.theanorc檔案配置如下:

  1. [global]
  2. openmp=True
  3. device = cpu
  4. floatX = float32
  5. allow_input_downcast=True
  6. [blas]
  7. ldflags=-lopenblas

之後可以驗證keras是否安裝成功,在命令列中輸入Python命令進入Python變成命令列環境:

  1. >>>import keras

沒有報錯,並且會打印出關於顯示卡資訊以及cnmem等資訊(CPU版本沒有)那麼Keras就已經成功安裝了。

加速測試

速度測試

新建一個檔案test.py,內容為:

  1. from theano import function, config, shared, sandbox
  2. import theano.tensor as T
  3. import numpy
  4. import time
  5. vlen =10*30*768# 10 x #cores x # threads per core
  6. iters =1000
  7. rng = numpy.random.RandomState(22)
  8. = shared(numpy.asarray(rng.rand(vlen), config.floatX))
  9. = function([], T.exp(x))
  10. print(f.maker.fgraph.toposort())
  11. t0 = time.time()
  12. for i in xrange(iters):
  13.  r = f()
  14. t1 = time.time()
  15. print("Looping %d times took %f seconds"%(iters, t1 - t0))
  16. print("Result is %s"%(r,))
  17. if numpy.any([isinstance(x.op, T.Elemwise)for x in f.maker.fgraph.toposort()]):
  18. print('Used the cpu')
  19. else:
  20. print('Used the gpu')

在GTX 970顯示卡下,輸出結果大概是0.21秒,在一百倍運算量下19秒,可以進行對比。 
理論上,相比較主頻為3.3GHz的CPU,加速比應該是75倍,但不同的ssd和記憶體限制了IO介面傳輸速度。

Keras中mnist資料集測試

下載Keras開發包

  1. git clone https://github.com/fchollet/keras.git
  2. cd keras/examples/
  3. python mnist_mlp.py

程式無錯進行,至此,keras安裝完成。