tensorflow出现显存不足的提示
在跑程序時經常出現一下這個提示:
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服務器的一些基本配置,點擊【系統設置】按鈕,點開【詳細信息】,出現以下界面:
問題來了,總的內存是30.9GiB,遠高于2.26GiB,(1MB=1024KB,1GB=1024MB,據Wikipedia的注譯,GB(gigabyte)是十進制的容量單位,1GB等于1,000,000,000Bytes。而二進制的容量單位則是用GiB(Gibibyte)就是Giga Binary Byte,相等于1,073,741,824Bytes。所以一個160GB的硬盤其實只有149.0116119GiB)為什么還會報錯誤呢?因為出現這個問題得 時候,一般都是在用GPU跑大型得深度學習的程序,才會導致所需要的GPU內存不足,那這又是怎么回事呢?首先查看一下電腦顯存,在終端輸入nvidia-smi,看到如下界面:
看到一塊GPU的顯存是10989MiB(約為10.7GiB),問題又來了,顯存也比需要的2.26GiB大呀,怎么會提示這樣的錯誤呢?網上查查主要有如下解決方法:
解決方法:1.減少batchsize,即減少了GPU內存分配需求
2.如果內存比較大的話,可以切換CPU
3.重置輸入圖片尺寸,即通過減小圖片的大小來減少對顯存的消耗
選擇上述中的任意一種方法,問題都可以解決,但是還是想知道一下原理才踏實..那么先查查當程序(基于深度學習的為例)運行時候,tensorflow中顯存的分配方法:
https://blog.csdn.net/frankzd/article/details/102621817? (參考該博客,可以簡單分析自己代碼的內存占用量)因為本人的程序框架是GAN網絡,之前用CNN框架同樣的配置和訓練方式就不會由上述GPU內存相關的提示,所以是因為GAN網絡有位還有判別器的處理(這一塊又增加了網絡的權重),所以才會導致占的顯存比CNN大?如果有了解的朋友在評論區賜教~
一些相關的邊角料,一般在程序里會有如下代碼:
其中當allow_soft_placement參數設置為True時,如果運算無法由GPU執行,那么TensorFlow會自動將它放到CPU上執行。另外可以在session這一塊進行顯存分配。如下:
?
總結
以上是生活随笔為你收集整理的tensorflow出现显存不足的提示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机运行内存和显卡内存不足,电脑内存不
- 下一篇: 如何处理GPU训练显存不足[memory