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

作者: snakei14702 (sun)   2022-09-22 13:41:07
最近在玩強化訓練的時候遇到一點小問題就是
因為模型的深度很深需要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)
這兩個方法都沒效= =
有點難過
不知道版上強者沒有研究過,可以指導一下小弟
非常感謝!!
作者: lycantrope (阿寬)   2022-09-22 13:54:00
預測跟訓練只差在backpropagation,不太懂你的目的
作者: chang1248w (彩棠)   2022-09-22 13:55:00
什麼情況用gpu跑會沒有效率?
作者: lycantrope (阿寬)   2022-09-22 13:57:00
應該沒有情況是gpu跑DL輸cpu
作者: chang1248w (彩棠)   2022-09-22 13:58:00
你要在cpu上做預測那就必須把上個epoch更新完的參數備份到cpu上面跑,我不認為這會比傳結果快多少你的寫法也不像平行處理predict有batch_size參數可以傳然後你的模型如果是pure tf implement 的話,可以試試xla,一般會有2-10倍的提速https://www.tensorflow.org/xla/tutorials/autoclustering_xlahttps://bit.ly/3qY7PJq是說為啥predict 的時候要傳入y?
作者: lycantrope (阿寬)   2022-09-22 14:50:00
你一定是測錯 不太可能模型深gpu還比cpu慢...
作者: chang1248w (彩棠)   2022-09-22 18:30:00
也不是沒有可能,.predict 的實現其實沒有很高效,常常會卡記憶體io,尤其預設的batch_size小的要死,這坑過我不過我也沒有驗證過就是
作者: ToastBen (吐司邊)   2022-09-23 13:28:00
作者: chang1248w (彩棠)   2022-09-23 20:32:00
長見識

Links booklink

Contact Us: admin [ a t ] ucptt.com