Closed Met4physics closed 1 year ago
pytorch中默认的计算是带梯度的,计算图会一直保存至内存中 加上with torch.no_grad()
pytorch中默认的计算是带梯度的,计算图会一直保存至内存中 加上with torch.no_grad()
也就是说如果我想用surrogate gradient decent这种bp方法来训练,而不是ann2snn,必须要承担这种内存消耗吗?
是的
好的,感谢!
消耗只和batch size和T有关,上面的代码中,整个训练集的计算图都保存了下来,这是不合理的。正常训练每次bakcward后计算图就摧毁了,内存中最大的计算图只是单个batch数据的
消耗只和batch size和T有关,上面的代码中,整个训练集的计算图都保存了下来,这是不合理的。正常训练每次bakcward后计算图就摧毁了,内存中最大的计算图只是单个batch数据的
明白了,我确实没执行loss.backward(),应该是这个原因
Issue type
SpikingJelly version
latest
Description 如题,我想测试一下ann2snn的效果,在dataloader读出一个以后,显存暴涨20个G,不知道哪里内存泄露了
Minimal code to reproduce the error/bug
错误输出:
已经确认了dataloader没有内存泄漏,而且从train_loader里取出来的第一个是运行下去了,第二个就报错了。我调试出来循环第一遍结束时显存占用是20g,第二个读出来时上一个的显存占用没有释放,这是为什么呢?