Tendo33 / oneflow-test

oneflow test
0 stars 0 forks source link

lr 为N/A 的case复现 #8

Open Tendo33 opened 1 year ago

Tendo33 commented 1 year ago
Tendo33 commented 1 year ago

使用arg_train.sh时,当SAVE_MODEL = "false"时,会在 ./libai/engine/default.py 中加一句ret.pop() ,而ret = [ hooks.IterationTimer(), hooks.LRScheduler(), hooks.PeriodicCheckpointer( self.checkpointer, self.cfg.train.checkpointer.period, max_to_keep=self.cfg.train.checkpointer.max_to_keep, ), ] , 所以会pop出最后一项,而执行脚本途中,如果程序被迫中止(ctrl + c),无法执行 git checkout ./libai/engine/*.pyret.pop()会一直保留在default.py中,当再次执行arg_train.sh时,会再加一句ret.pop()ret列表会pop两遍,所以会把hooks.LRScheduler()也给pop出去,这时候lr=N/A.

CPFLAME commented 1 year ago

辛苦啦,看上去确实是这个原因造成的。 这也应该是为什么我和子鹏在libai下面没有复现出来的原因, arg_train.sh并不是在libai下面提供的, 应该是测试脚本基于libai二次开发的,所以在libai的层面没有办法修复这个问题, 可以在二次开发的脚本程序里面, 把ret.pop()换成 ret = [ hooks.IterationTimer(), hooks.LRScheduler(), hooks.PeriodicCheckpointer( self.checkpointer, self.cfg.train.checkpointer.period,]重新赋值一下, 是不是就能解决这个问题了。

Tendo33 commented 1 year ago

嗯嗯,把ret.pop()换成ret = [ hooks.IterationTimer(), hooks.LRScheduler(),] 就可以