神經網絡分佈式訓練

研究了半天分佈式,簡要總結出來分享一下,具體細節請看下面的參考資料。主要的參考資料是:node

楊旭東:一文說清楚Tensorflow分佈式訓練必備知識 zhuanlan.zhihu.com圖標

1. 分佈式訓練策略

  1. 模型並行:用於模型過大的狀況,須要把模型的不一樣層放在不一樣節點orGPU上,計算效率不高,不經常使用。
  2. 數據並行:把數據分紅多份,每份數據單獨進行前向計算和梯度更新,效率高,較經常使用。

2. 分佈式並行模式

  1. 同步訓練:全部進程前向完成後統一計算梯度,統一反向更新。
  2. 異步訓練:每一個進程計算本身的梯度,並拷貝主節點的參數進行更新,容易形成錯亂,陷入次優解。

3. 分佈式訓練架構

  1. Parameter Server:集羣中有一個parameter server和多個worker,server須要等待全部節點計算完畢統一計算梯度,在server上更新參數,以後把新的參數廣播給worker。
  2. Ring AllReduce:只有worker,全部worker造成一個閉環,接受上家的梯度,再把累加好的梯度傳給下家,最終計算完成後更新整個環上worker的梯度(這樣全部worker上的梯度就相等了),而後求梯度反向傳播。比PS架構要高效。

4. Tensorflow分佈式框架

  1. Horovod
  2. TF>=1.11中官方提供了AllReduce策略,支持Estimator API

5. Pytorch分佈式框架

  1. NVIDIA/apex
  2. Pytorch中官方提供了DistributedDataParallel
相關文章
相關標籤/搜索