分散式深度學習系統與傳統的分散式系統的區別?
傳統的分散式系統,比如說hdfs,yarn,分散式深度學習系統,比如說mxnet,tensorflow,paddle,distbielf
在分散式領域裡,前者(分散式深度學習系統)是專才,後者(通用分散式系統)是通才。
hdfs負責存儲,yarn負責集群管理,hadoop的MR/spark/storm等負責計算,kafka負責流式數據傳輸,等等,但這些都可以算是通用分散式系統的範疇,都是和業務無關的。
而深度學習相關的那些,則是為了解決深度學習這一特定業務領域的問題而專門定製的分散式計算系統,在通用性上較差,但對於相關業務領域,實現了許多有用的功能或做了許多性能優化,較難或無法使用目前的通用分散式計算系統搞定。
另:paddle你說是度廠內部的那個嗎?傳統分散式:解決io問題,數據量單純的大。機器學習:數據量其實也不是非常大,但是要多輪迭代計算,維持一組變數,然後不停地更新。
Hbase oceanbase tidb這些本質上是分散式存儲系統
Mxnet tensorflow這些是分散式計算系統
做這兩類系統的人都說自己是做分散式系統的。然而它們的區別還是很大的。一般說來,分散式計算系統對數據一致性要求比較低。
對這兩種系統都很熟的人,我知道的,只有jeff dean。是的。先佔個坑
主要是考慮嗯重點是不同的
傳統的分散式系統主要是處理一致性(consistency)、可用性(availablity)和劃分容忍性(partition),在需要劃分容忍性的前提下,一致性和可用性不能兼得,即所謂的CAP問題,一般根據具體的業務場景會有不同的取捨,比如NOSQL系統會選擇AP,而把一致性放鬆為最終一致性(eventually consistency),而在計費系統中,一般會選擇CP,在一致性得不到保障的時候,會選擇拒絕服務
而現在的分散式機器學習系統一般都是部署在同一個IDC,所以P的問題不存在,所以理論上C和A是可以兼得的
分散式機器學習系統的主要挑戰是在大數據的場景下訓練出模型。對於數據量很大的問題,可以通過數據劃分的方式來並行,而對於一些模型也很大的場景,則必須通過模型劃分的方式來並行,現在學術界對這個問題的研究非常火熱,以eric xing為代表的團隊開源的petuum系統就是為了解決大模型的場景,有興趣的同學可以把他們的論文下來看看我覺得沒法嚴格區分吧,傳統分散式維護數據一致性、數據重發、災備等等,任何數據對它來說都是一串二進位編碼。分散式深度學習系統(或者分散式機器學習系統)是在一套傳統分散式系統基礎上,更關注與如何進行梯度同步、參數同步、如何將傳統優化演算法並行化、如何將不可並行的優化演算法偽並行化等等。
推薦閱讀:
※求台大林軒田的learning from data (yaser)這本書後面的problem的答案?
※最近看到udacity的納米學位很火,號稱學完可以找到工作了,這是真的嗎?
※哪裡有受限玻爾茲曼機、卷積神經網路 的講解課程?
※如何評價Hinton在加拿大多倫多大學關於用「capsule」作為下一代CNN的演講?
※目前對神經網路有哪些理論研究?
TAG:分散式計算 | 分散式 | 深度學習DeepLearning |