在this TensorFlow tutorial中,您可以使用N個GPU將N個小批量(每個包含M個訓練樣本)分配給每個GPU並同時計算梯度。在TensorFlow中進行多GPU訓練的優勢是什麼?
然後,您對從N個GPU中收集的漸變進行平均並更新模型參數。
但這與使用單GPU來計算N * M個訓練樣本的梯度,然後更新參數的效果相同。
因此,我認爲唯一的優點是可以在相同的時間內使用更大尺寸的微型批次。
但是大型小批量一定更好嗎?
我以爲你不應該使用一個大型的小批量,爲了使優化更強大的鞍點。
如果大尺寸微型批次確實不是更好,爲什麼你會關心多GPU學習,甚至是多服務器學習?
(上面的教程是一個同步的訓練。如果是異步的訓練,然後我可以看到的優點,因爲參數將在不平均由每個GPU計算出的梯度來更新)
較大的小批量不是更好,但也不是較小的小批量。批量大小的最佳選擇嚴重依賴於各種因素。 – Aenimated1
假設由於VRAM尺寸的原因,每GPU有1000個採樣。假設最佳的最小批量爲2000。然後在這個同步多GPU設置中,使用兩個以上的GPU應該沒有任何優勢。對? – mp2893
我認爲,相反,理論上(但不是實際上),您可以從2000個GPU中受益,每個GPU都可以計算單個示例的漸變。實際上,GPU開始使用相當多的並行性,但是我希望通過在(例如)4個GPU(每個負責計算每批500個樣本的梯度)之間分配計算來看到性能的提高。 – Aenimated1