pytorch high memory usage but low volatile gpu-util
阿新 • • 發佈:2019-02-09
問題:pytorch程式GPU的使用率很低。
如圖,我使用5、6號顯示卡執行pytorch的程式,GPU使用率很低;而其他顯示卡跑的tensorflow網路,GPU使用率都正常。
一般情況下,深度學習遇到這種問題,上來都會認為是dataloader讀資料的效率問題:由於讀取資料耗時教久,往往程式不能執行GPU上深度網路的計算程式碼。
探索:
使用7號顯示卡debug該pytorch程式,輸出每次迭代讀取資料與網路計算消耗的時間。結果顯示
1.讀取資料的時間比網路計算少兩個數量級
2.期間7號顯示卡顯示卡使用率也很正常
3.期間5,6號顯示卡的使用率也回升了
關閉7號顯示卡上的程式後,發現
1. 5,6號顯示卡的使用率隨即下降
2. 7號顯示卡偶爾有3%的volatile gpu-util
我感覺應該是有程式在使用7號顯示卡,同時也會導致5、6號顯示卡使用率下降。
解決方案:
這個nvidia forum中提到,應該是GPU預設打開了ECC(error correcting code, 錯誤檢查和糾正),會佔用視訊記憶體和降低顯示卡效能,開啟Persistence Mode Enabled(用root執行nvidia-smi -pm 1)後5、6號顯示卡的顯示卡使用率恢復正常水平,問題解決。
疑問:
1.為什麼tensorflow的程式不會被ECC影響?
2.為什麼在7號顯示卡上執行pytorch程式後,其他顯示卡的使用率都會恢復正常?
後面有空的話可以查下這兩個問題。