2017-10-09 11 views
0

我使用Tensorflow(CPU版本)作为我的深度学习模型。具体使用DNNRegressor Estimator进行训练,给定参数集(网络结构,隐藏层,alpha等)虽然我能够减少损失,但是模型需要花费很长时间学习(大约3天),而且时间很长每100步采取9秒。如何充分利用GPU进行TensorFlow Estimators?

enter image description here

我来到这个文章翻过: - https://medium.com/towards-data-science/how-to-traine-tensorflow-models-79426dabd304 ,发现GPU的可以更快速地学习。所以我从AWS(单核GPU)enter image description here带有4个(vCPU),12个(ECU)和61个(MiB)的p2.xlarge GPU。

但是学习速度在每100步第9秒时相同。我使用相同的代码在CPU上使用Estimators,因为我读了Estimators自己使用GPU。这里是我的“nvidia-smi”命令输出。 enter image description here

  • 据显示,GPU存储器被使用,但我的挥发性GPU-的Util是在1%以下。无法弄清楚,我错过了什么。它是设计成相同的还是我错过了一些东西,因为每秒的全局步数对于Estimators的CPU和GPU实现都是相同的。
  • 我是否必须明确地改变DNNRegressor Estimator Code中的内容?
+0

张量流开始需要一些时间,您检查过程有多长时间? – Kev1n91

+0

@ kev1n91这个时间对于所有的步骤都是不变的。所以这段时间正在使用。 – user3457384

+0

看起来像GPU正在等待CPU运行缓慢。你如何提供数据? – Maxim

回答

0

这听起来像你可能从csv读取并转换为熊猫数据帧,然后使用tensorflow的pandas_input_fn。这是pandas_input_fn实现的已知问题。您可以在https://github.com/tensorflow/tensorflow/issues/13530上跟踪问题。

为了解决这个问题,你可以使用不同的I/O方法(例如从TFRecords读取)。如果您想继续使用熊猫并增加步数/秒,则可以减少批量大小,但这可能会对估算人员的学习能力产生负面影响。