“进程已结束,退出代码为 -1073741819 (0xC0000005)”的一种可能原因
最近炼丹时候碰到的错误,使用Pycharm运行代码跑一会就会直接中断,并报:

如图所示,没有任何报错信息直接结束。而且还有以下特征:
- 运行的训练代码可以跑一两个epoch,并在训练途中中断;
- 通过print大法发现报错好像在loss.backward()语句;
- 以前可以运行,现在不行了
- 在Linux系统的服务器上可以运行
- 我使用的cpu运行代码,理论上应该不是gpu和cuda的问题?
- 通过一段代码检测每个batch时的内存使用情况,发现在中断前的几个batch会发生一次卡顿,随后占用的内存突然上升,如图所示:
- 使用命令行运行代码一样出错,所以不是Pycharm的锅
最后通过注释代码,发现是因为我环境变量设置错误。把os.environ['CUDA_VISIBLE_DEVICES'] = '1'改为os.environ['CUDA_VISIBLE_DEVICES'] = '0'或者删掉就好了。
原因在于我电脑上只有一块显卡,服务器上有好几块,所以服务器上不会报错。
好吧,因为第5条的原因所以我一直注意到这个……
顺便记录一下检测内存使用情况的代码
def print_memory_usage():
process = psutil.Process(os.getpid())
mem = process.memory_info().rss / 1024 / 1024 # MB
print(f"[MEMORY] RAM used: {mem:.2f} MB")


浙公网安备 33010602011771号