linux18.04下,在运行pytorch程序的过程中,电脑直接卡死死机,鼠标和键盘都没有反应,只能强制关机。
安装htop观察内存和cpu的使用情况,内存32G,CPU是i7-8700。
程序在之前没有问题,在修改添加了一个整个迭代过程中损失记录total_loss,程序爆掉,无法正常运行,在htop中就眼睁睁看着内存涨到30.8G,然后机器卡死。因为每次开机电脑都会弹出系统损坏,我还以为是内存free部分出现了问题,按照别人的博客加了脚本,没什么用。后来又怀疑是显卡驱动出现了问题。
跑了别的程序发现没有问题,才发觉问题在修改之后的程序上。
https://ptorch.com/news/160.html
在这个链接中讲解了在Pytorch环境下内存爆掉的情况,应该使用
total_loss += loss.item()
而不是使用
total_loss += loss
在循环遍历过程中积累历史,而loss
是一个具有autograd
历史的可微变量,随着在内存中不断积累
同样可以通过编写total_loss += float(loss)
来解决这个问题。
2020-10-03
疫情期间在家远程跑程序,监控显存和内存:
在显存和内存均未超出限制的情况下,运行大概1-5分钟,电脑出现卡死、花屏等情况。(如果不跑程序,电脑正常不死机)
首先在新机器上确定代码没有问题,接着重装系统依旧出现了死机的情况。
在这种情况下,大概率是显卡出现了问题,对于多卡的机器就分开逐卡检测,如果单卡机器直接换一块不用重装驱动的显卡跑程序测试。