分布式机器学习框架-CaffeOnSpark

CaffeOnSpark被设计成为一个Spark深度学习包。Spark MLlib支持各类非深度学习算法用于分类、回归、聚类、推荐等,但目前缺少深度学习这一关键能力,而CaffeOnSpark旨在填补这一空白。CaffeOnSpark API支持dataframes,以便易于链接准备使用Spark应用程序的训练数据集,以及提取模型的预测或中间层的特征,用于MLLib或SQL数据分析。算法

许多现有的DL框架须要一个分离的集群进行深度学习,而一个典型的机器学习管道须要建立一个复杂的程序(如图1)。分离的集群须要大型的数据集在它们之间进行传输,从而系统的复杂性和端到端学习的延迟不请自来。架构

图1 分离集群上复杂程序的ML Pipeline


雅虎认为,深度学习应该与现有的支持特征工程和传统(非深度)机器学习的数据处理管道在同一个集群中,建立CaffeOnSpark意在使得深度学习训练和测试能被嵌入到Spark应用程序(如图2)中。框架

图2 单一集群上单程序的ML Pipeline


CaffeOnSpark:API&配置和CLI


图3 CaffeOnSpark成为一个Spark深度学习package

系统架构:机器学习

CaffeOnSpark 系统架构如图4所示(和以前相比没有变化)。Spark executor中,Caffe引擎在GPU设备或CPU设备上,经过调用一个细颗粒内存管理的JNI层。不一样于传统的Spark应 用,CaffeOnSpark executors之间经过MPI allreduce style接口通讯,经过TCP/以太网或者RDMA/Infiniband。这个Spark+MPI架构使得CaffeOnSpark可以实现和专用深 度学习集群类似的性能。oop

许多深度学习工做是长期运行的,处理潜在的系统故障很重要。CaffeOnSpark支持按期快照训练状态,所以job出现故障后可以恢复到以前的状态。 性能

雅 虎已经在多个项目中应用CaffeOnSpark,如Flickr小组经过在Hadoop集群上用CaffeOnSpark训练数百万张照片,显著地改进 图像识别精度。如今深度学习研究者能够在一个AWS EC2云或自建的Spark集群上进行测试CaffeOnSpark。学习

相关文章
相关标签/搜索