久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

基于Spark的異構(gòu)分布式深度學(xué)習(xí)平臺

 昵稱31096080 2016-03-05

文/張偉德,曲寧,,劉少山

導(dǎo)讀:本文介紹百度基于Spark的異構(gòu)分布式深度學(xué)習(xí)系統(tǒng),,把Spark與深度學(xué)習(xí)平臺PADDLE結(jié)合起來解決PADDLE與業(yè)務(wù)邏輯間的數(shù)據(jù)通路問題,在此基礎(chǔ)上使用GPU與FPGA異構(gòu)計(jì)算提升每臺機(jī)器的數(shù)據(jù)處理能力,,使用YARN對異構(gòu)資源做分配,,支持Multi-Tenancy,,讓資源的使用更有效。

深層神經(jīng)網(wǎng)絡(luò)技術(shù)最近幾年取得了巨大的突破,,特別在語音和圖像識別應(yīng)用上有質(zhì)的飛躍,,已經(jīng)被驗(yàn)證能夠使用到許多業(yè)務(wù)上。如何大規(guī)模分布式地執(zhí)行深度學(xué)習(xí)程序,,使其更好地支持不同的業(yè)務(wù)線成為當(dāng)務(wù)之急,。在過去兩年,百度深度學(xué)習(xí)實(shí)驗(yàn)室在徐偉的帶領(lǐng)下開發(fā)了分布式深度學(xué)習(xí)平臺PADDLE(Parallel Asynchronous Distributed Deep Learning),,很好地滿足了許多業(yè)務(wù)需求,。但由于PADDLE是獨(dú)立的深度學(xué)習(xí)平臺,不能很好地跟其他業(yè)務(wù)邏輯結(jié)合,,導(dǎo)致PADDLE與其他業(yè)務(wù)邏輯間的數(shù)據(jù)通路成為了性能的瓶頸,。為了讓更多的業(yè)務(wù)使用上深度學(xué)習(xí)技術(shù),我們開發(fā)了Spark on PADDLE平臺,,讓PADDLE變成百度Spark生態(tài)系統(tǒng)的一個功能模塊,。在第一版完成之后,我們發(fā)現(xiàn)CPU計(jì)算能力已經(jīng)滿足不了百度巨大的數(shù)據(jù)量需求,,于是我們在Spark on PADDLE的基礎(chǔ)上增加了對異構(gòu)的支持,,充分利用了GPU和FPGA等資源去加速PADDLE上的作業(yè)。

深度學(xué)習(xí)系統(tǒng)PADDLE的設(shè)計(jì)

PADDLE是一個成熟的分布式深度學(xué)習(xí)平臺,,廣泛應(yīng)用于百度的圖像識別,、自然語言理解、語音,、無人車等領(lǐng)域,,其主要的特點(diǎn)是訓(xùn)練算法高度優(yōu)化,支持多GPU/CPU訓(xùn)練,,訓(xùn)練效率高,,對稀疏特征有獨(dú)特的優(yōu)化。

現(xiàn)有的深度學(xué)習(xí)平臺,,一般都是通過單機(jī)方式進(jìn)行訓(xùn)練,,如開源的Caffe平臺也是通過單機(jī)多卡的方式進(jìn)行訓(xùn)練。但當(dāng)數(shù)據(jù)或者模型規(guī)模上去以后,,要提高訓(xùn)練效率,,必然要進(jìn)行分布式訓(xùn)練,主要有數(shù)據(jù)并行和模型并行兩種方法,。

數(shù)據(jù)并行是分布式深度學(xué)習(xí)用得最多的并行方法,。所謂數(shù)據(jù)并行,就是因?yàn)橛?xùn)練數(shù)據(jù)規(guī)模非常大,,需要把數(shù)據(jù)拆分,,把模型分布到N個機(jī)器訓(xùn)練,。但是因?yàn)樽罱K訓(xùn)練的是一個模型,同時每個機(jī)器只能分配到一部分?jǐn)?shù)據(jù),,訓(xùn)練的同步和收斂性必須得到保證,。最經(jīng)典的做法是在《Parameter Server for Distributed Machine Learning》中提到的用參數(shù)服務(wù)器(Parameter Server)的方法。具體的想法是用模型參數(shù)服務(wù)的方法來同步參數(shù)的更新,,每個參數(shù)服務(wù)器只負(fù)責(zé)同步公共參數(shù)的一部分,。舉個例子來說,如果模型M,,被分布到N個機(jī)器上面訓(xùn)練,每個機(jī)器拿到一部分?jǐn)?shù)據(jù),,假設(shè)訓(xùn)練的參數(shù)集合是W,,每個機(jī)器首先進(jìn)行本地訓(xùn)練,假設(shè)他們初始化參數(shù)都是,,根據(jù),,每臺機(jī)器都能算出相應(yīng)的代價函數(shù)的梯度,一般按照單機(jī)神經(jīng)網(wǎng)絡(luò)反向傳播的方式,,每個層都可以梯度來得到參數(shù)的修正值,,這樣參數(shù)就變成因?yàn)槭嵌鄼C(jī),每個節(jié)點(diǎn)對參數(shù)的修正量不同,,就會多了一個步驟把各自參數(shù)的修正量push給參數(shù)服務(wù)器,,由它統(tǒng)一決策下個訓(xùn)練循環(huán)的修正量,這樣大家的訓(xùn)練模型就會被統(tǒng)一起來,。 

圖1 數(shù)據(jù)并行


圖1展示了深度學(xué)習(xí)數(shù)據(jù)并行的部署架構(gòu),。一般分為以下步驟;

  • 訓(xùn)練數(shù)據(jù)預(yù)處理,,把數(shù)據(jù)切分為data shards,;

  • 每個機(jī)器得到同樣的模型定義,并且統(tǒng)一初始化參數(shù);

  • 對于每個訓(xùn)練循環(huán),,每個機(jī)器算各自的梯度,,并且把梯度修正量push給參數(shù)服務(wù)器,參數(shù)服務(wù)器統(tǒng)一計(jì)算,,并且把下一輪迭代的參數(shù)push給本地訓(xùn)練機(jī)器,;

  • 不斷循環(huán),直到模型收斂,。

參數(shù)服務(wù)器的更新算法還分為同步和異步的區(qū)別,。因?yàn)閲?yán)格同步的方法會讓本地訓(xùn)練機(jī)在每一個訓(xùn)練迭代都會進(jìn)行參數(shù)的同步更新,這樣在有慢節(jié)點(diǎn)的情況下,,整個訓(xùn)練都會被拖慢,。異步參數(shù)更新的想法是讓參數(shù)同步的頻率變長,,這樣可以讓本地訓(xùn)練機(jī)迭代好幾個回合以后再進(jìn)行參數(shù)同步,這樣的做法有利有弊,,好處是慢節(jié)點(diǎn)對這個訓(xùn)練的影響變小,,壞處是每個模型訓(xùn)練可能會浪費(fèi)訓(xùn)練周期,因?yàn)橥揭院蟮男拚靠赡芨镜赜?xùn)練機(jī)做的修正量有很大的不同,。這其中對于同步頻率的把握和異步收斂性的問題都是研究的方向,。

模型并行方法如圖2所示,針對參數(shù)規(guī)模達(dá)到單機(jī)無法載入的量級或者模型間存在很少連接的區(qū)塊的場景,,可以考慮做模型并行,,但是模型并行通信開銷和同步消耗超過數(shù)據(jù)并行,效率可能沒有數(shù)據(jù)并行高,。 

圖2 模型并行


PADDLE的設(shè)計(jì)主要采用了單機(jī)做到模型并行,、多機(jī)做到數(shù)據(jù)并行的方式,從而達(dá)到億級模型規(guī)模以上,,大規(guī)模數(shù)據(jù)量的分布式訓(xùn)練,。

PADDLE與業(yè)務(wù)邏輯結(jié)合的痛點(diǎn)

PADDLE是一個獨(dú)立的深度學(xué)習(xí)平臺,不能很好地支持把數(shù)據(jù)從其他平臺接入的需求,。研發(fā)人員通常要等上一階段的工作完成產(chǎn)生PADDLE的輸入數(shù)據(jù)后,,把數(shù)據(jù)先存入HDFS,再讀到PADDLE集群的本地內(nèi)存與硬盤,,等數(shù)據(jù)準(zhǔn)備好以后再用PADDLE去訓(xùn)練模型,。等模型訓(xùn)練好后,再把模型存在HDFS里,,讓下一個業(yè)務(wù)邏輯去讀取,。這個過程不僅耗時長,成為整個計(jì)算流程的瓶頸,,并且都是重復(fù)性的枯燥工作,,影響了PADDLE平臺的推廣,讓很多有需要的團(tuán)隊(duì)沒法用上深度學(xué)習(xí)技術(shù),。

為了解決這個問題,,我們設(shè)計(jì)了Spark on PADDLE架構(gòu),把Spark與PADDLE耦合起來,,讓PADDLE成為Spark的一個模塊,。如圖3所示,,模型訓(xùn)練可以與前端的功能整合,比如特征提取通過RDD的形式進(jìn)行數(shù)據(jù)傳遞,無需通過HDFS進(jìn)行數(shù)據(jù)導(dǎo)流,。這樣一來,,PADDLE與業(yè)務(wù)邏輯間的數(shù)據(jù)通路不再是性能瓶頸。 

圖3 基于百度Spark的通用業(yè)務(wù)邏輯


Spark on PADDLE架構(gòu)1.0版

Spark是近幾年快速興起的大數(shù)據(jù)處理平臺,不僅僅在于它的計(jì)算模型比傳統(tǒng)的Hadoop MapReduce要高效很多,,同時在于它所帶來的生態(tài)系統(tǒng)非常強(qiáng)大?;赟park計(jì)算引擎構(gòu)建的上層應(yīng)用如Spark SQL,、Spark Streaming、Spark MLlib等,,都是很優(yōu)秀的應(yīng)用,,比傳統(tǒng)應(yīng)用性能好幾倍,并且更加穩(wěn)定,。同時與Yarn/Mesos的結(jié)合讓Spark對計(jì)算資源的管理和分配更加靈活,。

Spark在百度內(nèi)部已經(jīng)廣泛應(yīng)用,主要用于數(shù)據(jù)處理和數(shù)據(jù)分析,。但是傳統(tǒng)的數(shù)據(jù)處理平臺必定會有根據(jù)數(shù)據(jù)訓(xùn)練模型的機(jī)制,,廣告系統(tǒng)的CTR預(yù)測就是一個例子,對于用戶產(chǎn)生大量的點(diǎn)擊和瀏覽日志,,Spark可以進(jìn)行處理和清洗。但是對于大規(guī)模模型的訓(xùn)練,,Spark MLlib的支持還是有限,,特別是對于深度學(xué)習(xí)的支持,所以需要解決在Spark上支持PADDLE的問題,。

對于用戶的應(yīng)用程序,,Spark叫驅(qū)動節(jié)點(diǎn)(Driver),可以視為Spark用戶分布式程序調(diào)度和程序流控制的主節(jié)點(diǎn)。Spark程序的具體運(yùn)算都分布在Worker Node上面的Executor跑,。Spark還有一個非常重要的概念叫RDD,,這是一個分布式的分區(qū)(partitioned)數(shù)據(jù)抽象集。Spark所有輸入和輸出數(shù)據(jù)都是以RDD為導(dǎo)向的,,它不僅描述了數(shù)據(jù)集的依賴關(guān)系,,同時還對數(shù)據(jù)進(jìn)行了邏輯上的切分,對一個RDD操作一般都是partition來并行的,。


圖4 Spark DNN訓(xùn)練運(yùn)行構(gòu)架


Spark DNN訓(xùn)練運(yùn)行構(gòu)架如圖4所示,,訓(xùn)練一般分為以下5個步驟:

  • DNN 數(shù)據(jù)預(yù)處理和訓(xùn)練特征準(zhǔn)備

一般這是Spark的強(qiáng)項(xiàng),不管是流式數(shù)據(jù)還是已經(jīng)落盤的數(shù)據(jù)都通過Spark來進(jìn)行數(shù)據(jù)處理,,其中包括數(shù)據(jù)清洗,、特征準(zhǔn)備,然后把得到的訓(xùn)練數(shù)據(jù)用RDD輸出,。

  • 資源申請

Spark訓(xùn)練任務(wù)提交的時候先從Yarn那里拿到對于DNN訓(xùn)練任務(wù)的節(jié)點(diǎn)資源,,比如說一個訓(xùn)練任務(wù)需要4個有4 GPU機(jī)器的節(jié)點(diǎn)。Yarn會對資源做Container式的管理,,不管CPU還是GPU對于Yarn來說都是一個虛擬的資源,。后文會做具體介紹,。

  • 訓(xùn)練初始化

Driver會根據(jù)Yarn分配的資源相應(yīng)分發(fā)模型配置。模型訓(xùn)練資源庫,,并且啟動訓(xùn)練機(jī)和參數(shù)服務(wù)器,,同時初始化模型的初始參數(shù)。

  • 模型訓(xùn)練

訓(xùn)練的數(shù)據(jù)會以RDD的方式輸入到訓(xùn)練機(jī)接口,,以數(shù)據(jù)并行的方式進(jìn)行訓(xùn)練,,并且啟動的訓(xùn)練機(jī)會跟參數(shù)服務(wù)器通信,完成梯度交換和參數(shù)同步,,當(dāng)訓(xùn)練最大迭代達(dá)到或者模型收斂,,則訓(xùn)練終止。

  • 模型預(yù)測

模型可以傳入某一個服務(wù)器集群或者以Spark Streaming的方式進(jìn)行載入并且預(yù)測,。

在Spark on PADDLE 1.0開發(fā)的過程中,,我們驗(yàn)證了Spark確實(shí)可以把ETL、訓(xùn)練數(shù)據(jù)預(yù)處理和深度學(xué)習(xí)訓(xùn)練結(jié)合起來,,同時發(fā)現(xiàn)百度內(nèi)部有很多深度學(xué)習(xí)需求,,需要在1.0的基礎(chǔ)上考慮把Spark on PADDLE平臺化,做到Multi-Tenancy的資源管理,、訓(xùn)練監(jiān)控,、訓(xùn)練容錯等等。

Spark on PADDLE 架構(gòu)2.0版

平臺化是Spark on PADDLE 2.0的主要目標(biāo),。它引入了更多的功能,,主要包括在訓(xùn)練過程中引入了監(jiān)控機(jī)制、容錯機(jī)制,,加入了ML決策模塊做超參數(shù)選擇等,。下面是對Spark on PADDLE 2.0設(shè)計(jì)的分析。

如圖5,、圖6所示,,客戶可以直接與Spark DNN Driver通信啟動DNN訓(xùn)練,Spark DNN Driver啟動一個訓(xùn)練實(shí)例(Training Instance),,并且透傳訓(xùn)練數(shù)據(jù),、訓(xùn)練網(wǎng)絡(luò)配置等信息。一個訓(xùn)練實(shí)例包括了訓(xùn)練所需的整體服務(wù),,包括一組訓(xùn)練器以及對應(yīng)的參數(shù)服務(wù)器,。然后有一個訓(xùn)練Master(Training Master)來管理整個的訓(xùn)練進(jìn)程。同時訓(xùn)練Master管理訓(xùn)練器和超參數(shù)服務(wù)器的生存周期和失敗重啟,。參數(shù)服務(wù)器和訓(xùn)練器會定期給訓(xùn)練Master發(fā)送heartbeat,,確保其正常運(yùn)行。


圖5 Spark on PADDLE 2.0 總體架構(gòu)



圖6 Spark on PADDLE 2.0 Training Instance架構(gòu)


訓(xùn)練過程中的監(jiān)控機(jī)制

當(dāng)訓(xùn)練開始以后,用戶會對訓(xùn)練過程中的一些數(shù)據(jù)進(jìn)行監(jiān)控,,包括訓(xùn)練的每個迭代的loss值,、錯誤率、所用的時間以及訓(xùn)練機(jī)和參數(shù)服務(wù)器的日志進(jìn)行監(jiān)控,,我們在實(shí)現(xiàn)的過程中會在Worker端用消息傳遞的方式(AKKA)向Driver端匯報訓(xùn)練的數(shù)據(jù),。對于整個Spark Job的性能數(shù)據(jù)會依賴Spark本身提供的監(jiān)控功能,所有信息都反饋在監(jiān)控頁面中(Web UI),。

訓(xùn)練過程中的容錯機(jī)制

因?yàn)镈NN在訓(xùn)練過程中,,訓(xùn)練機(jī)和參數(shù)服務(wù)器都是有可能失敗的地方。最簡單的容錯方式是定期對模型的參數(shù)和訓(xùn)練信息做備份,,當(dāng)模型訓(xùn)練失敗以后,,從備份點(diǎn)開始重啟模型訓(xùn)練就可以。訓(xùn)練Master會把這些信息收集起來,,并且匯報給Spark DNN Driver,。對于參數(shù)服務(wù)器的容錯,可以采取增加冗余的方法,,如果一個參數(shù)服務(wù)器掛掉,,訓(xùn)練Master會負(fù)責(zé)重啟相應(yīng)服務(wù),但是會有一個備份的參數(shù)服務(wù)器去負(fù)責(zé)掛掉的參數(shù)服務(wù)器的參數(shù)更新,。

超參數(shù)選擇


圖7 超參數(shù)選擇訓(xùn)練


超參數(shù)是確立模型訓(xùn)練的基礎(chǔ),,Spark在MLlib中引入了超參數(shù)選擇模塊,主要的做法就是通過一定的超參數(shù)選擇算法對模型進(jìn)行并行訓(xùn)練,,最終選擇的超參數(shù)將會被用做最終的模型訓(xùn)練。超參數(shù)的選擇對于深度學(xué)習(xí)很有意義,,包括網(wǎng)絡(luò)拓?fù)?、參?shù)的衰減率、觸發(fā)函數(shù)的選擇都是影響深度學(xué)習(xí)的超參數(shù),。圖7顯示了一個大概的超參數(shù)選擇流程,,模型的特征選擇到歸化系數(shù)(Regulation Parameter)一起配對來訓(xùn)練一個模型,最終評估模塊選擇最終超參數(shù),。在Spark的場景中,,DNN Driver端會跟評估端通過RPC通信來決策需要嘗試什么超參數(shù)。評估端邏輯是在Spark DNN Driver依賴的MLApplication服務(wù),。如果用戶需要對DNN訓(xùn)練模型進(jìn)行超參數(shù)選擇,,則Spark DNN Driver會根據(jù)不同參數(shù)配對啟動多個訓(xùn)練實(shí)例,然后根據(jù)訓(xùn)練來是否需要進(jìn)一步搜索,。

Spark異構(gòu)分布式計(jì)算平臺架構(gòu)

如上所述,,我們已經(jīng)看到Spark on PADDLE能夠使得傳統(tǒng)的深度學(xué)習(xí)可以在更大規(guī)模的分布式系統(tǒng)上運(yùn)行。但是,百度面臨非?,F(xiàn)實(shí)的問題就是巨量的數(shù)據(jù),。在百度內(nèi)部,每天處理的數(shù)據(jù)量都遠(yuǎn)遠(yuǎn)超出了傳統(tǒng)平臺的能力,,會使用到巨量的模型參數(shù),、特征以及訓(xùn)練數(shù)據(jù)。這些巨量數(shù)據(jù)對分布式系統(tǒng)的性能和擴(kuò)展性都提出了更高的要求,。一方面,,我們希望提供可以比擬傳統(tǒng)MapReduce集群規(guī)模的深度學(xué)習(xí)計(jì)算集群,可以并行運(yùn)行大量的深度學(xué)習(xí)任務(wù),;另一方面,,每個深度學(xué)習(xí)模型不可能無限制地切分成更小的單元,因此每個節(jié)點(diǎn)的模型處理能力也是至關(guān)重要的,。

目前以CPU為主的計(jì)算節(jié)點(diǎn)受到本身計(jì)算能力的限制,,遠(yuǎn)遠(yuǎn)不能滿足計(jì)算的需求,因此,,我們需要通過更強(qiáng)大的異構(gòu)計(jì)算來加速現(xiàn)在的計(jì)算平臺,。目前我們的項(xiàng)目主要涉及到兩種計(jì)算資源:GPU和FPGA。GPU可以提供強(qiáng)大的計(jì)算能力,,適用于高密度的計(jì)算類型,;FPGA有低功耗、高度可定制的特點(diǎn),,適合加速很多特定的動態(tài)任務(wù)(本項(xiàng)目使用的FPGA硬件加速由百度美國研發(fā)中心的計(jì)算團(tuán)隊(duì)提供),。

我們的項(xiàng)目正是基于Spark on PADDLE,探索了如何有效地把異構(gòu)資源整合到現(xiàn)在的大規(guī)模分布式系統(tǒng),,以提供高應(yīng)用性能和易用性為目標(biāo),。在滿足前述要求的基礎(chǔ)上,系統(tǒng)需要動態(tài)地對GPU/FPGA資源進(jìn)行管理,,進(jìn)行無縫的調(diào)度,,正如CPU和Memory等資源的調(diào)度一樣。這一功能是通過把資源調(diào)度整合到開源的Yarn系統(tǒng)來實(shí)現(xiàn)的,,而資源隔離方案基于業(yè)界流行的Container技術(shù),。

同時,我們還需要提供簡單易用的編程接口,,以便現(xiàn)有的應(yīng)用程序可以更快地遷移到我們的系統(tǒng)上來,。因?yàn)镾park所有的數(shù)據(jù)都是基于RDD的,我們創(chuàng)建了一類新的RDD,,通過這個RDD,,程序可以直接使用到底層的GPU/FPGA來加速相應(yīng)的計(jì)算。我們知道,真正在GPU/FPGA上完成程序的功能,,還需要提供Kernels,,這里我們采用了業(yè)界最為流行的標(biāo)準(zhǔn)OpenCL接口,以便于將程序移植到不同的GPU/FPGA,??梢钥吹剑粋€特定的功能實(shí)現(xiàn)需要3個部分:一個Scala Driver,,一個C 的Worker以及一個OpenCL Kernel(on GPU/FPGA),。如果常用的功能已經(jīng)集成在MLlib中,那么用戶只需要創(chuàng)建自己的Scala Driver,,通過新的RDD調(diào)用庫里面已經(jīng)支持的函數(shù),,就可以無縫享受到GPU/FPGA資源的加速。


圖8 Spark異構(gòu)計(jì)算平臺架構(gòu)


異構(gòu)系統(tǒng)架構(gòu)如圖8所示,。系統(tǒng)的運(yùn)行過程如下:

  • 首先用戶應(yīng)用程序(Scala Driver)會由App Master啟動,;

  • 然后用戶應(yīng)用程序會向Yarn請求其所需的資源,其中GPU,、FPGA作為不同的資源類別,,與請求CPU資源方式完全一致;

  • 用戶應(yīng)用程序取得所有資源,,由App Master在相應(yīng)的App Slave上啟動Container運(yùn)行用戶程序的一個Scala Worker,;

  • 這時,按照程序Scala Worker的需求,,如果使用到了新的RDD,,便會調(diào)用相應(yīng)的C 的OpenCL程序,如果函數(shù)功能是MLlib內(nèi)嵌的,,那么這部分對用戶也是完全透明的,。

  • OpenCL程序啟動后,會把所分配的數(shù)據(jù)傳輸?shù)紾PU或FPGA上,,然后在GPU或者FPGA上動態(tài)啟動特定的OpenCL Kernel,,處理這些已經(jīng)傳輸過來的數(shù)據(jù),。

  • OpenCL Kernel計(jì)算完成后,,數(shù)據(jù)會自動被拉回到主存,這時OpenCL的程序就可以把結(jié)果返回給Scala Worker,;

  • 最后所有Scala Worker把結(jié)果提交給在App Master上運(yùn)行的用戶程序Scala Driver,。

可以看到,整個流程支持加入了新的GPU/FPGA計(jì)算資源,,還有需要用戶使用新的RDD,。其他方面對用戶程序來說沒有任何額外的改動。

Spark異構(gòu)平臺性能評估

在異構(gòu)平臺架構(gòu)搭建好后,我們首先測試了機(jī)器學(xué)習(xí)底層矩陣運(yùn)算庫的CPU與GPU性能對比,。結(jié)果顯示,,在執(zhí)行同一個計(jì)算方程時,GPU的加速效果很好,,對CPU的加速比大約是30倍,。與此同時,百度美國研發(fā)中心計(jì)算團(tuán)隊(duì)也對Kmeans算法用FPGA進(jìn)行加速,,取得了15到20倍的加速化,,而且FPGA能耗只是CPU的20%。在第二個實(shí)驗(yàn)中,,我們對比了Spark on PADDLE在訓(xùn)練ImageNet時的GPU與 CPU加速比,,發(fā)現(xiàn)使用GPU可以加速30倍,也就是說,,在使用異構(gòu)平臺后我們只用3%的機(jī)器資源就可以完成同樣的計(jì)算,。


圖9 Spark異構(gòu)計(jì)算平臺性能數(shù)據(jù)

在很好地了解了異構(gòu)平臺加速比后,我們也研究了異構(gòu)平臺的可擴(kuò)展性,。測試結(jié)果如圖9所示,,基本上隨著GPU資源的增加,計(jì)算時間也在線性地降低,,表現(xiàn)出很強(qiáng)的可擴(kuò)展性,,可以承受很大的數(shù)據(jù)量與計(jì)算量。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多