微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。