NVIDIA 的 Tensorflow 中内存分配缓慢失败

问题描述

家里有一些新的 GPU,我发现自己被迫升级到 CUDA 11.1,因此,我不得不使用特殊的 NVIDIA's Tensorflow fork -(由于各种原因我不能使用 TF 2 并且需要保持在 1.X 上)。

现在,回到“正常”TF 1.14.0,当它在开始时进行通常的内存抓取时,它会(GPU 内存分数限制为 0.2,我需要在同一个二进制文件中执行大量 OpenGL)保持抱怨无法分配更多内存,常见消息为 Allocator (GPU_0_bfc) ran out of memory trying to allocate XYZ. The caller indicates that this is not a failure,but may mean that there Could be performance gains if more memory were available. 这通常会在开始时在加载冻结的 TF 模型或通过第一个数据时需要几秒钟。

升级的“NVIDIA”TF 1.15.4 中,它说的是类似的话:Allocator (GPU_0_bfc) ran out of memory trying to allocate XYZ (rounded to XYZ). Current allocation summary follows. 后面是 bin 中已分配块的列表,以及什么不是。但是,除了非常不必要非常冗长之外,这还需要很长时间。有时可能需要几分钟才能真正开始推理,这显然是一件非常糟糕的事情。这与 here 可见的错误相同。

我找到了一种允许它稍微增加内存的解决方法。我允许它的分数越高(通过 config.mutable_gpu_options()->set_per_process_gpu_memory_fraction),它运行得越快,当我在我能承受的范围内放手时,速度几乎可以接受。然而,这远不是一个好的解决方案。

当我在 Google 上搜索特定的额外部分 (Current allocation summary follows.) 时,我遇到了实际内存不足的人(不仅仅是 TF 无法增长)。我的代码中没有任何变化,只有 TF 是新的。有没有人知道最近 TF 的变化可能导致这种情况?

请注意:这似乎是我的 GTX 1070 (Ubuntu 20.04) 笔记本电脑上的问题,它是 Ubuntu 18.04 和 RTX 3090 台式机上的 NVidia Tensorflow 1.15.4 问题,但台式机是 20.04没问题!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)