“外掛程式式”分散式機器學習計算框架研究

《“外掛程式式”分散式機器學習計算框架研究》是依託北京大學,由肖臻擔任負責人的面上項目。

基本介紹

  • 中文名:“外掛程式式”分散式機器學習計算框架研究
  • 項目負責人:肖臻
  • 項目類別:面上項目
  • 依託單位:北京大學
項目摘要,結題摘要,

項目摘要

隨著近年來網際網路上數據量爆炸式的增長,機器學習任務開始走向並行化和分散式。然而,用戶在使用已有的並行計算框架構建分散式機器學習任務時,很難復用已有的單機串列程式。本項目研究一種“外掛程式式”分散式機器學習計算框架。該框架可以支持用任何程式語言編寫的串列程式與系統框架進行對接,從而允許用戶快速構建分散式機器學習任務。本研究項目的關鍵在於如何在讓系統達到很高運行效率的同時,提供更加簡潔的編程模型,以及如何支持跨語言編程。我們擬採用Data Agent和Parameter Server架構對系統的分散式處理進行抽象,並且使用In-memory File技術進行跨語言的數據共享。我們擬研究一種新穎的、簡潔的read-write-signal編程模型來提供給用戶。我們擬採用的系統框架支持多種一致性協定和高效透明的錯誤恢復策略,使得機器學習算法具有更快的收斂速度和更加良好的可擴展性。

結題摘要

很多機器學習任務使用非常大的模型,需要在大規模樣本上經過很多輪的梯度下降才能收斂到一個好的狀態。這樣大的計算量需要大規模分散式系統的支持才能完成。現有的支持大規模機器學習的系統要求使用者把他們已有的在單機上運行的機器學習的代碼按照分散式系統的要求重寫一遍,這對於很多使用者來說是不友好的。在這個項目里,我們開發了Plug-in ML系統,該系統對參數伺服器的架構進行了改進,增加了核心實例進程和參數代理進程,這兩者之間通過一個和程式語言無關的通道進行數據傳輸和同步。核心實例進程是由使用者提供的單機的程式,可以是任何語言編寫的,通過參數代理進程與伺服器節點進行通信。參數代理進程通過把伺服器節點上的參數映射到本地的記憶體中,使得底層的數據通信對上層服務透明。這樣設計的好處在於機器學習開發者可以很容易地把已有的單機版本的機器學習程式移植到分散式環境裡,而且提供跨語言的支持:核心實例進程將本地更新的梯度、當前疊代輪次以及請求參數的下標寫入數據通道,參數代理進程從數據通道獲取這些信息後,異步與伺服器節點進行通信,然後將得到的結果寫入通道。這個系統採取了一系列的措施來最佳化分散式計算中參數代理進程和伺服器節點之間進行訊息傳輸的代價,節省存儲空間,並且通過多執行緒線性代數庫來提升性能。實驗結果表明該系統能夠達到近似線性的加速比並且具有良好的容錯性。為了提高系統的高可用性,本項目設計了一套靈活高效的故障恢複方案:採用多個保持同步狀態的主控制節點組成一個高可用集群;將伺服器節點映射到一個環上,把每個參數分別存儲在多台不同的伺服器節點上;主控制節點定期和伺服器節點以及工作節點傳送和接收心跳信息來檢測故障並了解整個集群的狀態信息以及任務的執行情況。這些設計保證系統在出現單點故障的情況下依然能夠正常工作。這個系統的核心技術申請了三項專利和一項軟體著作權。該系統已經開源,供大家免費使用。
check!

熱門詞條

聯絡我們