基于DRL控制调度配置(翻译)

基于DRL控制

算法1描述了控制器中训练DQN的步骤。经过学习,DQN推导出群集中的每组状态动作(s, a)和值Q( ϕ(s), a; Θ)之间的相关性,值Q表示系统在状态s开始时采取动作a的预计累积折中奖励。需要请注意的是状态s的持续时长可能因处于不同时间而不同在不同,这是因为在集群中等待和运行的作业以及可用资源会不断变化。因此我们使用函数ϕs映射成固定长度,表示为ϕ(s)

算法1控制器中的DQN训练

要求:D:回放记忆;

     Q(ϕ(s), a; Θ):带有参数Θ的价值函数Q

     F:函数Q在线训练的频率;

  1. 用随机权重初始化价值函数Q
  2. 用样本生成器在日志中收集样本;
  3. 在回放记忆D中存放样本;
  4. 预训练函数Q并把f设置为0
  5. for episode 1 to m do
  6.     for time-step t 1 to n do 

  7.         在状态st下用贪婪算法选一个动作at
  8.             执行动作at并让调度器去观察奖励R(st, at)和下一个状态st+1
  9.             把样本(st, at, R( st, at),st+1)加到D中;
  10.            if( f% F==0) then
  11.                 使用一批D中的样本训练函数Q
  12.               end if
  13.            f=f+1
  14.     end for
  15. end for

   在离线预训练阶段(24),控制器收集足够的经验回放样本并用来训练准确的DQN(即深度神经网络(DNN))。这可以让它在真正部署之前验证配置方案,避免在线作业调度中的不安全探索。为此,我们开发了一种新颖的生成器,通过在配置中模拟作业调度来从真实的集群工作负载日志中获取经验回放样本。现有的模拟器如CloudSim(Piraghaj等人,2017)不适合,是因为他们没有考虑调度配置对作业调度的影响。此生成器基于Drools专家规则引擎(dro)实现,具有两个部分。

 

大型集群应用

使用我们的控制器来优化调度程序配置,其捷径是用整个集群中的状态和操作直接训练代理。然而,状态空间S(等式1)和动作空间A(等式2)都随着集群到大小呈指数增长,并且现代集群通常有数千台机器。因此,我们需要为在这里研究的大规模DRL优化问题提出有效的解决方案。

假设集群具有k个用户组,我们利用集群调度程序的层次结构(BhattacharyaCuller等等2013)通过以下方式使用分而治之的方法找到全局最优配置(操作)(i)将高维空间SA分解为每个用户组i(1≤i≤k)的低维子空间S(i)A(i)(ii)训练函数Q( ϕ(s(i))a(i);Θ(i))为每个独立用户组找到其最佳动作a(i)(iii)组成每组的最佳动作以给出配置设置。

aoptglobal=i=1kargmaxaiAiQ(ϕsi,a(i);Θ(i))    (8)

 

通过这种方式,状态和动作空间的大小可以显著减少,每个用户组在每段时间里有少量的优先级队列(24个队列)以及几个到几十个的工作。这意味着DRL代理可以快速找到一个组i的状态为s(i)的最佳动作。大型集群通常有数千个用户和数十个组(例如k = 80)(Verma等人,2015)并且每个组在调度器中具有多个可选资源分配配置(​​例如30)。因此,在k组中存在大量可能的分配组合,其大小随着组大小k(例如8030)呈指数增长,如直接应用枚举方法则可能花费相当长的时间。

因此,我们通过以下方式将上述优化问题转换为等价于多项式时间的DP问题:(i)将组的资源分配的值定义为DRL中的奖励(等式6); (ii)公式化DP问题的最佳子结构; (iii)开发一个算法,计算所有k组的最佳分配值,并从计算出的信息中找到最佳的集群级别的配置。

给定集群中的i个组(1≤i≤k),我们把最优子结构作为分配资源u给这些组并将ui *分配给第i个组时的最大奖励V [iu]

V[i, u] = max{V[i-1,u],R(s(i)*,a(i))+V[i-1,u-ui*]}   (9)

在等式9中,V [iu]的计算具有重叠子问题特性:它基于(i-1)组的最佳子结构,并在计算V [iu](V [0u] = 0)期间一次次重新访问V [i-1u]。因此,这个计算是有两个选择:V [iu]等于V [i - 1u],表示没有资源被分配给第i个组;或V [iu]等于(R(s(i)*,a(i))+ V [i - 1u - ui *])如果该值大于V [i - 1u] ,表示为得到更多奖励将资源ui *分配给第i组,并将(u-ui *)分配给其他(i-1)组。在第二个选择中,ui * = argmax1≤ui≤r{R(s(i), a(i))+V [i - 1u - u(i)]}表示第i组的最佳资源分配,其中s(i)(s(i)*)对应于当其分配的资源是u(i)时的组i的状态(U(I *))

算法2详细说明了搜索集群中资源分配的最佳配置步骤。给定所有k个用户组的可用资源utotal,算法首先以表格的自下而上方式(1行到第9)计算最大延时的减少量V [ir]。之后矩阵R [ir]记录给定iu的最优解(资源分配),并将其用于计算最优的集群配置(1015)

 

算法2 查找最优资源分配方案

规定:utotal:集群中所有可分配资源;

     V [i, u]:当资源分配为u时,前i组的最大DRL奖励;

       R[i,u]:当资源分配为u时,第i组的资源的最佳分配

  1. Set V[i,r] = 0 for 0≤i≤m and 0≤r≤rAlloc ;
  2. Set R[i,r] = 0 for 0≤i≤m and 0≤r≤rAlloc;
  3. for(i=1;i≤k;i++)do
  4.        for (u=1; u ≤ utotal; u++) do
  5.               ui=arg max1≤ui≤r{R(s(i), a(i))+ V [i − 1, u − u(i) ]};
  6.               R[i, u]=ui ;
  7.               V [i, u]=max{V [i − 1, u], R(s(i), a(i))+ V [i − 1,u−ui]};
  8.        end for
  9. end for
  10. i=k;
  11. u=utotal
  12. for (i=k; i > 0; i=i-1) do
  13.       ui=R[i, u];
  14.       r=r-R[i, u];
  15. end for
  16. Return {u1,...,uk}.

 

note:

强化学习面对的输入总是变换的,每当算法做出一个行为,它影响下一次决策输入,而监督学习的输入是独立分布的。agent在探索和开发中权衡,选择一个最大的回报。一般的监督学习不考虑这种平衡,只是开发。

exploration:探索,尝试很多,看是否有更好的。

exploitation:开发,基于经验选最好的。

非监督学习不是学习输入到输出的映射,而是模式,如根据已选物品推荐相类似的物品。强化学习是通过获得反馈,构建可能喜欢物品的知识图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值