腾讯云CDB的AI技术实践:CDBTune (2)

我们把系统的内部metric叫做内部指标;外部的性能数据,比如TPS/QPS/Latency叫做外部指标。在数据库参数调优场景中,具体做法是:Agent选择一个参数调整的action(也可能是多个参数)作用于数据库,根据执行action后的外部指标,计算应该获得的即时奖励。

在强化学习对应到参数调优这个场景。此场景的问题是:强化学习需要构造一张表,表明在某种状态下,执行某个操作,获得的收益后,我们才知道执行什么操作获得的收益是最大的。但是数据库的状态空间(性能指标)和动作空间(配置组合)特别大,组合这样一张表出来是不可能的任务。此时深度强化学习就派上用场了,我们要通过一个深度网络逼近这个Q-table的效果,也就是CDBTune的实现方法。

CDBTune实现

img

S为当前数据库性能状态(内部指标),S'为下一状态数据库性能状态

r为即时奖励,w为神经网络参数,a为采取的动作(配置参数的执行)

Q为状态行为价值函数

此模型主要分成两部分。

l数据库环境:如图左边,参数会被设置到这个环境里,然后环境的内部指标和外部指标会被采集,反馈给右边的模型。

l深度强化学习网络:如图右边,实现算法类似DeepMind发布的Nature DQN,采用两个Q-Network。

另外,Replay Memory是我们的记忆池,历史数据会被记录下来。然后训练会不断进行,不断加入记忆池。深度学习网络会从记忆池中随机选取样本机型训练。

在估计一个action的reward的时候,基于一个假设:我们的回报取决于对未来每一步的结果影响;而影响最大的,是最近的回报。通过

img

近似获得这个Q值。对于一个样本(s, a)而言,我们可以得到真正的回报r。这时候我们可以获得他们之前的Loss,调整左边的网络,使两边的Loss越来越小。这样我们的网络就会逐渐收敛,获得更好的推荐。

数据形式和相关策略

img

img

效果评估

img

通过测试可以看到,在不需要任何前期数据收集的情况下,CDBTune通过自我学习参数调优过程,达到较优的参数调优效果,CDBTune调优获得的吞吐和延时性能均达到较为理解的水平。这也是深度强化学习方法相对于其他几种方法的优势所在。

总结:

基于DQN智能调参的优势

化繁为简,无需对负载进行精确分类

调参动作更符合实际调参时的情况

无需获取足够多的样本来,减少前期数据采集的工作量

利用探索-开发(Exploration & Exploitation)特点,降低对训练数据的依赖,减小陷入局部最优的可能性

在实践过程中,我们也遇到一些问题:

选择动作实际运行,训练效率不高,训练周期长

对连续配置离散化处理,可能导致推荐配置的精度不高,收敛较慢

使用动作的最大Q值,导致Q值的过高估计问题

针对这些问题,我们也在不断优化和改进我们的模型,优化参数。相信CDBTune可以在未来取得更好的效果。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygpxy.html