方 偉,黃增強(qiáng),徐建斌,黃 羿,馬新強(qiáng)
基于Spark的分布式機(jī)器人強(qiáng)化學(xué)習(xí)訓(xùn)練框架
方 偉1,2,黃增強(qiáng)3,徐建斌4,黃 羿1,5,馬新強(qiáng)1,5
(1. 浙江大學(xué)智能系統(tǒng)與控制研究所,浙江 杭州 310027;2. 淮北職業(yè)技術(shù)學(xué)院計(jì)算機(jī)科學(xué)技術(shù)系,安徽 淮北 235000;3. 杭州電子科技大學(xué)計(jì)算機(jī)學(xué)院,浙江 杭州 310018;4. 國(guó)家電網(wǎng)浙江省電力有限公司物資分公司,浙江 杭州 310000;5. 重慶文理學(xué)院大數(shù)據(jù)智能計(jì)算與可視化研究所,重慶 402160)
強(qiáng)化學(xué)習(xí)能夠通過(guò)自主學(xué)習(xí)的方式對(duì)機(jī)器人難以利用控制方法實(shí)現(xiàn)的各種任務(wù)進(jìn)行訓(xùn)練完成,有效避免了系統(tǒng)設(shè)計(jì)人員對(duì)系統(tǒng)建?;蛑贫ㄒ?guī)則。然而,強(qiáng)化學(xué)習(xí)在機(jī)器人開(kāi)發(fā)應(yīng)用領(lǐng)域中訓(xùn)練成本高昂,需要花費(fèi)大量時(shí)間成本、硬件成本實(shí)現(xiàn)學(xué)習(xí)訓(xùn)練,雖然基于仿真可以一定程度減少硬件成本,但對(duì)類(lèi)似Gazebo這樣的復(fù)雜機(jī)器人訓(xùn)練平臺(tái),仿真過(guò)程工作效率低,數(shù)據(jù)采樣耗時(shí)長(zhǎng)。為了有效解決這些問(wèn)題,針對(duì)機(jī)器人仿真過(guò)程的平臺(tái)易用性、兼容性等方面進(jìn)行優(yōu)化,提出一種基于Spark的分布式強(qiáng)化學(xué)習(xí)框架,為強(qiáng)化學(xué)習(xí)的訓(xùn)練與機(jī)器人仿真采樣提供分布式支持,具有高兼容性、健壯性的特性。通過(guò)實(shí)驗(yàn)數(shù)據(jù)分析對(duì)比,表明本系統(tǒng)框架不僅可有效提高機(jī)器人的強(qiáng)化學(xué)習(xí)模型訓(xùn)練速度,縮短訓(xùn)練時(shí)間花費(fèi),且有助于節(jié)約硬件成本。
機(jī)器人;強(qiáng)化學(xué)習(xí);Spark;分布式;數(shù)據(jù)管道
目前,大多數(shù)傳統(tǒng)智能機(jī)器人系統(tǒng)都是基于精確模型的控制方法,如果實(shí)現(xiàn)較為精準(zhǔn)可靠的控制性能則需要花費(fèi)大量成本預(yù)先建立精準(zhǔn)模型,且上述機(jī)器人控制模型對(duì)于未知環(huán)境輸入適應(yīng)性不強(qiáng)。強(qiáng)化學(xué)習(xí)與傳統(tǒng)控制方法相比,無(wú)需建立精準(zhǔn)模型,經(jīng)由大量采樣數(shù)據(jù)訓(xùn)練得到可行的控制模型。但是,強(qiáng)化學(xué)習(xí)在模型訓(xùn)練過(guò)程中,大量的數(shù)據(jù)采集需要通過(guò)與機(jī)器人的交互獲得,在使用真實(shí)機(jī)器人進(jìn)行大量數(shù)據(jù)采樣時(shí)存在數(shù)據(jù)獲取速度慢、損耗大等問(wèn)題,特別對(duì)于類(lèi)似四翼飛行器的飛行機(jī)器人,甚至?xí)霈F(xiàn)嚴(yán)重的危險(xiǎn)狀況。為了克服數(shù)據(jù)采樣困難,南加州大學(xué)開(kāi)發(fā)了可用于機(jī)器人強(qiáng)化學(xué)習(xí)的Gazebo仿真器系統(tǒng),一定程度上節(jié)約了訓(xùn)練成本和縮短了訓(xùn)練時(shí)間,加快了采集數(shù)據(jù)的速度。結(jié)合強(qiáng)化學(xué)習(xí)進(jìn)行機(jī)器人系統(tǒng)的訓(xùn)練模擬已經(jīng)有較多的成功先例,如Google的AlphaGo Zero[1]、波士頓動(dòng)力的Atlas[2]等。強(qiáng)化學(xué)習(xí)要想達(dá)到更佳的訓(xùn)練效果也要經(jīng)過(guò)足夠大量采樣的訓(xùn)練,但是限于計(jì)算機(jī)的運(yùn)算能力,訓(xùn)練時(shí)間成為了一個(gè)重要瓶頸,因此很多技術(shù)人員開(kāi)始嘗試在分布式仿真平臺(tái)上進(jìn)行訓(xùn)練,但是目前沒(méi)有專(zhuān)門(mén)針對(duì)機(jī)器人強(qiáng)化學(xué)習(xí)訓(xùn)練的分布式處理框架作為支持,訓(xùn)練效果依然無(wú)法讓人滿意[3]。因此,在現(xiàn)有開(kāi)源框架的基礎(chǔ)上,本文提出一套適用于機(jī)器人強(qiáng)化學(xué)習(xí)的分布式訓(xùn)練框架系統(tǒng),可實(shí)現(xiàn)機(jī)器人控制仿真的并行化加速[4-5]。
2012年加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室開(kāi)源了類(lèi)Hadoop MapReduce[6-8]的通用并行框架Spark。Spark的系統(tǒng)架構(gòu)選擇了經(jīng)典的一主多從結(jié)構(gòu),內(nèi)存計(jì)算使其能夠很好地支持普通的機(jī)器學(xué)習(xí)算法的運(yùn)行,尤其是借助大量數(shù)據(jù)的訓(xùn)練。但是,Spark的分布式迭代作業(yè)是基于任務(wù)級(jí)別,對(duì)強(qiáng)化學(xué)習(xí)這種需要頻繁交換參數(shù)的任務(wù)無(wú)法做到很好地支持[9]。為了解決Spark對(duì)強(qiáng)化學(xué)習(xí)等算法無(wú)法高效支持的問(wèn)題,實(shí)現(xiàn)基于分布式框架Spark與流數(shù)據(jù)處理組件Flume的訓(xùn)練平臺(tái)原型顯得尤為重要。Flume NG是由Cloudera開(kāi)發(fā)的一個(gè)具備高可用性、高可靠性、分布式的日志采集、聚合和傳輸系統(tǒng)[10],其支持定制數(shù)據(jù)發(fā)送,兩者通常被結(jié)合用來(lái)開(kāi)發(fā)具備近實(shí)時(shí)的數(shù)據(jù)管理系統(tǒng),借助此特性,為實(shí)現(xiàn)開(kāi)發(fā)一個(gè)基于Spark與Flume NG的強(qiáng)化學(xué)習(xí)訓(xùn)練平臺(tái)提供了可能。
強(qiáng)化學(xué)習(xí)任務(wù)中參數(shù)的耦合關(guān)系相較機(jī)器學(xué)習(xí)算法更加強(qiáng),所以基于MapReduce結(jié)構(gòu)的Spark任務(wù)抽象方式并不適用分布式設(shè)計(jì),因此有必要獨(dú)立設(shè)計(jì)一種針對(duì)強(qiáng)化學(xué)習(xí)任務(wù)的分布式系統(tǒng)[11]。考慮到工作量的關(guān)系,基于分布式框架Spark進(jìn)行后續(xù)開(kāi)發(fā)能夠更加快速地完成一個(gè)可用、穩(wěn)定的訓(xùn)練框架[12]。因此,如何在MapReduce的結(jié)構(gòu)上進(jìn)一步抽象強(qiáng)化學(xué)習(xí)任務(wù),并提供快速、可靠的服務(wù)是本文原型系統(tǒng)的重點(diǎn)考慮之處。
Spark下的機(jī)器學(xué)習(xí)算法的并行化以K-means[13-14]為例,其步驟分為:①?gòu)臄?shù)據(jù)集中隨機(jī)選擇初始聚類(lèi)中心(K-means++等算法優(yōu)化對(duì)初始類(lèi)中心的選擇有不同處理);②計(jì)算其余所有的點(diǎn)到類(lèi)中心的距離,并把每個(gè)點(diǎn)劃分到離其最近的聚類(lèi)中心所在的類(lèi)別中去(距離公式根據(jù)需要亦有不同);③重新計(jì)算每個(gè)聚類(lèi)中的所有點(diǎn)的均值,并將之作為新的聚類(lèi)中心;④重復(fù)步驟②、③直至聚類(lèi)中心不再改變。Spark的K-means的實(shí)現(xiàn)中將第②步進(jìn)行了并行化處理,第③步將重新計(jì)算后的新的類(lèi)中心數(shù)據(jù)匯總。數(shù)據(jù)集的操作均是通過(guò)彈性分布式數(shù)據(jù)集RDD來(lái)進(jìn)行,而強(qiáng)化學(xué)習(xí)算法通過(guò)自身的經(jīng)歷進(jìn)行自我學(xué)習(xí),其中最重要的3個(gè)因素是狀態(tài)、行為和激勵(lì)參數(shù),所以Spark簡(jiǎn)單的將任務(wù)并行以及單一的數(shù)據(jù)集并不適用于強(qiáng)化學(xué)習(xí)任務(wù),有必要將Spark的抽象方式通過(guò)封裝得到一種新的抽象方式,并設(shè)計(jì)一種合適的數(shù)據(jù)傳遞方式[15-16]。
并行任務(wù)中最重要的控制點(diǎn)是在任務(wù)出現(xiàn)耦合時(shí),耦合點(diǎn)所需要的上一步結(jié)果必須保證其可靠性,即完整的結(jié)果。所以有必要設(shè)計(jì)一種控制機(jī)制,保證并行任務(wù)中參數(shù)傳遞的可靠性,有效地進(jìn)行任務(wù)。
集群處理任務(wù)容易出現(xiàn)的另一個(gè)問(wèn)題是存在節(jié)點(diǎn)失效的風(fēng)險(xiǎn)與可能性,因此失效節(jié)點(diǎn)的任務(wù)重置處理存在一定的必要性,確定的重置作業(yè)能力極大地簡(jiǎn)化了調(diào)試,透明的容錯(cuò)機(jī)制使用戶無(wú)需顯式的處理錯(cuò)誤,而且允許用戶使用廉價(jià)的可搶占資源(例如AWS上的spot實(shí)例),從而在公共云中運(yùn)行時(shí)節(jié)省大量成本。
為了讓強(qiáng)化學(xué)習(xí)任務(wù)能夠在集群上執(zhí)行,針對(duì)基于Spark強(qiáng)化學(xué)習(xí)分布式系統(tǒng)優(yōu)化的需求設(shè)計(jì)了強(qiáng)化學(xué)習(xí)任務(wù)的系統(tǒng)架構(gòu),如圖1所示。合理的任務(wù)調(diào)度結(jié)構(gòu)能夠有效地提高強(qiáng)化學(xué)習(xí)任務(wù)在分布式框架下的執(zhí)行效率。

圖1 系統(tǒng)整體架構(gòu)圖
(1) 全局控制組件。任務(wù)從初始化開(kāi)始,負(fù)責(zé)任務(wù)的調(diào)度,參數(shù)的分發(fā)與收集,同時(shí)對(duì)節(jié)點(diǎn)的運(yùn)行狀況進(jìn)行監(jiān)控,并針對(duì)相應(yīng)的特殊情況(如計(jì)算瓶頸)做出相應(yīng)的處理。
(2) 本地控制組件。初始化后,由全局控制組件根據(jù)用戶配置隨機(jī)選擇相應(yīng)數(shù)量的節(jié)點(diǎn)初始化本地控制組件,負(fù)責(zé)本地任務(wù)的執(zhí)行,任務(wù)所需參數(shù)的獲取與簡(jiǎn)單驗(yàn)證,以及運(yùn)行結(jié)果的上傳。
(3) 本地計(jì)算組件。負(fù)責(zé)執(zhí)行本地控制組件分配的任務(wù),與環(huán)境進(jìn)行交互,得到需要的反饋即激勵(lì)參數(shù)。
(4) 數(shù)據(jù)管道。負(fù)責(zé)本地控制組件與全局控制組件之間參數(shù)、任務(wù)函數(shù)和運(yùn)行結(jié)果的傳遞,需要保證一定的時(shí)效性。
Spark的主要操作有Spark SQL,Spark Streaming,MLlib,GraphX等,詳細(xì)架構(gòu)如圖2所示。

圖2 Spark架構(gòu)圖
本系統(tǒng)框架根據(jù)Spark編程模型進(jìn)一步封裝適合于強(qiáng)化學(xué)習(xí)任務(wù)開(kāi)發(fā)的編程模型。對(duì)Spark的數(shù)據(jù)操作對(duì)象JavaRDD類(lèi)進(jìn)行進(jìn)一步抽象,簡(jiǎn)化數(shù)據(jù)集的操作函數(shù),降低任務(wù)抽象方式的層,將每個(gè)函數(shù)均作為Map操作,即遠(yuǎn)程計(jì)算,同時(shí)提供部分Spark不具備的內(nèi)容。為了提供強(qiáng)化學(xué)習(xí)交互所需要的仿真環(huán)境,本平臺(tái)實(shí)現(xiàn)了RoboSchool環(huán)境的啟動(dòng)入口。調(diào)用啟動(dòng)入口可以初始化仿真環(huán)境的配置,并在遠(yuǎn)程函數(shù)執(zhí)行時(shí)啟動(dòng)初始化的仿真環(huán)境,并給遠(yuǎn)程函數(shù)以相應(yīng)的反饋。其次,為了處理并發(fā)任務(wù)的異構(gòu)持續(xù)時(shí)間問(wèn)題,進(jìn)一步實(shí)現(xiàn)Sync()函數(shù)。調(diào)用Sync()函數(shù)時(shí)監(jiān)控遠(yuǎn)程函數(shù)返回的變量列表,并記錄變量?jī)?nèi)容。同時(shí)Sync()會(huì)一直阻塞監(jiān)控中未完整返回的變量,直至變量完整返回。同步函數(shù)的引入一定程度上提高了高耦合的強(qiáng)化學(xué)習(xí)任務(wù)的容錯(cuò)率。
控制組件的設(shè)計(jì)考慮到任務(wù)抽象方式不同必然會(huì)帶來(lái)任務(wù)調(diào)度的不同,以及后期算法擴(kuò)展、兼容等問(wèn)題,并未使用Spark技術(shù),因此,有必要重新設(shè)計(jì)并實(shí)現(xiàn)一個(gè)新的控制組件。
與Spark的分層調(diào)度解決方案一樣,本平臺(tái)調(diào)度方案也采用了全局控制組件與多節(jié)點(diǎn)的本地控制組件。任務(wù)節(jié)點(diǎn)創(chuàng)建任務(wù)時(shí),先把任務(wù)交給全局控制組件,再由其根據(jù)各子節(jié)點(diǎn)的負(fù)載情況分發(fā)任務(wù),當(dāng)子節(jié)點(diǎn)的負(fù)荷過(guò)載,便將其置入待緩沖節(jié)點(diǎn)序列,等到該節(jié)點(diǎn)的負(fù)荷降至限制之下再釋放。本地控制組件接受任務(wù)后,首先檢索任務(wù)需要的前置條件,然后向全局控制節(jié)點(diǎn)請(qǐng)求所需變量;本地任務(wù)完成后,本地控制組件主動(dòng)向全局控制組件提交該任務(wù)的結(jié)果,結(jié)果由本地及全局控制組件分別存儲(chǔ);全局控制組件在接收到子任務(wù)完成的結(jié)果后更新該子任務(wù)的狀態(tài),具體數(shù)據(jù)交換過(guò)程如圖3所示。

圖3 控制組件之間的數(shù)據(jù)交換
為了適應(yīng)強(qiáng)化學(xué)習(xí)任務(wù)之中的耦合,即參數(shù)傳遞,需要對(duì)Spark的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)進(jìn)行修改,介于修改JavaRDD的難度與局限性,有必要重新構(gòu)建一種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。強(qiáng)化學(xué)習(xí)任務(wù)抽象后參數(shù)的傳遞與流數(shù)據(jù)處理相近,而且Spark與Flume結(jié)合可以做到對(duì)數(shù)據(jù)近實(shí)時(shí)處理,能夠保證任務(wù)處理的速度,因此,數(shù)據(jù)管道采用了Flume NG為基礎(chǔ)框架。
圖4為數(shù)據(jù)管道類(lèi)圖,上行參數(shù)與下行參數(shù)均繼承自參數(shù)數(shù)據(jù)類(lèi),考慮到數(shù)據(jù)均為參數(shù)矩陣或單個(gè)參數(shù),所以統(tǒng)一設(shè)置為L(zhǎng)ist
Sync()的同步原理是檢測(cè)全局控制組件中該任務(wù)在各子節(jié)點(diǎn)的返回結(jié)果是否全部接收,當(dāng)參數(shù)完整獲取后,放棄對(duì)當(dāng)前線程的阻塞。

圖4 數(shù)據(jù)管道類(lèi)圖
在分布式計(jì)算過(guò)程中,模型的傳遞占用了節(jié)點(diǎn)間通信的90%以上,而各個(gè)子模型中存在相當(dāng)程度的重復(fù)工作,有效地壓縮模型可以縮減通信量,提高模型的訓(xùn)練速度。本訓(xùn)練框架按照本地算法計(jì)算得出一個(gè)本地最優(yōu)模型,然后將各個(gè)子節(jié)點(diǎn)的模型進(jìn)行聚合,以1%為步長(zhǎng)逐步刪除參數(shù),經(jīng)過(guò)多次實(shí)驗(yàn)表明,在保證模型質(zhì)量的情況下刪除8%的參數(shù)后,能夠比較快速地完成任務(wù)。
現(xiàn)有的優(yōu)秀的機(jī)器人模擬、強(qiáng)化學(xué)習(xí)訓(xùn)練框架大多是基于Ubuntu平臺(tái)開(kāi)發(fā)的,而用戶使用的系統(tǒng)不一,且版本較雜亂,為了能夠靈活的對(duì)多系統(tǒng)平臺(tái)兼容,且提高平臺(tái)部署的便捷性,引入Docker容器技術(shù)。選擇將框架集成到一個(gè)鏡像中,對(duì)外開(kāi)放通信必須的端口,用于框架與Spark的通信。用戶代碼通過(guò)映射的方式在鏡像啟動(dòng)時(shí)掛載到該鏡像下,在啟動(dòng)腳本中指定子節(jié)點(diǎn)數(shù)量,以及用戶程序入口及其他參數(shù)即可通過(guò)啟動(dòng)腳本啟動(dòng)程序,任務(wù)結(jié)束后啟動(dòng)的鏡像會(huì)根據(jù)任務(wù)啟動(dòng)時(shí)的部署命令自動(dòng)回收鏡像,保證集群資源的可用性。平臺(tái)容器化后,通過(guò)管理容器能夠?qū)崿F(xiàn)對(duì)硬件的更充分、更靈活地使用,Docker與虛擬機(jī)架構(gòu)圖如圖5和圖6所示。

圖5 Docker架構(gòu)

圖6 虛擬機(jī)架構(gòu)
通過(guò)實(shí)驗(yàn)數(shù)據(jù)測(cè)試分析基于Spark的強(qiáng)化學(xué)習(xí)分布式系統(tǒng)與其他傳統(tǒng)平臺(tái)在流數(shù)據(jù)處理性能、計(jì)算成本以及在節(jié)點(diǎn)擴(kuò)展性能等方面,綜合的測(cè)試本平臺(tái)各方面性能表現(xiàn)。表1和表2分別為CPU和GPU實(shí)驗(yàn)平臺(tái)硬件及系統(tǒng)配置說(shuō)明,實(shí)驗(yàn)均在這2個(gè)平臺(tái)進(jìn)行,由于設(shè)備的采購(gòu)時(shí)間不同,因此設(shè)備的價(jià)格以實(shí)驗(yàn)時(shí)的價(jià)格為準(zhǔn)。

表1 CPU實(shí)驗(yàn)平臺(tái)硬件及系統(tǒng)配置說(shuō)明

表2 GPU實(shí)驗(yàn)平臺(tái)硬件及系統(tǒng)配置說(shuō)明
平臺(tái)結(jié)合的模擬環(huán)境在常見(jiàn)的Ray提供的gym,集合了與mujoco相似的RoboSchool等模擬環(huán)境。以上實(shí)驗(yàn)的模擬環(huán)境均使用了較為常見(jiàn)的RoboSchool模擬環(huán)境Walker2d。
流數(shù)據(jù)處理在機(jī)器學(xué)習(xí)或強(qiáng)化學(xué)習(xí)中是常見(jiàn)的操作,能夠體現(xiàn)系統(tǒng)節(jié)點(diǎn)之間數(shù)據(jù)交互的速度與計(jì)算能力,因此是機(jī)器訓(xùn)練學(xué)習(xí)的一個(gè)重要的測(cè)試指標(biāo)。Spark作為本平臺(tái)分布式主體計(jì)算框架,得到了廣泛使用,并形成了成熟的生態(tài)體系。與Spark平臺(tái)進(jìn)行對(duì)比實(shí)驗(yàn)?zāi)軌虺浞烛?yàn)證本實(shí)驗(yàn)平臺(tái)在傳統(tǒng)流數(shù)據(jù)處理方面的性能。
實(shí)驗(yàn)結(jié)果如圖7所示,在CPU數(shù)量較少時(shí)本平臺(tái)要具有更大的優(yōu)勢(shì),此任務(wù)下適當(dāng)?shù)脑黾庸?jié)點(diǎn)數(shù)量的處理方式對(duì)Spark更有效。表3給出了同樣CPU數(shù)量下完成任務(wù)所使用的時(shí)間以及本平臺(tái)所損耗的時(shí)間比例,可以發(fā)現(xiàn)本平臺(tái)對(duì)流數(shù)據(jù)處理能夠?qū)⑦\(yùn)行時(shí)間的損耗保持在–2%~7%。

圖7 流數(shù)據(jù)處理性能對(duì)比

表3 流數(shù)據(jù)處理時(shí)間及損耗對(duì)比
實(shí)際的使用環(huán)境中,集群配置不同、節(jié)點(diǎn)數(shù)量不同、不同實(shí)驗(yàn)所需要的計(jì)算性能的不同等因素都會(huì)對(duì)平臺(tái)提出嚴(yán)格的要求,所以分布式平臺(tái)的節(jié)點(diǎn)擴(kuò)展性是一個(gè)非常重要的性能指標(biāo),一個(gè)可用的分布式平臺(tái)必須具備良好的擴(kuò)展性。
在模擬環(huán)境Walker2d下(圖8),雙足機(jī)器人不斷嘗試向前移動(dòng),當(dāng)機(jī)器人無(wú)法移動(dòng)時(shí)結(jié)束當(dāng)前循環(huán),每次迭代將機(jī)器人的行進(jìn)距離作為獎(jiǎng)勵(lì)反饋給算法。重復(fù)訓(xùn)練實(shí)驗(yàn)并以24為步長(zhǎng)逐漸增加訓(xùn)練使用的CPU數(shù)量,實(shí)驗(yàn)結(jié)果如圖9所示,不同顏色線條代表實(shí)驗(yàn)不同的回合,結(jié)果表明對(duì)于同一個(gè)訓(xùn)練任務(wù),訓(xùn)練節(jié)點(diǎn)的增加在節(jié)點(diǎn)數(shù)量較少時(shí)能夠有效減少訓(xùn)練時(shí)間,隨著節(jié)點(diǎn)的增加訓(xùn)練時(shí)間減少效果逐漸減弱,但是并未因節(jié)點(diǎn)數(shù)量的增加而過(guò)度的增加節(jié)點(diǎn)間通信損耗。

圖8 Walker2d雙足機(jī)器人仿真

圖9 擴(kuò)展性測(cè)試
在任務(wù)執(zhí)行中,框架的健壯性、容錯(cuò)性是任務(wù)能否繼續(xù)順利進(jìn)行的保障,而不是中斷任務(wù),浪費(fèi)已經(jīng)花費(fèi)的時(shí)間與精力。實(shí)驗(yàn)中,通過(guò)隨機(jī)中斷某子節(jié)點(diǎn)的通訊來(lái)模擬子節(jié)點(diǎn)的崩潰現(xiàn)象,觀察框架在出錯(cuò)時(shí)對(duì)錯(cuò)誤的處理能力是否繼承了Spark的健壯性。如圖10所示,實(shí)驗(yàn)分別在第100 s和第200 s隨機(jī)關(guān)閉了一個(gè)節(jié)點(diǎn)的通信,測(cè)試實(shí)驗(yàn)穩(wěn)定的繼續(xù)完成了剩余任務(wù)。本測(cè)試任務(wù)進(jìn)行了10次,均完成了實(shí)驗(yàn)任務(wù),說(shuō)明基于Spark擴(kuò)展的本框架繼承了Spark的健壯性。

圖10 健壯性測(cè)試
Dryad是用于粗粒度數(shù)據(jù)并行應(yīng)用的通用分布式執(zhí)行引擎,具有優(yōu)秀的性能。Dryad應(yīng)用程序?qū)⒂?jì)算頂點(diǎn)與通信通道結(jié)合起來(lái)形成數(shù)據(jù)流圖,通過(guò)在一組可用計(jì)算機(jī)上執(zhí)行該圖的頂點(diǎn)來(lái)運(yùn)行應(yīng)用程序,并通過(guò)文件、TCP管道和共享內(nèi)存FIFO進(jìn)行適當(dāng)?shù)耐ㄐ?。本平臺(tái)與Dryad就在ES算法的訓(xùn)練任務(wù)中的表現(xiàn)進(jìn)行了對(duì)比,實(shí)驗(yàn)結(jié)果如圖11所示,從圖中可以看出本平臺(tái)相對(duì)Dryad能夠更快地進(jìn)行任務(wù)的迭代循環(huán),從而獲得良好的訓(xùn)練效果。

圖11 與Dryad多次實(shí)驗(yàn)對(duì)比
為了解決機(jī)器人模擬與強(qiáng)化學(xué)習(xí)在分布式計(jì)算方面的需求,本框架在Spark與Flume NG的流數(shù)據(jù)處理的基礎(chǔ)上進(jìn)行了補(bǔ)充與封裝,完成了一個(gè)具備一定可用性、穩(wěn)定性、可擴(kuò)展的訓(xùn)練框架。最后,通過(guò)多個(gè)實(shí)驗(yàn)分別驗(yàn)證了本平臺(tái)與傳統(tǒng)框架相比分別在流數(shù)據(jù)處理、健壯性、可擴(kuò)展性方面均具備良好的訓(xùn)練效果。該分布式智能機(jī)器人訓(xùn)練系統(tǒng)已在國(guó)網(wǎng)浙江省電力有限公司物資分公司智能財(cái)務(wù)機(jī)器人發(fā)票分揀中起到了提高算力等作用。
[1] SILVER D, SCHRITTWIESER J, SIMONYAN K, et al. Mastering the game of go without human knowledge [J]. Nature, 2017, 550(7676): 354-359.
[2] EL ALAMI A. A survey of the vulnerable cuvier′s gazelle (gazella cuvieri) in the mountains of ait tamlil and anghomar, central high atlas of morocco [J]. Mammalia, 2018, 83(1): 74-77.
[3] MAILLO J, RAMíREZ S, TRIGUERO I, et al. kNN is: An iterative Spark based design of the k-nearest neighbors classifier for big data [J]. Knowledge Based Systems, 2017, 117: 3, 15.
[4] XI N, SUN C, MA J F, et al. Distributed information flow verification for secure service composition in smart sensor network [J]. China Communications, 2016, 13(4): 119-130.
[5] 趙玲玲, 劉杰, 王偉. 基于Spark的流程化機(jī)器學(xué)習(xí)分析方法[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2016, 25(12): 162-168.
[6] 程敏. 基于PostgreSQL和Spark的可擴(kuò)展大數(shù)據(jù)分析平臺(tái)[D]. 深圳: 中國(guó)科學(xué)院深圳先進(jìn)技術(shù)研究院, 2016.
[7] 陳虹君, 吳雪琴. 基于Hadoop平臺(tái)的Spark快數(shù)據(jù)推薦算法分析與應(yīng)用[J]. 現(xiàn)代電子技術(shù), 2016, 39(10): 18-20.
[8] 喬非, 葛彥昊, 孔維暢. 基于MapReduce的分布式改進(jìn)隨機(jī)森林學(xué)生就業(yè)數(shù)據(jù)分類(lèi)模型研究[J]. 系統(tǒng)工程理論與實(shí)踐, 2017, 37(5): 1383-1392.
[9] 張繁, 袁兆康, 肖凡平, 等. 基于Spark的大數(shù)據(jù)熱圖可視化方法[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2016, 28(11): 1881-1886.
[10] KROHN M, TROMER E. Noninterference for a practical DIFC-based operating system [C]//2009 30th IEEE Symposium on Security and Privacy. New York: IEEE Press, 2009: 61-76.
[11] 羅元帥. 基于隨機(jī)森林和Spark 的并行文本分類(lèi)算法研究[D]. 成都: 西南交通大學(xué), 2016.
[12] 卜堯, 吳斌, 陳玉峰, 等. BDAP:一個(gè)基于Spark的數(shù)據(jù)挖掘工具平臺(tái)[J]. 中國(guó)科學(xué)技術(shù)大學(xué)學(xué)報(bào), 2017, 47(4): 358-368.
[13] 唐振坤. 基于Spark 的機(jī)器學(xué)習(xí)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[D]. 廈門(mén): 廈門(mén)大學(xué), 2014.
[14] 張濱. 基于MapReduce大數(shù)據(jù)并行處理的若干關(guān)鍵技術(shù)研究[D]. 上海: 東華大學(xué), 2017.
[15] 胡俊, 胡賢德, 程家興. 基于Spark的大數(shù)據(jù)混合計(jì)算模型[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2015, 24(4): 214-218.
[16] 皮艾迪, 喻劍, 周笑波. 基于學(xué)習(xí)的容器環(huán)境Spark性能監(jiān)控與分析[J]. 計(jì)算機(jī)應(yīng)用, 2017, 37(12): 3586-3591.
Training Framework of Distributed Robot Reinforcement Learning Based on Spark
FANG Wei1,2, HUANG Zeng-qiang3, XU Jian-bin4, HUANG Yi1,5, MA Xin-qiang1,5
(1.Institute of Cyber Systems and Control, Zhejiang University, Hangzhou Zhejiang 310027, China; 2. Department of Computer Science and Technology, Huaibei Vocational and Technical College, Huaibei Anhui 235000, China; 3. School of Computer Science, Hangzhou Dianzi University, Hangzhou Zhejiang 310018, China; 4. Materials Branch, State Grid Zhejiang Electric Power Company, LTD, Hangzhou Zhejiang 310000, China;5. Institute of Intelligent Computing and Visualization Based on Big Data, Chongqing University of Arts and Sciences, Chongqing 402160, China)
Through autonomous learning, reinforcement learning can train robots to complete various tasks that are difficult for them to implement with control methods, and this can effectively avoid system designers from systemic modeling or rules making. However, the training cost of reinforcement learning in the field of robot development and application is high, and it takes a large amount of time cost and hardware cost to realize learning and training. Although the hardware cost can be reduced to some extent based on simulation, for the complicated robot training platform such as Gazebo, the working efficiency of simulation process is low, and it takes a long time for data sampling. In order to effectively solve these problems, a distributed reinforcement learning framework based on Spark is put forward, which optimizes the usability and compatibility of platform of robot simulation process, offers distributed support for the training of reinforcement learning and robot simulation sampling, and has the characteristics of high compatibility and robustness. Through analyzing and contrasting the experimental data, the system framework can not only effectively improve the training speed of reinforcement learning model of robot and shorten the training time, but also help with the saving of hardware cost.
robot; reinforcement learning; Spark; distribute; data pipeline
TP 242
10.11996/JG.j.2095-302X.2019050852
A
2095-302X(2019)05-0852-06
2019-07-31;
2019-08-24
浙江大學(xué)工業(yè)控制技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室開(kāi)放課題項(xiàng)目(ICT1800413);重慶市發(fā)改委重大產(chǎn)業(yè)技術(shù)研發(fā)項(xiàng)目(2018148208);重慶市教委科技項(xiàng)目(KJ1601129);安徽省高校自然科學(xué)研究重點(diǎn)項(xiàng)目(KJ2018A0713);安徽高校優(yōu)秀青年骨干人才國(guó)內(nèi)訪問(wèn)研修項(xiàng)目(gxgnfx2018108);廣東省重點(diǎn)領(lǐng)域研發(fā)計(jì)劃項(xiàng)目(2019B010120001)
方 偉(1979-),男,安徽淮北人,副教授,碩士。主要研究方向?yàn)闄C(jī)器學(xué)習(xí)、計(jì)算機(jī)視覺(jué)等。E-mail:664288201@qq.com
黃 羿(1976-),女,重慶人,副教授,博士。主要研究方向?yàn)闄C(jī)器學(xué)習(xí)、機(jī)器人及計(jì)算機(jī)視覺(jué)等。E-mail:36931978@qq.com