如何充分利用GPU用于TensorFlow Estimators?

时间:2017-10-09 14:10:03

标签: python tensorflow neural-network tensorflow-gpu

我使用Tensorflow(CPU版本)作为我的深度学习模型。特别是使用DNNRegressor Estimator进行训练,使用一组给定的参数(网络结构,隐藏层,alpha等)虽然我能够减少损失,但模型花了很长时间学习(大约3天)和时间每100步采取9秒。

enter image description here

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

但学习率相同,每100步9秒。我在CPU上使用与Estimators相同的代码,因为我读到Estimators自己使用GPU。这是我的" nvidia-smi"命令输出。 enter image description here

  • 显示正在使用GPU内存,但我的易失性GPU-Util为1%。无法弄清楚,我错过了什么。它是否设计为相同或缺少某些东西,因为估算器的CPU和GPU实现的每秒全局步长相同。
  • 我是否必须在DNNRegressor Estimator Code中明确更改某些内容?

1 个答案:

答案 0 :(得分:1)

听起来你可能正在读取csv并转换为pandas DataFrame,然后使用tensorflow的pandas_input_fn。这是pandas_input_fn实现的已知问题。您可以在https://github.com/tensorflow/tensorflow/issues/13530跟踪问题。

要解决此问题,您可以对i / o使用不同的方法(例如,从TFRecords读取)。如果您想继续使用pandas并增加步数/秒,则可以减少batch_size,但这可能会对您的估算工具的学习能力产生负面影响。