tensorflow出现显存不足的提示
在跑程序時(shí)經(jīng)常出現(xiàn)一下這個(gè)提示:
Allocator (GPU_0_bfc) ran out of memory trying to allocate 2.26GiB with freed_by_count=0. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available.
首先看一下ubutun服務(wù)器的一些基本配置,點(diǎn)擊【系統(tǒng)設(shè)置】按鈕,點(diǎn)開【詳細(xì)信息】,出現(xiàn)以下界面:
問題來了,總的內(nèi)存是30.9GiB,遠(yuǎn)高于2.26GiB,(1MB=1024KB,1GB=1024MB,據(jù)Wikipedia的注譯,GB(gigabyte)是十進(jìn)制的容量單位,1GB等于1,000,000,000Bytes。而二進(jìn)制的容量單位則是用GiB(Gibibyte)就是Giga Binary Byte,相等于1,073,741,824Bytes。所以一個(gè)160GB的硬盤其實(shí)只有149.0116119GiB)為什么還會報(bào)錯(cuò)誤呢?因?yàn)槌霈F(xiàn)這個(gè)問題得 時(shí)候,一般都是在用GPU跑大型得深度學(xué)習(xí)的程序,才會導(dǎo)致所需要的GPU內(nèi)存不足,那這又是怎么回事呢?首先查看一下電腦顯存,在終端輸入nvidia-smi,看到如下界面:
看到一塊GPU的顯存是10989MiB(約為10.7GiB),問題又來了,顯存也比需要的2.26GiB大呀,怎么會提示這樣的錯(cuò)誤呢?網(wǎng)上查查主要有如下解決方法:
解決方法:1.減少batchsize,即減少了GPU內(nèi)存分配需求
2.如果內(nèi)存比較大的話,可以切換CPU
3.重置輸入圖片尺寸,即通過減小圖片的大小來減少對顯存的消耗
選擇上述中的任意一種方法,問題都可以解決,但是還是想知道一下原理才踏實(shí)..那么先查查當(dāng)程序(基于深度學(xué)習(xí)的為例)運(yùn)行時(shí)候,tensorflow中顯存的分配方法:
https://blog.csdn.net/frankzd/article/details/102621817? (參考該博客,可以簡單分析自己代碼的內(nèi)存占用量)因?yàn)楸救说某绦蚩蚣苁荊AN網(wǎng)絡(luò),之前用CNN框架同樣的配置和訓(xùn)練方式就不會由上述GPU內(nèi)存相關(guān)的提示,所以是因?yàn)镚AN網(wǎng)絡(luò)有位還有判別器的處理(這一塊又增加了網(wǎng)絡(luò)的權(quán)重),所以才會導(dǎo)致占的顯存比CNN大?如果有了解的朋友在評論區(qū)賜教~
一些相關(guān)的邊角料,一般在程序里會有如下代碼:
其中當(dāng)allow_soft_placement參數(shù)設(shè)置為True時(shí),如果運(yùn)算無法由GPU執(zhí)行,那么TensorFlow會自動將它放到CPU上執(zhí)行。另外可以在session這一塊進(jìn)行顯存分配。如下:
?
總結(jié)
以上是生活随笔為你收集整理的tensorflow出现显存不足的提示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机运行内存和显卡内存不足,电脑内存不
- 下一篇: 如何处理GPU训练显存不足[memory