CaffeNet vs CaffeOnSpark

SparkNet

SparkNet 是由amplab开发的基于Spark的分布式深度神经网络架构,2015年11月份在github上开源. 该系统开发的动机在于当下流行的批处理计算框架(MapReduce、Spark等)都不是设计用来支持已有的分布式深度学习系统下的异步的、通行密集型的任务。SparkNet将已有的数据处理框架(Spark)和流行的、高效的深度学习框架Caffe整合到一起,同时提供了Spark RDDs和Caffe的访问接口;并通过改进的并行化SGD算法来降低节点间的通信开销[1].

SparkNet的架构示例如图1所示[1]。

SparkNet-Archi

图1是由5个节点组成的EC2集群。其中Master节点负责向其余4各worker节点分发任务;每个worker在本地单独使用基于GPU的caffe来进行训练;本地训练结束后各个worker将参数回传给Master;Master收集各个worker的参数后做全局的处理(例如average)再broadcast给各个worker以进行下一轮的迭代。

CaffeOnSpark

CaffeOnSpark 由Yahoo开发,并于今年2月份开源在github上。该系统旨在将深度学习步骤(训练、测试等)无缝地嵌入到Spark应用中,使得直接在存储数据的(强化的)Hadoop集群上进行深度学习成为可能,从而避免了数据在Hadoop集群和深度学习集群之间不必要的传输. 作为Spark的深度学习包,CaffeOnSpark填补了Spark MLlib在DL能力上的不足[3]。可以这样说,CaffeOnSpark集合了Caffe和Spark两者之长,并应用到大规模深度学习上,使得我们能像操作其他Spark应用一样操作深度学习任务。

CaffeOnSpark的系统架构图如图2[6] 所示:


                       图2. CaffeOnSpark System Architecture

从图2中我们看到CaffeOnSpark在参数的同步/管理操作上和SparkNet是完全不同的:CaffeOnSpark executors之间通过MPI_ALLREDUCE接口通信(通过底层RDMA/Infiniband 或者TCP/Ethenet来保证GPU间高速的数据传输,10x于CPU).在这种通信模式下,各个节点/Caffe引擎之间是peer-to-peer的模式;而SparkNet的设计中依然保留了Spark的主/从模式

小结

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, PPT
[3]. GitHub - amplab/SparkNet, https://github.com/amplab/SparkNet
[4]. GitHub - yahoo/CaffeOnSpark, https://github.com/yahoo/CaffeOnSpark
[5]. CaffeOnSpark Google Group, https://groups.google.com/forum/#!forum/sparknet-users
[6]. Large Scale Distributed Deep Learning on Hadoop Clusters

坚持原创技术分享,您的支持将鼓励我继续创作!