Mask RCNN Resource exhausted (OOM) 在我自己的数据集上

Mask RCNN Resource exhausted (OOM) on my own dataset

Mask RCNN 资源耗尽需要帮助 -

H/W - i7-8700, 32G RAM, 单块 ASUS ROG STRIX 1080ti (11GB)

虚拟环境设置 - tensorflow-gpu==1.5.0,python==3.6.6,Cuda==9.0.176,cudnn==7.2.1

图像分辨率 - 最大宽度=900 像素,最大高度=675 像素,最小宽度=194 像素,最小高度=150 像素,11 张图像用于训练

S/W - IMAGES_PER_GPU = 1 (在 class xxConfig(Config), xxx.py), BACKBONE = "resnet50", POST_NMS_ROIS_TRAINING = 1000, POST_NMS_ROIS_INFERENCE = 500, IMAGE_RESIZE_MODE = "square", IMAGE_MIN_DIM = 400, IMAGE_MAX_DIM = 512, TRAIN_ROIS_PER_IMAGE = 100

令我感到奇怪的是,nvidia-smi 显示 < 300MB 已用于 python,终端显示如下,但是

ResourceExhaustedError(回溯见上文):分配形状为 [3,3,256,256] 的张量并通过分配器在 /job:localhost/replica:0/task:0/device:GPU:0 上键入 float 时出现 OOM GPU_0_bfc [[节点:fpn_p5/random_uniform/RandomUniform = RandomUniformT=DT_INT32, dtype=DT_FLOAT, seed=87654321, seed2=5038409, _device="/job:localhost/replica:0/task: 0/设备:GPU:0"]]

nvidia-smi

error-log when running the code

Tensorflow 默认分配所有 GPU 内存。因此,如果您只看到 nvidia-smi 中分配了 700 MB,那么您很可能在 Tensorflow 中设置了一些选项来限制 GPU 内存,例如:

config.gpu_options.allow_growth = True

config.gpu_options.per_process_gpu_memory_fraction = 0.4

删除此选项并重试。另见:https://www.tensorflow.org/guide/using_gpu

用 7.0.5 替换 cudnn 7.2.1 后,我现在可以使用 1080ti gpu 训练 Mask-RCNN 而不会出现资源耗尽 (OOM) 问题。