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


轉載請注明出處:http://www.cnblogs.com/buxizhizhoum/p/8086230.html 

環境:

     系統:ubuntu 16.04

     cpu:i5

     gpu:gt920m

     memory:8g

     disk:SSD 256g

1.安裝顯卡驅動 

首先需要保證電腦有滿足cuda要求的顯卡,ubuntu一般安裝完成后都會使用集成顯卡,獨立顯卡並沒有充分利用。

ubuntu安裝NVIDIA驅動還涉及到和原有驅動的沖突,這部分在網上比較多,也有些坑需要踩,可以自己搜索。

安裝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加速的顯卡里面的底線,使用高端顯卡應該會有更大的提升。
 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM