基于深度强化学习的模型并行化研究
王兴豪 卢光全 付丽萍



摘 要:深度学习并行化在加速模型训练、提高预测精度等方面具有重要作用。文章从数据并行、梯度累积算法两方面对深度交通时间预测模型(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.
(编辑 王永超)
上一篇:网购二手车留神交易平台七大问题
下一篇:高质量发展康养旅游产业的重庆路径






