【问题标题】:Run a tensorflow code in distributed mode on google cloud ML在 google cloud ML 上以分布式模式运行 tensorflow 代码
【发布时间】:2017-06-16 23:11:18
【问题描述】:

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

如果有人可以分享几篇相同的文章或文档,那将有很大帮助。

【问题讨论】:

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


    【解决方案1】:

    总的来说,您的分布式 TensorFlow 程序将完全是分布式 TensorFlow,只需极少(甚至没有)针对云的特定更改。分布式 TensorFlow 的最佳资源是 tensorflow.org 上的 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答案)

    希望对你有帮助!

    【讨论】:

    • 非常感谢。它给了我一个起点,因为我对如何修改我的代码感到困惑。
    • 我已经能够在分布式环境中运行代码,但到目前为止,云中的每台机器都在接收完整数据并在平均后生成输出。我想知道如何将分布式数据提供给云中的每台机器。
    • 在 gogle cloud ML 上提交作业时,我收到一个错误,主要训练 python 文件,即 task.py 无法从 util 文件夹中的 python 脚本导入函数。通常,我们写: from util.xyz import abc this 不会在 main task.py 中调用
    • 我已经能够使用 gcloud 本地培训来运行它,但是当我尝试使用 gcloud 作业提交时会出现此问题。
    • 如何使用 setup.py 从 github 安装 python 包?我正在尝试从 github 安装 kenlm 模块,并在 setup.py 中传递它......请帮助..急需回答......
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      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
      

      【讨论】:

      • 这里是分布式训练信息的直接链接:cloud.google.com/ml-engine/docs/how-tos/…
      • 我认为,一旦我根据分布式张量流修改了我的代码,这个作业提交将在稍后阶段进行。
      • 我已经能够在分布式环境中运行代码,但到目前为止,云中的每台机器都在接收完整数据并在平均后生成输出。我想知道如何将分布式数据提供给云中的每台机器
      • 在 gogle cloud ML 上提交作业时,我收到一个错误,主要训练 python 文件,即 task.py 无法从 util 文件夹中的 python 脚本导入函数。通常,我们写: from util.xyz import abc this 不会在 main task.py 中调用
      • @Appu 你让它工作了吗?听起来值得自己提出问题,但这将归结为您的 setup.py。请参阅 stackoverflow.com/a/40287409/1399222
      猜你喜欢
      • 2017-12-08
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多