日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

雅虎開源CaffeOnSpark:基于Hadoop/Spark的分布式深度學(xué)習(xí)

 LZS2851 2016-02-28

基于Hadoop集群的大規(guī)模分布式深度學(xué)習(xí)一文中,雅虎介紹了其集Caffe和Spark之長開發(fā)CaffeOnSpark用于大規(guī)模分布式深度學(xué)習(xí),并向github.com/BVLC/caffe貢獻(xiàn)了部分代碼?,F(xiàn)在,雅虎機(jī)器學(xué)習(xí)團(tuán)隊(duì)又在這篇tumblr文章上宣布將整個(gè)CaffeOnSpark開源作為Spark的深度學(xué)習(xí)包。

Github:yahoo/CaffeOnSpark(Apache 2.0 license)

許多現(xiàn)有的DL框架需要一個(gè)分離的集群進(jìn)行深度學(xué)習(xí),而一個(gè)典型的機(jī)器學(xué)習(xí)管道需要?jiǎng)?chuàng)建一個(gè)復(fù)雜的程序(如圖1)。分離的集群需要大型的數(shù)據(jù)集在它們之間進(jìn)行傳輸,從而系統(tǒng)的復(fù)雜性和端到端學(xué)習(xí)的延遲不請自來。

圖片描述

圖1 分離集群上復(fù)雜程序的ML Pipeline

雅虎認(rèn)為,深度學(xué)習(xí)應(yīng)該與現(xiàn)有的支持特征工程和傳統(tǒng)(非深度)機(jī)器學(xué)習(xí)的數(shù)據(jù)處理管道在同一個(gè)集群中,創(chuàng)建CaffeOnSpark意在使得深度學(xué)習(xí)訓(xùn)練和測試能被嵌入到Spark應(yīng)用程序(如圖2)中。

圖片描述

圖2 單一集群上單程序的ML Pipeline

CaffeOnSpark:API&配置和CLI

CaffeOnSpark被設(shè)計(jì)成為一個(gè)Spark深度學(xué)習(xí)包。Spark MLlib支持各種非深度學(xué)習(xí)算法用于分類、回歸、聚類、推薦等,但目前缺乏深度學(xué)習(xí)這一關(guān)鍵能力,而CaffeOnSpark旨在填補(bǔ)這一空白。CaffeOnSpark API支持dataframes,以便易于連接準(zhǔn)備使用Spark應(yīng)用程序的訓(xùn)練數(shù)據(jù)集,以及提取模型的預(yù)測或中間層的特征,用于MLLib或SQL數(shù)據(jù)分析。

圖片描述

圖3 CaffeOnSpark成為一個(gè)Spark深度學(xué)習(xí)package

使用CaffeOnSpark和MLlib的Scala應(yīng)用如下:

 1:   def main(args: Array[String]): Unit = {
 2:   val ctx = new SparkContext(new SparkConf())
 3:   val cos = new CaffeOnSpark(ctx)
 4:   val conf = new Config(ctx, args).init()
 5:   val dl_train_source = DataSource.getSource(conf, true)
 6:   cos.train(dl_train_source)
 7:   val lr_raw_source = DataSource.getSource(conf, false)
 8:   val extracted_df = cos.features(lr_raw_source)
 9:   val lr_input_df = extracted_df.withColumn(“Label”, cos.floatarray2doubleUDF(extracted_df(conf.label)))
10:     .withColumn(“Feature”, cos.floatarray2doublevectorUDF(extracted_df(conf.features(0))))
11:  val lr = new LogisticRegression().setLabelCol(“Label”).setFeaturesCol(“Feature”)
12:  val lr_model = lr.fit(lr_input_df)
13:  lr_model.write.overwrite().save(conf.outputPath)
14: }

這段代碼演示了CaffeOnSpark和MLlib如何協(xié)同:

  • L1-L4:初始化Spark上下文,并使用它來創(chuàng)建CaffeOnSpark和配置對(duì)象。
  • L5-L6:使用CaffeOnSpark與HDFS上的一個(gè)訓(xùn)練數(shù)據(jù)集進(jìn)行DNN訓(xùn)練。
  • L7-L8:學(xué)習(xí)到的DL模型應(yīng)用于從HDFS上的數(shù)據(jù)集提取特征。
  • L9-L12:MLlib使用提取的特征進(jìn)行非深度學(xué)習(xí)(用更具體的LR分類)。
  • L13:可以保存分類模型到HDFS。

CaffeOnSpark使得深度學(xué)習(xí)步驟能夠無縫嵌入Spark應(yīng)用。它消除了在傳統(tǒng)的解決方案不得不做的數(shù)據(jù)移動(dòng)(如圖1所示),并支持直接在大數(shù)據(jù)集群上進(jìn)行深度學(xué)習(xí)。直接訪問大數(shù)據(jù)和大規(guī)模計(jì)算能力對(duì)深度學(xué)習(xí)至關(guān)重要。

如同標(biāo)準(zhǔn)的CaffeCa,CaffeOnSpark用配置文件于求解器和神經(jīng)網(wǎng)絡(luò)。正如例子中的神經(jīng)網(wǎng)絡(luò)有一個(gè)MemoryData層有2個(gè)額外的參數(shù):

  • source_class指定數(shù)據(jù)源類
  • source指定數(shù)據(jù)集的位置

最初發(fā)布的CaffeOnSpark有幾個(gè)內(nèi)置的數(shù)據(jù)源類(包括com.yahoo.ml.caffe.LMDB的LMDB數(shù)據(jù)庫和com.yahoo.ml.caffe.SeqImageDataSource的Hadoop的序列文件)。用戶可以很容易地引入自定義的數(shù)據(jù)源類與現(xiàn)有的數(shù)據(jù)格式進(jìn)行交互。

CaffeOnSpark應(yīng)用程序?qū)⑼ㄟ^標(biāo)準(zhǔn)的Spark命令(如spark-submit)launch。這里有兩個(gè)spark-submit命令的例子。第一個(gè)命令使用CaffeOnSpark訓(xùn)練一個(gè)DNN模型保存到HDFS上。第二個(gè)命令是一個(gè)定制的嵌入CaffeOnSpark及MLlib的應(yīng)用。

第一個(gè)命令:

spark-submit    –files caffenet_train_solver.prototxt,caffenet_train_net.prototxt    –num-executors 2     –class com.yahoo.ml.caffe.CaffeOnSpark        caffe-grid-0.1-SNAPSHOT-jar-with-dependencies.jar       -train -persistent       -conf caffenet_train_solver.prototxt       -model hdfs:///sample_images.model       -devices 2

第二個(gè)命令:

spark-submit    –files caffenet_train_solver.prototxt,caffenet_train_net.prototxt    –num-executors 2     –class com.yahoo.ml.caffe.examples.MyMLPipeline \ 

       caffe-grid-0.1-SNAPSHOT-jar-with-dependencies.jar 
       -features fc8        -label label        -conf caffenet_train_solver.prototxt        -model hdfs:///sample_images.model         -output hdfs:///image_classifier_model        -devices 2

系統(tǒng)架構(gòu)

圖片描述

圖4 CaffeOnSpark系統(tǒng)架構(gòu)

CaffeOnSpark系統(tǒng)架構(gòu)如圖4所示(和之前相比沒有變化)。Spark executor中,Caffe引擎在GPU設(shè)備或CPU設(shè)備上,通過調(diào)用一個(gè)細(xì)顆粒內(nèi)存管理的JNI層。不同于傳統(tǒng)的Spark應(yīng)用,CaffeOnSpark executors之間通過MPI allreduce style接口通信,通過TCP/以太網(wǎng)或者RDMA/Infiniband。這個(gè)Spark+MPI架構(gòu)使得CaffeOnSpark能夠?qū)崿F(xiàn)和專用深度學(xué)習(xí)集群相似的性能。

許多深度學(xué)習(xí)工作是長期運(yùn)行的,處理潛在的系統(tǒng)故障很重要。CaffeOnSpark支持定期快照訓(xùn)練狀態(tài),因此job出現(xiàn)故障后能夠恢復(fù)到之前的狀態(tài)。

雅虎已經(jīng)在多個(gè)項(xiàng)目中應(yīng)用CaffeOnSpark,如Flickr小組通過在Hadoop集群上用CaffeOnSpark訓(xùn)練數(shù)百萬張照片,顯著地改進(jìn)圖像識(shí)別精度?,F(xiàn)在深度學(xué)習(xí)研究者可以在一個(gè)AWS EC2云或自建的Spark集群上進(jìn)行測試CaffeOnSpark。

2016年3月18日-19日,由CSDN重磅打造的數(shù)據(jù)庫核心技術(shù)與實(shí)戰(zhàn)應(yīng)用峰會(huì)、互聯(lián)網(wǎng)應(yīng)用架構(gòu)實(shí)戰(zhàn)峰會(huì)將在上海舉行。這兩場峰會(huì)將邀請業(yè)內(nèi)頂尖的架構(gòu)師和技術(shù)專家,共同探討高可用/高并發(fā)系統(tǒng)架構(gòu)設(shè)計(jì)、新技術(shù)應(yīng)用、移動(dòng)應(yīng)用架構(gòu)、微服務(wù)、智能硬件架構(gòu)、云數(shù)據(jù)庫實(shí)戰(zhàn)、新一代數(shù)據(jù)庫平臺(tái)、產(chǎn)品選型、性能調(diào)優(yōu)、大數(shù)據(jù)應(yīng)用實(shí)戰(zhàn)等領(lǐng)域的熱點(diǎn)話題與技術(shù)。

2月29日24點(diǎn)前仍處于最低六折優(yōu)惠票價(jià)階段,單場峰會(huì)(含餐)門票只需799元,5人以上團(tuán)購或者購買兩場峰會(huì)通票更有特惠,限量供應(yīng),預(yù)購從速。(票務(wù)詳情鏈接)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多