在Google Cloud ML上以分布式模式运行张量流代码

时间:2017-04-04 10:19:10

标签: distributed-computing google-cloud-ml google-cloud-ml-engine

是否有人知道需要对培训师进行哪些更改才能在Google Cloud ML上的分布式平台上运行作业?

如果有人可以分享一些关于同一篇文章或文档,那将会有很大的帮助。

3 个答案:

答案 0 :(得分:1)

总的来说,您的分布式TensorFlow程序将完全是 - 分布式TensorFlow,具有最小甚至没有特定于云的更改。在tensorflow.org上,分布式TensorFlow的最佳资源是this tutorial。本教程将引导您完成低级操作方法。

还有一个更高级别的API,目前在contrib中(因此API可能会更改并将在未来版本中移出contrib),这简化了您必须为分布式培训编写的样板代码量。官方教程是here

一旦您理解了TensorFlow的一般位(无论是高级API还是低级API),您的代码中必须存在一些特定元素才能使其在CloudML Engine上运行。对于低级TensorFlow API,您需要解析TF_CONFIG环境变量以设置ClusterSpec。这在this example中有所体现(具体见this代码块)。

更高级别API的一个优点是,所有这些解析都已经为您完成。您的代码通常应该正常工作。见this example。重要的是你需要使用learn_runner.run()(参见this行),它将在本地和云端工作,以训练你的模型。

当然,还有其他框架,例如TensorFX

在适当地构建代码之后,您只需在启动培训作业时选择具有多台计算机的相应scale tier。 (有关示例,请参阅Chuck Finley's答案)

希望它有所帮助!

答案 1 :(得分:1)

如果您的模型是使用Tensorflow Estimators构建的,那么您需要做的更改非常少。您基本上可以将代码插入例如this boilerplate code

答案 2 :(得分:0)

您的问题是否通过Run Distributed Training in the Cloud中的“scale-tier”参数来解答?

gcloud ml-engine jobs submit training $JOB_NAME \
   --job-dir $OUTPUT_PATH \
   --runtime-version 1.0 \
   --module-name trainer.task \
   --package-path trainer/ \
   --region $REGION \
   --scale-tier STANDARD_1 \
   -- \
   --train-files $TRAIN_DATA \
   --eval-files $EVAL_DATA \
   --train-steps 1000 \
   --verbose-logging true