parameter server的代碼要怎麼讀?
看過paper,也知道parameter server基本邏輯。但是對於讀具體實現的代碼還是有些無從下手,比如想通過閱讀代碼了解具體通信實現等等。
要了解實現細節,按照怎樣的閱讀順序比較有效率,方便梳理清楚ps實現框架?此外,基於ps搭建應用需要對ps底層了解到什麼地步?參考資料:
1. dmlc/ps-lite · GitHub2. http://www.cs.cmu.edu/~muli/file/parameter_server_nips14.pdf3. 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