环境:
python3.6
paddlepaddle-gpu v1.8.3
Q1: 当多卡训练的时候,例如单机4卡 为什么每个epoch会保存4个模型。
Q2:在多卡训练的时候,保存模型的步骤会随机出现错误, 保存模型用fluid.dygraph.save_dygraph(model.state_dict(), 'path'), 会随机出现pickle.dump的问题, 报MEMORY ERROR, 我看在paddle实现过程中是用pickle.dump()保存模型,网上有人说是因为数据太大了?可是每一代都保存 有时候训练到40多epoch会报错,有时候一上来就报错, 是为什么呢?希望得到解释。
3条答案
按热度按时间qltillow1#
你后,动态图模型保存问题后续由 @phlrain 跟进 ~~
n3schb8v2#
动态图是通过多进程的方式启动多卡的,需要没有进行一些判断和设置,建议使用以下方式进行判断和处理
if fluid.dygraph.parallel.Env().local_rank == 0:
fluid.save_dygraph(mnist.state_dict, “path”)
wydwbb8l3#
动态图是通过多进程的方式启动多卡的,需要没有进行一些判断和设置,建议使用以下方式进行判断和处理
if fluid.dygraph.parallel.Env().local_rank == 0:
fluid.save_dygraph(mnist.state_dict, “path”)
hi, 谢谢 我现在用int(os.getenv("PADDLE_TRAINER_ID", 0))==x 这种方法判断也可以吧? 还有个问题, 就是每张卡的精度不一样,我如果想保存精度最好的那个模型,我应该怎么比较这多个进程的精度呢?