【发布时间】:2018-03-20 18:47:56
【问题描述】:
我在深度学习模型中使用了 Tensorflow(CPU 版本)。特别是使用 DNNRegressor Estimator 进行训练,使用给定的参数集(网络结构、隐藏层、alpha 等)虽然我能够减少损失,但模型花费了非常长的时间来学习(大约 3 天。)时间是每 100 步耗时 9 秒。
我偶然发现了这篇文章:- https://medium.com/towards-data-science/how-to-traine-tensorflow-models-79426dabd304 并发现 GPU 可以更快地学习。所以我从 AWS(单核 GPU) 用 4(vCPU)、12(ECU)和 61(MiB)获取了 p2.xlarge gpu。
但学习率相同,每 100 步需要 9 秒。我正在使用与 CPU 上的 Estimators 相同的代码,因为我读到 Estimators 自己使用 GPU。这是我的“nvidia-smi”命令输出。
- 显示正在使用 GPU 内存,但我的 Volatile GPU-Util 为 1%。无法弄清楚,我错过了什么。它的设计目的是相同的还是我遗漏了什么,因为 Estimators 的 CPU 和 GPU 实现每秒的全局步数相同。
- 我是否必须明确更改 DNNRegressor Estimator 代码中的某些内容?
【问题讨论】:
-
tensorflow启动需要一些时间,你检查了多长时间?
-
@kev1n91 这个时间对于所有步骤都是恒定的。所以用了这么多时间。
-
看起来 GPU 正在等待慢速 CPU 操作。您如何输入数据?
-
@maxim,它的一次 csv 读取并将它们转换为 pandas。在此转换之后,我对数字列和分类列使用不同的 tf.feature_column 函数。然后将这些特征列的数组提供给 DNNRegressor 估计器中的 input_fn。
-
@user3457384 在某些情况下,输入批处理准备(在 CPU 中运行)比 GPU 操作慢。没有完整的代码就不能肯定地说。请尝试按照以下问题中的建议描述您的操作并提供摘要 - stackoverflow.com/questions/34293714/…
标签: python tensorflow neural-network tensorflow-gpu