ubuntu16.04安裝tensorflow-gpu和cuda8.0加速訓練

轉載請註明出處: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加速的顯卡里面的底線,使用高端顯卡應該會有更大的提高。  
相關文章
相關標籤/搜索