分配形状为 [1,48,48,1024] 的张量并在 /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc 上键入 float 时出现 OOM

OOM when allocating tensor with shape[1,48,48,1024] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc

我正在尝试在以下存储库中重现 Mask RCNN 的训练:https://github.com/maxkferg/metal-defect-detection

火车的代码片段如下:

        # Training - Stage 1
        print("Training network heads")
        model.train(dataset_train, dataset_val,
        learning_rate=config.LEARNING_RATE,
        epochs=40,
        layers='heads')

        # Training - Stage 2
        # Finetune layers from ResNet stage 4 and up
        print("Fine tune Resnet stage 4 and up")
        model.train(dataset_train, dataset_val,
        learning_rate=config.LEARNING_RATE,
        epochs=120,
        layers='4+')

        # # Training - Stage 3
        # # Fine tune all layers
        print("Fine tune all layers")
        model.train(dataset_train, dataset_val,
        learning_rate=config.LEARNING_RATE / 10,
        epochs=160,
        layers='all')

第 1 阶段进展顺利。但在第 2 阶段失败。提供以下内容:

2020-08-17 15:53:10.685456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 123 个大小为 2048 的块,总计 246.0KiB 2020-08-17 15:53:10.685456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 2816 的块,总计 2.8KiB 2020-08-17 15:53:10.686456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 6 个大小为 3072 的块,总计 18.0KiB 2020-08-17 15:53:10.686456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 387 个大小为 4096 的块,总计 1.51MiB 2020-08-17 15:53:10.687456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 6144 的块,总计 6.0KiB 2020-08-17 15:53:10.687456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 6656 的块,总计 6.5KiB 2020-08-17 15:53:10.688456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 60 个大小为 8192 的块,总计 480.0KiB 2020-08-17 15:53:10.688456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 2 个大小为 9216 的块,总计 18.0KiB 2020-08-17 15:53:10.689456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 12 个大小为 12288 的块,总计 144.0KiB 2020-08-17 15:53:10.689456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 2 个大小为 16384 的块,总计 32.0KiB 2020-08-17 15:53:10.690456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 21248 的块,总计 20.8KiB 2020-08-17 15:53:10.691456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 24064 的块,总计 23.5KiB 2020-08-17 15:53:10.691456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 5 个大小为 24576 的块,总计 120.0KiB 2020-08-17 15:53:10.692456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 37632 的块,总计 36.8KiB 2020-08-17 15:53:10.692456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 40960 的块,总计 40.0KiB 2020-08-17 15:53:10.693456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 4 个大小为 49152 的块,总计 192.0KiB 2020-08-17 15:53:10.693456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 6 个大小为 65536 的块,总计 384.0KiB 2020-08-17 15:53:10.694456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 81920 的块,总计 80.0KiB 2020-08-17 15:53:10.695456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 90624 的块,总计 88.5KiB 2020-08-17 15:53:10.695456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 131072 的块,总计 128.0KiB 2020-08-17 15:53:10.695456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 3 个大小为 147456 的块,总计 432.0KiB 2020-08-17 15:53:10.696456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 12 个大小为 262144 的块,总计 3.00MiB 2020-08-17 15:53:10.696456: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 327680 的块,总计 320.0KiB 2020-08-17 15:53:10.697457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 11 个大小为 524288 的块,总计 5.50MiB 2020-08-17 15:53:10.697457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 4 个大小为 589824 的块,总计 2.25MiB 2020-08-17 15:53:10.698457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 194 个大小为 1048576 的块,总计 194.00MiB 2020-08-17 15:53:10.699457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 17 个大小为 2097152 的块,总计 34.00MiB 2020-08-17 15:53:10.699457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 2211840 的块,总计 2.11MiB 2020-08-17 15:53:10.700457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 146 个大小为 2359296 的块,总计 328.50MiB 2020-08-17 15:53:10.701457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 2360320 的块,总计 2.25MiB 2020-08-17 15:53:10.701457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 2621440 的块,总计 2.50MiB 2020-08-17 15:53:10.702457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 2698496 的块,总计 2.57MiB 2020-08-17 15:53:10.702457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 3670016 的块,总计 3.50MiB 2020-08-17 15:53:10.703457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 31 个大小为 4194304 的块,总计 124.00MiB 2020-08-17 15:53:10.703457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 6 个大小为 4718592 的块,总计 27.00MiB 2020-08-17 15:53:10.704457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 5 个大小为 8388608 的块,总计 40.00MiB 2020-08-17 15:53:10.705457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 25 个大小为 9437184 的块,总计 225.00MiB 2020-08-17 15:53:10.705457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 2 个大小为 9438208 的块,总计 18.00MiB 2020-08-17 15:53:10.706457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 9441280 的块,总计 9.00MiB 2020-08-17 15:53:10.706457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 16138752 的块,总计 15.39MiB 2020-08-17 15:53:10.707457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 18874368 的块,总计 18.00MiB 2020-08-17 15:53:10.707457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 1 个大小为 37748736 的块,总计 36.00MiB 2020-08-17 15:53:10.708457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:680] 7 个大小为 51380224 的块,总计 343.00MiB 2020-08-17 15:53:10.708457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:684] 使用中块的总和:1.41GiB 2020-08-17 15:53:10.709457: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\tensorflow\core\common_runtime\bfc_allocator.cc:686] 统计: 限制:1613615104 使用中:1510723072 最大使用:1510723072 NumAllocs:3860 最大分配大小:119947776

训练 运行 在 QuadroK420 和 2GB RAM 上进行。只是内存不足的问题还是我遗漏了什么? 我的装备也有训练的方法吗?

很可能是 RAM 问题。您可以尝试将批量大小减少到 1 或简化您的网络。如果这些方法中的任何一个都有效,请获得具有更大 RAM 的东西。

问题出在你显卡的gpu内存上。

在第一阶段,您能够顺利训练,因为您只训练了网络的“头部”,这转化为较少数量的参数。

第二阶段开始出现out of memory的问题,因为你训练了很多层,导致out of memory

我建议使用至少 8 GB VRAM 的视频卡来解决计算机视觉问题。

的确,有时内存不足的问题可以通过减小批处理大小来解决,但在您的情况下,唯一可行的解​​决方案是选择 bigger/better 显卡。

有时解决这个问题的一种方法是在模型中放置一个上采样层。所以在图像生成器中降低你的目标,然后添加一个上采样层。是欺骗 it.If 的好方法,然后你就知道 colab 无法处理它