【问题标题】: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使用 shape[1,48,48,1024] 分配张量并通过分配器 GPU_0_bfc 在 /job:localhost/replica:0/task:0/device:GPU:0 上键入 float 时出现 OOM
【发布时间】:2020-12-06 16:31:25
【问题描述】:

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

火车的代码 sn-p 如下:

        # 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')

第一阶段进展顺利。但从第 2 阶段失败。给出以下内容:

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

训练在配备 2GB RAM 的 QuadroK420 上运行。只是内存不足的问题还是我遗漏了什么? 有没有一种方法可以用我的设备进行训练?

【问题讨论】:

    标签: tensorflow keras deep-learning gpu custom-training


    【解决方案1】:

    这很可能是 RAM 问题。您可以尝试将批量大小减少到 1 或简化网络。如果这两种方法中的任何一种都有效,请使用更大的 RAM。

    【讨论】:

      【解决方案2】:

      问题是你显卡的gpu内存。

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

      在第二阶段,你开始出现内存不足的问题,因为你训练了更多的层,导致内存不足。

      对于计算机视觉问题,我建议使用具有至少 8 GB VRAM 的视频卡。

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

      【讨论】:

      • 如果它解决了你的问题,你愿意支持我的回答吗?它对我和其他人都有帮助。谢谢。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-15
        • 1970-01-01
        • 1970-01-01
        • 2021-12-01
        • 2018-01-24
        • 2019-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多