基于深度增强学习的无监督存储系统性能调优

基于深度增强学习的无监督存储系统性能调优CAPES(ComputerAutomatedPerformanceEnhancementSystem)1,摘要存储系统的参数调整是存储系统优化的一个重要方法,当前的参数调整实践通常涉及大量的基准调

CAPES (Computer Automated Performance Enhancement System)
 

1,摘要

存储系统的参数调整是存储系统优化的一个重要方法,当前的参数调整实践通常涉及大量的基准调整周期,耗时耗力,所以需要一个无监督模型来进行参数调优,深度学习+增强学习可以实现这样一个无监督的存储系统优化模型,小到客户端-服务端系统,大到到数据中心,都可以使用这个模型。

2,问题

参数调优主要有四个问题:(1)由于电脑是一个非线性系统,各种变量相互关联,这使得改变某个参数后很难预测产生的效果。(2)action和reward之间有延迟,因此很难判定系统输入(action)和系统输出(reward)之间的关系。(3)可调节的参数空间,范围巨大。(4)需要24×7的工作量。

深度学习+增强学习可以解决上述问题,尤其是能够解决action和reward之间的延迟问题,具体来说主要的解决方法是Q-Learning与经验重放相结合。

CAPES的主要优点在于:(1)不需要预先了解目标系统。(2)它只需要对目标系统进行很少的更改,设置各项参数时所需的停机时间也很少。(3)它可以连续运行以适应工作负载的动态变化。(4)它可以动态地为静态设置的参数选择最优值。

3,技术背景

Hyperparameter:    超参,属于机器学习算法里面的参数,用来区别目标系统里面的参数。超参主要用来调节改变机器学习算法,也就是在机器学习训练中,通过调超参,来改变算法本身,超参数优化的常用方法有贝叶斯优化、随机搜索和基于梯度的优化。这里与目标系统里的参数相区别,目标系统的参数是作为状态(state)来使用的。

Q-Learning:  即agent如何在环境中采取action来最大化reward, 最终通过reward来学习到Q值经验。agent对系统进行action输入,获得reward和observation(state)。

马尔科夫决策过程:  由于在agent对系统进行actions后,得到的结果不一定就是预测好的,即得到的结果一部分是随机的,一部分处于agent的控制下,因此agent与环境之间的交互通常被构建为马尔科夫决策过程。

CAPES:  在CAPES环境中,我们将目标系统视为环境,调优模块作为agent添加到环境中,agent观察目标系统的状态,然后对目标系统采取action,采取action之后会得到相应的奖励和新的state。

Q-Learning:   Q(S,a) = r + γ max Q(S’,a’)  ,r代表奖励reward。这个公式被称为贝尔曼公式,它能够解决信贷分配问题(也就是前面提到得action和reward之间的延迟问题),因为迭代求解这个方程不需要知道动作和奖励之间的延迟。但是只使用Q-Learning的贝尔曼公式有一个致命问题,那就是状态空间过大的话,Q-table会变得无限大,解决这个问题的办法是通过神经网络实现q-table。输入state,输出不同action的q-value。神经网络通常使用非线性动作值函数逼近器来表达Q-function,然而,当使用非线性函数逼近器时,强化学习是不稳定的,甚至是发散的,所以这种就要使用经验重放来解决这个问题。

经验重放:  强化学习由于state之间的相关性存在稳定性的问题,因为智能体去探索环境时采集到的样本是一个时间序列,样本之间具有连续性,所以需要打破时间相关性,解决的办法是在训练的时候存储当前训练的状态到记忆体M,更新参数的时候随机从M中抽样mini-batch进行更新。具体地,M中存储的数据类型为 <s,a,r,s′>,M有最大长度的限制,以保证更新采用的数据都是最近的数据。经验重放的最终目的是防止过拟合。

  • Exploration:在更新Q-function时,只针对已经被agent处理的state进行Q-function的更新,对于未处理的state,只能用以前的经验进行处理,所以需要agent进行尽可能多的探索(在训练过程中),所以在刚开始训练的时候,为了能够看到更多可能的情况,需要对action加入一定的随机性。
  • Exploitation:随着训练的加深,逐渐降低随机性,也就是降低随机action出现的概率。

4,算法

基于深度增强学习的无监督存储系统性能调优

整个存储系统调优模型如图所示:(1)  Monitor agent 用来收集performance indictors(即state)和reward,并发送到后台接口程序。(2)后台接口程序将performance indictors 和reward放入Replay DB,Replay DB中存储的数据类型为 <s,a,r,s′>,Replay DB的设计就是为了上述所讲的经验重放。(2)深度增强学习引擎调用Replay DB中的数据进行训练,在固定的时间间隔中,深度增强学习引擎将action发送到后台接口程序,然后后台接口程序将action发送到Control agent ,Control agent 根据action对目标系统做出相应的改变。

算法过程总结如下:

1.随机初始化一个状态 s,初始化记忆池(Replay DB),设置观察值。

2.循环遍历(是永久遍历还是只遍历一定次数这个自己设置):

  (1)根据策略选择一个行为(action)。

  (2)执行该行动(aaction),得到奖励(reward)、执行该行为后的状态 s`和游戏是否结束 done。

  (3)保存 s, a, r, s`, done 到记忆池里。

  (4)判断记忆池里的数据是否足够(即:记忆池里的数据数量是否超过设置的观察值),如果不够,则转到(5)步。

         ① 在记忆池里随机抽取出一部分数据做为训练样本。

         ② 将所有训练样本的 s`做为神经网络的输入值,进行批量处理,得到 s`状态下每个行为的 q 值的表。

         ③ 根据公式计算出 q 值表对应的 target_q 值表。

             公式:Q(s, a) = r + Gamma * Max[Q(s`, all actions)]

         ④ 使用 q 与 target_q 训练神经网络。

  (5)判断游戏(目标系统是否运行结束)是否结束。

         ① 游戏结束,给 s 随机设置一个状态,再执行(1),(2),(3),(4)。

         ① 未结束,则当前状态 s 更新为 s`(意思就是当前的状态变成 s`,以当前的 s`去action,得到r,得到执行该行为后的状态 s`’和游戏是否结束 done)。

基于深度增强学习的无监督存储系统性能调优

5,具体实现过程

目标系统:Lustre 文件系统,Red Hat Enterprise Linux/CentOS
7, Python 3.5

代码编写实现:Python3

深度神经网络实现:Tensorflow

Replay DB:SQLite

工作负载采用filebench实现

主要的难点:系统环境的搭建!!

 

 

 

6,实验过程与结果分析

(1)随机读写比率如下:9 : 1,  4 : 1,  1 : 1,  1 : 4,  1 : 9

基于深度增强学习的无监督存储系统性能调优

 

我们可以看到,当写占据主导时,调优系统的作用比较明显,同时可以看到,训练24小时的效果明显好于训练12小时。因此,训练需要较长时间来进行聚集,拟合。

 

(2),filebench文件服务器调优:filebench文件服务器是一种合成负载,用来模拟忙碌的I/O文件负载,这种文件负载大型数据存储中心很常见,具体filebench模拟过程参考filebench操作。

        连续写调优:对采用连续写的工作负载进行调节。

 

基于深度增强学习的无监督存储系统性能调优

从实验结果我们可以看到,对于Filebench fileserver,采用12小时训练的CAPES,调优效果不明显,甚至有变差的趋势,这是因为使用Q-Learning时,系统的状态空间过大,Q-Learning的训练还有没拟合,因此需要更长的时间进行聚合,可以看到24小时的聚合效果更好,I/O生产量增长了17%。

7,总结与展望

在这个实验中,CAPES能够找到分布式存储系统的最佳拥塞窗口大小,最佳I/O速率限制等值。相比较人工调整存储系统参数,CAPES是基于无监督学习的,能够随时随地自动调整,而且由于是非入侵式的,在调整时不影响系统的正常工作,结合深度学习,CAPES能够在几乎无限的参数空间中找到最佳值。因此CAPES能够减少管理成本和提升计算机效率。

虽然实验用在了分布式存储系统上,但实验没有做任何前提假设,而且CAPES不需要对系统有前提认知,因此CAPES可以用在任何存储系统的优化上。

今天的文章基于深度增强学习的无监督存储系统性能调优分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/87754.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注