訓練技巧之數據集太多,加載太慢怎么辦?


1. 背景

訓練集全是16x16,32x32之類的小圖,達到上千萬張,訓練時發現數據加載很慢很慢很慢!!!看了下CPU 內存 GPU使用情況,發現CPU使用率都跑到90%去了,GPU使用率卻較低

2. 解決方法

2.1 預處理提速

  • 盡量減少每次讀取數據時的預處理操作,可以考慮把一些固定的操作,例如 resize ,事先處理好保存下來,訓練的時候直接拿來用
  • Linux上將預處理搬到GPU上加速:
    NVIDIA/DALI :https://github.com/NVIDIA/DALI

2.2 IO提速

2.2.1 使用更快的圖片處理

  • opencv 一般要比 PIL 要快
  • 對於 jpeg 讀取,可以嘗試 jpeg4py
  • 存 bmp 圖(降低解碼時間)

2.2.2 小圖拼起來存放(降低讀取次數)

對於大規模的小文件讀取,建議轉成單獨的文件,可以選擇的格式可以考慮:TFRecord(Tensorflow)、recordIO(recordIO)、hdf5、 pth、n5、lmdb 等等

2.3 預讀取數據

預讀取下一次迭代需要的數據, 參考給pytorch 讀取數據加速

2.4 借助內存

直接載到內存里面,或者把把內存映射成磁盤好了,參考如何給你PyTorch里的Dataloader打雞血

2.5 借助固態

把讀取速度慢的機械硬盤換成 NVME 固態吧~

3. 最后


免責聲明!

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



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