自定义的 Cloud ML Engine 分布式训练默认类型 tf.estimator

Cloud ML Engine distributed training default type for custom tf.estimator

article 建议分布式训练有三个选项

  1. 具有同步更新的数据并行训练。
  2. 具有异步更新的数据并行训练。
  3. 模型并行训练。

教程然后继续建议以下代码执行 数据并行训练并在 Cloud ML Engine 上进行异步更新,其行为与 "If you distribute 10,000 batches among 10 worker nodes, each node works on roughly 1,000 batches."

但是,尚不清楚代码的哪一部分实际指定这是使用具有异步更新的数据并行训练。如果您 运行 在具有自定义 tf.estimator 的分布式训练模式下,这只是 ML 引擎的默认设置吗?

Cloud ML Engine 无法确定分布式训练的模式。这取决于用户如何使用 TensorFlow 库设置训练。在文章链接的 mnist 示例中,代码使用 TF Learn 类,具体来说,在 model.py

中构造了一个 Estimator

该代码选择了优化器,在本例中是使用异步更新的 AdamOptimizer。如果您想进行同步更新,则必须使用不同的优化器,例如 SyncReplicasOptimizer。

有关如何设置同步训练的更多信息,您可以参考此doc

简短的回答是 tf.estimator 目前主要围绕数据并行训练 (2) 构建。

您只需在代码中使用 with tf.device() 语句即可获得模型并行训练。

您可以尝试使用 SyncReplicasOptimizer 并可能完成同步训练 (1)。

以上所有内容普遍适用于tf.estimator; CloudML Engine 没有什么不同。