当前位置: 代码迷 >> 综合 >> 训练深度网络怎么这么费内存 RuntimeError: Unknown error -1
  详细解决方案

训练深度网络怎么这么费内存 RuntimeError: Unknown error -1

热度:101   发布时间:2023-10-17 05:14:41.0

训练了个U-net,结果跑了几个epoch后,总是 RuntimeError: Unknown error -1。

我参考了https://www.jianshu.com/p/1d630843a844?utm_source=oschina-app的解决方法。一个原因是存储空间满了,还有就是pytorch自身的bug。

我开始是不相信自己内存不够的,试了第二种方法不管用,看了内存空间后确实满的不行了。但是为什么还能跑几轮呢?

原因在于,我每跑完一轮后,都执行下面代码,存一下state_dict,用于之后推理或恢复训练的通用检查点。

if epoch % epoch_save_frequency == 0:print('save start: epoch_{}.pt'.format(epoch))checkpoint = {'state_dict': net.module.state_dict(),'optimizer': optimizer.state_dict()}checkpoint_save_path = osp.join(model_save_dir, 'epoch_{}.pt'.format(epoch))torch.save(checkpoint, checkpoint_save_path)

之前没太在意,但是这次内存不够,我猜测应该是训练期间保存文件的问题,就发现每次保存的state_dict居然有240M。

为什么state_dict这么大,还需要参考:

    https://pytorch.org/tutorials/beginner/saving_loading_models.html#

  相关解决方案