CPU内存训练时持续增加,攀升,使用gc.collect()无效
1.使用
@profile 可以查看cpu占用情况
2.排查错误
python 内容与 tensor内容是否有直接互换的位置重点检查,累加的地方重点检查,这里会带来内存泄漏问题
例子
比如 acc += list(correctness) 等号左边是python原生list,correctness是torch.FloatTensor
换成acc += list(np.array(correctness.cpu()))
原因:list与tensor互转会发生内存泄漏问题,如果需要转换,应该将tensor从cuda-->cpu-->numpy.array
例子
total_loss +=loss1------->total_loss +=loss1.item() (.item()就是获取一个元素张量里面的元素值)
推理时忘记torch.no_grad() 造成梯度累计