Colab 提供 OOM 用于在 tensorflow 中在 GPU 上分配 4.29 GB 张量

Posted

技术标签:

【中文标题】Colab 提供 OOM 用于在 tensorflow 中在 GPU 上分配 4.29 GB 张量【英文标题】:Colab giving OOM for allocating 4.29 GB tensor on GPU in tensorflow 【发布时间】:2021-07-03 12:31:54 【问题描述】:

我正在运行一个模型,它在其第一层分配 [32768,32768] 浮动权重(大约 4.29 GB)。但是在顺序模型中添加层时会出现 oom 错误。 这是添加层之前 nvidia-smi 的输出 -

这是错误-

这是错误后nvidia-smi的输出-

当 Colab GPU 的大小为 13 GB 时,为什么不能分配 4.29 GB 的权重? 对此的其他答案,例如,允许 GPU 增长不起作用。

(注意 - 模型创建中的 GPU 和 CPU 代码划分原本打算在 gpu1 和 gpu2 上,但由于 Colab 仅提供一个 GPU,因此我将其在 CPU 和 GPU 之间划分以使用两者的 RAM)

【问题讨论】:

【参考方案1】:

恕我直言,您无需在 TF/keras 中明确指定 GPU - Colab 上的当前版本将在可用时使用它。 GPU 加载通常发生在 fitpredict 时间,而不是在模型构建时 - 然后您可以使用批量大小微调内存消耗。

请尝试不带with 块的代码。

以后请使用正确的代码复制粘贴代替图片。

【讨论】:

感谢代码插入的建议。但它在没有'with'语句的情况下也会在同一行给出错误。 过去我的运行时中断。尝试将运行时“恢复出厂设置”。我不认为该模型太大,来自 keras.applications 的标准 resnet50 比在 Colab GPU 上工作要大得多,而且没有太多麻烦。不过,您可能会重新考虑该密集层中的单元数量。我不认为这么大的密集层会给你带来额外的好处。如果数据是图片,在展平输入之前考虑卷积和最大池化层以获得特征而不是像素。 我显示的输出是运行时恢复出厂设置后。在出错之前,根据 nvidia-smi 的输出为数据分配了大约 4300 MiB 的 RAM,然后发生崩溃。 Wrt 密集层神经元,我正在从一篇论文中复制架构。

以上是关于Colab 提供 OOM 用于在 tensorflow 中在 GPU 上分配 4.29 GB 张量的主要内容,如果未能解决你的问题,请参考以下文章

谷歌 colab 中用于 tensorflow-1.x 的 Tensorboard

深入学习Google Colab:加载大型图像数据集的时间很长,如何加速这个过程?

在google drive使用google.colab云服务

在 Google Colab 中安装 dryscrape(用于网页抓取的 python 库)

Pandas 样式不适用于 Google colab

数据分析神器Colab的初探