TensorFlow開發環境搭建(Ubuntu16.04+GPU+TensorFlow源碼編譯)
1 安裝選擇
1.1 平台
目前TensorFlow已支持Mac、Ubuntu和Windows三個主流平台(64位平台),
1.2 GPU vs CPU
在安裝時可以選擇安裝版本是否支持GPU,
1.3 二進位安裝 vs 源碼安裝
同時,安裝時可以考慮採用二進位安裝,還是源碼安裝,
1.4 二進位安裝選擇
二進位安裝可以有多種選擇,
1.5 實際使用選擇
手頭上有兩台電腦,
- MacBook Pro (Retina, 13-inch, Early 2015)處理器:2.7 GHz Intel Core i5內存:8GB 1867MHz DDR3顯卡:Intel Iris Graphics 6100 1536MB
- 攀升兄弟組裝台式機處理器:英特爾 Core i7-6700 @3.40GHz 四核主板:華碩 B150M-ET M2 SERIES
內存:8G(威剛DDR4 2801MHz)
硬碟:三星 MZ7TE256HMHP-00000(256GB/固態硬碟)顯卡:Nvidia GeForce GTX 950(2GB)
其中,
MacBook Pro採用基於Anaconda的二進位安裝方式(僅支持CPU)。Anaconda是一個集成平台,包含大多數機器學習的常用工具,- NumPy:科學運算包
- SciPy:在NumPy的基礎上構建,功能更加強大的科學計算包
- Matplotlib:類似Matlab的繪圖工具包
- Scikit-learn:經典機器學習工具包
- Pandas:數據處理和分析工具包(可用於數據讀寫、清洗、填充和分析等場景)採用Anaconda安裝方案,一方面MacBook Pro的開發環境很容易搭建(幾句命令即可完成),另一方面,基於Anaconda的環境,也可以方便驗證簡單的機器學習演算法。
對於台式機則採用了Ubuntu+GPU+TensorFlow源碼編譯的方式,進行TensorFlow環境搭建,下面我們著重介紹下這種安裝方式。
2 Ubuntu16.04+TensorFlow(GPU)源碼編譯
2.1 Ubuntu系統安裝
目前,大多數計算機,包括台式機已沒有了光碟機,同時,Ubuntu的系統安裝盤也不易獲得。針對這種情況,我們可以採用U盤來進行安裝。具體步驟可以參考:《Ubuntu 16.04 U盤安裝圖文教程》
2.2 禁用UEFI安全啟動
對於華碩 B150M-ET主板,UEFI默認是開啟的。而UEFI開啟會導致第三方驅動安裝失敗(如顯卡驅動,這是源碼編譯安裝GPU支持的TensorFlow,遇到的第一個坑)。具體步驟可以參考:《華碩主板禁用UEFI安全啟動》
2.3 安裝NVIDIA驅動
2.3.1 安裝方式
英偉達的顯卡驅動有三種方式:
- apt-get+系統設置安裝
- 安裝CUDA時順便安裝
- 官方下載最新驅動並安裝
參考:《Ubuntu 16.04安裝NVIDIA驅動》
2.3.2 安裝步驟
本文採用第一種方案:
sudo apt-get install nvidia-367
然後進入:System Settings->Software&Updates->Additional Drivers->,選擇NVIDIA Corporation[Using NVIDIA binary driver]
2.3.3 驗證測試
nvidia-smi #若列出GPU的信息列表,表示驅動安裝成功nvidia-settings #若彈出設置對話框,亦表示驅動安裝成功
2.4 安裝CUDA
CUDA(Compute Unified Device Architecture),是顯卡廠商NVIDIA推出的運算平台。可以理解成基於GPU並行計算的應用層介面。
CUDA8.0下載地址安裝Cuda的時候,需要關閉X服務。
sudo service lightdm stop
這時,系統會出現黑屏。此時,同時按住[CTRL + ALT + F1]三個鍵進入命令行模式(如果不能進入命令行模式,可以參考《alt+ctrl+F1黑屏 ,解決方案》),
然後輸入[賬號],[密碼]後登陸。在CUDA的下載目錄運行,
sudo sh cuda_xxx.run
需要注意的是,在詢問是否安裝「NVIDIA Accelerated Graphics Driver」可以選擇「是」,
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?(y)es/(n)o/(q)uit: y
但在後續出現詢問是否安裝「X configuration」時,則需要選擇「否」,否則之前安裝的顯卡驅動就白安裝了。
CUDA安裝結束後,則可以恢復到圖形界面模式,sudo service lightdm start
到這裡,CUDA的安裝還不算結束,需要將CUDA相關的內容添加到系統環境變數中。安裝過程中Summary提示,
Please make sure that– PATH includes /usr/local/cuda-8.0/bin– LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root
CUDA相關的環境變數可以放在~/.bashrc中,
vi ~/.bash_profile
在其中,增加如下兩行,
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda- 8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64"export CUDA_HOME=/usr/local/cuda-8.0
2.5 安裝cuDNN
cuDNN(CUDA Deep Neural Network)相比標準的cuda,它在一些常用的神經網路操作上進行了性能的優化,比如卷積,pooling,歸一化,以及激活層等等。
下載地址:https://developer.nvidia.com/rdp/cudnn-download下載cuDNN後進行解壓,並執行如下命令:
sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/includesudo cp -d cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*
2.6 gcc降低版本
網上說cuda8.0不支持5.0以上的編譯器,因此需要降級,把編譯器版本降到4.9,但我看了CUDA8.0的安裝手冊《NVIDIA CUDA INSTALLATION GUIDE FOR
LINUX》,並沒有發現這一條,在實際使用中,還是將GCC做了降級(PS,在安裝時可以先不降級,看看是否會出問題),GCC降級方法如下,
sudo apt-get install g++-4.9sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30sudo update-alternatives --set cc /usr/bin/gccsudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30sudo update-alternatives --set c++ /usr/bin/g++
2.7 安裝Bazel
Bazel是一個構建工具,即一個可以運行編譯和測試來組裝軟體的工具,跟Make、Ant、Gradle、Buck、Pants和Maven一樣。TensorFlow的編譯是基於Bazel完成的。
Bazel官方地址:https://docs.bazel.build/versions/master/install.html2.7.1 安裝準備
2.7.2 安裝
Bazel可以通過apt-get和下載安裝兩種方式完成,本文中,採用下載安裝的方式實現,
chmod +x PATH_TO_INSTALL.SH ./PATH_TO_INSTALL.SH --user
2.8 第三方庫安裝
sudo apt-get install python-numpy swig python-dev python-wheelsudo apt-get install libcupti-devsudo apt-get install git
2.9 TensorFlow源碼編譯
2.9.1 下載
git clone https://github.com/tensorflow/tensorflow
2.9.2 編譯配置
cd ~/tensorflow./configure
2.9.3 編譯安裝
bazel build -c opt //tensorflow/tools/pip_package:build_pip_packagebazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_packagebazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkgsudo pip install /tmp/tensorflow_pkg/tensorflow-0.10.0-cp2-none-any.whl
至此,便完成了支持GPU的TensorFlow源碼編譯。
2.10 環境測試
可以通過如下代碼進行測試,
# Pythonimport tensorflow as tfhello = tf.constant(Hello, TensorFlow!)sess = tf.Session()print(sess.run(hello))
正常測試輸出,
Hello, TensorFlow!
3 資料參考
《Ubuntu 16.04 U盤安裝圖文教程》
《華碩主板禁用UEFI安全啟動》
《Ubuntu 16.04安裝NVIDIA驅動》
《alt+ctrl+F1黑屏 ,解決方案》
《Ubuntu16.04 下安裝GPU版TensorFlow(包括Cuda和Cudnn)》
《ubuntu16.04下安裝TensorFlow(GPU加速)》
推薦閱讀:
※EM演算法總結
※機器學習最難區分的4個概念,一文釐清!
※Hulu機器學習問題與解答系列 | 十九:主題模型
※機器學習-變數離散之MDLP-20180217
※FM/FFM-論文筆記
TAG:機器學習 | 深度學習DeepLearning | TensorFlow |