轉載請註明出處:http://www.cnblogs.com/buxizhizhoum/p/8086230.html html
環境:node
系統:ubuntu 16.04python
cpu:i5linux
gpu:gt920mgit
memory:8ggithub
disk:SSD 256gubuntu
1.安裝顯卡驅動 app
首先須要保證電腦有知足cuda要求的顯卡,ubuntu通常安裝完成後都會使用集成顯卡,獨立顯卡並無充分利用。測試
ubuntu安裝NVIDIA驅動還涉及到和原有驅動的衝突,這部分在網上比較多,也有些坑須要踩,能夠本身搜索。this
安裝nvida的驅動,須要屏蔽以前的驅動,操做不當會形成系統沒法進入圖形界面,這時候,能夠ctrl + alt + F1進入字符界面,進行補救,網上在這一點說的比較多,就再也不多說了。
在知乎上看到一個安裝nvidia驅動的方法,試了一下是能夠用的,只是不知道是否是由於以前已經屏蔽了系統自帶的驅動的緣故。
記在這裏供你們參考:
進入:system setting -> software update -> additional drivers
select as the photo below and apply changes:
2.安裝完驅動以後,安裝cuda.
不一樣的tensorflow支持不一樣版本的cuda,在安裝以前須要確認下載對應的cuda不然tensorflow沒法調用cuda
a)準備工做:
檢查gpu是否支持cuda:
lspci | grep -i nvidia
檢查linux版本是否支持:
uname -m && cat /etc/*release
確認gcc是否安裝:
gcc --version
確認內核頭文件和開發環境:
uname -r
安裝內核頭文件:
sudo apt-get install linux-headers-$(uname -r)
b)開始安裝:
下載對應版本的cuda tookit並安裝(下載地址點這裏),這裏選擇離線安裝方式(注意,目前tensorflow最新版本,1.4,1.5只支持到cuda 8.0, nvidia官網最新安裝包爲cuda 9.1)。
若是是從新安裝,請先卸載:
sudo apt-get --purge remove <package_name>
使用離線安裝包安裝cuda tookit:
sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub sudo apt-get update sudo apt-get install cuda # (若是以前安裝過cuda, 這裏須要指定版本號,不然仍是安裝以前的版本,例如,安裝cuda8.0使用:sudo apt-get install cuda-8-0)
3.安裝cuDNN
下載對應版本的cuDNN並安裝,下載地址點這裏,目前tensorflow版本1.5,支持cuDNN6.0 .
下載cuDNN v6.0 Runtime Library for Ubuntu16.04 (Deb)和cuDNN v6.0 Developer Library for Ubuntu16.04 (Deb),使用:
sudo dpkg -i <安裝包名稱>
安裝上述兩個包,先安裝runtime library,不然可能會有依賴問題。
4.安裝tensorflow
這裏使用Python virtualenv進行安裝
先安裝virtualenv:
sudo pip install virtralenv
創建虛擬環境的文件夾, 好比安裝到tensorflow_evn:
mkdir tensorflow_env
建立虛擬運行環境: virtualenv <剛纔創建的文件夾>, 即:
virtualenv tensorflow_evn
激活虛擬環境:
source tensorflow_evn/bin/active, 總之就是要運行虛擬環境中bin目錄下的active文件。
安裝tensorflow須要的包:
pip install numpy
安裝tensorflow-gpu:
pip install tensorflow-gpu
5.測試安裝是否成功:
若是剛纔的虛擬環境尚未關閉,啓動python,運行:
import tensorflow as tf op = tf.add(1.0, 2.0) # 進行加法運算 with tf.Session() as sess: print(sess.run(op))
更多示例代碼,見:https://github.com/buxizhizhoum/machine_learning/tree/master/tf
若是已經關閉,從新激活虛擬環境:
source tensorflow_env/bin/active
而後運行python,運行上述代碼。
若是能夠運行成功,而且提示信息裏面有提到gpu參與運算的信息,代表安裝成功。
提示信息:
2017-12-22 15:01:58.555074: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2017-12-22 15:01:58.715769: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:892] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2017-12-22 15:01:58.716538: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties: name: GeForce 920MX major: 5 minor: 0 memoryClockRate(GHz): 0.993 pciBusID: 0000:01:00.0 totalMemory: 1.96GiB freeMemory: 1.31GiB
2017-12-22 15:01:58.716592: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce 920MX, pci bus id: 0000:01:00.0, compute capability: 5.0)
3.0
第一條信息不用管,這個是由於使用pip安裝,而沒有使用源碼編譯安裝的緣由,tensorflow爲了儘量好的兼容性,捨棄了cpu的一部分特性,經過編譯安裝能夠解決,大概會有3倍左右的提高。
第三條便是說找到了GPU,而且打印了顯存信息。
第四條代表建立了tensorflow的設備。
最下面的是運行的結果,代表gpu已經參與計算加速。
6.效果
進行gpu加速後,以前每次訓練都佔滿的cpu如今只有一個核是滿負荷的,運算速度有提高,可是沒有網上說的20倍左右的提高,在mnist數字識別上,只比cpu塊2~3倍,多是由於這個顯卡比較通常,cuda算力只有3.5,是知足tensorflow使用gpu加速的顯卡里面的底線,使用高端顯卡應該會有更大的提高。