30分布式機器學(xué)習(xí)課件_第1頁
30分布式機器學(xué)習(xí)課件_第2頁
30分布式機器學(xué)習(xí)課件_第3頁
30分布式機器學(xué)習(xí)課件_第4頁
30分布式機器學(xué)習(xí)課件_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

機器學(xué)習(xí)分布式機器學(xué)習(xí)章節(jié)介紹機器學(xué)習(xí)方法是計算機利用已有的數(shù)據(jù)生成某種模型,并利用此模型預(yù)測的一種方法。在確定模型結(jié)構(gòu)之后,根據(jù)已知模型尋找模型參數(shù)的過程就是訓(xùn)練,訓(xùn)練過程中不斷依據(jù)訓(xùn)練數(shù)據(jù)來迭代調(diào)整模型的參數(shù)值,從而使模型的預(yù)測結(jié)果更為準(zhǔn)確。在現(xiàn)實應(yīng)用中,要達(dá)到好的效果,訓(xùn)練數(shù)據(jù)集可能很大,模型參數(shù)量劇增,會帶來很多性能和算法設(shè)計問題,單臺機器難以勝任,需要分布式的機器學(xué)習(xí)架構(gòu)。本章主要介紹分布式機器學(xué)習(xí)基礎(chǔ)知識,并介紹主流的分布式機器學(xué)習(xí)框架,結(jié)合實例介紹一些機器學(xué)習(xí)算法。章節(jié)結(jié)構(gòu)分布式機器學(xué)習(xí)基礎(chǔ)參數(shù)服務(wù)器分布式并行計算類型分布式機器學(xué)習(xí)框架MapReduce編程模型Hadoop

MapReduce框架SparkPMLSTensorFlow并行決策樹并行k-均值算法分布式機器學(xué)習(xí)基礎(chǔ)分布式機器學(xué)習(xí)中的一些核心問題:如何提高各分布式任務(wù)節(jié)點之間的網(wǎng)絡(luò)傳輸效率;如何解決參數(shù)同步問題,傳統(tǒng)訓(xùn)練模型是采用同步方法,如果機器性能不統(tǒng)一,必然會產(chǎn)生訓(xùn)練任務(wù)之間的協(xié)作;分布式環(huán)境下如何提高容錯能力,需要避免單點故障,并能合理處理異常,訓(xùn)練子節(jié)點出錯不影響全局任務(wù)。議程參數(shù)服務(wù)器應(yīng)用傳統(tǒng)的大數(shù)據(jù)處理框架訓(xùn)練大型的機器學(xué)習(xí)模型時,由于數(shù)據(jù)量比較大并且訓(xùn)練方法多樣,存在著一致性、擴展性、穩(wěn)定性的問題。較大的模型也意味著參數(shù)較多,因而需要實現(xiàn)分布式并行訓(xùn)練,參數(shù)服務(wù)器是分布式并行訓(xùn)練框架之一,存儲著模型的參數(shù)和狀態(tài)。參數(shù)服務(wù)器具有如下特點:高效通信寬松一致性靈活可擴展容錯能力強易用議程靈活可擴展訓(xùn)練過程中支持動態(tài)擴展節(jié)點,不需要重啟訓(xùn)練任務(wù)就可以動態(tài)插入新節(jié)點到集合中,這一特性無疑有利于那些訓(xùn)練周期較長(長達(dá)數(shù)天或數(shù)周)的機器學(xué)習(xí)項目,可節(jié)省大量訓(xùn)練時間。在大型服務(wù)器集群中,由于節(jié)點較多,小概率故障往往常態(tài)化,所以需要節(jié)點的恢復(fù)(狀態(tài)清理、任務(wù)重啟)時間要短,而且不能中斷訓(xùn)練過程,這就要求并行化系統(tǒng)具有較強的容錯能力。目前機器學(xué)習(xí)項目開發(fā)者數(shù)量較少,為了減少學(xué)習(xí)難度,需要盡可能的使用常用語言或?qū)?shù)表示成通用的形式,如向量、矩陣等,并與現(xiàn)有機器學(xué)習(xí)框架無縫拼接。容錯能力強易用議程分布式并行計算框架分布式并行計算的類型一般分為三種:模型并行數(shù)據(jù)并行混合并行議程模型并行模型并行是指將模型按照其結(jié)構(gòu)放在不同的分布式機器上進(jìn)行訓(xùn)練,一般用在那些內(nèi)存要求較高的機器學(xué)習(xí)項目,例如,單機訓(xùn)練一個1000層的DNN網(wǎng)絡(luò),內(nèi)存容易溢出,而使用模型并行,用不同的機器負(fù)責(zé)不同的層進(jìn)行訓(xùn)練,通過維護(hù)各層間參數(shù)同步實現(xiàn)整個DNN網(wǎng)絡(luò)的并行訓(xùn)練。議程數(shù)據(jù)并行數(shù)據(jù)并行是指各機器上的模型相同,對訓(xùn)練數(shù)據(jù)進(jìn)行分割,并分配到各機器上,最后將計算結(jié)果按照某種方式合并。該方法主要應(yīng)用在海量訓(xùn)練數(shù)據(jù)的情況,數(shù)據(jù)以并行化方式訓(xùn)練,訓(xùn)練過程中組合各工作節(jié)點的結(jié)果,實現(xiàn)模型參數(shù)的更新。參數(shù)并行常用的方法有參數(shù)平均和異步梯度下降的方法。議程參數(shù)平均參數(shù)平均是在每次訓(xùn)練迭代完成后計算各節(jié)點各模型參數(shù)平均值,這一方法操作簡單,主要依賴網(wǎng)絡(luò)同步更新,如果更新頻率較慢會導(dǎo)致參數(shù)差別較大,平均之后的模型參數(shù)的局部差異化被抵消,效果較差,影響模型的精確性。反之,如果更新較快,對網(wǎng)絡(luò)壓力較大,通信和同步的成本較高,所以在應(yīng)用中需要結(jié)合模型復(fù)雜度和優(yōu)化方法進(jìn)行平衡。議程異步梯度下降異步梯度下降是一種基于更新的數(shù)據(jù)并行化,它傳遞的是模型訓(xùn)練過程中的梯度、動量等信息,而沒有直接傳遞參數(shù)值,這樣一方面可以減少傳輸數(shù)據(jù)量,提高網(wǎng)絡(luò)傳輸效率;另一方面不同計算節(jié)點通過共享梯度,可以提高模型收斂速度。該方法的不足之處在于會隨著引入?yún)?shù)數(shù)量的增多出現(xiàn)梯度值過時的問題。議程混合并行混合并行的方式是指綜合應(yīng)用模型并行和數(shù)據(jù)并行,在訓(xùn)練集群的設(shè)計中,將上述兩種方式進(jìn)行合并,各取所長,形成互補。例如,可以在同一臺機器上采用模型并行化,在GPU和CPU之間使用模型并行。然后在機器之間采用數(shù)據(jù)并行化,將數(shù)據(jù)分配在不同的機器上,既實現(xiàn)了計算資源利用的最大化,也減少了數(shù)據(jù)分發(fā)的壓力。分布式機器學(xué)習(xí)框架分布式機器學(xué)習(xí)是機器學(xué)習(xí)領(lǐng)域的一大主要研究方向,其中MapReduce適合做離線計算,Storm適合做流式計算,Spark是內(nèi)存計算框架,能快速得到計算結(jié)果。分布式機器學(xué)習(xí)平臺歸類為三種基本設(shè)計方法:基本數(shù)據(jù)流、參數(shù)服務(wù)器模型以及高級數(shù)據(jù)流?;谶@三種方法來介紹分布式機器學(xué)習(xí)框架。議程MapReduce編程模型MapReduce是一個能處理和生成超大數(shù)據(jù)集的算法模型,該架構(gòu)能夠在大量硬件配置不高的計算機上實現(xiàn)并行化處理,這一編程模型結(jié)合用戶自定義的Map和Reduce函數(shù)。Map函數(shù)處理一個輸入的基于<Key,value>對的集合,輸出中間基于<Key,value>對的集合,Reduce函數(shù)是將所有具有相同key值的value值進(jìn)行合并,將數(shù)據(jù)集合進(jìn)行壓縮。議程MapReduce編程模型一個典型的MapReduce程序的執(zhí)行流程如下圖所示。議程Hadoop

MapReduce框架Hadoop

MapReduce是Hadoop三大組件之一,包括JobTracker和一定數(shù)量的TaskTracker。JobTracker負(fù)責(zé)任務(wù)分配和調(diào)度,一個MapReduce作業(yè)通常會把輸入的數(shù)據(jù)集切分為若干獨立的數(shù)據(jù)塊,由Map任務(wù)以并行方式處理它們,框架會對Map的輸出先進(jìn)行排序,然后把結(jié)果輸入到Reduce任務(wù)中。通常作業(yè)的輸入和輸出都會被存儲在文件系統(tǒng)HDFS中,由JobTracker負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)控,以及重新執(zhí)行已經(jīng)失敗的任務(wù)。議程Hadoop

MapReduce框架Hadoop

MapReduce框架由一個單獨的主JobTracker和每個集群節(jié)點對應(yīng)一個備TaskTracker組成。JobTracker負(fù)責(zé)調(diào)度作業(yè)的所有任務(wù),并監(jiān)控它們的執(zhí)行,這些任務(wù)分布在不同的備TaskTracker上。如果TaskTracker上的任務(wù)執(zhí)行失敗,還會調(diào)度其重新執(zhí)行。而TaskTracker僅負(fù)責(zé)執(zhí)行指派的任務(wù)。議程Hadoop

MapReduce框架議程Spark與Hadoop

MapReduce相比,Spark的優(yōu)勢在于處理迭代計算的機器學(xué)習(xí)任務(wù),尤其是內(nèi)存要求小的應(yīng)用,性能提升很大,Spark還可以進(jìn)行批處理、實時數(shù)據(jù)處理、機器學(xué)習(xí)以及圖算法等計算模塊。使用Spark平臺無需關(guān)心分布式并行計算的細(xì)節(jié),可以智能地進(jìn)行數(shù)據(jù)切分、算法復(fù)制、分布執(zhí)行、結(jié)果合并,以支持?jǐn)?shù)據(jù)分析人員快速開發(fā)分布式應(yīng)用。議程SparkSpark的基本框架如下圖所示議程SparkSpark應(yīng)用核心由啟動環(huán)境和執(zhí)行程序兩部分組成,其中執(zhí)行程序負(fù)責(zé)執(zhí)行任務(wù),運行執(zhí)行程序的機器是工作節(jié)點,而啟動環(huán)境由用戶程序啟動,通過集群管理器與各個執(zhí)行程序進(jìn)行通信。集群管理器主要負(fù)責(zé)集群的資源管理和調(diào)度,目前支持Standalone、Apache

Mesos和YARN三種類型的管理器。議程SparkSpark使用彈性分布式數(shù)據(jù)集(RDD)抽象分布式計算,RDD是Spark并行數(shù)據(jù)處理的基礎(chǔ),它是一種只讀的分區(qū)記錄的集合,用戶可以通過RDD對數(shù)據(jù)顯示地控制存儲位置和選擇數(shù)據(jù)的分區(qū)。RDD主要通過轉(zhuǎn)換和動作操作來進(jìn)行分布式計算,轉(zhuǎn)換是根據(jù)現(xiàn)有數(shù)據(jù)集創(chuàng)建新數(shù)據(jù)集,動作是在數(shù)據(jù)集上進(jìn)行計算后返回值給Driver程序。使用RDD可以用基本一致的方式應(yīng)對不同的大數(shù)據(jù)處理場景,還能夠提高分布式計算的容錯性。議程SparkSpark是一種粗粒度、基于數(shù)據(jù)集的并行計算框架。其計算范式是數(shù)據(jù)集上的計算,在使用Spark的時候,要按照這一范式編寫算法。所謂的數(shù)據(jù)集操作,就是成堆的數(shù)據(jù),如果源數(shù)據(jù)集是按行存儲的話,就需要對其進(jìn)行適配,將若干記錄組成一個集合。因此在提交給Spark任務(wù)時,需要先構(gòu)建數(shù)據(jù)集,然后通過數(shù)據(jù)集的操作,實現(xiàn)目標(biāo)任務(wù)。議程TensorFlowTensorFlow為用戶封裝了底層的分布式操作,使其可以專注于編寫機器學(xué)習(xí)代碼。使用數(shù)據(jù)流圖進(jìn)行數(shù)值計算,用有向圖中的節(jié)點表示,節(jié)點的狀態(tài)是可變的,邊是張量,對應(yīng)為多維數(shù)組。TensorFlow中數(shù)據(jù)并行化的方式由In-graph、Between-graph、異步訓(xùn)練、同步訓(xùn)練幾種方式,通過將模型訓(xùn)練分配給不同的工作節(jié)點,并使用參數(shù)服務(wù)器共享參數(shù)。并行決策樹隨著大數(shù)據(jù)時代的到來,算法需要處理的數(shù)據(jù)量急劇增加,僅依靠原始的決策樹算法進(jìn)行分類無論在效率上還是準(zhǔn)確性上都不足以滿足需求。高效出色的在大數(shù)據(jù)量下使用決策樹算法,需要將決策樹算法并行化。并行決策樹并行決策樹算法基于MapReduce框架,核心思想是分而治之的策略。MapReduce通過將海量數(shù)據(jù)集分割成多個小數(shù)據(jù)集交給多臺不同計算機進(jìn)行處理,實現(xiàn)并行化數(shù)據(jù)處理。應(yīng)用到?jīng)Q策樹算法上,通過MapReduce將決策樹算法并行處理,將耗時的屬性相似度計算的步驟并行執(zhí)行。Map階段,以單元組形式分解數(shù)據(jù),計算屬性相似度,以<屬性名,相似度>形式輸出。Reduce階段,匯總所有局部結(jié)果,找到最大相似度屬性名,以這個屬性作為測試節(jié)點,若是葉子節(jié)點,則返回,否則執(zhí)行分裂,將其錄入待計算數(shù)據(jù)庫中進(jìn)行存儲。不斷重復(fù)上述過程完成決策樹的構(gòu)建。鍵值對<并行決策樹算法<并行化的隨機森林——并行CART決策樹算法并行k-均值算法k-均值算法是應(yīng)用最廣泛的聚類算法之一,隨著大數(shù)據(jù)的發(fā)展,在實際使用過程中如何提升該算法的性能成為了一個有挑戰(zhàn)性的任務(wù)??梢曰贛apReduce實現(xiàn)k-均值算法,在Hadoop環(huán)境中并行運行,能夠高效且廉價的處理大型數(shù)據(jù)集。并行k-均值算法在具體實現(xiàn)該算法時,將輸入數(shù)據(jù)集存儲在分布式文件系統(tǒng)HDFS中,作為<key,value>的序列文件,每個鍵值對代表數(shù)據(jù)集的一條記錄,其中key記錄的是數(shù)據(jù)文件距離起始位置的偏移量,value是該條記錄的內(nèi)容。將迭代后或初始化后的k個聚類中心放到Configuration中,然后在Mapper的setUp計算讀取這k個聚類中心。Mapper會將同一類的數(shù)據(jù)發(fā)送至同一個Reducer。在Reducer中,只需要根據(jù)數(shù)據(jù)重新計算聚類中心即可。并行k-均值算法使用MapReduce框架實現(xiàn)k-均值聚類算法時,需要將每一次迭代作為一個MapReduce

Job進(jìn)行計算,通過多次運行該Job達(dá)到迭代的效果,最終得到k個聚類中心。基于MapReduce的并行k-均值算法,可以在廉價機器上有效處理大型數(shù)據(jù)集。k-均值算法算例進(jìn)行k-均值聚類的數(shù)據(jù)如下表:x1x2x3x4x5x6x7x8x9x10x1112239101011151616225314131516658k-均值算法算例將x1—x6分配給node1,將x7-x11分配給node2,選擇k=3,在開始階段,創(chuàng)建一個如下表的全局文件。迭代次數(shù)0簇ID簇中心樣本點數(shù)目1(1,2)02(2,2)03(2,5)0k-均值算法算例Map階段對于數(shù)據(jù)集中的每一個節(jié)點,讀取全局文件,獲得上一輪迭代生成的簇中心信息,計算樣本點到簇中心的距離。在Reduce階段每個reduce收到關(guān)于某一個簇的信息。包括該簇的

溫馨提示

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

評論

0/150

提交評論