關(guān)于CUDA out of memory的解決方案
1 問題描述
很多時候,我們在開始進(jìn)行深度學(xué)習(xí)訓(xùn)練的時候,經(jīng)常出現(xiàn)存儲不夠的信息,
諸如這樣:

你可能會認(rèn)為是自己的顯卡顯存不夠,那就再掏錢去買個更大的顯卡吧。
我的顯卡是titan xp 12g顯存。
其實對于絕大多數(shù)的網(wǎng)絡(luò)都是夠用的,那么這個問題該如何解決哪?
2 問題的解決
1 如果你的顯存真的比較小
我的顯卡是titan xp12g顯存,舉個例子我在訓(xùn)練模型時,設(shè)置的batch_size==16,也就是說,我可以同時處理16副圖,我占用的顯存是5.82個g,如果你的顯存比我的小,或者你處理其他的圖片占用的更大,那么,怎
么辦哪?
你可以:
修改:batch_size==4
請盡量還是選用2的n次方來設(shè)置參數(shù)。這是深度學(xué)習(xí)二進(jìn)制的本質(zhì)。
修改后,你的顯存占用會從5.82g降到0.81g,就算你的顯存比較小,總有一天,你會滿足自己的需求。
2 如果你的cpu比較差
我使用的是2017年的thinkpad x1carobon筆記本,外界顯卡塢帶titan xp顯卡。
我的cpu是i7-7600,已經(jīng)過了幾年了,并不好,但說不定你比我的cpu更差,那么怎么辦哪?
你可以:
修改:workers==1
很多模型訓(xùn)練的時候,默認(rèn)的線程也就是workers==8,也許你的cpu無法承受8線程同時訓(xùn)練,那么你可以把這個并行線程數(shù)降下來,例如我上面的,將線程數(shù)降為1,那么又可以愉快的玩耍了,但是,你能承受本來我有i7的cpu,本來我有12g的顯存,卻不能完全使用,還要承受八倍奉還么?。?/p>
3 一個隱藏的設(shè)置
這個發(fā)現(xiàn),我尚未在其他csdn的博客上見到過,或者我沒搜到。
應(yīng)該有很多像我一樣的偏執(zhí)狂。天天盯著存儲看,c盤沒多一點點,就開始刪除垃圾,刪除緩存,刪除windows更新備份,刪除windows注銷文件(2個g),刪除windows系統(tǒng)補丁,刪除c盤之外其他盤的虛擬內(nèi)存,后者把虛擬內(nèi)存轉(zhuǎn)移到其他盤!因為,我們的c盤真的不堪重負(fù)。。。
后面有時間,我再談?wù)勅绾谓oc盤自由加容吧。
可能,就像我一樣,我舉個例子,我把項目放在了F盤,那么我把除c盤之外,其他盤的虛擬緩存給刪掉了,導(dǎo)致F盤的虛擬內(nèi)存為0,也會出現(xiàn)這個問題。
那么,該怎么辦哪?
你可以:
修改:我的電腦——屬性——高級系統(tǒng)設(shè)置——設(shè)置——虛擬內(nèi)存

為了跟我的顯存保持一致,我就把虛擬內(nèi)存也設(shè)置為12g吧應(yīng)該是1024x12.。
懶得修改了,一切OK!
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實現(xiàn)Dijkstra算法的最短路徑問題
這篇文章主要介紹了python實現(xiàn)Dijkstra算法的最短路徑問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
OpenCV圖像縮放之cv.resize()函數(shù)詳解
resize函數(shù)opencv中專門用來調(diào)整圖像大小的函數(shù),下面這篇文章主要給大家介紹了關(guān)于OpenCV圖像縮放之cv.resize()函數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
Django Rest framework解析器和渲染器詳解
這篇文章主要介紹了Django Rest framework解析器和渲染器詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07
python使用socket創(chuàng)建tcp服務(wù)器和客戶端
這篇文章主要為大家詳細(xì)介紹了python使用socket創(chuàng)建tcp服務(wù)器和客戶端,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04
python調(diào)用機器喇叭發(fā)出蜂鳴聲(Beep)的方法
這篇文章主要介紹了python調(diào)用機器喇叭發(fā)出蜂鳴聲(Beep)的方法,實例分析了Python調(diào)用winsound模塊的使用技巧,需要的朋友可以參考下2015-03-03

