提高GPU利用率


如何提高GPU利用率(更新中)

核心宗旨:通過調整網絡結構,batcsize大小,worker 數量,讓數據讀取的時間與網絡前向傳播和反向更新時間大致相同

  1. 一般的瓶頸就在 I/O 上面,因此可以預先把很多圖片、特征等小文件存儲到 LMDB 數據庫,加快磁盤 I/O 速度,工具傳送門, 項目首頁有安裝方法。

  2. 如果網絡本身很簡單,那么增加batchsize是無濟於事的,因為網絡訓練很快,時間還是在等數據,因此應該適當降低 batchsize 大小,並同時增加 worker 數量,進而減少一個 batch 數據讀取時間,力求達到與網絡前向,后向時間一致,充分發揮多 worker 的優勢。可以通過 top 命令估計 worker 的數量,如果每個 worker 的 CPU 利用率都不是0,那么就是合適的。

注意:

  1. batchsize 並不是越大越好,一方面,batchsize越大那么 variance 估計越准確,但是導致 bias 估計不准,模型未必有好的效果。另一方面,簡單網絡增加batchsize會讓數據准備時間更長,GPU利用率顯然上不去。
  2. worker 並不是越大越好,worker 越多進程之間通信越復雜,內存占用也很高,並且通過觀察發現,pytroch 的 batch 讀取通常是根據 worker 的數量一次性讀取完成才會給出一個 batch。舉例:batchsize 20,worker 3,那么當獲得到第一個 batch 即數據為20的時候,並不會開始模型的訓練,而是等待 20*3 讀取完成之后才會進行模型訓練,並且后兩個 2*20 batch 的讀取時間極短,大部分時間都集中在第一個 batch 上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM