這article表明有三個選項用於分佈式訓練雲ML引擎分佈式訓練默認類型的自定義tf.estimator
- 數據並行訓練同步更新。
- 異步更新的數據並行訓練。
- 模型平行訓練。
教程然後繼續建議遵循執行數據並行訓練對雲ML引擎這表現爲「異步更新的代碼如果10個工作節點之間分發10000個批次,每個節點工程上大約有1000批次。「
但是,不清楚代碼的哪一部分實際上指定了這是使用異步更新的數據並行訓練。如果您使用自定義tf.estimator在分佈式訓練模式下運行,這僅僅是ML引擎的默認值?
這article表明有三個選項用於分佈式訓練雲ML引擎分佈式訓練默認類型的自定義tf.estimator
教程然後繼續建議遵循執行數據並行訓練對雲ML引擎這表現爲「異步更新的代碼如果10個工作節點之間分發10000個批次,每個節點工程上大約有1000批次。「
但是,不清楚代碼的哪一部分實際上指定了這是使用異步更新的數據並行訓練。如果您使用自定義tf.estimator在分佈式訓練模式下運行,這僅僅是ML引擎的默認值?
簡短的回答是tf.estimator
目前主要是圍繞數據並行訓練(2)。
只需在代碼中使用with tf.device()
語句即可獲得模型平行培訓。
您可以嘗試使用SyncReplicasOptimizer並可能完成同步訓練(1)。
以上所有內容一般適用於tf.estimator
; CloudML Engine沒有什麼不同。
謝謝!我的後續問題發佈在這裏:https://stackoverflow.com/questions/45989971/distributed-training-with-tf-estimator-resulting-in-more-training-steps - 我想先確認我應該期待數據並行訓練,所以我對我正在運行的分佈式ML引擎實驗的性能感到困惑 – reese0106
另外,是否需要使用tf.device()語句來利用GPU?我發現有衝突的文檔表明這是需要的,但我正在觀察BASIC和BASIC_GPU之間的一些加速,但我不確定這是由於GPU還是BASIC_GPU有更大的CPU。 – reese0106
如果您有一個gpu(如BASIC_GPU),則不需要指定設備(有關詳細信息,請參閱https://www.tensorflow.org/tutorials/using_gpu)。也就是說,高性能GPU代碼通常需要強制CPU上的某些操作。有關更多信息,請參閱https://www.tensorflow.org/performance/performance_guide#preprocessing_on_the_cpu。 – rhaertel80