[問題] tensorflow- 訓練在gpu 預測在cpu

看板Python作者 (阿中是我們的神)時間1年前 (2022/09/22 13:41), 1年前編輯推噓2(2018)
留言20則, 3人參與, 1年前最新討論串1/2 (看更多)
最近在玩強化訓練的時候遇到一點小問題就是 因為模型的深度很深需要GPU來跑 但是在run env 計算(中間有用到model.predict)一些東西的時候 如果用GPU跑就顯得太慢沒效率... 所以想要請教一下各位有沒有辦法在fit model時用GPU 然後用model.prict的時候用cpu呢? 簡化的代碼如下: for i in range(1000): model.fit(x,y) model.predict(x) 基本上我有用過 for i in range(1000): os.environ["CUDA_VISIBLE_DEVICES"]="0" model.fit(x,y) os.environ["CUDA_VISIBLE_DEVICES"]="-1" model.predict(x) and for i in range(1000): with tf.device('/GPU:0'): model.fit(x,y) with tf.device('/CPU:0'): model.predict(x) 這兩個方法都沒效= = 有點難過 不知道版上強者沒有研究過,可以指導一下小弟 非常感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.23.79.225 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1663825269.A.81B.html

09/22 13:54, 1年前 , 1F
預測跟訓練只差在backpropagation,不太懂你的目的
09/22 13:54, 1F
目的要縮減整個程式跑的時間 因為我default是用gpu在訓練 訓練上gpu訓練會比使用cpu快很多 但model訓練完之後做 predict predict時cpu速度會比較快 (雖然一次只差幾毫秒,玩一場遊戲下來會有幾百幾千步,每次都會用到predict, 兩者 的差異會很明顯) 所以我想要在使用gpu與cpu在loop中切換

09/22 13:55, 1年前 , 2F
什麼情況用gpu跑會沒有效率?
09/22 13:55, 2F

09/22 13:57, 1年前 , 3F
應該沒有情況是gpu跑DL輸cpu
09/22 13:57, 3F
我測試單純predict cpu會贏也 大概是gpu啟動需要時間吧!? 雖然只是幾毫秒 但是幾千步下來就差好幾十秒

09/22 13:58, 1年前 , 4F
你要在cpu上做預測那就必須把上個epoch更新完的參數
09/22 13:58, 4F

09/22 13:58, 1年前 , 5F
備份到cpu上面跑,我不認為這會比傳結果快多少
09/22 13:58, 5F
我有用model_colon是真的更慢沒錯==

09/22 14:00, 1年前 , 6F
你的寫法也不像平行處理
09/22 14:00, 6F
※ 編輯: snakei14702 (211.23.79.225 臺灣), 09/22/2022 14:07:46 ※ 編輯: snakei14702 (211.23.79.225 臺灣), 09/22/2022 14:11:10

09/22 14:13, 1年前 , 7F
predict有batch_size參數可以傳
09/22 14:13, 7F

09/22 14:17, 1年前 , 8F
然後你的模型如果是pure tf implement 的話,可以試
09/22 14:17, 8F

09/22 14:17, 1年前 , 9F
試xla,一般會有2-10倍的提速
09/22 14:17, 9F
謝謝馬上來研究

09/22 14:17, 1年前 , 10F

09/22 14:17, 1年前 , 11F
autoclustering_xla
09/22 14:17, 11F

09/22 14:18, 1年前 , 12F
09/22 14:18, 12F

09/22 14:19, 1年前 , 13F
是說為啥predict 的時候要傳入y?
09/22 14:19, 13F
抱歉打錯@@ ※ 編輯: snakei14702 (211.23.79.225 臺灣), 09/22/2022 14:29:39

09/22 14:50, 1年前 , 14F
你一定是測錯 不太可能模型深gpu還比cpu慢...
09/22 14:50, 14F

09/22 18:30, 1年前 , 15F
也不是沒有可能,.predict 的實現其實沒有很高效,常
09/22 18:30, 15F

09/22 18:30, 1年前 , 16F
常會卡記憶體io,尤其預設的batch_size小的要死,這
09/22 18:30, 16F

09/22 18:30, 1年前 , 17F
坑過我
09/22 18:30, 17F

09/22 18:31, 1年前 , 18F
不過我也沒有驗證過就是
09/22 18:31, 18F

09/23 13:28, 1年前 , 19F

09/23 20:32, 1年前 , 20F
長見識
09/23 20:32, 20F
文章代碼(AID): #1ZA_LrWR (Python)
文章代碼(AID): #1ZA_LrWR (Python)