王興豪 盧光全 付麗萍
摘 要:深度學(xué)習(xí)并行化在加速模型訓(xùn)練、提高預(yù)測(cè)精度等方面具有重要作用。文章從數(shù)據(jù)并行、梯度累積算法兩方面對(duì)深度交通時(shí)間預(yù)測(cè)模型(Travel Time Estimation Based on Deep Neural Networks, Deep TTE)進(jìn)行了并行優(yōu)化。實(shí)驗(yàn)以成都出租車數(shù)據(jù)作為數(shù)據(jù)集進(jìn)行了并行模式的訓(xùn)練與評(píng)估,實(shí)驗(yàn)效果相較于Deep TTE,收斂速度有明顯提升,RMSE降低了50.12%,MAPE降低了62.3%,MAE降低了56.02%。
關(guān)鍵詞:深度強(qiáng)化學(xué)習(xí);數(shù)據(jù)并行;梯度累加
0? ? 引言
隨著深度學(xué)習(xí)的發(fā)展,網(wǎng)絡(luò)模型的設(shè)計(jì)偏向于更多的網(wǎng)絡(luò)層數(shù)和每層網(wǎng)絡(luò)神經(jīng)元的個(gè)數(shù),盡管這樣的設(shè)計(jì)能夠使模型具備更高的精度,但是隨著網(wǎng)絡(luò)層數(shù)和每層網(wǎng)絡(luò)神經(jīng)元個(gè)數(shù)的增加,訓(xùn)練過程中網(wǎng)絡(luò)收斂的速度卻大大降低,并且網(wǎng)絡(luò)模型所擁有的參數(shù)總量也會(huì)急劇增長,進(jìn)而導(dǎo)致網(wǎng)絡(luò)模型過于龐大,使其只有在分割網(wǎng)絡(luò)模型的前提下才能在GPU上進(jìn)行訓(xùn)練。在深度學(xué)習(xí)研究領(lǐng)域中,并行計(jì)算方法[1]在提高訓(xùn)練速度,加快模型收斂方面發(fā)揮了重要作用。本文針對(duì)交通預(yù)測(cè)模型(Travel Time Estimation Based on Deep Neural Networks, Deep TTE)進(jìn)行了并行優(yōu)化,實(shí)現(xiàn)訓(xùn)練加速與提高精度的任務(wù)。
1? ? 網(wǎng)絡(luò)架構(gòu)
1.1? 數(shù)據(jù)并行
數(shù)據(jù)并行是指將數(shù)據(jù)量劃分為若干份,交予不同的處理機(jī)進(jìn)行獨(dú)立計(jì)算[2],如圖1所示。在數(shù)據(jù)并行化過程中,網(wǎng)絡(luò)模型被復(fù)制到GPU群組中,然后將數(shù)據(jù)集按照數(shù)據(jù)量借助切片算法進(jìn)行劃分,每個(gè)GPU個(gè)體針對(duì)各自得到的數(shù)據(jù)進(jìn)行并行的前向傳播計(jì)算得到損失的均值,最后利用反向傳播更新每個(gè)GPU個(gè)體中的模型參數(shù),完成一次輪詢計(jì)算過程。
為了保證GPU群組在訓(xùn)練過程中實(shí)現(xiàn)負(fù)載均衡,人們使用了如下所示作用于輸入數(shù)據(jù)的切片算法。
該算法將首個(gè)GPU個(gè)體與其他個(gè)體分離開來,首個(gè)GPU的數(shù)據(jù)量可由用戶自由分配,而其他個(gè)體的數(shù)據(jù)量是由數(shù)據(jù)總量與首個(gè)GPU個(gè)體數(shù)據(jù)量的差值決定的,繼而做到了用戶對(duì)GPU群組數(shù)據(jù)量的自由控制。直接計(jì)算均值會(huì)因?yàn)槌óa(chǎn)生浮點(diǎn)數(shù),而輸入數(shù)據(jù)量只能以整數(shù)做計(jì)量單位,這種情況會(huì)產(chǎn)生數(shù)據(jù)損失,所以當(dāng)首個(gè)GPU的數(shù)據(jù)量小于其他個(gè)體數(shù)據(jù)量的均值時(shí),本研究設(shè)計(jì)了防止數(shù)據(jù)損失的切片算法,按照GPU群組內(nèi)每個(gè)GPU個(gè)體數(shù)據(jù)量的實(shí)際分布設(shè)置chunk size,而原始數(shù)據(jù)的數(shù)據(jù)量與chunk size總和的差值就是該次計(jì)算的數(shù)據(jù)損失,針對(duì)該次數(shù)據(jù)損失,本研究將其平均補(bǔ)充給除首個(gè)GPU個(gè)體的其他個(gè)體即可。
1.2? 梯度累加
強(qiáng)化學(xué)習(xí)對(duì)策略梯度的優(yōu)化是加快決策的重要方面,結(jié)合強(qiáng)化學(xué)習(xí)策略梯度算法和深度學(xué)習(xí)的訓(xùn)練過程,本研究可以從算法干擾方式和運(yùn)行步驟兩個(gè)方面進(jìn)行自適應(yīng)控制[3],最終實(shí)現(xiàn)依據(jù)最大梯度變化值[4]自適應(yīng)的梯度累加算法。
梯度累加算法的主要思想是通過疊加一定量的局部特征之后再進(jìn)行模型權(quán)重的更新,減少更新的次數(shù)來縮減訓(xùn)練時(shí)間,并且梯度累加能夠降低局部誤差。本研究將模型訓(xùn)練的主要過程跟強(qiáng)化學(xué)習(xí)過程分置于兩個(gè)進(jìn)程中并行執(zhí)行。如圖2所示,首先,賦予疊加量一個(gè)初值,當(dāng)main process計(jì)算特征次數(shù)達(dá)到α之后才會(huì)進(jìn)行權(quán)重更新,并且將強(qiáng)化學(xué)習(xí)需要的輸入數(shù)據(jù)存放到result queue。PPO2 process在result queue不為空時(shí)進(jìn)行計(jì)算,否則繼續(xù)等待。PPO2會(huì)依照輸入數(shù)據(jù)得到當(dāng)前main process的運(yùn)行狀態(tài)并依據(jù)此狀態(tài)計(jì)算出對(duì)α的決策,當(dāng)policy queue不為空時(shí),main process會(huì)對(duì)α進(jìn)行修改,這樣就完成了一個(gè)輪詢的計(jì)算過程。
在深度學(xué)習(xí)模型訓(xùn)練過程中,雖然整體的損失和預(yù)測(cè)結(jié)果是按照指定的趨勢(shì)變化的,但是局部值是動(dòng)態(tài)波動(dòng)且不確定的。上述強(qiáng)化學(xué)習(xí)的過程是以深度學(xué)習(xí)局部值為輸入數(shù)據(jù),所以本研究應(yīng)該著重考慮如何才能使用當(dāng)前擁有的數(shù)據(jù)在策略上采取最大可能的改進(jìn)策略,而又不會(huì)走得太遠(yuǎn)而意外導(dǎo)致非法策略。PPO2算法的最大的創(chuàng)新就是設(shè)置了用于描述新老策略差異的比例參數(shù)如公式1所示:
智體是強(qiáng)化學(xué)習(xí)的重要組成,它決定了決策的內(nèi)容和方向。定期調(diào)用reset方法重置環(huán)境為初始狀態(tài),在step方法中返回下一個(gè)觀察action并計(jì)算reward,定期調(diào)用render方法輸出環(huán)境的表現(xiàn)(rendition)。過程如算法2所示。
本研究將Input Data定義為累積數(shù)據(jù)的五類數(shù)據(jù)點(diǎn)(初始值、最小值、最大值、最終值、最大波動(dòng)值),目的是希望智體能夠考慮輸入數(shù)據(jù)的趨勢(shì),能夠做出下一步?jīng)Q策。在智體中,本研究定義了3種決策內(nèi)容:增加、減小和不變。同時(shí),本研究還需要用GYM的Box定義一個(gè)具有離散數(shù)量類型的action space,此代表增加或減少的數(shù)據(jù)量。每一步的action決策計(jì)算公式如(2)所示,其中N代表當(dāng)前智能體累積的價(jià)值量,它的主要作用就是記錄對(duì)梯度累積量α最優(yōu)的決策方向,即前一個(gè)價(jià)值量與當(dāng)前α與輸入數(shù)據(jù)標(biāo)準(zhǔn)化乘積的最小值。μ和σ分別代表輸入數(shù)據(jù)均值與標(biāo)準(zhǔn)差。
2? ? 實(shí)驗(yàn)
2.1? 數(shù)據(jù)準(zhǔn)備
為了保證實(shí)驗(yàn)結(jié)果的科學(xué)性與真實(shí)性,本研究使用了Deep TTE論文中所述的成都出租車數(shù)據(jù)集。該數(shù)據(jù)集包括超過1.4萬輛出租車的GPS記錄,時(shí)間是從2014年8月3日到8月30日,訓(xùn)練和測(cè)試所用的數(shù)據(jù)集不包括每日0時(shí)—6時(shí)之間的GPS記錄,并且本研究本研究清除了每日其他時(shí)間段的重復(fù)和異常數(shù)據(jù)。數(shù)據(jù)集由連續(xù)行駛的軌跡組成,每條軌跡包括10~40個(gè)GPS移動(dòng)位置變化、位置時(shí)間變化、距離變化、出租車載客狀態(tài)等信息。
2.2? 并行切片算法
本研究選用了8塊Nvidia V100進(jìn)行測(cè)試。在原始的數(shù)據(jù)并行方式中,GPU所占用的顯存依次下降,尤其是第一塊的顯存占用量相較于第2塊多出了17.57%,而其他的GPU顯存的變化范圍僅在1.24%~8.09%。使用數(shù)據(jù)并行切片算法之后,本研究可以自由調(diào)控第一塊GPU的顯存使用量。該次測(cè)試將batch size設(shè)置為1 024,而第一塊GPU所分配的batch size為70。實(shí)驗(yàn)表明第一塊GPU的顯存使用量相較于原始數(shù)據(jù)并行方法下降了18.63%,并且低于第二塊GPU的使用量。由于切片算法的分割效果,其他GPU的使用量略有提升。
2.3? 指標(biāo)變化
在本實(shí)驗(yàn)中,本研究將RMSE作為主要的評(píng)估指標(biāo),以其在訓(xùn)練過程中的依據(jù)時(shí)間而變化的趨勢(shì)來衡量模型的并行能力以及訓(xùn)練效果。本文的實(shí)驗(yàn)是在8塊nvidia V100 tensor core GPUs 中進(jìn)行的,每個(gè)實(shí)驗(yàn)結(jié)果都是經(jīng)過多次測(cè)試之后的均值。利用8塊GPUs實(shí)現(xiàn)的數(shù)據(jù)并行相較于原始模型在模型收斂速度上提上了36.71%。
如表1所示,數(shù)據(jù)并行與強(qiáng)化學(xué)習(xí)梯度累加的算法模式不僅提升了模型收斂速度,而且大幅度提高了模型預(yù)測(cè)的準(zhǔn)確度,RMSE降低了50.12%,MAPE降低了62.3%,MAE降低了56.02%。
3? ? 結(jié)語
本文對(duì)Deep TTE實(shí)現(xiàn)了兩種并行模式:數(shù)據(jù)并行和梯度累加算法。數(shù)據(jù)并行切片算法有效避免了GPU群組在多GPU調(diào)用中的負(fù)載不均衡問題?;谏疃葟?qiáng)化學(xué)習(xí)的梯度累加算法對(duì)訓(xùn)練速度和預(yù)測(cè)精度都有一定程度的提升效果。未來本研究的工作將集中于對(duì)多數(shù)模型都適用的并行加速算法,并且充分挖掘深度強(qiáng)化學(xué)習(xí)的優(yōu)勢(shì),將更多的預(yù)設(shè)參數(shù)進(jìn)行自主學(xué)習(xí)與動(dòng)態(tài)決策,進(jìn)一步提升深度學(xué)習(xí)的預(yù)測(cè)能力。
[參考文獻(xiàn)]
[1]虎明,李佩,焦李成,等.深度神經(jīng)網(wǎng)絡(luò)并行化研究綜述[J].計(jì)算機(jī)學(xué)報(bào),2018(8):1861-1881.
[2]舒繼武,鄭緯民.大規(guī)模問題數(shù)據(jù)并行性能的分析[J].軟件學(xué)報(bào),2000(5):628-633.
[3]羅成,粟榮濤,王小林,等.自適應(yīng)并行梯度隨機(jī)下降算法及其在相干合成中的應(yīng)用[J].光學(xué)學(xué)報(bào),2014(s1):33-36.
[4]張來線,孫華燕,郭惠超,等.基于圖像灰度梯度最大值累加的自動(dòng)調(diào)焦算法[J].光子學(xué)報(bào),2013(5):605-610.
(編輯 王永超)