2

我正在尝试在 celebA 上训练DCGAN。训练过程似乎进展得很慢,我想弄清楚是什么导致了瓶颈。当我使用规模层 STANDARD_1、BASIC_GPU 或仅在我 6 岁的 4 核 CPU 笔记本电脑上本地运行时,训练一个 epoch 所需的时间似乎非常相似。在这三种配置中,每个训练步骤大约需要 25 秒,尽管我注意到每隔一段时间训练步骤需要几分钟。

使用 BASIC_GPU 时,cpu 利用率小于 0.1。我使用 BASIC 层进行了一个实验,master 悬停在 0.4 处,每步大约需要 40 秒。使用 STANDARD_1 时,我得到以下 cpu 利用率:

  • 大师:0.28
  • 工人:.21
  • 参数服务器(ps):.48

在使用单个 worker 的 BASIC 上运行时,CPU 利用率不应该接近 100% 吗?

按照这个速度,训练 celebA 的一个 epoch 需要 22 小时,图像缩小到 64x64。从 repo 中查看其他人的训练日志,看起来这明显高于使用 GPU 训练的其他人。

4

1 回答 1

1

我只是在这里猜测-但是从查看您指出的代码来看,培训做了两件事:

  1. 使用馈送,即在 python 中加载数据——使用阅读器队列(https://www.tensorflow.org/programmers_guide/reading_data)可能会更快。

  2. 这更有可能。该代码一次读取一个文件或一批文件,但每个文件都会导致对云存储的单独请求,因此无法从缓冲等优化中受益。这意味着您的代码可能受 I/O 限制,并且可能解释较低的 CPU 使用率。此外,添加 GPU 可能会进一步将工作卸载到 GPU 上,并降低 CPU 利用率……这仍然忙于 I/O。

不确定这是否有帮助,但它可能会提供一些指示。

于 2017-03-21T15:40:10.057 回答