Tensorflow-gpu在一个纪元后耗尽主机内存

时间:2017-10-26 23:40:00

标签: tensorflow tensorflow-gpu

我一直在尝试在提供的horse2zebra数据集上运行cyclegan-1模型(https://github.com/leehomyc/cyclegan-1),以测试我的tensorflow-gpu安装。

一切似乎一切正常,直到第一批结束,当我的系统冻结一分钟时,我收到此错误:

2017-10-26 15:23:10.103303: E tensorflow/stream_executor/cuda/cuda_driver.cc:955] failed to alloc 8589934592 bytes on host: CUDA_ERROR_OUT_OF_MEMORY
2017-10-26 15:23:10.103321: W ./tensorflow/core/common_runtime/gpu/pool_allocator.h:195] could not allocate pinned host memory of size: 8589934592
2017-10-26 15:23:10.103592: E tensorflow/stream_executor/cuda/cuda_driver.cc:955] failed to alloc 7730940928 bytes on host: CUDA_ERROR_OUT_OF_MEMORY
2017-10-26 15:23:10.103599: W ./tensorflow/core/common_runtime/gpu/pool_allocator.h:195] could not allocate pinned host memory of size: 7730940928
./run_cyclegan_oct_26_2017: line 1: 15025 Killed                  python3 -m CycleGAN_TensorFlow.main --to_train=2 --log_dir=CycleGAN_TensorFlow/output/cyclegan/exp_01 --config_filename=CycleGAN_TensorFlow/configs/exp_01.json --checkpoint_dir=CycleGAN_TensorFlow/output/cyclegan/exp_01/20171026-005834

我搜索了类似的问题,并认为这是由于tensorflow试图分配用于系统进程的RAM。

然而,在杀死x服务器并从tty运行之后,我在完全相同的地方得到了同样的错误:在完成第一批处理之后。

似乎tensorflow试图分配大约8GB,虽然这比我的系统内存要少。

我需要限制Tensorflow内存使用的问题吗?我已经阅读了很多关于限制其GPU内存使用量而不是RAM的信息。

我的设置:

  • 记忆15.6 GiB
  • 处理器Intel核心i5-4440 CPU @ 3.10Ghz x 4
  • 图形GeForce GTX 1060 6GB / PCIe / SSE2
  • 操作系统类型64位
  • 充足的磁盘空间
  • 使用python3

谢谢!

彼得

1 个答案:

答案 0 :(得分:0)

我在寻找类似问题的原因时发现了这个问题:程序可以在训练期间运行,但是在尝试使用CUDA_ERROR_OUT_OF_MEMORY保存模型时得到了tf.train.saver.save。我在这里发布我的解决方案以供其他参考。

对于我的问题,原因是允许在线程中打开的文件的上限。因为我在数据生成器中打开了太多文件而没有关闭它们,所以我达到了上限(默认为1024)。这将导致无法打开要写入的模型文件。通过increase the upper limit解决了该问题,或者在保存之前关闭了所有文件。我花了很长时间才弄清楚这一点,因为错误消息与文件I / O不相关:(

在评估之前不确定tf.train_and_evaluate是否将保存文件。但是您可以检查的一件事是确保输出文件(例如模型)是否可以正确打开。