如何評價Petuum分佈式機器學習系統?

 機器學習算法和計算機領域的其餘算法相比,有本身的一些獨特特色,算法

(1)迭代性:模型的更新並不是一次完成,須要循環迭代屢次;編程

(2)容錯性:即便在每一個循環中產生一些錯誤,模型最終的收斂不受影響;架構

(3)參數收斂的非均勻性:模型中有些參數通過幾個循環便再也不改變,其餘參數須要很長時間收斂。框架

這些特色決定了分佈式機器學習系統的設計和其餘分佈式計算系統(例如Spark)的設計有很大不一樣。機器學習

Petuum是一個專門針對機器學習算法特色的分佈式平臺,而通用的分佈式計算系統Spark以數據流應用爲主,因此兩者的應用對象不一樣。Spark有一個機器學習庫MLLib, 但構建於數據流操做之上,並不是針對機器學習算法的特色而設計。分佈式

Petuum的系統設計創建於機器學習的特徵之上,目前包含兩個主要模塊:key-value store和scheduler,主要處理兩類並行化方法:(1)數據並行;(2)模型並行。性能

數據並行,簡單而言,就是把數據分佈到不一樣機器上,每臺機器計算一個模型的更新(update), 而後對這些update進行彙總並用之更新模型。學習

模型並行,把模型參數進行切分並放置到不一樣機器上,每臺機器對本身那部分進行更新。spa

Key-value store模塊負責數據並行,採用的架構是parameter server,一致性協議是Staleness Synchronous Parallel (SSP)。SSP的基本思想是容許各機器以不一樣步調對模型進行更新,可是加一個限制,使得最快的機器的進度和最慢機器的進度之差不要太大。這樣作的好處是:既減輕慢的機器拖整個系統的後腿,又能保證模型的最終收斂。經過調節SSP的staleness參數,SSP能夠轉化成數據流系統經常使用的BSP(Bulk Synchronous Parallel) 協議或者早期機器學習系統(如Yahoo LDA)使用的ASP(Asynchronous Parallel)。設計

另一個模塊scheduler用於模型並行。scheduler提供的編程接口主要包含三個操做:(1)schedule: 調度節點根據模型參數的相互依賴性和收斂的不均勻性,自動選擇一個待更新的參數子集;(2)push: 調度節點令計算節點並行地爲選好的參數計算update;(3)pull:調度節點從計算節點收集update,並更新參數。

Petuum的主要特性包括:(1)高性能;(2)可編程性;提供了簡單易用的編程接口,用戶可在Petuum上實現本身的機器學習算法。(3)豐富的機器學習庫。咱們用Petuum的統一編程接口實現了14個重要的機器學習算法。

相比於李沐的parameter server系統,Petuum做爲一個機器學習框架,共享參數模型採用哈希表存儲,更新時採用延遲一致性協議,這種模型決定了Petuum在集羣規模和可支持的參數數量上都要比Parameter Server少1到2個數量級,固然對比Spark MLLib列表數據存儲和BSP同步模式,在相同集羣規模下是能夠多訓練2到3個數量級的參數的。另外,Spark數據處理部分和Petuum其實沒什麼太大聯繫,前景的話,若是處理數據就直接spark吧,機器學習就直接Parameter Server好了。

參考文獻:

1.Eric P. Xing, Qirong Ho, Wei Dai, Jin Kyu Kim, Jinliang Wei, Seunghak Lee, Xun Zheng, Pengtao Xie, Abhimanu Kumar, Yaoliang Yu:Petuum: A New Platform for Distributed Machine Learning on Big Data. KDD 2015: 1335-1344

2.Mu Li, David G. Andersen, Jun Woo Park, Alexander J. Smola, Amr Ahmed, Vanja Josifovski, James Long, Eugene J. Shekita, Bor-Yiing Su:Scaling Distributed Machine Learning with the Parameter Server. OSDI 2014: 583-598

相關文章
相關標籤/搜索