0

article表明有三個選項用於分佈式訓練雲ML引擎分佈式訓練默認類型的自定義tf.estimator

  1. 數據並行訓練同步更新。
  2. 異步更新的數據並行訓練。
  3. 模型平行訓練。

教程然後繼續建議遵循執行數據並行訓練對雲ML引擎這表現爲「異步更新的代碼如果10個工作節點之間分發10000個批次,每個節點工程上大約有1000批次。「

但是,不清楚代碼的哪一部分實際上指定了這是使用異步更新的數據並行訓練。如果您使用自定義tf.estimator在分佈式訓練模式下運行,這僅僅是ML引擎的默認值?

回答

1

簡短的回答是tf.estimator目前主要是圍繞數據並行訓練(2)。

只需在代碼中使用with tf.device()語句即可獲得模型平行培訓。

您可以嘗試使用SyncReplicasOptimizer並可能完成同步訓練(1)。

以上所有內容一般適用於tf.estimator; CloudML Engine沒有什麼不同。

+0

謝謝!我的後續問題發佈在這裏:https://stackoverflow.com/questions/45989971/distributed-training-with-tf-estimator-resulting-in-more-training-steps - 我想先確認我應該期待數據並行訓練,所以我對我正在運行的分佈式ML引擎實驗的性能感到困惑 – reese0106

+0

另外,是否需要使用tf.device()語句來利用GPU?我發現有衝突的文檔表明這是需要的,但我正在觀察BASIC和BASIC_GPU之間的一些加速,但我不確定這是由於GPU還是BASIC_GPU有更大的CPU。 – reese0106

+0

如果您有一個gpu(如BASIC_GPU),則不需要指定設備(有關詳細信息,請參閱https://www.tensorflow.org/tutorials/using_gpu)。也就是說,高性能GPU代碼通常需要強制CPU上的某些操作。有關更多信息,請參閱https://www.tensorflow.org/performance/performance_guide#preprocessing_on_the_cpu。 – rhaertel80

0

Cloud ML引擎不確定分佈式培訓的模式。這取決於用戶如何使用TensorFlow庫設置培訓。在從文章鏈接的mnist示例中,代碼使用的是TF Learn類,具體而言,Estimator構建於model.py

該代碼選擇優化程序,在本例中爲使用異步更新的AdamOptimizer。如果您想要執行同步更新,則必須使用不同的優化器,例如SyncReplicasOptimizer。

有關如何設置同步培訓的更多信息,請參閱此doc

+0

啊我沒有意識到這是從優化確定的,謝謝!優化器之外還有其他一些因素可以控制分佈式培訓的類型嗎?優化器是否也指定了「數據並行」? – reese0106

+0

我已經生成了我自己的Estimator(返回tf.estimator.EstimatorSpec),並且正在查找其他信息以瞭解如何分發培訓。我也基於你的答案使用AdamOptimizer,我假設它是數據並行異步培訓,但是如果我選擇不同的估算器,我不知道如何確認行爲。我沒有看到這個優化器相關的行爲記錄在任何地方,以便我可以自己決定行爲。你能分享任何相關的鏈接嗎? – reese0106