分布式機(jī)器學(xué)習(xí)平臺(tái)分析_第1頁(yè)
分布式機(jī)器學(xué)習(xí)平臺(tái)分析_第2頁(yè)
分布式機(jī)器學(xué)習(xí)平臺(tái)分析_第3頁(yè)
分布式機(jī)器學(xué)習(xí)平臺(tái)分析_第4頁(yè)
分布式機(jī)器學(xué)習(xí)平臺(tái)分析_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、n覘學(xué)吧 i分布式機(jī)器學(xué)習(xí)平臺(tái)分析 tsi:鵠學(xué)吧摘要:機(jī)器學(xué)習(xí),特別是深度學(xué)習(xí)(DL),最近已經(jīng)在語(yǔ)音識(shí)別、圖像識(shí)別、自然語(yǔ)言處理、推薦/搜索引擎等領(lǐng)域獲得了成功。這些技術(shù)在自主駕駛汽車、數(shù)字衛(wèi)生系統(tǒng)、CRM、廣告、物聯(lián)網(wǎng)等方面都存在著非常有前景的應(yīng)用。當(dāng)然,資金驅(qū)動(dòng)著這些技術(shù)以極快的速度向前發(fā)展,而且,最近我們已經(jīng)看到了 有很多機(jī)器學(xué)習(xí)平臺(tái)正在建立起來(lái)。本文調(diào)查分析了多個(gè)分布式機(jī)器學(xué)習(xí)平臺(tái)所使用的設(shè)計(jì)方法,并提出了未來(lái)的研究方向。這是我與我的學(xué)生KuoZhang、Salem Alqahtani 通力合作的成果。我們?cè)?2016年的秋天寫了這篇論文,并且 將在 ICCCN17 ( Inter

2、nationalConference on Computer Communications and Networks,計(jì)算機(jī)通信與網(wǎng)絡(luò)國(guó)際會(huì)議)上介紹這篇文章。機(jī)器學(xué)習(xí),特別是深度學(xué)習(xí)(DL),最近已經(jīng)在語(yǔ)音識(shí)別、圖像識(shí)別、自然語(yǔ)言處理、推薦/搜索引擎等領(lǐng)域獲得了成功。這些技術(shù)在自主駕駛汽車、數(shù)字衛(wèi)生系統(tǒng)、CRM、廣告、物聯(lián)網(wǎng)等方面都存在著非常有前景的應(yīng)用。當(dāng)然,資金驅(qū)動(dòng)著這些技術(shù)以極快的速度向前發(fā)展,而且,最近我們已經(jīng)看到 了有很多機(jī)器學(xué)習(xí)平臺(tái)正在建立起來(lái)。由于在訓(xùn)練過(guò)程中要涉及到龐大的數(shù)據(jù)集和模型的大小,因此機(jī)器學(xué)習(xí)平臺(tái)通常是分布式平臺(tái),而且 并行運(yùn)行了 10到100作業(yè)來(lái)訓(xùn)練模型。據(jù)估計(jì)

3、,在不久的將來(lái),數(shù)據(jù)中心的絕大多數(shù)任務(wù)將是機(jī)器 學(xué)習(xí)任務(wù)。我們決定從分布式系統(tǒng)的角度來(lái)研究這些機(jī)器學(xué)習(xí)平臺(tái),分析這些平臺(tái)的通信和控制瓶頸。我們還研 究了這些平臺(tái)的容錯(cuò)性和編程的難易性。根據(jù)三種基本的設(shè)計(jì)方法對(duì)分布式機(jī)器學(xué)習(xí)平臺(tái)進(jìn)行了分類,分別是:m鉤學(xué) 基本數(shù)據(jù)流參數(shù)服務(wù)器模型高級(jí)數(shù)據(jù)流本文將對(duì)每一種方法進(jìn)行簡(jiǎn)單的介紹,我們使用Apache Spark作為基本數(shù)據(jù)流方法的示例,使用PMLS( Petuum)作為參數(shù)服務(wù)器模型的示例,使用TensorFlow 和MXNet作為高級(jí)數(shù)據(jù)流模型的示例。我們將提供它們之間的性能比較評(píng)估結(jié)果。有關(guān)更多的評(píng)估結(jié)果,請(qǐng)參閱本文最開始提到的那篇論文。不幸的是,

4、我們無(wú)法作為一個(gè)來(lái)自學(xué)術(shù)界的小團(tuán)隊(duì)進(jìn)行規(guī)模上的評(píng)估。在這篇文章的末尾,我對(duì)分布式機(jī)器學(xué)習(xí)平臺(tái)的未來(lái)工作提出了總結(jié)性意見和建議。如果你已經(jīng)有這些分布式機(jī)器學(xué)習(xí)平臺(tái)的使用經(jīng)驗(yàn),可以直接跳到文章的末尾。Spark在Spark中,計(jì)算被建模為有向無(wú)環(huán)圖( DAG, directed acyclic graph ),其中的每個(gè)頂點(diǎn)表示彈性分布式數(shù)據(jù)集(RDD,Resilient Distributed Dataset ),每個(gè)邊表示 RDD上的操作。RDD是以邏輯分塊進(jìn)行劃分的對(duì)象集合,它緩存在內(nèi)存中,當(dāng)內(nèi)存不夠時(shí),會(huì)保存到磁盤上。 在DAG上,從頂點(diǎn)A到頂點(diǎn)B的邊E表示RDD B是在RDD A上執(zhí)行操

5、作E的結(jié)果。有兩種類型 的操作:轉(zhuǎn)換和動(dòng)作。轉(zhuǎn)換(例如,映射、過(guò)濾、連接)就是對(duì) RDD執(zhí)行操作并產(chǎn)生新的 RDD。Spark用戶將計(jì)算作為 DAG進(jìn)行建模,該DAG會(huì)轉(zhuǎn)換并運(yùn)行RDD上的動(dòng)作。DAG會(huì)分階段進(jìn)行編譯。每個(gè)階段將作為一系列的任務(wù)并行執(zhí)行(每個(gè)分區(qū)一個(gè)任務(wù))。窄的依賴關(guān)系有利于高效的執(zhí)行,而廣泛的依賴關(guān)系會(huì)帶來(lái)瓶頸,因?yàn)樗鼈儠?huì)破壞流水線,而且需要通信密集的隨機(jī)操作。Spark中的分布式執(zhí)行是通過(guò)對(duì)機(jī)器上的DAG階段進(jìn)行分塊來(lái)實(shí)現(xiàn)的。這個(gè)圖清晰地展示了master-worker 架構(gòu)。Driver包含了兩個(gè)調(diào)度組件,DAG調(diào)度器和任務(wù)調(diào)度器,用于給 workers分 配任務(wù),以及協(xié)

6、調(diào) workers。Spark是為一般數(shù)據(jù)處理而不是為機(jī)器學(xué)習(xí)設(shè)計(jì)的。然而,利用專用于Spark的MLlib,使得在Spark上進(jìn)行機(jī)器學(xué)習(xí)成為可能。在基本的設(shè)置中,Spark將模型參數(shù)存儲(chǔ)在driver節(jié)點(diǎn)中,而workers與driver進(jìn)行通信,以便在每次迭代后更新參數(shù)。對(duì)于大規(guī)模的部署來(lái)說(shuō),模型參數(shù)可能不適合保存 在driver中,而應(yīng)該將其作為 RDD進(jìn)行維護(hù)。這引入了很大的開銷,因?yàn)樾枰诿看蔚袆?chuàng)建新 的RDD以保存更新過(guò)的模型參數(shù)。更新模型包括在機(jī)器/磁盤之間混洗數(shù)據(jù),這限制了 Spark的可擴(kuò) 展性。這是Spark中基本數(shù)據(jù)流模型(DAG )不足的地方。Spark不支持機(jī)器

7、學(xué)習(xí)所需的迭代。m鴿學(xué)巴 PMLSPMLS從誕生的那一天起就是專門為機(jī)器學(xué)習(xí)設(shè)計(jì)的。它引入了參數(shù)服務(wù)器 (parameter-server ,簡(jiǎn)寫為PS)抽象用于迭代密集型機(jī)器學(xué)習(xí)訓(xùn)練過(guò)程。PS (在圖中用綠色的框表示)用于分布式內(nèi)存鍵值的存儲(chǔ)。它復(fù)制和分片的方式是這樣的:每個(gè)節(jié)點(diǎn)既是模型中某個(gè)分片的主節(jié)點(diǎn),又是其他分片的輔節(jié)點(diǎn)(或副本)。因此,PS可以通過(guò)增加節(jié)點(diǎn)數(shù)量的方法很容易地進(jìn)行擴(kuò)展。 (Si1鶴學(xué)吧PS節(jié)點(diǎn)用于存儲(chǔ)和更新模型參數(shù),并響應(yīng) workers的請(qǐng)求。workers從本地PS副本中請(qǐng)求最新的 模型參數(shù),并對(duì)分配給自己的數(shù)據(jù)集分區(qū)進(jìn)行計(jì)算。PMLS 還采用了 SSP(Stale

8、 Synchronous Parallelism,變味的同步并行)模型,它放寬了 BSP (BulkSynchronousParellelism ,批量同步并行)模型中workers在每次迭代最后要進(jìn)行同步操作的要求。SSP減少了 workers同步的難度,確保最快的 worker不能在最慢的worker之前迭代。由于對(duì)過(guò)程 中產(chǎn)生的噪聲具有一定的容錯(cuò)能力,這個(gè)寬松的一致性模型仍可適用于機(jī)器學(xué)習(xí)訓(xùn)練。我已經(jīng)在2016年4月的一篇博客文章里介紹了這一點(diǎn)。Ten sorFlowGoogle有一個(gè)基于分布式機(jī)器學(xué)習(xí)平臺(tái)的參數(shù)服務(wù)器模型,名為DistBelief。這是我對(duì)DistBelief論文的評(píng)論

9、。我在這篇文章中指出,人們對(duì) DistBelief主要的抱怨是編寫機(jī)器學(xué)習(xí)應(yīng)用程序的時(shí)候會(huì) 弄亂底層代碼。Google希望公司內(nèi)的任何員工無(wú)需精通分布式執(zhí)行就能編寫機(jī)器學(xué)習(xí)代碼,這也是 Google為大數(shù)據(jù)處理編寫 MapReduce 框架的原因。所以,TensorFlow 正是為了實(shí)現(xiàn)這一目標(biāo)而設(shè)計(jì)的。TensorFlow 采用了數(shù)據(jù)流范例,但在它的高級(jí)版本中,計(jì)算圖不需要是DAG ,但可以包括循環(huán)和支持可變狀態(tài)。我想,可能是Naiad的設(shè)計(jì)對(duì)Ten sorFlow 產(chǎn)生了一些影響吧。Ten sorFlow 中的計(jì)算可以表示為一個(gè)帶有節(jié)點(diǎn)和邊的有向圖。節(jié)點(diǎn)表示具有可變狀態(tài)的計(jì)算。邊表 示在節(jié)

10、點(diǎn)之間傳遞的多維數(shù)據(jù)矩陣(張量)。Ten sorFlow 要求用戶靜態(tài)地聲明這個(gè)符號(hào)計(jì)算圖,并且使用圖形的重寫和分區(qū)來(lái)讓機(jī)器進(jìn)行分布式的執(zhí)行。如上圖所示,這個(gè) Te nsorFlow 中的分布式機(jī)器學(xué)習(xí)訓(xùn)練使用了參數(shù)服務(wù)器的方法。在Ten sorFlow中使用PS抽象的時(shí)候,可以使用參數(shù)服務(wù)器和數(shù)據(jù)并行機(jī)制。對(duì)于TensorFlow 來(lái)說(shuō),你可以做更為復(fù)雜的事情,但這需要編寫自定義代碼并走入未知的領(lǐng)域。一些評(píng)估結(jié)果鴿專巴為了對(duì)這些平臺(tái)進(jìn)行評(píng)估,我們使用了 Amazon EC2 m4.xlarge 實(shí)例。每個(gè)實(shí)例包含由In tel Xeon E5-2676 v3 處理器和16GBRAM 組成的4

11、個(gè)vCPU。EBS帶寬為750Mbps。我們使用兩種常見的 機(jī)器學(xué)習(xí)任務(wù)進(jìn)行評(píng)估:使用多層神經(jīng)網(wǎng)絡(luò)的二級(jí)邏輯回歸和圖像分類。我只是在這里提供幾張圖,請(qǐng)查看我們的論文以進(jìn)行更多的實(shí)驗(yàn)。我們的實(shí)驗(yàn)有幾個(gè)限制:我們使用的機(jī)器比較少,不能進(jìn)行規(guī) 模上的測(cè)試。我們的測(cè)試僅限于CPU計(jì)算,并沒(méi)有進(jìn)行 GPU計(jì)算測(cè)試。System of Logtelte RegressionMH該圖顯示了邏輯回歸平臺(tái)的速度。Spark比PMLS和MXNet慢,但表現(xiàn)得還算可以該圖顯示了 DNN平臺(tái)的速度。與單層邏輯回歸相比, Spark的性能損失比兩層 NN更大,這是因?yàn)?需要更多的迭代計(jì)算。這里,我們將 driver的參

12、數(shù)保存在Spark中。如果我們將參數(shù)保存在 RDD中 并且在每次迭代之后進(jìn)行更新,情況會(huì)更糟。該圖顯示了平臺(tái)的CPU利用率。Spark應(yīng)用程序的CPU利用率明顯比較高,主要是因?yàn)榇嬖谛蛄?化的開銷。以前的工作已經(jīng)指出了這個(gè)問(wèn)題。tsi:鵠學(xué)吧結(jié)語(yǔ),以及未來(lái)的方向機(jī)器學(xué)習(xí)/深度學(xué)習(xí)應(yīng)用程序有著令人尷尬的并行機(jī)制,而且從并發(fā)算法角度來(lái)看也并不是很有趣??梢钥隙ǖ氖牵瑓?shù)服務(wù)器方法贏得了分布式機(jī)器學(xué)習(xí)平臺(tái)訓(xùn)練的青睞。至于瓶頸問(wèn)題,網(wǎng)絡(luò)仍然是分布式機(jī)器學(xué)習(xí)應(yīng)用程序的瓶頸。更好的數(shù)據(jù)或模型分級(jí)比更先進(jìn)的通用數(shù)據(jù)流平臺(tái)更有用,請(qǐng)重視數(shù)據(jù)和模型。然而,也存在著一些令人驚訝和微妙的地方。在Spark中,CPU開銷正在成為比網(wǎng)絡(luò)限制更為重要的瓶頸。Spark中使用的編程語(yǔ)言(例如 Scala/JVM )會(huì)顯著影響它的性能。因此,特別需要一個(gè) 更好的工具來(lái)進(jìn)行分布式機(jī)器學(xué)習(xí)平臺(tái)的監(jiān)控和性能預(yù)測(cè)。近來(lái),已經(jīng)出現(xiàn)了一些能夠解決 Spark數(shù)據(jù)處理程序問(wèn)題的工具,例如Ernest

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論