0

在玩了一段時間的當前分佈式訓練實現後,我認爲它將每個GPU視爲一個單獨的工作者。但是,現在在一個盒子中有2〜4個GPU 。採用單盒多GPU方法先計算單個盒子中的平均梯度,然後跨多個節點同步,是不是更好?這樣就可以緩解I/O流量,這總是數據並行性的瓶頸。由於SyncReplicasOptimizer直接將優化器作爲輸入,所以我被告知使用當前實現將單個盒子中的所有GPU作爲工作人員,但我無法弄清楚如何將平均梯度與SyncReplicasOptimizer聯繫起來。張多流分佈式訓練混合多GPU方法

任何人的想法?

回答

2

分佈式TensorFlow在同一個工作任務中支持多個GPU。對圖像模型執行分佈式訓練的一種常見方式是在同一工作人員的多個GPU上執行同步訓練,並跨工作人員進行異步訓練(儘管其他配置也是可能的)。這樣,您只需將模型參數提取給工作人員一次,並將其分配到本地GPU中,從而降低網絡帶寬利用率。

要做這種培訓,許多用戶在單個工作人員的GPU上執行「圖內複製」。這可以在本地GPU設備上使用顯式循環,如the CIFAR-10 example model;或更高級別的庫支持,例如TF-Slim的model_deploy()實用程序。

相關問題