基于Spark和TensorFlow的機(jī)器學(xué)習(xí)實(shí)踐是怎么樣的

這篇文章給大家介紹基于Spark和TensorFlow 的機(jī)器學(xué)習(xí)實(shí)踐是怎么樣的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

為紫金等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及紫金網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、紫金網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

EMR E-Learning平臺(tái)

EMR E-Learning平臺(tái)基于的是大數(shù)據(jù)和AI技術(shù),通過算法基于歷史數(shù)據(jù)來構(gòu)建機(jī)器學(xué)習(xí)模型,從而進(jìn)行訓(xùn)練與預(yù)測。目前機(jī)器學(xué)習(xí)被廣泛應(yīng)用到很多領(lǐng)域,如人臉識(shí)別、自然語言處理、推薦系統(tǒng)、計(jì)算機(jī)視覺等。近年來,大數(shù)據(jù)以及計(jì)算能力的提升,使得AI技術(shù)有了突飛猛進(jìn)的發(fā)展。

機(jī)器學(xué)習(xí)中重要的三要素是算法、數(shù)據(jù)和算力。而EMR本身是一個(gè)大數(shù)據(jù)平臺(tái),平臺(tái)之上擁有多種數(shù)據(jù),比如傳統(tǒng)的數(shù)據(jù)倉庫數(shù)據(jù)、圖像數(shù)據(jù);EMR有很強(qiáng)的調(diào)度能力,可以很好地吊調(diào)度GPU和CPU資源;其結(jié)合機(jī)器學(xué)習(xí)算法,就可以成為一個(gè)比較好的AI平臺(tái)。

典型的AI開發(fā)流程如下圖所示:首先是數(shù)據(jù)收集,手機(jī)、路由器或者日志數(shù)據(jù)進(jìn)入大數(shù)據(jù)框架Data Lake;然后是數(shù)據(jù)處理,收集到的數(shù)據(jù)需要通過傳統(tǒng)的大數(shù)據(jù)ETL或特征工程進(jìn)行處理;其次是模型訓(xùn)練,經(jīng)過特征工程或ETL處理后的數(shù)據(jù)會(huì)進(jìn)行模型的訓(xùn)練;最后對(duì)訓(xùn)練模型進(jìn)行評(píng)估和部署;模型預(yù)測的結(jié)果會(huì)再輸入到大數(shù)據(jù)平臺(tái)進(jìn)行處理分析,整個(gè)過程循環(huán)往復(fù)。

下圖展示了AI開發(fā)的流程,左側(cè)是單機(jī)或者集群,主要進(jìn)行AI訓(xùn)練和評(píng)估,包含數(shù)據(jù)存儲(chǔ);右側(cè)是大數(shù)據(jù)存儲(chǔ),主要進(jìn)行大數(shù)據(jù)處理,如特征工程等,同時(shí)可以利用左側(cè)傳輸?shù)臋C(jī)器學(xué)習(xí)模型進(jìn)行預(yù)測。
AI開發(fā)的現(xiàn)狀主要有以下兩點(diǎn):
? 兩套集群運(yùn)維復(fù)雜:從圖中可以看出,AI開發(fā)涉及的兩套集群是分離的,需要單獨(dú)維護(hù),運(yùn)維成本復(fù)雜,容易出錯(cuò)。
? 訓(xùn)練效率較低:左右兩側(cè)集群需要大量數(shù)據(jù)傳輸和模型傳輸,帶來較高的端到端訓(xùn)練的延遲。

EMR作為統(tǒng)一的大數(shù)據(jù)平臺(tái),包含了很多特性。最底層基礎(chǔ)設(shè)施層,其支持GPU和CPU機(jī)器;數(shù)據(jù)存儲(chǔ)層包括HDFS和阿里云OSS;數(shù)據(jù)接入層包括Kafka和Flume;資源調(diào)度層計(jì)算引擎包括 YARN、K8S和Zookeeper;計(jì)算引擎最核心的是E-learning平臺(tái),基于目前比較火的開源系統(tǒng)Spark,這里的Spark用的是jindo Spark,是EMR團(tuán)隊(duì)基于Spark改造和優(yōu)化而推出的適用于AI場景下的版本,除此之外,還有PAI TensorFlow on Spark;最后是計(jì)算分析層,提供了數(shù)據(jù)分析、特征工程、AI訓(xùn)練以及Notebook的功能,方便用戶來使用。
EMR平臺(tái)的特性主要有以下幾點(diǎn):
? 統(tǒng)一的資源管理與調(diào)度:支持CPU、Mem和GPU的細(xì)粒度的資源調(diào)度和分配,支持YARN和K8S的資源調(diào)度框架;
? 多種框架支持:包括TensorFlow、MXNet和Caffe等;
? Spark通用的數(shù)據(jù)處理框架:提供Data Source API來方便各類數(shù)據(jù)源的讀取,MLlib pipeline廣泛用于特征工程;
? Spark+深度學(xué)習(xí)框架:Spark和深度學(xué)習(xí)框架的集成支持,包括高效的Spark和TensorFlow之間的數(shù)據(jù)傳輸,Spark資源調(diào)度模型支持分布式深度學(xué)習(xí)訓(xùn)練;
? 資源監(jiān)控與報(bào)警:EMR APM系統(tǒng)提供完善的應(yīng)用程序和集群監(jiān)控多種報(bào)警方式;
? 易用性:Jupyter notebook以及Python多環(huán)境部署支持,端到端機(jī)器學(xué)習(xí)訓(xùn)練流程等。

EMR E-Learning集成了PAI TensorFlow,其支持對(duì)深度學(xué)習(xí)的優(yōu)化和對(duì)大規(guī)模稀疏場景的優(yōu)化。
TensorFlow on Spark
經(jīng)過市場調(diào)研發(fā)現(xiàn),大多數(shù)的客戶在深度學(xué)習(xí)之前的數(shù)據(jù)ETL和特征工程階段使用的都是開源計(jì)算框架Spark,之后的階段廣泛使用的是TensorFlow,因此就有了將TensorFlow和Spark有機(jī)結(jié)合的目標(biāo)。TensorFlow on Spark主要包含了下圖中的六個(gè)具體設(shè)計(jì)目標(biāo)。

TensorFlow on Spark從最底層來講實(shí)際上是PySpark應(yīng)用框架級(jí)別的封裝。框架中實(shí)現(xiàn)的主要功能包括:首先調(diào)度用戶特征工程任務(wù),然后再調(diào)度深度學(xué)習(xí)TensorFlow任務(wù),除此之外還需要將特征工程的數(shù)據(jù)高效快速地傳輸給底層的PAI TensorFlow Runtime進(jìn)行深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的訓(xùn)練。由于Spark目前不支資源的異構(gòu)調(diào)度,假如客戶運(yùn)行的是分布式TensorFlow, 就需要同時(shí)運(yùn)行兩個(gè)任務(wù)(Ps任務(wù)和Worker任務(wù)),根據(jù)客戶需求的資源來產(chǎn)生不同的Spark executor,Ps任務(wù)和Worker任務(wù)通過Zookeeper來進(jìn)行服務(wù)注冊(cè)??蚣軉?dòng)后會(huì)將用戶寫的特征工程任務(wù)調(diào)度到executor中執(zhí)行,執(zhí)行后框架會(huì)將數(shù)據(jù)傳輸給底層的PAI TensorFlow Runtime進(jìn)行訓(xùn)練,訓(xùn)練結(jié)束后會(huì)將數(shù)據(jù)保存到Data Lake中,方便后期的模型發(fā)布。
在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中,數(shù)據(jù)交互是可以提升效率的點(diǎn),因此在數(shù)據(jù)交互部分,TensorFlow on Spark做了一系列優(yōu)化。具體來講采用了Apache Arrow進(jìn)行高速數(shù)據(jù)傳輸,將訓(xùn)練數(shù)據(jù)直接喂給API TensorFlow Runtime,從而加速整個(gè)訓(xùn)練流程。
TensorFlow on Spark的容錯(cuò)機(jī)制如下圖所示:最底層依賴TensorFlow的Checkpoints機(jī)制,用戶需要定時(shí)的將訓(xùn)練模型Chenpoint到Data Lake中。當(dāng)重新啟動(dòng)一個(gè)TensorFlow的時(shí)候,會(huì)讀取最近的Checkpoint進(jìn)行訓(xùn)練。容錯(cuò)機(jī)制會(huì)根據(jù)模式不同有不同的處理方式,針對(duì)分布式任務(wù),會(huì)啟動(dòng)Ps和Worker任務(wù),兩個(gè)任務(wù)直接存在daemon進(jìn)程,監(jiān)控對(duì)應(yīng)任務(wù)運(yùn)行情況;對(duì)于MPI任務(wù),通過Spark Barrier Execution機(jī)制進(jìn)行容錯(cuò),如果一個(gè)task失敗,會(huì)標(biāo)記失敗并重啟所有task,重新配置所有環(huán)境變量;TF任務(wù)負(fù)責(zé)讀取最近的Checkpoint。
TensorFlow on Spark的功能和易用性主要體現(xiàn)在以下幾點(diǎn):
? 部署環(huán)境多樣:支持指定conda,打包python運(yùn)行時(shí)virtual env 支持指定docker
? TensorFlow 架構(gòu)支持:支持分布式TensorFlow原生PS架構(gòu)和分布式Horovod MPI架構(gòu)
? TensorFlow API支持:支持分布式TensorFlow Estimator高階API和分布式TensorFlow Session 低階API
? 快速支持各種框架接入:可以根據(jù)客戶需求加入新的AI框架,如MXNet


EMR客戶有很多來自于互聯(lián)網(wǎng)公司,廣告和推送的業(yè)務(wù)場景比較常見,下圖是一個(gè)比較典型的廣告推送業(yè)務(wù)場景。整個(gè)流程是EMR客戶通過Kafka將日志數(shù)據(jù)實(shí)時(shí)推送到Data Lake中,TensorFlow on Spark負(fù)責(zé)的是上半部分流程,其中可以通過Spark的工具如SparkSQL、MLlib等對(duì)實(shí)時(shí)數(shù)據(jù)和離線數(shù)據(jù)進(jìn)行ETL和特征工程,數(shù)據(jù)訓(xùn)練好之后可以通過TensorFlow 框架高效地喂給PAI TensorFlow Runtime進(jìn)行大規(guī)模訓(xùn)練和優(yōu)化,然后將模型存儲(chǔ)到Data Lake中。
在API層面,TensorFlow on Spark提供了一個(gè)基類,該基類中包含了三個(gè)方法需要用戶去實(shí)現(xiàn):pre_train、shutdown和train。pre_train是用戶需要做的數(shù)據(jù)讀取、ETL和特征工程等任務(wù),返回的是Spark的DataFrame對(duì)象;shutdown方法實(shí)現(xiàn)用戶長連接資源的釋放;train方法是用戶之前在TensorFlow中實(shí)現(xiàn)的代碼,如模型、優(yōu)化器、優(yōu)化算子的選擇。最后通過pl_submit命令來提交TensorFlow on Spark的任務(wù)。
FM是一個(gè)比較常見的推薦算法,具體場景是給電影評(píng)分,根據(jù)客戶對(duì)之前電影評(píng)分、電影類型和發(fā)布時(shí)間為用戶推薦潛在的電影。左側(cè)是一個(gè)特征工程,用戶可以使用Spark data source API讀取電影和評(píng)分信息,原生支持Spark所有操作,如join、ETL處理等;右側(cè)是TensorFlow,進(jìn)行模型、優(yōu)化器的選擇。

關(guān)于基于Spark和TensorFlow 的機(jī)器學(xué)習(xí)實(shí)踐是怎么樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

分享題目:基于Spark和TensorFlow的機(jī)器學(xué)習(xí)實(shí)踐是怎么樣的
文章路徑:http://muchs.cn/article20/pjjsco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、響應(yīng)式網(wǎng)站、ChatGPT、云服務(wù)器、、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營