【发布时间】:2018-04-08 11:45:48
【问题描述】:
我一直在尝试在提供的 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 core i5-4440 CPU @ 3.10Ghz x 4
- 显卡 GeForce GTX 1060 6GB/PCIe/SSE2
- 操作系统类型 64 位
- 充足的磁盘空间
- 使用python3
谢谢!
彼得
【问题讨论】:
-
我是 Tensorflow 的新手,但我很确定
CUDA_ERROR_OUT_OF_MEMORY表示您的 GPU 内存不足,而不是对您的 RAM 的引用。您的显卡有 6GB 内存,您正在尝试分配 8.5GB 和 7.7.GB。 -
其他一些帖子说“主机”内存意味着 RAM,但我可能是错的。不过,我不确定在这两种情况下我会做什么。
-
在您的第一个 epoch 之后,您是否尝试检查比您的小批量大得多的验证数据集?
-
我不这么认为;我只是想在不做任何更改的情况下运行模型。
-
在我的情况下,我在验证数据集上的批大小确实比训练大,回想起来很明显,但我需要提示。