Open Tendo33 opened 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/*.py
,ret.pop()
会一直保留在default.py
中,当再次执行arg_train.sh
时,会再加一句ret.pop()
,ret
列表会pop
两遍,所以会把hooks.LRScheduler()
也给pop
出去,这时候lr=N/A
.
辛苦啦,看上去确实是这个原因造成的。
这也应该是为什么我和子鹏在libai下面没有复现出来的原因, arg_train.sh
并不是在libai下面提供的, 应该是测试脚本基于libai二次开发的,所以在libai的层面没有办法修复这个问题, 可以在二次开发的脚本程序里面, 把ret.pop()
换成 ret = [ hooks.IterationTimer(), hooks.LRScheduler(), hooks.PeriodicCheckpointer( self.checkpointer, self.cfg.train.checkpointer.period,]
重新赋值一下, 是不是就能解决这个问题了。
嗯嗯,把ret.pop()
换成ret = [ hooks.IterationTimer(), hooks.LRScheduler(),]
就可以