Tensorflow檢驗GPU是否安裝成功 及 使用GPU訓練注意事項


1. 已經安裝cuda但是tensorflow仍然使用cpu加速的問題

電腦上同時安裝了GPU和CPU版本的TensorFlow,本來想用下面代碼測試一下GPU程序,但無奈老是沒有調用GPU。

import tensorflow as tf

with tf.device('/cpu:0'):
    a = tf.constant ([1.0, 2.0, 3.0], shape=[3], name='a')
    b = tf.constant ([1.0, 2.0, 3.0], shape=[3], name='b')
with tf.device('/gpu:1'):
    c = a + b

# 注意:allow_soft_placement=True表明:計算設備可自行選擇,如果沒有這個參數,會報錯。
# 因為不是所有的操作都可以被放在GPU上,如果強行將無法放在GPU上的操作指定到GPU上,將會報錯。
sess = tf.Session(config=tf.ConfigProto (allow_soft_placement=True, log_device_placement=True))
# sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
sess.run(tf.global_variables_initializer())
print (sess.run(c))

后來google了一下,發現gpu版本和cpu版本是不能同時安裝的

於是按照以下指令,卸載下面的安裝包

第0步:卸載protobuf
pip uninstall protobuf

第1步:卸載tensorflow
pip uninstall tensorflow
pip uninstall tensorflow-gpu

第2步:強制重新安裝Tensorflow並支持GPU
pip install --upgrade --force-reinstall tensorflow-gpu

第3步:如果還沒有,請設置CUDA_VISIBLE_DEVICES,所以對我來說有2個GPU就可以了
export CUDA_VISIBLE_DEVICES=0,1  

 

一定要注意安裝版本問題!!!!!!!!!!!!!!!!!!!!

 

2. 使用TensorFlow的注意事項 

(1)訓練前要用nvidia-smi來查看一下當前GPU的使用情況,不要一下子就放上去跑把大家一起擠掛了。

(2)如果機器上面的GPU之間不能夠通信,那就先設定一塊要用的GPU吧,在終端上面輸入命令export CUDA_VISIBLE_DEVICES=0(數字是GPU的編號)。

  CUDA_VISIBLE_DEVICES 指定的設備號可能與nvidia-smi給出的設備號不一致,詳見CUDA_DEVICE_ORDER 環境變量說明,這種不一致性就可能導致本打算分配一個空閑設備(根據nvidia-smi數據)給CUDA應用結果分配的卻是正在使用中的設備的情況。

注意:對於在代碼內通過代碼修改可見設備的情況,只有在代碼訪問GPU設備之前設置CUDA_VISIBLE_DEVICES變量才有效。 如果你模型保存之前沒有轉換到CPU上,那么模型重加載的時候會直接加載到GPU設備中,具體加載到哪個設備依賴於模型的device屬性,一般默認為 cuda:0,即加載到系統的第一塊顯卡。如果我們在重加載模型前設置CUDA_VISIBLE_DEVICES,就能起到設備屏蔽的左右,而如果是模型重加載完后才設置 CUDA_VISIBLE_DEVICES, 設置無效,因為GPU設備已經被訪問了。

(3)用Tensorflow創建session的時候要注意設置內存使用情況,特別是內存資源不夠而且要和別人共享一塊GPU的時候(留一點給別人用):

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.9) 
with tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) as sess: 
fraction設置使用內存的百分比。

(4)如果要用with tf.device(‘/gpu:0’):,只能夠在所有運算都能在GPU上進行才可以,否則就會報錯。如果一定要這樣,則要指定哪些操作可以使用GPU,或者設置從GPU可以轉移到CPU上運算。

(5)Win10: ImportError: DLL load failed: The specified module could not be found

版本裝錯了,之前是TensorFlow 1.13.0 + cuda 8.0 + cuDNN5.1,,改成TensorFlow 1.12.0就好了

 

參考文獻:

【1】Tensorflow利用GPU訓練注意事項

【2】GPU上的張量流:沒有已知設備,盡管cuda的deviceQuery返回“PASS”結果

【3】tensorflow 使用CPU而不使用GPU的問題解決【暫時還沒遇到】

【4】Windows環境下安裝TensorFlow(CPU和GPU版)

【5】關於tensorflow gpu版和cpu版網上說的容易混淆的一點【有用】

【6】Win10: ImportError: DLL load failed: The specified module could not be found #2


免責聲明!

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



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