首页 > 解决方案 > 使用自定义估算器 api 包装的 tensorflow 代码是否在 google cloud-ml 引擎或本地机器中有效地使用 gpu?

问题描述

我正在 google cloud ml-engine 中训练神经网络。我使用 tensorflow 高级 API 构建网络,例如tf.layers,、tf.lossestf.dataset. 该代码还使用自定义估算器 api 进行了包装。作业运行了很长时间。网络太大了,它应该使用大量的 gpu,但是在它显示的 ml-engine 的作业详细信息页面中,它没有使用主 cpu 以及 gpu。尽管主 cpu 和 gpu 中的一些内存正在被使用。我使用了“complex_model_s”作为主 CPU,“标准 GPU”作为工作者,以及“标准”类型的参数服务器。自从它开始训练以来,它也没有输出任何更新的日志或检查点。为什么 ml-engine 不使用 gpu 并且不输出任何新的日志和检查点文件?如果我使用带有 NVIDIA gpu 的本地机器进行训练,它会使用 gpu 吗?或者代码中需要任何更改?

标签: pythontensorflowgoogle-cloud-platformgoogle-cloud-mltensorflow-estimator

解决方案


estimator 的 train_and_evaluate 目前支持的分布策略最适合稀疏模型​​。听起来你有一个非常深的模型。

因此,为了最大限度地提高训练速度,请尝试使用单台机器(即没有工人)。为了最大限度地降低成本,请使用适合您网络规模的最小机器。

如果您愿意尝试,请尝试使用具有多个设备的工作人员并添加镜像分发策略(尽管它仍然是非常早期的原型)

https://www.tensorflow.org/versions/master/api_docs/python/tf/contrib/distribute

如果您的用例支持,为了获得最大速度和最低成本,最好的选择是使用 TPU。


推荐阅读