簡體   English   中英

Tensorflow內存不足和CPU / GPU使用率

[英]Tensorflow Out of memory and CPU/GPU usage

我將Tensorflow與Keras結合使用來訓練用於對象識別(YOLO)的神經網絡。

我編寫了模型,並嘗試使用keras model.fit_generator()批處理32張416x416x3圖像。

我正在使用具有8GB內存的NVIDIA GEFORCE RTX 2070 GPU(Tensorflow使用約6.6 GB)。

但是,當我開始訓練模型時,會收到如下消息:

tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape

2019-02-11 16:13:08.051289: W tensorflow/core/common_runtime/bfc_allocator.cc:267] Allocator (GPU_0_bfc) ran out of memory trying to allocate 338.00MiB.  Current allocation summary follows.
2019-02-11 16:13:08.057318: I tensorflow/core/common_runtime/bfc_allocator.cc:597] Bin (256):   Total Chunks: 1589, Chunks in use: 1589. 397.3KiB allocated for chunks. 397.3KiB in use in bin. 25.2KiB client-requested in use in bin.
2019-02-11 16:13:08.061222: I tensorflow/core/common_runtime/bfc_allocator.cc:597] Bin (512):   Total Chunks: 204, Chunks in use: 204. 102.0KiB allocated for chunks. 102.0KiB in use in bin. 100.1KiB client-requested in use in bin.
...
2019-02-11 16:13:08.142674: I tensorflow/core/common_runtime/bfc_allocator.cc:597] Bin (268435456):     Total Chunks: 11, Chunks in use: 11. 5.05GiB allocated for chunks. 5.05GiB in use in bin. 4.95GiB client-requested in use in bin.
2019-02-11 16:13:08.148149: I tensorflow/core/common_runtime/bfc_allocator.cc:613] Bin for 338.00MiB was 256.00MiB, Chunk State:
2019-02-11 16:13:08.150474: I tensorflow/core/common_runtime/bfc_allocator.cc:632] Chunk at 000000070B400000 of size 1280
2019-02-11 16:13:08.152627: I tensorflow/core/common_runtime/bfc_allocator.cc:632] Chunk at 000000070B400500 of size 256
2019-02-11 16:13:08.154790: I tensorflow/core/common_runtime/bfc_allocator.cc:632] Chunk at 000000070B400600 of size 256
....
2019-02-11 16:17:38.699526: I tensorflow/core/common_runtime/bfc_allocator.cc:645] Sum Total of in-use chunks: 6.11GiB
2019-02-11 16:17:38.701621: I tensorflow/core/common_runtime/bfc_allocator.cc:647] Stats:
Limit:                  6624727531
InUse:                  6557567488
MaxInUse:               6590199040
NumAllocs:                    3719
MaxAllocSize:           1624768512

2019-02-11 16:17:38.708981: W tensorflow/core/common_runtime/bfc_allocator.cc:271] ****************************************************************************************************
2019-02-11 16:17:38.712172: W tensorflow/core/framework/op_kernel.cc:1412] OP_REQUIRES failed at conv_ops_fused.cc:734 : Resource exhausted: OOM when allocating tensor with shape[16,256,52,52] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc

我只報告了該消息的幾行,但顯然這是內存使用問題。

也許我應該在生成器功能中使用CPU來讀取文件中的圖像和標簽嗎? 在這種情況下該怎么辦?

謝謝。

416x416對於神經網絡來說是一個很大的尺寸。

在這種情況下,解決方案是減小批量大小。

您可能不喜歡的其他解決方案是:

  • 減少模型容量(分層中減少單位/過濾器)
  • 縮小圖像尺寸
  • 如果您使用的是float64,請嘗試float32(在Keras中這可能很難,具體取決於您所使用的圖層)

分配內存時,Keras / Tensorflow有一個奇怪的行為。 我不知道它是如何工作的,但是我似乎認為大型模型可以通過而小型模型可以通過。 但是,這些較小的模型具有更復雜的操作和分支。

重要的是:

如果此問題在您的第一個轉化層中發生,那么在其余模型中什么也做不了,您需要減少第一層的過濾器(或圖像大小)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM