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 加载通常发生在 fit
和 predict
时间,而不是在模型构建时 - 然后您可以使用批量大小微调内存消耗。
请尝试不带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云服务