TensorFlow開發(fā)環(huán)境搭建(Ubuntu16.04+GPU+TensorFlow源碼編譯)

1 安裝選擇

1.1 平臺

目前TensorFlow已支持Mac先改、Ubuntu和Windows三個(gè)主流平臺(64位平臺)首懈,


https://www.tensorflow.org/install/

1.2 GPU vs CPU

在安裝時(shí)可以選擇安裝版本是否支持GPU卒密,


https://www.tensorflow.org/install/install_linux

1.3 二進(jìn)制安裝 vs 源碼安裝

同時(shí),安裝時(shí)可以考慮采用二進(jìn)制安裝祝峻,還是源碼安裝牡整,


https://www.tensorflow.org/install/

1.4 二進(jìn)制安裝選擇

二進(jìn)制安裝可以有多種選擇,


https://www.tensorflow.org/install/install_linux

1.5 實(shí)際使用選擇

手頭上有兩臺電腦疼约,

  • MacBook Pro (Retina, 13-inch, Early 2015)
    處理器:2.7 GHz Intel Core i5
    內(nèi)存:8GB 1867MHz DDR3
    顯卡:Intel Iris Graphics 6100 1536MB
  • 攀升兄弟組裝臺式機(jī)
    處理器:英特爾 Core i7-6700 @3.40GHz 四核
    主板:華碩 B150M-ET M2 SERIES
    內(nèi)存:8G(威剛DDR4 2801MHz)
    硬盤:三星 MZ7TE256HMHP-00000(256GB/固態(tài)硬盤)
    顯卡:Nvidia GeForce GTX 950(2GB)

其中,
MacBook Pro采用基于Anaconda的二進(jìn)制安裝方式(僅支持CPU)蝙泼。Anaconda是一個(gè)集成平臺程剥,包含大多數(shù)機(jī)器學(xué)習(xí)的常用工具,

  • NumPy:科學(xué)運(yùn)算包
  • SciPy:在NumPy的基礎(chǔ)上構(gòu)建汤踏,功能更加強(qiáng)大的科學(xué)計(jì)算包
  • Matplotlib:類似Matlab的繪圖工具包
  • Scikit-learn:經(jīng)典機(jī)器學(xué)習(xí)工具包
  • Pandas:數(shù)據(jù)處理和分析工具包(可用于數(shù)據(jù)讀寫织鲸、清洗、填充和分析等場景)
    采用Anaconda安裝方案溪胶,一方面MacBook Pro的開發(fā)環(huán)境很容易搭建(幾句命令即可完成)搂擦,另一方面,基于Anaconda的環(huán)境哗脖,也可以方便驗(yàn)證簡單的機(jī)器學(xué)習(xí)算法瀑踢。

對于臺式機(jī)則采用了Ubuntu+GPU+TensorFlow源碼編譯的方式扳还,進(jìn)行TensorFlow環(huán)境搭建,下面我們著重介紹下這種安裝方式橱夭。

2 Ubuntu16.04+TensorFlow(GPU)源碼編譯

2.1 Ubuntu系統(tǒng)安裝

目前氨距,大多數(shù)計(jì)算機(jī),包括臺式機(jī)已沒有了光驅(qū)棘劣,同時(shí)俏让,Ubuntu的系統(tǒng)安裝盤也不易獲得。針對這種情況茬暇,我們可以采用U盤來進(jìn)行安裝首昔。具體步驟可以參考:《Ubuntu 16.04 U盤安裝圖文教程》

2.2 禁用UEFI安全啟動

對于華碩 B150M-ET主板,UEFI默認(rèn)是開啟的糙俗。而UEFI開啟會導(dǎo)致第三方驅(qū)動安裝失斃掌妗(如顯卡驅(qū)動,這是源碼編譯安裝GPU支持的TensorFlow臼节,遇到的第一個(gè)坑)撬陵。具體步驟可以參考:《華碩主板禁用UEFI安全啟動》

2.3 安裝NVIDIA驅(qū)動

2.3.1 安裝方式

英偉達(dá)的顯卡驅(qū)動有三種方式:

2.3.2 安裝步驟

本文采用第一種方案:

  sudo apt-get install nvidia-367

然后進(jìn)入:System Settings->Software&Updates->Additional Drivers->,選擇NVIDIA Corporation[Using NVIDIA binary driver]

2.3.3 驗(yàn)證測試

nvidia-smi #若列出GPU的信息列表网缝,表示驅(qū)動安裝成功
nvidia-settings #若彈出設(shè)置對話框巨税,亦表示驅(qū)動安裝成功

2.4 安裝CUDA

CUDA(Compute Unified Device Architecture),是顯卡廠商N(yùn)VIDIA推出的運(yùn)算平臺粉臊〔萏恚可以理解成基于GPU并行計(jì)算的應(yīng)用層接口。
CUDA8.0下載地址

https://developer.nvidia.com/cuda-80-download-archive

安裝Cuda的時(shí)候扼仲,需要關(guān)閉X服務(wù)远寸。

sudo service lightdm stop

這時(shí),系統(tǒng)會出現(xiàn)黑屏屠凶。此時(shí)驰后,同時(shí)按住[CTRL + ALT + F1]三個(gè)鍵進(jìn)入命令行模式(如果不能進(jìn)入命令行模式,可以參考《alt+ctrl+F1黑屏 矗愧,解決方案》)灶芝,
然后輸入[賬號],[密碼]后登陸唉韭。
在CUDA的下載目錄運(yùn)行夜涕,

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ù)出現(xiàn)詢問是否安裝“X configuration”時(shí)女器,則需要選擇“否”,否則之前安裝的顯卡驅(qū)動就白安裝了住诸。
CUDA安裝結(jié)束后驾胆,則可以恢復(fù)到圖形界面模式涣澡,

sudo service lightdm start

到這里,CUDA的安裝還不算結(jié)束俏拱,需要將CUDA相關(guān)的內(nèi)容添加到系統(tǒng)環(huán)境變量中暑塑。安裝過程中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相關(guān)的環(huán)境變量可以放在~/.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)相比標(biāo)準(zhǔn)的cuda搞隐,它在一些常用的神經(jīng)網(wǎng)絡(luò)操作上進(jìn)行了性能的優(yōu)化驹愚,比如卷積,pooling劣纲,歸一化逢捺,以及激活層等等。
下載地址:https://developer.nvidia.com/rdp/cudnn-download

https://developer.nvidia.com/rdp/cudnn-download

下載cuDNN后進(jìn)行解壓癞季,并執(zhí)行如下命令:

sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include
sudo cp -d cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*

2.6 gcc降低版本

網(wǎng)上說cuda8.0不支持5.0以上的編譯器劫瞳,因此需要降級,把編譯器版本降到4.9绷柒,但我看了CUDA8.0的安裝手冊《NVIDIA CUDA INSTALLATION GUIDE FOR
LINUX》志于,并沒有發(fā)現(xiàn)這一條,


《NVIDIA CUDA INSTALLATION GUIDE FOR LINUX》

在實(shí)際使用中废睦,還是將GCC做了降級(PS伺绽,在安裝時(shí)可以先不降級,看看是否會出問題)嗜湃,GCC降級方法如下奈应,

sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++

2.7 安裝Bazel

Bazel是一個(gè)構(gòu)建工具,即一個(gè)可以運(yùn)行編譯和測試來組裝軟件的工具购披,跟Make杖挣、Ant、Gradle刚陡、Buck惩妇、Pants和Maven一樣。TensorFlow的編譯是基于Bazel完成的橘荠。
Bazel官方地址:https://docs.bazel.build/versions/master/install.html

https://docs.bazel.build/versions/master/install.html

2.7.1 安裝準(zhǔn)備

https://docs.bazel.build/versions/master/install-ubuntu.html

2.7.2 安裝

Bazel可以通過apt-get和下載安裝兩種方式完成,本文中郎逃,采用下載安裝的方式實(shí)現(xiàn)哥童,

chmod +x PATH_TO_INSTALL.SH 
./PATH_TO_INSTALL.SH --user 

2.8 第三方庫安裝

sudo apt-get install python-numpy swig python-dev python-wheel
sudo apt-get install libcupti-dev
sudo 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_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 /tmp/tensorflow_pkg/tensorflow-0.10.0-cp2-none-any.whl

至此,便完成了支持GPU的TensorFlow源碼編譯褒翰。

2.10 環(huán)境測試

可以通過如下代碼進(jìn)行測試贮懈,

# Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

正常測試輸出匀泊,

Hello, TensorFlow!

3 資料參考

《Ubuntu 16.04 U盤安裝圖文教程》
《華碩主板禁用UEFI安全啟動》
《Ubuntu 16.04安裝NVIDIA驅(qū)動》
《alt+ctrl+F1黑屏 ,解決方案》
《Ubuntu16.04 下安裝GPU版TensorFlow(包括Cuda和Cudnn)》
《ubuntu16.04下安裝TensorFlow(GPU加速)》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朵你,一起剝皮案震驚了整個(gè)濱河市各聘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抡医,老刑警劉巖躲因,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異忌傻,居然都是意外死亡大脉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門水孩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镰矿,“玉大人,你說我怎么就攤上這事俘种〕颖辏” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵宙刘,是天一觀的道長苍姜。 經(jīng)常有香客問我,道長荐类,這世上最難降的妖魔是什么怖现? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮玉罐,結(jié)果婚禮上屈嗤,老公的妹妹穿的比我還像新娘。我一直安慰自己吊输,他們只是感情好饶号,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著季蚂,像睡著了一般茫船。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扭屁,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天算谈,我揣著相機(jī)與錄音,去河邊找鬼料滥。 笑死然眼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的葵腹。 我是一名探鬼主播高每,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼屿岂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鲸匿?” 一聲冷哼從身側(cè)響起爷怀,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎带欢,沒想到半個(gè)月后运授,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洪囤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年徒坡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘤缩。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡喇完,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出剥啤,到底是詐尸還是另有隱情锦溪,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布府怯,位于F島的核電站刻诊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏牺丙。R本人自食惡果不足惜则涯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冲簿。 院中可真熱鬧粟判,春花似錦、人聲如沸峦剔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吝沫。三九已至呻澜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惨险,已是汗流浹背羹幸。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辫愉,地道東北人栅受。 一個(gè)月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親窘疮。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容