2016-09-30 74 views
1

的Tensorflow培訓,特別是複驗模型的實現使用分佈式Tensorflow在以下紙張https://github.com/Russell91/TensorBox給出。分佈式我分佈式Tensorflow工作Reinpect人力檢測模型

我們使用之間,圖的異步執行的分佈式tensorflow設置,但結果是非常令人驚訝的。在進行基準測試時,我們發現分佈式訓練的培訓時間比單次機器訓練多兩倍以上。任何有關可能發生的事情以及還有什麼可能會被嘗試的線索都會得到真正的讚賞。謝謝

注意:這裏有一個更正,我們正在使用圖間實現而不是圖中實現。對不起,我錯

回答

2

一般情況下,我不會感到驚訝,如果從模型到多機實現的單進程實現移動將導致經濟放緩。從你的問題,不是很明顯可能什麼的,但這裏有一些一般性的指針:

  • 如果模型有大量的相對於計算量參數(例如,如果它主要是進行大矩陣乘法而不是卷積),那麼你可能會發現網絡是瓶頸。您的網絡連接的帶寬是多少?

  • 是否有大量副本的過程之間,可能是由於不幸的器件佈局?嘗試收集和可視化時間線,以查看運行模型時發生的情況。

  • 你提到你「中,圖形複製」,這是not currently recommended可擴展性使用。圖內複製可能會在單個主服務器上創建瓶頸,尤其是當您擁有包含多個副本的大型模型圖時。

  • 是否使用跨複製品或多個輸入管線的單個輸入管道?使用單個輸入管道會在運行輸入管道的進程中產生瓶頸。 (但是,對於圖內複製,運行多個輸入管道也可能會產生瓶頸,因爲有一個Python進程會使用大量線程來驅動I/O。)

  • 或者您是否使用提要機制?當需要跨越處理邊界時,數據傳輸速度要慢得多,就像在複製設置中一樣。使用圖間複製至少可以消除單個客戶端進程的瓶頸,但爲了獲得更好的性能,您應該使用輸入管道。 (如Yaroslav observed,飼養,取大值張,因爲數據是通過RPC傳輸是在分佈式版本慢。在一個單一的過程中,這些將使用一個簡單的memcpy()代替。)

  • 多少流程您使用的?縮放曲線是什麼樣的?當切換到使用參數服務器和單個工作副本時(與單個組合進程相比),是否立即減速?當您添加更多副本時,性能會變得更好還是更糟?

1

最近我一直在尋找類似的事情,我注意到,從GRPC將數據移動到Python運行速度慢於預期。特別地考慮下面的模式

add_op = params.assign_add(update) 
... 
sess.run(add_op) 

如果add_op位於一個不同的過程,然後sess.run補充說在50-100 MB速率發生/第二解碼步驟。

這裏有一個benchmarkrelevant discussion