轉載請注明出處: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加速的顯卡里面的底線,使用高端顯卡應該會有更大的提升。
