【问题标题】:Error: OOM when allocating tensor with shape错误:使用形状分配张量时出现 OOM
【发布时间】:2018-06-08 12:20:43
【问题描述】:

在使用 Apache JMeter 进行性能测试期间,我的初始模型遇到问题。

错误:分配具有 shape[800,1280,3] 和类型的张量时出现 OOM 通过分配器浮动在 /job:localhost/replica:0/task:0/device:GPU:0 上 GPU_0_bfc [[节点:Cast = CastDstT=DT_FLOAT,SrcT=DT_UINT8, _device="/job:localhost/replica:0/task:0/device:GPU:0"]] 提示:如果您想在 OOM 发生时查看已分配张量的列表, 将 report_tensor_allocations_upon_oom 添加到 RunOptions 以获取当前 分配信息。

【问题讨论】:

    标签: python-3.x tensorflow gpu gunicorn


    【解决方案1】:

    OOM 代表内存不足。这意味着您的 GPU 空间不足,可能是因为您分配了其他太大的张量。您可以通过缩小模型或减少批量大小来解决此问题。从外观上看,您输入的是一张大图像 (800x1280),您可能需要考虑下采样。

    【讨论】:

    • 我在训练的第 4 个时期遇到了这个错误。 Epochs 1-3 成功了。你知道为什么会发生这种情况吗?在 epoch 4 期间对 GPU 的内存需求与前 3 个 epoch 期间的内存需求相同。我应该在处理完每个批次后释放 GPU 内存吗?
    • 您可能会在训练循环中创建更多张量,这会导致消耗更多内存,您不应该这样做。没有代码很难说。
    • 按照您的建议,确保删除未使用的张量的最佳方法是什么,或者确保不会在训练循环中创建更多张量的最佳方法是什么@CoryNezin
    • 我陷入了同样的错误,上述想法的答案是什么? “确保删除未使用的张量的最佳方法是什么,或者确保不会按照您的建议在训练循环中创建更多张量的最佳方法是什么”@CoryNezin
    • 我有一段时间没有使用 TensorFlow,但我确信自从这个问题以来它已经更新了许多功能。您可能想为此提出一个新问题。
    【解决方案2】:

    如果你手头有多个 GPU,请选择一个不如这个繁忙的 GPU,(可能的原因,其他进程也在这个 GPU 上运行)。转到终端并输入

    export CUDA_VISIBLE_DEVICES=1 
    

    其中 1 是其他可用 GPU 的数量。重新运行相同的代码。

    您可以使用

    检查可用的 GPU
    nvidia-smi 
    

    这将向您显示可用的 GPU 以及每个 GPU 上可用的内存量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2021-09-08
      • 2018-03-21
      相关资源
      最近更新 更多