我需要训练一个CNN,这将需要1-2天才能在远程访问的GPU服务器上进行训练。
为完成培训,我是否只需要将笔记本电脑放在过夜上,还是有办法保存培训状态并在第二天从那里恢复?
(在pytorch中实现)
答案 0 :(得分:1)
如果您需要继续训练要保存的模型,则需要保存的不仅仅是模型。您还需要保存优化器的状态,时期,得分等。您可以这样做:
state = {
'epoch': epoch,
'state_dict': model.state_dict(),
'optimizer': optimizer.state_dict(),
...
}
torch.save(state, filepath)
要继续训练,您将执行以下操作:state = torch.load(filepath)
,然后恢复每个对象的状态,如下所示:
model.load_state_dict(state['state_dict'])
optimizer.load_state_dict(stata['optimizer'])
由于您正在恢复训练,因此在加载时恢复状态后,请勿调用model.eval()。
要详细了解此内容或查看实际示例,请访问:https://www.programcreek.com/python/example/101175/torch.save
答案 1 :(得分:1)
我假设您使用ssh进入远程服务器。通过运行脚本来训练模型时,例如说$ python train.py
,只需预先附加nohup
:
$ nohup python train.py
这告诉您退出ssh会话并关闭笔记本电脑时忽略挂断信号的过程。