王興豪 盧光全 付麗萍



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