寫分布式機器學習演算法,哪種程式設計介面比較好?

時間 2021-05-05 19:39:07

1樓:

這個問題需要從演算法的計算複雜度和空間複雜度來考慮。因為我們的環境不是乙個理想的環境,我們的演算法是執行在實實在在的機器上的,受限於硬體的體系結構。

hadoop相關的分布式系統要解決的問題是io

問題,而現在的機器學習演算法是受限制於計算,這是問題的根本。

所以我比較推薦的平台是gpu平台在做分布式計算,phi不是很了解。

我們知道通訊過程也是一種io,那麼這裡的解決方案就是最好不做機器之間的通訊,如果一定要的話,條件允許的話,上好硬體,就像ssd硬碟的出現,解決了很多以前單靠傳統的機械硬碟無法解決的問題。

ps是一種架構,可以簡化分布式演算法的實現,但是不要鄙視mpi,mpi靈活與高效集一身,但是能力強悍的都是很難掌控的,mpi稍微難一點。

除了框架和工具,trick也很重要,非同步還是同步,是不是可以壓縮引數,用計算來換取io的減少。1bit sgd也是乙個不錯的方法。

寫著寫著就寫多了,但是發現邏輯比較亂,看來得總結一下。

這方面的工作做了幾個月,業界有各種各樣的解決方案。

2樓:王益

我正在寫一篇部落格分布式機器學習的故事,恰好是回答這個問題的。但是很長,並且暫時還沒寫完。先貼個摘要吧。

如果你關注大資料,聽完這些的故事,應該會有感觸。

3樓:郭曉輝

MPI是很好的簡單的並行環境范型只有幾個常用send rcv的函式。歷史悠久所以積累了很多; MapReduce 他的架構由於源於搜尋引擎的數term, 所以雖然大家很熱衷但是只適合一部分應用。

MPI集群是程序級的並行,更像乙個高度集中的CPU。實現更底層的並行,從而獲得更好的可擴充套件性。而MapReduce 總是把很多計算單元連起來幹活兒。

而且資料的放置也~~ 另外MapReduce在設計上也借鑑了很多MPI的思想元素。效能MPI更優;但是MapReduce可以繼承很多姐妹篇的開源專案。如果你不是計算特別密集型而且又不想或者沒有條件什麼都from the scratch的情況下,Mapreduce是乙個不錯的選擇。

4樓:

想說一下,樓主提的這些東西不是全部等價的。

MPI的表現力應該是最強最靈活的,也是最難用的。

MapReduce,簡單易用,支援好。但是就如上面所提的,MapReduce的模式其實很有侷限性:在MapReduce下表達一些全域性性的約束很複雜,但是這又是很多演算法的硬性要求;所有資料都要從磁碟走,如果不是真正的「大」資料,這個是完全不必要的。

Spark了解過,如果沒理解錯的話,相比Hadoop系列的工具,多了乙個可以直接在記憶體裡面進行運算的選項?資料量大了還是會走disk。

至於最後乙個問題。我覺得樓主應該搞清楚自己是否需要分布式,為什麼不直接上單機?如果實在需要,再根據演算法本身選擇合適的框架(Google是你的好幫手),沒有一勞永逸的答案。

5樓:Raider Yang

Spark分布式計算環境值得推薦,MLBase是Spark生態圈裡的一部分,專門負責機器學習這塊(除它之外,還有負責圖計算的GraphX、SQL ad-hoc查詢的Shark、具備容錯性查詢能力的BlinkDB等)

分布式深度學習系統與傳統的分布式系統的區別

我覺得沒法嚴格區分吧,傳統分布式維護資料一致性 資料重發 災備等等,任何資料對它來說都是一串二進位制編碼。分布式深度學習系統 或者分布式機器學習系統 是在一套傳統分布式系統基礎上,更關注與如何進行梯度同步 引數同步 如何將傳統優化演算法並行化 如何將不可並行的優化演算法偽並行化等等。 桂能 傳統分布...

多核和分布式的程式設計環境促使產生了併發程式語言,那麼它和傳統的程式語言有什麼本質的不同?

陳甫鵃 直譯器 編譯器級別的表示式亂序求值優化和並行或併發程式設計不是一回事。把兩者混為一談,是對編譯一知半解的計算機 科學家 們最容易犯下的錯誤之一 我還見過把 NFA 的正規表示式求值稱作 併發 的,槽都不知道怎麼吐 所以,指稱 Haskell 之流 善於併發 之類的說法,完全可以一笑置之。 B...

學習分布式系統需要怎樣的知識?

錚錚日上 分布式系統的理論與物理學的理論有異曲同工之妙 可以說,FLP定理作為分布式系統奠基的不可能定理在電腦科學中的地位,與熱力學第二定律這個不可能定理在物理學中的地位相當。Leslie Lamport這個開創了分布式系統領域的傳奇人物,也與愛因斯坦在物理學中的貢獻類似 從The Byzantin...