pytorch程序出现cuda out of memory,主要包括两种情况:
1. 在开始运行时即出现,解决方法有 :
a)调小batchsize
b)增大GPU现存(可加并行处理)
2. 在运行过程中出现,特别是运行了很长时间后爆显存了。
a) 首先检查是否是“个别实例过长”引起的,如果程序运行时已经占用GPU的大半,非常容易出现这种情况。解决方法参考1.
b) 程序运行过程中会产生很多中间变量,pytorch不会清理这些中间变量,就会爆显存。
解决方法:1)中间变量不再使用时及时清理,即del 变量。
2)total_loss= float(loss) 即仅将loss的值传给total_loss。
3)torch.cuda.empty_cache() 可清理缓存,应该是最有效最便捷的。