分佈式機器學習框架-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。學習

相關文章
相關標籤/搜索