
Hadoop 2.0 上深度學(xué)習(xí)的解決方案_數(shù)據(jù)分析師
波士頓的 數(shù)據(jù)科學(xué)團(tuán)隊(duì)正在利用尖端工具和算法來優(yōu)化商業(yè)活動(dòng),且這些商業(yè)活動(dòng)是基于對(duì)用戶數(shù)據(jù)中的深刻透析。數(shù)據(jù)科學(xué)大量使用機(jī)器算法,可以幫助我們?cè)跀?shù)據(jù)中識(shí)別和利用模式。從互聯(lián)網(wǎng)大規(guī)模數(shù)據(jù)中獲取透析是一項(xiàng)具有挑戰(zhàn)性的任務(wù),因此,能大規(guī)模運(yùn)行算法是一個(gè)至關(guān)重要的需求。伴隨著數(shù)據(jù)的爆炸性增長(zhǎng)和成千上萬的機(jī)器集群,我們需要使算法可以適應(yīng)在如此分布的環(huán)境下運(yùn)行。在通用的分布式計(jì)算環(huán)境中運(yùn)行機(jī)器學(xué)習(xí)算法具有一系列的挑戰(zhàn)。
這里,我們探討一下如何在一個(gè)Hadoop集群中實(shí)現(xiàn)和部署深度學(xué)習(xí)(一個(gè)尖端機(jī)器學(xué)習(xí)框架)。對(duì)于算法是如何適應(yīng)運(yùn)行在一個(gè)分布式環(huán)境中,我們提供了具體的細(xì)節(jié)。我們也給出了算法在標(biāo)準(zhǔn)數(shù)據(jù)集上的運(yùn)行結(jié)果。
深度信任網(wǎng)絡(luò)
深度信任網(wǎng)絡(luò)(Deep Belief Networks, DBN)是在貪婪和無監(jiān)督的條件下通過迭代和訓(xùn)練受限的玻耳茲曼機(jī)(Boltzmann Machines, RMB)而得到的圖形模型。通過對(duì)如下可被觀察的維度x和隱藏層hk之間相互連接的分布式進(jìn)行建模,DBN被訓(xùn)練來提取訓(xùn)練數(shù)據(jù)的深層透析。
表達(dá)式1:DBN分布式
在下圖中,輸入層和隱藏層的關(guān)系是可以被觀察到的。從高層次來看,第一層被作為RBM來訓(xùn)練,為原始輸入x進(jìn)行建模。輸入的數(shù)據(jù)是個(gè)稀疏二進(jìn)制維度,表明數(shù)據(jù)將會(huì)被分類,比如,一個(gè)二進(jìn)制的數(shù)字圖像。后續(xù)層把前面的層傳遞過來的數(shù)據(jù)(樣本或activations)當(dāng)作訓(xùn)練示例使用。層數(shù)可以通過經(jīng)驗(yàn)來決定,以此來獲得更好的模型性能,DBN支持任意多的層數(shù)。
圖1:DBN層次
下面的代碼片段表明了進(jìn)入RBM的訓(xùn)練。在提供給RBM的輸入數(shù)據(jù)中,有多個(gè)預(yù)定義的時(shí)間點(diǎn)。輸入數(shù)據(jù)被分成小批量數(shù)據(jù),為各個(gè)層計(jì)算weights、activations和deltas。
在所有的層都被訓(xùn)練以后,深度網(wǎng)絡(luò)的參數(shù)調(diào)整使用受監(jiān)督的訓(xùn)練標(biāo)準(zhǔn)。受監(jiān)督的訓(xùn)練標(biāo)準(zhǔn),比如,可以作為一個(gè)分類問題來設(shè)計(jì),允許使用深度網(wǎng)絡(luò)來解決分類問題。更復(fù)雜的受監(jiān)督的標(biāo)準(zhǔn)可以用來提供如情景解讀之類的有趣的結(jié)果,比如解釋圖片里展示的東西是什么。
基礎(chǔ)構(gòu)造
深度學(xué)習(xí)受到了廣泛的關(guān)注,不僅僅是因?yàn)樗梢缘贸霰绕渌恍W(xué)習(xí)算法更優(yōu)異的結(jié)果,也因?yàn)樗梢栽诜植际皆O(shè)備上運(yùn)行,允許處理大規(guī)模的數(shù)據(jù)集。深度網(wǎng)絡(luò)可以在兩個(gè)級(jí)別進(jìn)行并行、層級(jí)別和數(shù)據(jù)級(jí)別[6]。對(duì)于層級(jí)別的并行,許多實(shí)現(xiàn)使用GPU數(shù)組來并行計(jì)算層級(jí)別activations和頻繁同步它們。然而,這種方法不適合那種數(shù)據(jù)駐留在通過網(wǎng)絡(luò)連接的多個(gè)機(jī)器的集群,因?yàn)橛兄^高的網(wǎng)絡(luò)開銷。對(duì)于數(shù)據(jù)層的并行,訓(xùn)練是在數(shù)據(jù)集上進(jìn)行并行的,更適合分布式設(shè)備。Paypal的大部分?jǐn)?shù)據(jù)存儲(chǔ)在Hadoop集群上,因此能夠運(yùn)行那些集群上的算法是我們的首要任務(wù)。專用集群的維護(hù)和支持也是一個(gè)我們需要考慮的重要因素。然而,由于深度學(xué)習(xí)本質(zhì)上是迭代的,像MapReduce這樣的范式不適合運(yùn)行這些算法。但是隨著Hadoop2.0和基于YARN的資源管理的問世,我們可以編寫迭代程序,同時(shí)可以精細(xì)地控制程序使用的資源。我們使用了IterativeReduce [7] , Hadoop YARN里面的一個(gè)用戶編寫迭代算法的程序,我們可以將它部署在一個(gè)運(yùn)行Hadoop 2.4.1的Paypal集群中。
方法
我們實(shí)現(xiàn)了Hinton的核心算法,在[2]中引用的。由于我們的需求是分散運(yùn)行在多個(gè)機(jī)器的集群中的算法,我們?cè)谶@樣的環(huán)境下使用了他們的算法。對(duì)于在多個(gè)機(jī)器上分散這個(gè)算法,我們參照了Grazia所提出的指南[6]。下面是對(duì)我們的實(shí)現(xiàn)做的詳細(xì)總結(jié):
? Master節(jié)點(diǎn)初始化RBM的weights。
? Master節(jié)點(diǎn)向Worker節(jié)點(diǎn)推送weights和splits。
? Worker節(jié)點(diǎn)在一個(gè)數(shù)據(jù)集時(shí)間點(diǎn)訓(xùn)練一個(gè)RBM層,換句話說,在一個(gè)Worker節(jié)點(diǎn)完全通過所有的split后,向Master發(fā)送更新后的weights。
? 在一個(gè)給定的時(shí)間點(diǎn)里,Master節(jié)點(diǎn)對(duì)來自所有Worker節(jié)點(diǎn)的weights求平均值。
? 在預(yù)定義的時(shí)間集(我們的例子中是50)中,重復(fù)3-5步操作。
? 第6步完成以后,有一個(gè)層就被訓(xùn)練了。后續(xù)的RBM層也重復(fù)這些步驟。
? 當(dāng)所有的層都被訓(xùn)練以后,深度網(wǎng)絡(luò)就會(huì)通過使用錯(cuò)誤反向廣播機(jī)制準(zhǔn)確地調(diào)整好。
下圖描述了在運(yùn)行深度學(xué)習(xí)算法時(shí)的一個(gè)單個(gè)數(shù)據(jù)集時(shí)間點(diǎn)(步驟3-5)。我們注意到,這個(gè)范式可以被利用來實(shí)現(xiàn)一個(gè)主機(jī)可迭代的機(jī)器學(xué)習(xí)算法。
圖2:用于訓(xùn)練的單個(gè)數(shù)據(jù)集時(shí)間點(diǎn)
下面的代碼片段表明了在訓(xùn)練單個(gè)機(jī)器的DBN中所涉及的步驟。數(shù)據(jù)集首先被拆分成多個(gè)批次,然后多個(gè)RBM層會(huì)被順序地初始化和訓(xùn)練。在RBM都被訓(xùn)練以后,它們會(huì)通過一個(gè)準(zhǔn)確調(diào)整的錯(cuò)誤反向廣播相位。
我們使用了IterativeReduce[7]的實(shí)現(xiàn)很大程度是為了YARN管道。我們對(duì)實(shí)現(xiàn)做出了重大改革,可以將它利用到我們的深度學(xué)習(xí)算法實(shí)現(xiàn)。IterativeReduce的實(shí)現(xiàn)是為Cloudera Hadoop分布式而編寫,它被我們重置了平臺(tái),以此來適應(yīng)標(biāo)準(zhǔn)的Apache Hadoop分布式。我們還重寫了實(shí)現(xiàn),以此來使用[8]中描述的標(biāo)準(zhǔn)編程模型。特別是,我們需要YARN客戶端API在ResourceManager和客戶端程序之間進(jìn)行通信。我們也使用了AMRMClient和AMNMClient在ApplicationMaster、ResourceManager和NodeManager之間進(jìn)行通信。
我們首先使用YARN API提交應(yīng)用程序到Y(jié)ARN資源管理器:
在應(yīng)用被提交以后,YARN資源管理器啟動(dòng)應(yīng)用程序Master。如果必要的話,應(yīng)用程序Master負(fù)責(zé)分配和釋放Worker容器。程序Master使用AMRMClient來與資源管理器進(jìn)行通信。
應(yīng)用程序Master使用NMClient API在容器(主節(jié)點(diǎn)傳遞過來的)中運(yùn)行命令。
一旦應(yīng)用Master啟動(dòng)了它需要的Worker容器,它設(shè)置一個(gè)端口來和應(yīng)用Master進(jìn)行通信。對(duì)于我們深度學(xué)習(xí)實(shí)現(xiàn)來說,我們新增了一些方法,它們需要為原始的IterativeReduce接口提供參數(shù)初始化、逐層訓(xùn)練和精確調(diào)整信號(hào)。IterativeReduce使用Apache Avro IPC來實(shí)現(xiàn)Master和Worker之間的通信。
下面的代碼片段表明了一系列涉及Master-Worker節(jié)點(diǎn)的分布式訓(xùn)練,Master向worker發(fā)送初始參數(shù),然后Worker在部分?jǐn)?shù)據(jù)上訓(xùn)練它的RBM。在Worker完成訓(xùn)練之后,它將結(jié)果發(fā)送至Master,Master將會(huì)綜合這些結(jié)果。迭代完成以后,Master通過啟動(dòng)反向廣播精確調(diào)整相位來完成流程。
結(jié)果
我們?cè)u(píng)估了使用MNIST手寫數(shù)字識(shí)別[3]來實(shí)現(xiàn)的深度學(xué)習(xí)的性能。數(shù)據(jù)集包含手工標(biāo)記的0-9的數(shù)字。訓(xùn)練集由60000張圖片組成,測(cè)試集包含了10000張圖片。
為了測(cè)量性能,DBN首先被預(yù)訓(xùn)練,然后在60000張照片中被精確調(diào)整,通過以上的步驟,DBN會(huì)在10000張測(cè)試圖片上進(jìn)行評(píng)估。在訓(xùn)練或者評(píng)估期間,沒有對(duì)圖片進(jìn)行預(yù)處理。出錯(cuò)率是由為分類的圖片總數(shù)與測(cè)試集中的圖片總數(shù)的比率而得到。
當(dāng)在每個(gè)RBM使用500-500-2000的隱藏單元,同時(shí)使用十個(gè)節(jié)點(diǎn)的分布式設(shè)備的時(shí)候,我們能達(dá)到最佳的分類錯(cuò)誤率1.66%。錯(cuò)誤率可堪比原始算法的作者所報(bào)告的1.2%(使用500-500-2000的隱藏單元)[2],和類似設(shè)置下的一些結(jié)果[3]。我們注意到原始實(shí)現(xiàn)是在單個(gè)機(jī)器上的,而我們的實(shí)現(xiàn)是在分布式機(jī)器上的。參數(shù)平均的這一步導(dǎo)致性能略微降低,然而將算法分布在多臺(tái)機(jī)器上是利大于弊的。下面的表格總結(jié)出了在十個(gè)節(jié)點(diǎn)的集群上運(yùn)行的每個(gè)層的隱藏單元數(shù)對(duì)應(yīng)的錯(cuò)誤率的變化。
表1:MNIST性能評(píng)估
深入思考
我們成功地部署了一個(gè)深度學(xué)習(xí)系統(tǒng),我們相信它在解決一些機(jī)器學(xué)習(xí)問題過程中很有用處。此外,迭代降低抽象可以被利用來分布任何其它合適的機(jī)器學(xué)習(xí)算法,能夠利用通用的Hadoop集群將會(huì)被證明非常有利于在大數(shù)據(jù)集上運(yùn)行大型機(jī)器學(xué)習(xí)算法。我們注意到,我們的當(dāng)前框架需要一些改進(jìn),主要圍繞減少網(wǎng)絡(luò)延遲和更先進(jìn)的資源管理。另外,我們需要優(yōu)化DBN框架,這樣可以減少內(nèi)部節(jié)點(diǎn)之間的通信。隨著對(duì)集群資源的精確調(diào)整控制,Hadoop YARN框架給我們提供了更多的靈活性。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03