Paddle 关于动态图模型保存问题

mlmc2os5  于 2022-04-21  发布在  Java
关注(0)|答案(3)|浏览(292)

环境:
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会报错,有时候一上来就报错, 是为什么呢?希望得到解释。

qltillow

qltillow1#

你后,动态图模型保存问题后续由 @phlrain 跟进 ~~

n3schb8v

n3schb8v2#

动态图是通过多进程的方式启动多卡的,需要没有进行一些判断和设置,建议使用以下方式进行判断和处理
if fluid.dygraph.parallel.Env().local_rank == 0:
fluid.save_dygraph(mnist.state_dict, “path”)

wydwbb8l

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 这种方法判断也可以吧? 还有个问题, 就是每张卡的精度不一样,我如果想保存精度最好的那个模型,我应该怎么比较这多个进程的精度呢?

相关问题