尹将伯, 刘梓田, 梁子寒, 邓艳红, 王昌文, 程建东
(1.北京中电普华信息技术有限公司, 北京 100192;2.华北电力大学, 控制与计算机工程学院, 北京 102206)
数据中心作为云计算的核心基础设施,具有数据汇聚、实时监测、分析等能力,这对数据传输的服务质量(如吞吐量、传输时延等)提出了很高的要求,先进的数据传输策略模型应当能够提高数据吞吐量、降低传输延迟以提供较好的服务质量。数据中心的数据传输目前主要面临以下挑战。
(1) 数据种类繁多,大小不一,易出现负载不均衡等问题,提高了数据传输的延迟,降低了传输效率。
(2) 数据传输的环境较为复杂,传统算法不能及时地适应复杂且动态的环境。
(3) 用户对数据的需求时刻变化。数据的调度策略必须根据实际情况不断做出变化。
除此之外,数据优先级也影响着对用户的服务质量,符合生产需求的优先级分类规则可以使重要的数据尽快传输,缩短用户等待时间。因此不仅要考虑延迟对系统的影响,还要考虑数据的优先级如何分配。
针对以上问题,本文设计一种基于深度强化学习(DRL)的数据动态传输策略,包括数据分类模块和动态调度模块。数据分类模块通过抽取传输数据中不同维度的实时特征,将数据分为5个优先级。动态调度模块利用DRL技术,通过最小化数据流的平均等待时间,实现数据的动态调度,提高数据传输的效率。
强化学习是机器学习的一个热门研究领域[1]。基本思想是模拟人类在学习中“探索”的机制,通过智能体与环境的交互过程中获得的奖励来学习最佳决策行为[2]。近几年,随着深度学习的发展,DRL将强化学习和深度学习深度结合,充分利用了强化学习的决策优势和深度学习的感知优势,为复杂的感知决策问题提供了新方法[3],在很多复杂的决策问题中都取得了很好的成果。DeepRM[4]是最早将DRL技术应用到资源调度管理中的模型,通过监测数据中心当前的CPU、内存和待调度作业的状态,分析并做出相应的决策。基于装箱问题框架的作业调度算法DeepJS[5],可以自动从经验中计算适应度,以最小化一组作业的完成时间,这种方法不限制输入维度,可扩展性较高。
DRL与强化学习类似,主要由智能体、状态、动作、环境、策略以及奖励组成。智能体是强化学习的本体,其在特定环境下的某个初始状态st下根据策略π(s,a)执行某一动作at,此时将会转换到新的状态st+1。对于该状态,环境会反馈一个奖励值[6]。智能体根据新的状态和反馈的奖励按照策略选取新的动作at+1。该交互过程不断重复,根据累积的奖励值可以知道自己在当前状态下应执行的一系列动作。
由于强化学习使用二维表来表示策略,当状态、动作空间较大时,表格就会变得非常庞大,DRL为了解决这一问题,使用神经网络参数化的方法基于策略πθ(s,a)来估计要采取的动作及状态,从而达到降低维度的目的[7]。
DRL的交互过程如图1所示。
图1 深度强化学习基本架构
图2 策略模型示意图
本文设计的数据动态传输策略模型共分为数据分类和动态调度2个模块。
不同类型数据的重要程度不同,应当分配不同的优先级。优先级的级数过少或分类粗糙,会增加等待队列的长度,导致较为重要的数据不能及时传输,降低此类数据的传输效率。级数过多会增加策略模型的决策时间,降低数据传输的实时性。
通过分析数据的主要特征,根据每类数据的重要程度、紧急程度及用户需求,策略模型共分为5个优先级。预警、报错等直接影响系统运行的监测数据最为重要,将其设置为第一优先级,并采用抢占式的调度策略,以保证传输此类数据的实时效率;为了提供更高的通信服务质量以及用户个性化需求,将用户当前申请访问的数据设置为第二级;其余数据为一般类型数据,将按照效用函数设置3个优先级,以抵消动态调度模块可能对优先级队列产生的影响。
针对数据的特点并参考其他研究人员的成果[8],最终选取数据访问频率、最近访问时间及紧急度等维度对数据进行评价,并使用效用函数来计算每类数据的优先等级。
(1) 访问频率
访问频繁的数据,代表其重要程度较高。通过式(1)来计算访问频率的效用函数:
(1)
(2) 最近访问时间
根据数据的历史访问记录来进行数据的分级,核心思想是“如果数据最近被访问过,那么将来被访问的概率会更高,也意味着更为重要”。设定其效用函数为
U2(i)=Tn/(Tn-Tl(i))
(2)
其中,Tn表示当前时间,Tl(i)表示最近一次的访问时间。
(3) 紧急度
不同类型的数据对用户的紧急程度也是不一样的。如预警信息关系着整个系统能否正常运行,所以将此类数据的紧急度设置为1,将用户当前需要访问的数据设置为2,其他数据设置为3。
Pi={1,2,3}
(3)
根据以上3个效用函数,计算总效用值来确定每类数据的优先级:
(4)
当前普遍认为,数据流的传输效率极大影响着数据中心的传输质量。数据中心中大部分都是传输实时性要求较高的数据,所以如何对这类数据进行动态调度,同时满足时刻变化的用户需求,是改善数据传输延迟的关键。
此模块采用了深度确定性策略梯度算法(DDPG)对数据流进行调度。DDPG算法是DRL中经典的无模型、参数化Actor-Critic算法,结合确定性策略梯度算法和Deep Q Network算法进行学习。DDPG算法分为Actor和Critic两部分。Actor通过与环境进行交互得到四元组(st(i)、at(i)、rt、st+1(i)),并放入经验池中。通过经验回放[9],使Critic能够非均匀地抽取输入的数据流状态st(i)及当前采取的动作at(i),即数据流的传输顺序。计算出在当前状态下采取该动作的价值函数Q(s,a|θμ)后,Actor对Q(s,a|θμ)利用策略梯度定理,从而输出数据流在当前状态下最优的传输顺序。
J=E(s~ρβ)[μθ(s)Q(s,a)|(a=μθ(s)]
(5)
同时,Critic根据最优传输顺序进行策略的更新:
(6)
其中,N为数据流的数目。此模块的流程如图3所示。
图3 动态调度模块流程图
此模块的状态空间、动作空间及奖励设计如下。
状态空间:将可变长度的数据集St(i)作为状态空间。每类数据都由其3个维度以及优先级进行标识。
动作空间:从数据到传输顺序的映射。对于每类数据i在时间步t时其动作为at(i)∈[1,N]。其中,N为数据个数。
奖励:数据越及时进行传输,即等待时间越短,用户的满意度越高。对于数据传输来说,等待时间指数据在传输队列中排队等待的时间,其公式为
(7)
其中,ti为此数据流中第i条数据的完成时间,ta,i是第i条数据的提交时间。因此将奖励设定为
(8)
采用与传统调度算法的对比实验来评估本策略模型的性能。
为了验证本策略模型在实际生产环境中的有效性,实验使用4000条在数据中心截取的真实数据,并分为20组数据集。其中,10组数据集用于模型的训练,10组用于测试。
实验假设数据传输的物理链路只有1条,即数据不能同时被传输。为了检验算法是否能够有效降低数据传输的时延,利用2.2小节中的式(7)和平均完成时间作为实验的评价指标。平均完成时间是指完成传输1条数据流所需要的时间。
以下实验将基于DRL的数据动态传输策略模型与SJF算法、MFQ算法进行了比较。SJF算法按照数据量大小分配相应的优先级。MFQ算法以时间片轮转的方式进行调度,是目前公认的较好的一种基于优先级的进程调度算法。
(1) 算法性能比较
从图4可以看出:在平均等待时间及平均完成时间指标下,基于DRL的动态调整策略模型较MFQ算法的性能提升了约10.83%,这是因为基于DRL的策略模型克服了MFQ算法的时间片可能会分割数据流的问题;基于DRL的策略模型的性能略低于SJF算法,这是因为SJF算法优先传输数据量较小的数据流,而这种数据流在数据集中占大多数。
图4 不同算法的性能表现
(2) 不同优先级的表现
3种算法针对不同优先级数据的性能表现如图5所示。由于SJF算法未对数据优先级进行特殊优化,最重要的第一优先级没有得到及时传输,但是不同优先级的数据平均等待时间差距较小;MFQ算法虽然考虑了数据具有不同优先级的特点,但第四、第五优先级数据的平均等待时间都比较高;本文基于DRL的策略模型针对优先级进行了优化,5个优先级数据的平均等待时间较MFQ算法分别提升了7.78%,13.61%、4.52%、24.92%、5.08%,说明基于DRL的调度策略的性能较高。鉴于合理的优先级分类规则,第二、第四优先级的指标有较大的提升。因为策略模型没有平衡每个优先级之间的指标差距,只优先传输高优先级的数据,导致第五优先级等待传输的时间较长,因此需要进一步优化。
图5 不同算法基于优先级的性能表现
本文设计了一种基于深度强化学习的数据动态传输策略模型,针对数据不同维度的特征进行分析并分配优先级,以最小化平均等待时间为优化目标对数据进行调度。对比实验结果表明,该策略模型在数据传输的延迟优化问题上有着较好的性能,有效降低了数据中心在数据传输过程中的延迟,提升了数据传输的效率。