Tensorflow Недостаточно памяти и использование CPU / GPU - PullRequest
0 голосов
/ 11 февраля 2019

Я использую Tensorflow с Keras для обучения нейронной сети для распознавания объектов (YOLO).

Я написал модель и пытаюсь обучить ее с помощью keras model.fit_generator () с партиями 32 416x416x3images.

Я использую графический процессор NVIDIA GEFORCE RTX 2070 с 8 ГБ памяти (Tensorflow использует около 6,6 ГБ).

Однако, когда я начинаю обучать модель, я получаю такие сообщения:

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

Я сообщил только о нескольких строках этого сообщения, но кажется очевидным, что это проблема использования памяти.

Может быть, мне следует использовать процессор в функции генератора для чтения изображений и меток из файлов?В таком случае как мне поступить?

Спасибо.

1 Ответ

0 голосов
/ 11 февраля 2019

416x416 - довольно большой размер для нейронных сетей.

Решением в этом случае является уменьшение размера партии.

Другие решения, которые вам могут не понравиться:

  • уменьшаютемкость модели (меньше единиц / фильтров в слоях)
  • уменьшить размер изображения
  • попробуйте float32, если вы используете float64 (это может быть очень сложно в Keras в зависимости от того, какие слои вы используете)

Keras / Tensorflow имеет странное поведение при распределении памяти.Я не знаю, как это работает, но мне кажется, что большие модели проходят, а меньшие модели терпят неудачу.У этих небольших моделей, однако, были более сложные операции и ответвления.

Важная вещь:

Если эта проблема возникает в вашем первом слое конвекс, то нет ничего, чтоможно сделать в остальной части модели, нужно уменьшить фильтры первого слоя (или размер изображения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...