若是你的Mac不自帶NVIDIA的獨立顯卡(例如15寸如下或者17年新款的Macbook。具體能夠在「關於本機->系統報告->圖形卡/顯示器」裏查看),那麼你可能沒法在這臺Mac上使用GPU訓練深度學習模型。不過這並不值得遺憾。事實上,我在本身的Macbook上(15-inch,Early 2013,NVIDIA GeForce GT 650M 1024 MB)作了一個簡單的測試:在mnist數據集上訓練CNN模型時,GPU模式相對於CPU模式僅節省了1/3的時間。這可能要歸咎於Mac上贏弱的顯卡。相比之下,我更推薦購買一臺有着強勁性能的顯卡的PC本(好比某些遊戲本)來搭建深度學習的開發環境,或者是直接租賃AWS的Instance服務。html
下面步入正題。python
安裝GPU開發環境
幾乎全部的主流深度學習框架在使用GPU進行模型訓練時都依賴於兩個底層環境:CUDA和cuDNN。前者是一個使用GPU進行並行計算的平臺,後者是一個封裝了使用GPU加速神經網絡計算的library。git
安裝CUDA
-
確保你的顯卡被CUDA所兼容。前往CUDA-capable GPU檢查可用的顯卡型號。github
-
接下來,安裝xcode(經過App Store)和命令行工具:
xcode-select --install
。這一步會自動安裝clang編譯器,能夠在命令行裏輸入:/usr/bin/cc --version
進行驗證。
clang編譯器也是安裝Theano的預備環境之一。shell -
前往官網下載並安裝CUDA8.0(dmg安裝包)。注意選擇相應的平臺。這一步會同時安裝CUDA driver和CUDA toolkit。macos
-
配置環境變量。打開
~/.bash_profile
,輸入四行命令:jsonexport CUDA_ROOT=/Developer/NVIDIA/CUDA-8.0 export PATH=$CUDA_ROOT/bin${PATH:+:${PATH}} export DYLD_LIBRARY_PATH=$CUDA_ROOT/lib${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}} export LD_LIBRARY_PATH=$CUDA_ROOT/lib:$LD_LIBRARY_PATH
其中,環境變量CUDA_ROOT給Theano指定了CUDA的安裝目錄,也能夠被設置爲
/usr/local/cuda
(這兩個路徑下的文件均經過軟連接被link到了一塊兒)。後端配置完成後,退出編輯器,
source ~/.bash_profile
並執行nvcc -V
驗證CUDA的安裝是否正常。xcode
安裝cuDNN
-
前往官網下載cuDNN壓縮包。注意選擇合適的平臺。我下載的是cuDNN5.1 for CUDA8.0(截止到17年4月,Theano尚不支持cuDNN6.0)。bash
-
解壓縮下載的文件,將
include
目錄下的*.h
文件複製到$CUDA_ROOT/include
目錄下;將lib
目錄下的*.so
文件複製到$CUDA_ROOT/lib
目錄下。
至此,完成了GPU開發環境的基本部署。
安裝Theano
Theano的安裝極其簡單:
-
首先,前往Miniconda安裝Conda
-
使用Conda安裝第三方依賴(「<>」裏爲可選包):
shell conda install numpy scipy mkl <nose> <sphinx> <pydot-ng>
-
使用Conda安裝Theano(若是出現網絡鏈接異常,也可使用pip進行安裝。參見官網安裝指南):
conda install theano pygpu
安裝Keras
Keras是一個創建在Theano和TensorFlow基礎上,封裝了大量底層接口,方便研究人員快速搭建模型原型的深度學習開發框架。它提供了pip和從源碼直接安裝兩種方式。
使用pip安裝:
sudo pip install keras
從源碼直接安裝:
git clone https://github.com/fchollet/keras.git cd keras sudo python setup.py install
Keras默認以TensorFlow爲底層計算引擎。第一次執行import keras
命令後,會生成~/.keras/keras.json
文件。打開這個文件,將"backend": "tensorflow"
修改成"backend": "theano"
,即完成了後端計算引擎到Theano的切換。
至此,一個基本的深度學習開發環境已搭建完成。重啓電腦以確保全部配置均已生效。
環境測試
咱們能夠運行一些demo來測試環境的安裝是否正常。
從Github上下載Keras的源碼,進入examples
子目錄,輸入命令:
THEANO_FLAGS=mode=FAST_RUN python mnist_cnn.py
該命令將以CPU模式在mnist數據集上訓練CNN模型。
輸入命令:
THEANO_FLAGS='mode=FAST_RUN,device=cuda,floatX=float32,optimizer_including=cudnn' python mnist_cnn.py
該命令將以GPU模式(並使用cudnn加速)在mnist數據集上訓練CNN模型。
若是一切正常,你將看到相似下圖的屏幕輸出:
我在本身的Macbbok Pro(15寸,13年初,GT 650M的1024MB顯卡)上分別測試了CPU,GPU,GPU with cuDNN三種模式下CNN模型(mnist數據集)的訓練性能,其結果以下(單位:秒):
出乎意料的是,若是沒有cuDNN的加速,Mac上GPU的計算性能遠不如CPU!而即使使用了cuDNN的加速,模型的訓練也只不過縮短了1/3的時間。所以,若是想認真地玩一玩深度學習模型,仍是建議上高性能的顯卡,或者直接用AWS的GPU服務吧!