作者snakei14702 (阿中是我们的神)
看板Python
标题[问题] tensorflow- 训练在gpu 预测在cpu
时间Thu Sep 22 13:41:07 2022
最近在玩强化训练的时候遇到一点小问题就是
因为模型的深度很深需要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://webptt.com/cn.aspx?n=bbs/Python/M.1663825269.A.81B.html
1F:推 lycantrope: 预测跟训练只差在backpropagation,不太懂你的目的09/22 13:54
目的要缩减整个程式跑的时间
因为我default是用gpu在训练
训练上gpu训练会比使用cpu快很多
但model训练完之後做 predict
predict时cpu速度会比较快
(虽然一次只差几毫秒,玩一场游戏下来会有几百几千步,每次都会用到predict, 两者
的差异会很明显)
所以我想要在使用gpu与cpu在loop中切换
2F:→ chang1248w: 什麽情况用gpu跑会没有效率?09/22 13:55
3F:推 lycantrope: 应该没有情况是gpu跑DL输cpu09/22 13:57
我测试单纯predict cpu会赢也
大概是gpu启动需要时间吧!?
虽然只是几毫秒
但是几千步下来就差好几十秒
4F:→ chang1248w: 你要在cpu上做预测那就必须把上个epoch更新完的参数09/22 13:58
5F:→ chang1248w: 备份到cpu上面跑,我不认为这会比传结果快多少09/22 13:58
我有用model_colon是真的更慢没错==
6F:→ chang1248w: 你的写法也不像平行处理09/22 14:00
※ 编辑: snakei14702 (211.23.79.225 台湾), 09/22/2022 14:07:46
※ 编辑: snakei14702 (211.23.79.225 台湾), 09/22/2022 14:11:10
7F:→ chang1248w: predict有batch_size参数可以传09/22 14:13
8F:→ chang1248w: 然後你的模型如果是pure tf implement 的话,可以试09/22 14:17
9F:→ chang1248w: 试xla,一般会有2-10倍的提速09/22 14:17
谢谢马上来研究
11F:→ chang1248w: autoclustering_xla09/22 14:17
13F:→ chang1248w: 是说为啥predict 的时候要传入y?09/22 14:19
抱歉打错@@
※ 编辑: snakei14702 (211.23.79.225 台湾), 09/22/2022 14:29:39
14F:→ lycantrope: 你一定是测错 不太可能模型深gpu还比cpu慢... 09/22 14:50
15F:→ chang1248w: 也不是没有可能,.predict 的实现其实没有很高效,常 09/22 18:30
16F:→ chang1248w: 常会卡记忆体io,尤其预设的batch_size小的要死,这 09/22 18:30
17F:→ chang1248w: 坑过我 09/22 18:30
18F:→ chang1248w: 不过我也没有验证过就是 09/22 18:31
20F:→ chang1248w: 长见识 09/23 20:32