parameter server的代碼要怎麼讀?

看過paper,也知道parameter server基本邏輯。但是對於讀具體實現的代碼還是有些無從下手,比如想通過閱讀代碼了解具體通信實現等等。

要了解實現細節,按照怎樣的閱讀順序比較有效率,方便梳理清楚ps實現框架?

此外,基於ps搭建應用需要對ps底層了解到什麼地步?

參考資料:

1. dmlc/ps-lite · GitHub

2. http://www.cs.cmu.edu/~muli/file/parameter_server_nips14.pdf

3. http://www.cs.cmu.edu/~muli/file/ddp.pdf

類似問題:mxnet的代碼要怎麼讀? - 機器學習


我是從它們自帶的演算法開始讀的。比較知名的開源PS有:DMLC的ps-lite, Petuum的Bosen。

按照自己的理解,使用ps-lite寫的並行LR:xswang/xflow

以及用MPI寫的並行LR、FM、FFM模型: xswang/ffm_mpi

PS:最近在研究分散式深度學習系統,tensorflow, mxnet,caffe等等。

------------------------2017年12月01日更新-------------------------

之前放過一個qq群號,但是已經很少登錄qq信息處理不及時。現在建了微信群供大家交流Parameter Server和分散式深度學習系統,感興趣的同學直接加我微信號,然後入群。我的微信號是:shonn007或者Accepted, 頭像是一隻大耳朵兔子~


如果希望學習參數伺服器、或在PS基礎上做進一步科研探索,推薦一個代碼非常清晰的開源項目,cnkuangshi/LightCTR,非常適合入門與進一步探索。

基於參數伺服器與非同步梯度下降理論,LightCTR支持可擴展性的模型參數集群訓練。集群分為Master, ParamServer與Worker三種角色,一個集群有一個Master負責集群啟動與運行狀態的維護,大規模模型參數以DHT散布在多個參數伺服器上,與多個負責模型梯度運算的Worker協同,每輪訓練都先從ParamServer拉取(Pull)一個樣本Batch的參數,運算得到的參數梯度推送(Push)到ParamServer進行梯度匯總與參數更新。LightCTR分散式集群採取心跳監控、消息重傳等容錯方式。


推薦閱讀:

決策樹和隨機森林學習筆記-歡迎補充
人工智慧發展簡史
機器人的自我修養:該如何成為網紅
台灣大學林軒田機器學習技法課程學習筆記3 -- Kernel Support Vector Machine

TAG:分散式計算 | 機器學習 |