在 ML Engine 中 运行 分布式训练的正确方法

Correct way to run distributed training in ML Engine

我正在尝试使用 ML Engine 中的分布式训练作业来训练我的模型(不是使用 tf.estimator 或 tf.keras 构建的)。

为了在 ML Engine 中 运行 分布式训练作业,我应该采取什么步骤?

我发现了以下准则:

因此,如果前者在命令行中提供,是否意味着我不需要对后者做任何事情,因为 ML Engine 以某种方式负责跨设备分发我的图形?还是我需要两者都做?

如果我手动指定设备会发生什么:

with tf.device('/gpu:0/1/2/etc')

..然后 运行 带有 --scale-tier?

的命令

有两种可能的情况:

- 您想使用具有 CPU 的机器:

在这种情况下,你是对的。使用 --scale-tier 参数足以在 ML Engine 中自动分发作业。

您有多个缩放层选项 {1}。

- 您想使用带 GPU 的机器:

在这种情况下,您必须定义一个 config.yaml 文件来描述您想要的 GPU 选项和 运行 一个 gcloud 命令来启动 ML Engine 作业 config.yaml 作为参数 {2}.

如果您在代码中使用 with tf.device('/gpu:0/1/2/etc'),您将强制使用该设备并覆盖正常行为。 {3}.

{1}: https://cloud.google.com/ml-engine/reference/rest/v1/projects.jobs#scaletier

{2}: https://cloud.google.com/ml-engine/docs/tensorflow/using-gpus#requesting_gpu-enabled_machines

{3}: https://www.tensorflow.org/programmers_guide/using_gpu