[问题] 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