1. 程式人生 > 其它 >【解決方案】Pytorch訓練中止,報錯Segmentation fault(core dumped),此後多卡利用率很低

【解決方案】Pytorch訓練中止,報錯Segmentation fault(core dumped),此後多卡利用率很低

技術標籤:deep learninglinuxbug深度學習

問題描述

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後需要重啟。