三区在线_一区二区三区在线视频播放_九九九亚洲_黄色网页在线_国产欧美综合视频_99亚洲国产精品

 
當(dāng)前位置: 首頁(yè) » 行業(yè)資訊 » 機(jī)器人»分布式機(jī)器學(xué)習(xí)平臺(tái)大比拼:Spark、PMLS、TensorFlow、MXNet
   

分布式機(jī)器學(xué)習(xí)平臺(tái)大比拼:Spark、PMLS、TensorFlow、MXNet

 46.1K
     [點(diǎn)擊復(fù)制]
放大字體  縮小字體 發(fā)布日期:2017-09-13   瀏覽次數(shù):528
核心提示:  本論文從散布式體系的角度展開針對(duì)以后一些機(jī)械進(jìn)修平臺(tái)的研討,綜述了這些平臺(tái)所應(yīng)用的架構(gòu)設(shè)計(jì),對(duì)這些平臺(tái)在通訊和掌握上的瓶頸、容錯(cuò)性和開辟難度停止剖析和比較,并對(duì)散布式機(jī)械進(jìn)修平臺(tái)的將來研討任務(wù)提出

  本論文從散布式體系的角度展開針對(duì)以后一些機(jī)械進(jìn)修平臺(tái)的研討,綜述了這些平臺(tái)所應(yīng)用的架構(gòu)設(shè)計(jì),對(duì)這些平臺(tái)在通訊和掌握上的瓶頸、容錯(cuò)性和開辟難度停止剖析和比較,并對(duì)散布式機(jī)械進(jìn)修平臺(tái)的將來研討任務(wù)提出了一些建議。文中的任務(wù)由 Murat Demirbas 傳授與他的研討生 Kuo Zhang 和 Salem Alqahtani 配合完成。

  機(jī)械進(jìn)修,特殊是深度進(jìn)修,已在語音辨認(rèn)、圖象辨認(rèn)和天然說話處置和近期在推舉及搜刮引擎等范疇上獲得了反動(dòng)性的勝利。這些技巧在無人駕駛、數(shù)字醫(yī)療體系、CRM、告白、物聯(lián)網(wǎng)等范疇具有很好的運(yùn)用遠(yuǎn)景。固然,是資金引領(lǐng)和驅(qū)動(dòng)了技巧的加快推動(dòng),使得我們?cè)诮诳吹搅艘恍C(jī)械進(jìn)修平臺(tái)的推出。

  斟酌到練習(xí)中所觸及的數(shù)據(jù)集和模子的范圍非常宏大,機(jī)械進(jìn)修平臺(tái)平日是散布式平臺(tái),安排了數(shù)十個(gè)甚至數(shù)百個(gè)并交運(yùn)行的盤算節(jié)點(diǎn)對(duì)模子做練習(xí)。據(jù)估量在不遠(yuǎn)的未來,數(shù)據(jù)中間的年夜多半義務(wù)都邑是機(jī)械進(jìn)修義務(wù)。

  我來自于散布式體系研討范疇,是以我們斟酌從散布式體系的角度展開針對(duì)這些機(jī)械進(jìn)修平臺(tái)的研討,剖析這些平臺(tái)在通訊和掌握上的瓶頸。我們還斟酌了這些平臺(tái)的容錯(cuò)性和易編程性。

  我們從設(shè)計(jì)辦法大將機(jī)械進(jìn)修平臺(tái)劃分為三個(gè)根本種別,分離是:根本數(shù)據(jù)流、參數(shù) - 辦事器模子和高等數(shù)據(jù)流。

  上面我們將對(duì)每類辦法做扼要引見,以 Apache Spark 為例引見根本數(shù)據(jù)流,以 PMLS(Petuum)為例引見參數(shù)辦事器模子,而高等數(shù)據(jù)流則應(yīng)用 TensorFlow 和 MXNet 為例。我們比較了上述各平臺(tái)的機(jī)能并給出了一系列的評(píng)價(jià)成果。要懂得具體的評(píng)價(jià)成果,可參考我們的論文。遺憾的是,作為一個(gè)小型研討團(tuán)隊(duì),我們沒法展開年夜范圍的評(píng)價(jià)。

  在本篇博文的最初,我給出了一些結(jié)論性要點(diǎn),并對(duì)散布式機(jī)械進(jìn)修平臺(tái)的將來研討任務(wù)提出了一些建議。對(duì)這些散布式機(jī)械進(jìn)修平臺(tái)已有必定懂得的讀者,可以直接跳到本文開頭。

  Spark

  在 Spark 中,盤算被建模為一種有向無環(huán)圖(DAG),圖中的每一個(gè)極點(diǎn)表現(xiàn)一個(gè) RDD,每條邊表現(xiàn)了 RDD 上的一個(gè)操作。RDD 由一系列被切分的對(duì)象(Partition)構(gòu)成,這些被切分的對(duì)象在內(nèi)存中存儲(chǔ)并完成盤算,也會(huì)在 Shuffle 進(jìn)程中溢出(Overflow)到磁盤上

  在 DAG 中,一條從極點(diǎn) A 到 B 的有向邊 E,表現(xiàn)了 RDD B 是在 RDD A 上履行操作 E 的成果。操作分為“轉(zhuǎn)換”(Transformation)和“舉措(Action)”兩類。轉(zhuǎn)換操作(例如 map、filter 和 join)運(yùn)用于某個(gè) RDD 上,轉(zhuǎn)換操作的輸入是一個(gè)新的 RDD。

  Spark 用戶將盤算建模為 DAG,該 DAG 表現(xiàn)了在 RDD 上履行的轉(zhuǎn)換和舉措。DAG 進(jìn)而被編譯為多個(gè) Stage。每一個(gè) Stage 履行為一系列并交運(yùn)行的義務(wù)(Task),每一個(gè)分區(qū)(Partition)對(duì)應(yīng)于一個(gè)義務(wù)。這里,無限(Narrow)的依附關(guān)系將有益于盤算的高效履行,而廣泛(Wide)的依附關(guān)系則會(huì)引入瓶頸,由于如許的依附關(guān)系引入了通訊密集的 Shuffle 操作,這打斷了操作流 。

  Spark 的散布式履行是經(jīng)由過程將 DAG Stage 劃分到分歧的盤算節(jié)點(diǎn)完成的。上圖清楚地展現(xiàn)了這類“主機(jī)(master)- 任務(wù)者(worker)”架構(gòu)。驅(qū)動(dòng)器(Driver)包括有兩個(gè)調(diào)劑器(Scheduler)組件,即 DAG 調(diào)劑器和義務(wù)調(diào)劑器。調(diào)劑器對(duì)任務(wù)者分派義務(wù),并調(diào)和任務(wù)者。

  Spark 是為通用數(shù)據(jù)處置而設(shè)計(jì)的,并不是公用于機(jī)械進(jìn)修義務(wù)。要在 Spark 上運(yùn)轉(zhuǎn)機(jī)械進(jìn)修義務(wù),可使用 MLlib for Spark。假如采取根本設(shè)置的 Spark,那末模子參數(shù)存儲(chǔ)在驅(qū)動(dòng)器節(jié)點(diǎn)上,在每次迭代后經(jīng)由過程任務(wù)者和驅(qū)動(dòng)器間的通訊更新參數(shù)。假如是年夜范圍安排機(jī)械進(jìn)修義務(wù),那末驅(qū)動(dòng)器能夠沒法存儲(chǔ)一切的模子參數(shù),這時(shí)候就須要應(yīng)用 RDD 去包容一切的參數(shù)。這將引入年夜量的額定開支,由于為了包容更新的模子參數(shù),須要在每次迭代中創(chuàng)立新的 RDD。更新模子會(huì)觸及在機(jī)械和磁盤間的數(shù)據(jù) Shuffle,進(jìn)而限制了 Spark 的擴(kuò)大性。這恰是根本數(shù)據(jù)流模子(即 DAG)的短板地點(diǎn)。Spark 其實(shí)不能很好地支撐機(jī)械進(jìn)修中的迭代運(yùn)算。

  PMLS

  PMLS 是專門為機(jī)械進(jìn)修義務(wù)而設(shè)計(jì)的。它引入了稱為“參數(shù) - 辦事器”(Parameter-Server,PS)的籠統(tǒng),這類籠統(tǒng)是為了支撐迭代密集的練習(xí)進(jìn)程。

  PS(在圖中以綠色方框所示)以散布式 key-value 數(shù)據(jù)表情勢(shì)存在于內(nèi)存中,它是可復(fù)制和分片的。每一個(gè)節(jié)點(diǎn)(node)都是模子中某個(gè)分片的主節(jié)點(diǎn)(參數(shù)空間),并作為其它分片的二級(jí)節(jié)點(diǎn)或復(fù)制節(jié)點(diǎn)。如許 PS 在節(jié)點(diǎn)數(shù)目上的擴(kuò)大性很好。

  PS 節(jié)點(diǎn)存儲(chǔ)并更新模子參數(shù),并呼應(yīng)來自于任務(wù)者的要求。任務(wù)者從本身的當(dāng)?shù)?PS 拷貝上要求最新的模子參數(shù),并在分派給它們的數(shù)據(jù)集分區(qū)上履行盤算。

  PMLS 也采取了 SSP(Stale Synchronous Parallelism)模子。比擬于 BSP(Bulk Synchronous Parellelism)模子 ,SSP 放寬了每次迭代停止時(shí)各個(gè)機(jī)械需做同步的請(qǐng)求。為完成同步,SSP 許可任務(wù)者間存在必定水平上的分歧步,并確保了最快的任務(wù)者不會(huì)搶先最慢的任務(wù)者 s 輪迭代以上。因?yàn)樘幹眠M(jìn)程處于誤差所許可的規(guī)模內(nèi),這類非嚴(yán)厲的分歧性模子仍然實(shí)用于機(jī)械進(jìn)修。我已經(jīng)揭橥過一篇博文專門引見這一機(jī)制。

  TensorFlow

  Google 給出了一個(gè)基于散布式機(jī)械進(jìn)修平臺(tái)的參數(shù)辦事器模子,稱為“DistBelief”(此處是我對(duì) DistBelief 論文的綜述)。就我所知,年夜家對(duì) DistBelief 的不滿足的地方重要在于,它在編寫機(jī)械進(jìn)修運(yùn)用時(shí)須要混雜一些底層代碼。Google 想使其任一雇員都可以在無需精曉散布式履行的情形下編寫機(jī)械進(jìn)修代碼。恰是出于統(tǒng)一緣由,Google 對(duì)年夜數(shù)據(jù)處置編寫了 MapReduce 框架。

  TensorFlow 是一種設(shè)計(jì)用于完成這一目的的平臺(tái)。它采取了一種更高等的數(shù)據(jù)流處置范式,個(gè)中表現(xiàn)盤算的圖不再須要是 DAG,圖中可以包含環(huán),并支撐可變狀況。我以為 TensorFlow 的設(shè)計(jì)在必定水平上遭到了 Naiad 設(shè)計(jì)理念的影響。

  TensorFlow 將盤算表現(xiàn)為一個(gè)由節(jié)點(diǎn)和邊構(gòu)成的有向圖。節(jié)點(diǎn)表現(xiàn)盤算操作或可變狀況(例如 Variable),邊表現(xiàn)節(jié)點(diǎn)間通訊的多維數(shù)組,這類多維數(shù)據(jù)稱為“Tensor”。TensorFlow 須要用戶靜態(tài)地聲明邏輯盤算圖,并經(jīng)由過程將圖重寫和劃分到機(jī)械上完成散布式盤算。需解釋的是,MXNet,特殊是 DyNet,應(yīng)用了一種靜態(tài)界說的圖。這簡(jiǎn)化了編程,并進(jìn)步了編程的靈巧性。

  如上圖所示,在 TensorFlow 中,散布式機(jī)械進(jìn)修練習(xí)應(yīng)用了參數(shù) - 辦事器辦法。當(dāng)在 TensorFlow 中應(yīng)用 PS 籠統(tǒng)時(shí),就應(yīng)用了參數(shù) - 辦事器和數(shù)據(jù)并行。TensorFlow 宣稱可以完成更龐雜的義務(wù),然則這須要用戶編寫代碼以通向那些未摸索的范疇。

  MXNet

  MXNet 是一個(gè)協(xié)同開源項(xiàng)目,源自于在 2015 年涌現(xiàn)的 CXXNet、Minverva 和 Purines 等深度進(jìn)修項(xiàng)目。相似于 TensorFlow,MXNet 也是一種數(shù)據(jù)流體系,支撐具有可變狀況的有環(huán)盤算圖,并支撐應(yīng)用參數(shù) - 辦事器模子的練習(xí)盤算。異樣,MXNet 也對(duì)多個(gè) CPU/GPU 上的數(shù)據(jù)并行供給了很好的支撐,并可完成模子并行。MXNet 支撐同步的和異步的練習(xí)盤算。下圖顯示了 MXNet 的重要組件。個(gè)中,運(yùn)轉(zhuǎn)時(shí)依附引擎剖析盤算進(jìn)程中的依附關(guān)系,對(duì)不存在互相依附關(guān)系的盤算做并行處置。MXNet 在運(yùn)轉(zhuǎn)時(shí)依附引擎之上供給了一個(gè)中央層,用于盤算圖和內(nèi)存的優(yōu)化。

  MXNet 應(yīng)用檢討點(diǎn)機(jī)制支撐根本的容錯(cuò),供給了對(duì)模子的 save 和 load 操作。save 操作將模子參數(shù)寫入到檢討點(diǎn)文件,load 操作從檢討點(diǎn)文件中讀取模子參數(shù)。

  MXNet 應(yīng)用描寫式編程說話表述盤算為一個(gè)有向圖,也支撐應(yīng)用一些指令式編程去界說 tensor 的盤算和掌握流。MXNet 供給了多種說話(例如 C++、Python、R 和 Scala 等)編寫的客戶端 API。與 TensorFlow 一樣,MXNet 的后臺(tái)焦點(diǎn)引擎庫(kù)異樣是應(yīng)用 C++ 編寫的。

  部門評(píng)價(jià)成果

  在我們的試驗(yàn)中,應(yīng)用了 Amazon EC2 m4.xlarge 實(shí)例。每一個(gè)實(shí)例具有 4 個(gè)由 Intel Xeon E5-2676 v3 完成的 vCPU,及 16GB 的內(nèi)存,EBS 帶寬是 750Mbps。我們對(duì)兩種罕見的機(jī)械進(jìn)修義務(wù)停止了試驗(yàn),它們分離是二分類邏輯斯蒂回歸和應(yīng)用多層神經(jīng)收集的圖象分類。本文中只給出了部門成果圖,更多的試驗(yàn)成果可拜見我們的論文。需指出的是,我們的試驗(yàn)具有一些局限性。起首,我們應(yīng)用機(jī)械數(shù)目不年夜,不克不及測(cè)試擴(kuò)大性。其次,我們也只應(yīng)用了 CPU 盤算,并未測(cè)試 GPU 的應(yīng)用情形。

  該圖展現(xiàn)了各個(gè)平臺(tái)對(duì)邏輯斯蒂回歸的盤算速度。PMLS 和 MXNet 是最快的兩個(gè)體系,TensorFlow 速度最慢,而 Spark 介于二者之間。對(duì)此,我們剖析以為是由多個(gè)緣由招致的。起首,比擬于 Spark 和 TensorFlow,PMLS 是一個(gè)輕量級(jí)體系,它是采取高機(jī)能 C++ 編程說話完成的,而 Spark 是應(yīng)用運(yùn)轉(zhuǎn)在 JVM 上的 Scala 說話編寫的。其次,PMLS 中包括的籠統(tǒng)較少,而 TensorFlow 中則具有過量的籠統(tǒng)。籠統(tǒng)增長(zhǎng)了體系的龐雜度,并招致運(yùn)轉(zhuǎn)時(shí)開支。

  該圖展現(xiàn)了 DNN 在各個(gè)平臺(tái)上的速度。比擬于單層神經(jīng)收集,當(dāng)成長(zhǎng)到兩層神經(jīng)收集時(shí),因?yàn)轫氁嗟牡P算,Spark 的機(jī)能降低。我們將模子參數(shù)存儲(chǔ)在 Spark 的驅(qū)動(dòng)器中,由于驅(qū)動(dòng)器可以包容這些參數(shù)。然則假如我們應(yīng)用 RDD 堅(jiān)持參數(shù),并在每次迭代后做更新,成果能夠會(huì)更差。

  該圖展現(xiàn)了平臺(tái)的 CPU 占用率。Spark 運(yùn)用看上去具有偏高的 CPU 占用率,這重要來自于序列化的開支。有些后期任務(wù)也指出了統(tǒng)一成績(jī)。

  結(jié)論及將來的研討偏向

  機(jī)械進(jìn)修和深度進(jìn)修運(yùn)用是高度可并行的,然則從并發(fā)算法角度看,要做到其實(shí)不那末輕易。可以說,參數(shù) - 辦事器辦法最合適于散布式機(jī)械進(jìn)修平臺(tái)的練習(xí)義務(wù)。

  斟酌到瓶頸,收集仍然是散布式機(jī)械進(jìn)修運(yùn)用的瓶頸。比擬于更高等的通用數(shù)據(jù)流平臺(tái),更主要的是要提出對(duì)數(shù)據(jù)和模子的更好組織和介入機(jī)制。應(yīng)將數(shù)據(jù)和模子視作一等國(guó)民。

  另外,還有其它一些身分對(duì)平臺(tái)具有奧妙的影響。關(guān)于 Spark,CPU 開支成為比收集局限更嚴(yán)重的瓶頸成績(jī)。Spark 應(yīng)用的編程說話是 Scala 等 JVM 說話,這對(duì) Spark 的機(jī)能具有明顯的影響。是以存在著對(duì)更好的監(jiān)控對(duì)象和對(duì)散布式機(jī)械進(jìn)修平臺(tái)機(jī)能猜測(cè)的需求。近期曾經(jīng)涌現(xiàn)了一些對(duì)象,例如 Ernest 和 CherryPick,它們處理了一些 Spark 數(shù)據(jù)處置運(yùn)用上的成績(jī)。

  關(guān)于支撐機(jī)械進(jìn)修的運(yùn)轉(zhuǎn)時(shí)散布式體系,仍然存在著一些開放成績(jī),例如資本調(diào)劑和運(yùn)轉(zhuǎn)時(shí)機(jī)能改良。斟酌到運(yùn)用的運(yùn)轉(zhuǎn)時(shí)監(jiān)控和機(jī)能剖析,下一代的散布式機(jī)械進(jìn)修平臺(tái)應(yīng)供給對(duì)運(yùn)轉(zhuǎn)于平臺(tái)上義務(wù)的盤算、內(nèi)存、收集資本的運(yùn)轉(zhuǎn)時(shí)彈性設(shè)置裝備擺設(shè)和調(diào)劑等才能。

  在編程和軟件工程的支撐上,也異樣有一些開放成績(jī)。甚么是合適機(jī)械進(jìn)修運(yùn)用的散布式編程籠統(tǒng)?這些成績(jī)還須要做進(jìn)一步的研討,并對(duì)散布式機(jī)械進(jìn)修運(yùn)用停止磨練和驗(yàn)證,例如應(yīng)用特定成績(jī)輸出測(cè)試 DNN。

  參考文獻(xiàn)

  論文原文:https://www.cse.buffalo.edu/~demirbas/publications/DistMLplat.pdf

  Learning Machine Learning: A beginner's journey,https://muratbuffalo.blogspot.com/2016/12/learning-machine-learning-beginners.html

  Paper Review. Petuum: A new platform for distributed machine learning on big data,https://muratbuffalo.blogspot.com/2016/04/petuum-new-platform-for-distributed.html

  Google DistBelief paper: Large Scale Distributed Deep Networks,https://muratbuffalo.blogspot.com/2017/01/谷歌-distbelief-paper-large-scale.html

  Paper summary: Making sense of Performance in Data Analytics frameworks (NSDI 15),https://muratbuffalo.blogspot.com/2017/05/paper-summary-making-sense-of.html

  Naiad: A timely dataflow system,http://muratbuffalo.blogspot.hk/2014/03/naiad-timely-dataflow-system.html

  Paper summary: Making sense of Performance in Data Analytics frameworks (NSDI 15),http://muratbuffalo.blogspot.hk/2017/05/paper-summary-making-sense-of.html

  https://spark-summit.org/east-2017/events/ernest-efficient-performance-prediction-for-advanced-analytics-on-apache-spark/

  https://blog.acolyer.org/2017/05/04/cherrypick-adaptively-unearthing-the-best-cloud-configurations-for-big-data-analytics/

  作者引見

  Murat Demirbas傳授供職于 University at Buffalo,SUNY 的盤算機(jī)迷信與技巧系

只要你關(guān)注機(jī)器人,你就無法錯(cuò)過睿慕課

 
 
 
[ 行業(yè)資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 關(guān)閉窗口 ]
 
 
展會(huì)更多+
視頻更多+
點(diǎn)擊排行
 
主站蜘蛛池模板: 性欧美一区二区三区 | av在线一区二区三区 | 久久久久久久久久久高潮一区二区 | 久久99国产精品视频 | 黄色羞羞视频在线观看 | qyl在线视频精品免费观看 | 少妇一级淫片免费放4p | 久久污| 成人aaaaa片毛片按摩 | 中文字幕www | 国产精品视频yy9299一区 | 31freehdxxxx欧美 | 精品成人一区二区三区 | 欧美性色大片 | 国产一区二区精品免费 | 欧美大电影免费观看 | a黄毛片 | 日韩欧美电影在线观看 | 欧美国产二区 | 午夜视频在线免费观看 | 在线亚洲欧美日韩 | 国产1区在线 | 99精品视频在线观看免费播放 | jizzzxxxxhd| 国产精品视频在 | 91精品免费在线 | 成人国产精品一区二区毛片在线 | 久久最新免费视频 | 国产精品jk白丝蜜臀av软件 | 国产精品免费久久久久久 | 羞羞草视频 | 欧美999| 黄色一级视频 | 日韩黄色免费电影 | 中文字幕在线观看网址 | 日本欧美在线播放 | 欧美福利视频一区二区三区 | 成年人免费视频大全 | 欧美一级淫片免费视频1 | 亚洲午夜一区二区三区 | 全黄裸片武则天一级第4季 偿还电影免费看 |