在跑一个深度学习的项目的时候,为了计算每个epoch的Loss,肯定要把每个batch_size的loss给加起来,就会有类似如下的代码
train_loss += loss
是的当时手抖,忘了是loss.item(),代码也能正常运行,也能正常算,并且每一步需要跑的时间也是一样的,但是这样会导致每一步的内存都是叠加的。并且这种占显存的方式你在nvidia-smi还看不出来,得去htop里面看,一看好家伙,显存占的高的离谱,正常来说我就占4个G,他占了十几个G,当时就感觉不对劲了,后面发现这叫显存泄露
总而言之言而总之,如果你直接+loss,也能跑,结果也是一样的,但是这就会导致需要的内存一步步的叠加,我是跑到10几个epoch的时候莫名其妙被killed了,去查了一下是out of memory的问题,刚开始还以为是别的因素,后面才发现是我的问题T T