我密切關注Imagenet分佈式TF列車示例。分佈式張量參數服務器和工作人員
當我在兩個不同的工作人員上運行這個例子時,我無法理解數據的分佈是如何發生的嗎?理論上,不同的工作人員應該看到數據的不同部分。此外,哪部分代碼告訴參數在參數服務器上傳遞?像在多gpu的例子中一樣,'cpu:0'有明確的部分。
我密切關注Imagenet分佈式TF列車示例。分佈式張量參數服務器和工作人員
當我在兩個不同的工作人員上運行這個例子時,我無法理解數據的分佈是如何發生的嗎?理論上,不同的工作人員應該看到數據的不同部分。此外,哪部分代碼告訴參數在參數服務器上傳遞?像在多gpu的例子中一樣,'cpu:0'有明確的部分。
不同的工作人員通過從單個預處理圖像隊列中取出小批量圖像來查看數據的不同部分。詳細說明,在用於訓練Imagenet模型的分佈式設置中,輸入圖像由多個線程預處理,預處理後的圖像存儲在一個單獨的RandomShuffleQueue
中。您可以在this文件中查找tf.RandomShuffleQueue
以瞭解如何完成此操作。多名工作人員被組織爲「入侵塔」,每個塔從同一隊列中取出一小批圖像,從而得到不同部分的輸入。圖片here回答你的問題的第二部分。在this文件中查找slim.variables.VariableDeviceChooser
。那裏的邏輯確保Variable
對象被平均分配給充當參數服務器的工作者。所有進行實際培訓的其他工作人員在步驟開始時獲取變量並在步驟結束時更新它們。