[問題] 設定gpu後仍占用另一個gpu(1000p)消失

看板Python作者時間5年前 (2018/10/15 17:55), 5年前編輯推噓4(4010)
留言14則, 1人參與, 最新討論串1/1
這台電腦有2個GPU,概況如圖 https://imgur.com/hkXJcsl
可是當我設定只吃 gpu = 0, fraction = 0.3 時 仍會吃掉 gpu = 1 的 fraction = 0.3 ,占著茅坑不拉屎 https://imgur.com/wsN6jI0
上圖可以看到gpu =0,1 都吃掉0.3, runnung process確實有兩個, 而只有0的有在動 而這台電腦重灌前確實是不會占著茅坑不拉屎的... 以下我附上嘗試過的指令、參考網站與環境,第一個幫解決的板友1000p奉上~感恩! --------------------------------------------------------------------------- (一)環境 (1) python 3.6 tensorflow-gpu==1.4.0, keras==2.1.0, cuda8.0 (2) python 3.6 tensorflow-gpu==1.8.0, keras==2.1.6, cuda9.0 以上兩個都試過,仍是無法 對了,重灌的電腦同時存在cuda 8.0, 9.0, 10.0 有沒有可能跟這個有關? 重灌前只有cuda 8.0, 9.0 (二) 指令 (1) import tensorflow as tf import keras.backend.tensorflow_backend as KTF def set_gpu_config(device = "0",fraction=0.25): config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = fraction config.gpu_options.visible_device_list = device KTF.set_session(tf.Session(config=config)) set_gpu_config("0", 0.3) (2) import tensorflow as tf import keras.backend.tensorflow_backend as KTF def set_gpu_config(device = "0",fraction=0.25): config = tf.ConfigProto(device_count = {'GPU': int(device)}) config.gpu_options.per_process_gpu_memory_fraction = fraction KTF.set_session(tf.Session(config=config)) set_gpu_config("0", 0.3) (3) import os os.environ["CUDA_VISIBLE_DEVICES"]="0" (這裡fraction就先不寫了,因為這樣設等於fraction=1,而還是會發生gpu=0,1全吃掉) (三) 參考資料 https://goo.gl/txgsLP https://goo.gl/M6f5Yn https://goo.gl/DfFJhL https://goo.gl/VabjUn ---------------------------------------- 再次感謝幫忙~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.87.142.254 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1539597303.A.AA2.html

10/15 20:56, , 1F
import tensorflow as tf
10/15 20:56, 1F

10/15 20:57, , 2F
gpu_options=GPUOptions(
10/15 20:57, 2F

10/15 20:58, , 3F
per_process_gpu_memory_fraction=0.3)
10/15 20:58, 3F

10/15 20:58, , 4F
sess=tf.Session(config=tf.ConfigProto(gpu_tions=
10/15 20:58, 4F

10/15 20:59, , 5F
gpu_options))
10/15 20:59, 5F

10/15 20:59, , 6F
tf.keras.backend.set_session(sess)
10/15 20:59, 6F

10/15 20:59, , 7F
2跟3同一行, 4跟5同一行
10/15 20:59, 7F

10/15 21:01, , 8F
我這樣設定可以正常限制記憶體
10/15 21:01, 8F

10/15 21:04, , 9F
https://goo.gl/Cn2uak 可以參考這個
10/15 21:04, 9F
我也有看到這篇,可是你推的這些是限制全部顆吧?? 假設今天有gpu=0,1 你這幾行應該是同時吃0,1的30%(然後在我電腦實際上也只運行一顆 另一顆吃了30%卻不做事 就是我的問題) 我想要的是0吃30%, 1吃0% ※ 編輯: znmkhxrw (219.68.160.241), 10/15/2018 21:20:34

10/15 21:28, , 10F
如果是0吃30% 1吃0%,一開始設定os.environ就好
10/15 21:28, 10F

10/15 21:28, , 11F
但如果是0吃30% 1吃10%這種,可能要再找找
10/15 21:28, 11F

10/15 21:31, , 12F
之前用keras.backend去設定記憶體時,也有遇過
10/15 21:31, 12F

10/15 21:32, , 13F
設定了os.environ,但也會像這樣占用兩個GPU
10/15 21:32, 13F

10/15 21:32, , 14F
改用tf.keras.backend則不會
10/15 21:32, 14F
e大你說的os.environ就是我說的方法(3)嗎?? 如果是的話我試過了還是無法QQ ※ 編輯: znmkhxrw (219.68.160.241), 10/15/2018 23:03:44
文章代碼(AID): #1Rn6FtgY (Python)