【解决方案】Pytorch训练中止,报错Segmentation fault(core dumped),此后多卡利用率很低

问题描述

1.我使用三块卡,分别是,1,2,5号,进行三个对比实验。昨天还是可以运行比较快的,今早发现程序中止,报错:Segmentation fault(core dumped) 我按照网上的解决方法,将stack size设为unlimited
2.我后来重新运行,发现三块卡的程序都训练很慢,而且以每0.5秒查看利用率发现虽然三块内存都占用较多,可利用率不是同时都高,甚至大多数时间都是为零,如三张图所示。

解决方案

针对问题1,我搜索Segmentation fault(core dumped)错误,网上都说是内存操作错误,指针越界之类的。因此我采用了一篇博主的方法,将stack size设为unlimited。

a.查看stack size

ulimit -a

b. 将stack size设为无限

ulimit -s unlimited

我以为问题解决了,

虽然不再报段错误,但是出现了新的问题,即问题2.。这可怎么办,我可是要进行Ablation Study的,有多卡却不能同时跑提痛苦了。我请教了一个pytorch学习群的大佬,他们让我检查cpu利用率,但是发现利用率都挺高,如图4。还有同学让我把DataLoader线性设为cpu核心存储数目,即20。但是我认为这解决不了,以你为之前我都是用8的,没有问题,三块卡都有百分之八九十利用率。后来设为16,一样不起作用,因此设为20不会有很大作用。无奈之下,实行终极绝招:重启服务器!后来,GPU利用率竟然三块都有百分之八九十。我不知道原因,不知道单纯是重启,还是此前出现的段错误,我将stack size设为unlimited后需要重启。

 

你可能感兴趣的:(deep,learning,linux,bug,深度学习)