SparkNet和CaffeOnSpark有哪些重要的區別?
SparkNet by amplab: GitHub - amplab/SparkNet: Distributed Neural Networks for Spark
CaffeOnSpark by Yahoo: GitHub - yahoo/CaffeOnSpark
SparkNet是由amplab開發的基於Spark的分散式深度神經網路架構,2015年11月份在github上開源[5]. 該系統開發的動機在於當下流行的批處理計算框架(MapReduce、Spark等)都不是設計用來支持已有的分散式深度學習系統下的非同步的、通行密集型的任務。SparkNet將已有的數據處理框架(Spark)和流行的、高效的深度學習框架Caffe整合到一起,同時提供了Spark RDDs和Caffe的訪問介面;並通過改進的並行化SGD演算法來降低節點間的通信開銷[1].
SparkNet的架構示例如圖1所示[1]。
圖1是由5個節點組成的EC2集群。其中Master節點負責向其餘4各worker節點分發任務;每個worker在本地單獨使用基於GPU的caffe來進行訓練;本地訓練結束後各個worker將參數回傳給Master;Master收集各個worker的參數後做全局的處理(比如average)再broadcast給各個worker以進行下一輪的迭代。CaffeOnSpark由Yahoo開發,並於今年2月份開源在github上[6]。該系統旨在將深度學習步驟(訓練、測試等)無縫地嵌入到Spark應用中,使得直接在存儲數據的(強化的)Hadoop集群上進行深度學習成為可能,從而避免了數據在Hadoop集群和深度學習集群之間不必要的傳輸. 作為Spark的深度學習包,CaffeOnSpark填補了Spark MLlib在DL能力上的不足[3]。可以這樣說,CaffeOnSpark集合了Caffe和Spark兩者之長,並應用到大規模深度學習上,使得我們能像操作其他Spark應用一樣操作深度學習任務。
CaffeOnSpark的系統架構圖如圖2所示[3]:
圖2. CaffeOnSpark System Architecture從圖2中我們看到CaffeOnSpark在參數的同步/管理操作上和SparkNet是完全不同的:CaffeOnSpark executors之間通過MPI_ALLREDUCE介面通信(通過底層RDMA/Infiniband 或者TCP/Ethenet來保證GPU間高速的數據傳輸, 10x於CPU [3]).在這種通信模式下,各個節點/Caffe引擎 之間是peer-to-peer的模式;而SparkNet的設計中依然保留了Spark的主/從模式。Summary:
CaffeOnSpark和SparkNet的相同之處在於兩者都使得Spark集群下基於Caffe的深度學習成為可能。而兩者最顯著的不同在於兩者在系統框架設計中對於參數同步所採用的不同方案。參考資料:
[1]. Moritz,Philipp, et al. 「SparkNet: Training Deep Networks in Spark.」 arXiv
preprint arXiv:1511.06051 (2015). [2]. Large Scale Distributed
Deep Learning on Hadoop Clusters, Large Scale Distributed Deep Learning on Hadoop...[3]. CaffeOnSpark Open Sourced
for Distributed Deep Learning on Big Data Clusters, CaffeOnSpark Open Sourced for Distributed Deep...[4]. Don』t Laugh: Yahoo』s Open
Source AI Has a Secret Weapon, Don』t Laugh: Yahoo』s Open Source AI Has a Secret Weapon
[5]. GitHub - amplab/SparkNet: Distributed Neural Networks for Spark
[6]. GitHub - yahoo/CaffeOnSpark[7]. CaffeOnSpark Google Group, https://groups.google.com/forum/#!forum/sparknet-users也在研究這個問題, 發現國外有人做簡單的評比
http://www.slideshare.net/SparkSummit/which-is-deeper-comparison-of-deep-learning-frameworks-on-spark
如果要做分散式系統上的deep learning,我認為沒有必要把spark跟deep learning綁在一起 首先是技術還不成熟 其次deep learning的distributed scheduling現在不夠robust 也許用mpi all reduce就已經達到類似效果
最近實驗室在搞深度學習,沒有深度學習的平台,需要搭建spark平台,在這個基礎上使用一些深度學習框架,確實不知道該使用哪個狂減 ? 求各位給點指導意見,機器沒有GPU,都是CPU!
推薦閱讀:
※如何在faster—rcnn上訓練自己的數據集(單類和多類)??
※caffe為什麼要使用lmdb資料庫?
※怎麼使用caffe實現人臉的識別?
※caffe官方將會支持TX1的fp16的特性嗎?
TAG:神經網路 | 深度學習DeepLearning | Spark | Caffe深度學習框架 |