Пожалуйста, помогите мне найти решение моих проблем. Для меня важно сначала заявить, что я успешно создал свой собственный набор данных и успешно обучил этот набор данных с помощью resnet101 на своем компьютере (16 ГБ ОЗУ и 4 ГБ NVIDIA 980).
Проблема возникла, когда я попытался переключить магистраль с помощью inception-resnet и nasnet. Я получил следующую ошибку
"ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape ..."
И я подумал, что у меня недостаточно ресурсов на моем компьютере, поэтому я создал инстанс на AWS EC2 с 60 ГБ ОЗУ и 12 ГБ NVIDIA Tesla K80 (мое рабочее место предоставляет только эту услугу) и обучил там сеть.
Обучение начальному реснету сработало хорошо, однако это не относится к наснету. Даже со 100 ГБ памяти я все равно получаю ошибку OOM
Я нашел одно решение на веб-странице github с моделями tensorflow по адресу issue #1817, и я последовал за инструкции, добавив следующую строку кода в файл конфигурации nasnet
train_config: {
batch_size: 1
batch_queue_capacity: 50
num_batch_queue_threads: 8
prefetch_queue_capacity: 10
...
и код какое-то время работал хорошо (следующий скриншот вверху). Тем не менее, я все еще получаю ошибку OOM после выполнения около 6000 шагов.
INFO:tensorflow:global step 6348: loss = 2.0393 (3.988 sec/step)
INFO:tensorflow:Saving checkpoint to path /home/ubuntu/crack-detection/structure-crack/models/faster_rcnn_nas_coco_2017_11_08/train/model.ckpt
INFO:tensorflow:global step 6349: loss = 0.9803 (3.980 sec/step)
2018-01-25 05:51:25.959402: W tensorflow/core/common_runtime/bfc_allocator.cc:273] Allocator (GPU_0_bfc) ran out of memory trying to allocate 79.73MiB. Current allocation summary follows.
...
ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[64,17,17,4032]
[[Node: MaxPool2D/MaxPool = MaxPool[T=DT_FLOAT, data_format="NHWC", ksize=[1, 1, 1, 1], padding="VALID", strides=[1, 1, 1, 1],
...
Есть ли что-нибудь еще, что я мог бы сделать, чтобы это работало гладко без ошибок OOM? Спасибо за вашу помощь
РЕДАКТИРОВАТЬ №1: теперь ошибки появляются чаще, они появятся после 1000-1500 шагов.
РЕДАКТИРОВАНИЕ №2: на основе ошибки №2668 и issue #3014, есть еще одна вещь, которую мы можем сделать, чтобы запустить код без ошибки OOM, добавив second_stage_batch_size: 25
(по умолчанию 50) в разделе модели файла конфигурации. Итак, файл должен выглядеть следующим образом
model{
faster_rcnn {
...
second_stage_localization_loss_weight: 2.0
second_stage_classification_loss_weight: 1.0
second_stage_batch_size: 25
}
}
Надеюсь, это может помочь.