我正在谷歌 Cloud ml引擎培训神经网络 . 我使用张量流高级api Build 了网络,如 tf.layers
, tf.losses
, tf.dataset
. 代码也包含在使用自定义估算器api中 . 这项工作运行了很长时间 . 网络是如此巨大,它应该使用大量的gpu,但在它显示的ml-engine的作业详细信息页面中,它不使用master cpu以及gpu . 虽然主cpu和gpu中的一些内存正在被使用 . 我使用了"complex_model_s"作为主cpu,"standard-gpu"作为worker,以及"standard"类型的参数服务器 . 因为它已经开始训练,所以它也没有输出任何更新的日志或检查点 . 为什么ml-engine没有使用gpu,也没有输出任何新的日志和检查点文件?如果我使用本地机器与NVIDIA gpu进行培训,它会使用gpu吗?或者代码中是否需要进行任何更改?
1 回答
估算器的train_and_evaluate目前支持的分布策略最适合稀疏模型 . 听起来你有一个非常深的模型 .
因此,为了最大限度地提高培训速度,请尝试使用一台机器(即没有 Worker ) . 要最大限度地降低成本,请使用适合您网络规模的最小机器 .
如果您愿意尝试,请尝试使用具有多个设备的工作人员并添加镜像分发策略(尽管它仍然是非常早期的原型)
https://www.tensorflow.org/versions/master/api_docs/python/tf/contrib/distribute
如果您的用例支持它,最佳选择是使用TPU,以获得最大速度和最低成本 .