濮阳杆衣贸易有限公司

主頁 > 知識庫 > Pytorch GPU內(nèi)存占用很高,但是利用率很低如何解決

Pytorch GPU內(nèi)存占用很高,但是利用率很低如何解決

熱門標(biāo)簽:儋州電話機(jī)器人 朝陽手機(jī)外呼系統(tǒng) 地圖標(biāo)注面積 所得系統(tǒng)電梯怎樣主板設(shè)置外呼 佛山400電話辦理 市場上的電銷機(jī)器人 北京電銷外呼系統(tǒng)加盟 北瀚ai電銷機(jī)器人官網(wǎng)手機(jī)版 小蘇云呼電話機(jī)器人

1.GPU 占用率,利用率

輸入nvidia-smi來觀察顯卡的GPU內(nèi)存占用率(Memory-Usage),顯卡的GPU利用率(GPU-util)

GPU內(nèi)存占用率(Memory-Usage) 往往是由于模型的大小以及batch size的大小,來影響這個(gè)指標(biāo) 顯卡的GPU利用率(GPU-util) 往往跟代碼有關(guān),有更多的io運(yùn)算,cpu運(yùn)算就會(huì)導(dǎo)致利用率變低。

比如打印loss, 輸出圖像,等等

這個(gè)時(shí)候發(fā)現(xiàn),有一塊卡的利用率經(jīng)常跳到1%,而其他三塊卡經(jīng)常維持在70%以上

2.原因分析

當(dāng)沒有設(shè)置好CPU的線程數(shù)時(shí),Volatile GPU-Util參數(shù)是在反復(fù)的跳動(dòng)的,0%,20%,70%,95%,0%。

這樣停息1-2 秒然后又重復(fù)起來。其實(shí)是GPU在等待數(shù)據(jù)從CPU傳輸過來,當(dāng)從總線傳輸?shù)紾PU之后,GPU逐漸起計(jì)算來,利用率會(huì)突然升高,但是GPU的算力很強(qiáng)大,0.5秒就基本能處理完數(shù)據(jù),所以利用率接下來又會(huì)降下去,等待下一個(gè)batch的傳入。

因此,這個(gè)GPU利用率瓶頸在內(nèi)存帶寬和內(nèi)存介質(zhì)上以及CPU的性能上面。

最好當(dāng)然就是換更好的四代或者更強(qiáng)大的內(nèi)存條,配合更好的CPU。

3.解決方法:

(1)為了提高利用率,首先要將num_workers(線程數(shù))設(shè)置得體,4,8,16是幾個(gè)常選的幾個(gè)參數(shù)。本人測試過,將num_workers設(shè)置的非常大,例如,24,32,等,其效率反而降低,因?yàn)槟P托枰獙?shù)據(jù)平均分配到幾個(gè)子線程去進(jìn)行預(yù)處理,分發(fā)等數(shù)據(jù)操作,設(shè)高了反而影響效率。當(dāng)然,線程數(shù)設(shè)置為1,是單個(gè)CPU來進(jìn)行數(shù)據(jù)的預(yù)處理和傳輸給GPU,效率也會(huì)低。其次,當(dāng)你的服務(wù)器或者電腦的內(nèi)存較大,性能較好的時(shí)候,建議打開pin_memory打開,就省掉了將數(shù)據(jù)從CPU傳入到緩存RAM里面,再給傳輸?shù)紾PU上;為True時(shí)是直接映射到GPU的相關(guān)內(nèi)存塊上,省掉了一點(diǎn)數(shù)據(jù)傳輸時(shí)間。

(2) 另外的一個(gè)方法是,在PyTorch這個(gè)框架里面,數(shù)據(jù)加載Dataloader上做更改和優(yōu)化,包括num_workers(線程數(shù)),pin_memory,會(huì)提升速度。解決好數(shù)據(jù)傳輸?shù)膸捚款i和GPU的運(yùn)算效率低的問題。在TensorFlow下面,也有這個(gè)加載數(shù)據(jù)的設(shè)置。

(3) 修改代碼(我遇到的問題)

每個(gè)iteration 都寫文件了,這個(gè)就會(huì)導(dǎo)致cpu 一直運(yùn)算,GPU 等待

造成GPU利用率低還有其他原因

1. CPU數(shù)據(jù)讀取更不上:讀到內(nèi)存+多線程+二進(jìn)制文件(比如tf record)

2. GPU溫度過高,使用功率太大:每次少用幾個(gè)GPU,降低功耗(但是多卡的作用何在?)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 解決pytorch GPU 計(jì)算過程中出現(xiàn)內(nèi)存耗盡的問題
  • pytorch 限制GPU使用效率詳解(計(jì)算效率)
  • Pytorch GPU顯存充足卻顯示out of memory的解決方式

標(biāo)簽:寧夏 金融催收 龍巖 云南 酒泉 江蘇 商丘 定西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Pytorch GPU內(nèi)存占用很高,但是利用率很低如何解決》,本文關(guān)鍵詞  Pytorch,GPU,內(nèi)存,占用,很高,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Pytorch GPU內(nèi)存占用很高,但是利用率很低如何解決》相關(guān)的同類信息!
  • 本頁收集關(guān)于Pytorch GPU內(nèi)存占用很高,但是利用率很低如何解決的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    榆中县| 天祝| 东乡族自治县| 龙南县| 广平县| 岳普湖县| 韶关市| 三都| 蓬溪县| 灵石县| 尼玛县| 鄱阳县| 平凉市| 井冈山市| 尼木县| 彰武县| 内黄县| 奈曼旗| 隆回县| 昌平区| 文安县| 桐庐县| 紫云| 信阳市| 科尔| 丰镇市| 都江堰市| 盐池县| 麦盖提县| 泊头市| 保山市| 阿坝县| 尉氏县| 芜湖县| 芦山县| 石门县| 达尔| 德兴市| 胶州市| 武功县| 太仆寺旗|