模型訓(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矩陣運(yùn)算,轉(zhuǎn)置,逆運(yùn)算,共軛矩陣實(shí)例
這篇文章主要介紹了python矩陣運(yùn)算,轉(zhuǎn)置,逆運(yùn)算,共軛矩陣實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python selenium如何打包靜態(tài)網(wǎng)頁并下載
這篇文章主要介紹了Python selenium如何打包靜態(tài)網(wǎng)頁并下載,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08Python進(jìn)行數(shù)據(jù)科學(xué)工作的簡單入門教程
這篇文章主要介紹了Python進(jìn)行數(shù)據(jù)科學(xué)工作的簡單入門教程,主要針對Python發(fā)行版Anaconda進(jìn)行說明,需要的朋友可以參考下2015-04-04Python中使用攝像頭實(shí)現(xiàn)簡單的延時(shí)攝影技術(shù)
這篇文章主要介紹了Python中使用攝像頭實(shí)現(xiàn)簡單的延時(shí)攝影技術(shù),本文只是一個(gè)簡單的小示例,講解了實(shí)現(xiàn)過程并給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03