模型訓(xùn)練時(shí)GPU利用率太低的原因及解決
模型訓(xùn)練時(shí)GPU利用率太低的原因
最近在訓(xùn)練SSD模型時(shí)發(fā)現(xiàn)GPU的利用率只有8%,而CPU的利用率卻非常高。
后來了解到,一般使用CPU進(jìn)行數(shù)據(jù)的讀取和預(yù)處理,而使用GPU進(jìn)行模型的正向傳播和反向傳播。由于CPU數(shù)據(jù)讀取跟不上(讀到內(nèi)存+多線程+二進(jìn)制文件),而GPU的處理速度太快,導(dǎo)致GPU的利用率不高。
最后總結(jié)一下,有的時(shí)候模型訓(xùn)練慢并不是因?yàn)轱@卡不行或者模型太大,而是在跑模型過程中有一些其他的操作導(dǎo)致速度很慢,尤其是文件的IO操作,這會導(dǎo)致GPU得不到連續(xù)性使用,整體速度特別慢。
問題的解決辦法
1,關(guān)閉一些日志記錄,減少日志IO操作頻率。
2,NVIDA提供了DALI庫,可以將數(shù)據(jù)處理轉(zhuǎn)移到GPU上。
模型訓(xùn)練GPU利用率低,占用低怎么破
GPU 的顯存占用和算力利用直接影響模型的訓(xùn)練速度
GPU 顯存占用低問題
1、提高batch_size
2、提高模型輸入尺寸
3、增加模型深度
推薦:優(yōu)先提高batch_size, 其他方法會對模型結(jié)構(gòu)產(chǎn)生影響
GPU利用率低問題
1、提高線程數(shù)
2、打開pin_memory
# 在pytorch 加載數(shù)據(jù)時(shí)提高線程數(shù),打開pin_memory torch.utils.data.DataLoader(image_datasets[x], ? ? ? ? ? ? ? ? ? ? ? ? ? ? batch_size=batch_size,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? shuffle=True, ? ? ? ? ? ? ? ? ? ? ? ? ? ? num_workers=8, ? ? ? ? ? ? ? ? ? ? ? ? ? ? pin_memory=True)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python區(qū)塊鏈創(chuàng)建Block Class教程
python實(shí)現(xiàn)動態(tài)規(guī)劃算法的示例代碼
python版本的仿windows計(jì)劃任務(wù)工具
Django使用中間鍵實(shí)現(xiàn)csrf認(rèn)證詳解
pycharm顯示遠(yuǎn)程圖片的實(shí)現(xiàn)
Python實(shí)現(xiàn)病毒仿真器的方法示例(附demo)

