Deep learning based auto-tuning for database management system
Abstract:DBMS中有数百个的配置参数控制系统的各个方面,由于他们不是标准化的,所以很难确定最佳配置。本文使用监督和无监督的机器学习方法来选择影响力最大的参数,映射不可见的工作负载,并推荐knobs设置。实现一个名为OtterTune的工具,并且在三个DBMS上进行评估。结果表明这种方法和现有工具或者专家生成的效果一样好甚至更好。在这片论文中,作者基于Ottertune 扩展自动化技术,重用之前会话中收集的训练数据,采用机器学习的方法调整DBMS部署,改善延迟预测。使用GMM 聚类来剪枝,并将集成模型(如随机森林)与非线性模型(如神经网络)结合进行模型预测。
I. INTRODUCTION
本文的主要目标是从以前的调优收集的数据中训练ML模型,模型具有以下功能
- 修剪冗余指标:DBMS内部有数百个内部外部的特定于DBMS的指标,需要将搜索空间限制在一个很小的集合。
- 工作负载映射:基于性能度量将目标DBMS的工作负载与其在repository中最相似的工作负载进行匹配,映射到能够传输经验的之前的工作负载。它通过欧氏距离的帮助下找到近邻,并通过他们的平均值计算出每个负载相应的分数。重复利用先验,减少时间和资源,也能够帮助模型在当前工作负载中在较少的观测情况下做出合理的决策。
- 延迟预测:工作负载的映射最终目的是优化延迟预测。通过回归模型来完成,同时也将会尝试使用神经网络。
II. APPROACH
A. Metrics pruning
这个阶段是要完成冗余指标的修剪。为了能够捕获系统性能的可变性并且区分不同的工作负载,首先考虑具有高可变性的少量指标。这些指标能够减少ML的运行时间的同时还能够捕获工作负载的特征。剪枝分为两步:第一步是因子分析,然后是K-means clustering。
-
数据预处理:
首先必须要先预处理离线工作负载和在线工作负载B和C中的数据
- 删除重复列:删除了在工作负载中只有一个常数值的列或指标
- 布尔类型的knob转换:将布尔类型的knob转化为整数类型(0和1)
- 按照工作负载划分文件:离线工作负载,有58个文件;在线工作负载C,有100个文件; 在线工作负载B5行用于工作负载映射,1行用于验证
-
因子分析(Factor Analysis,以下简称FA): 冗余属性或指标设计到强关联的组件,也涉及不同粒度的指标;这个步骤主要工作的去除强关联的指标。将高维数据转换为低维数据。
-
给定包含任意相关性的实值变量,FA将这些变量减少到一组很小的因子以捕获原始变量的相关性。
-
每个因子都是原始变量的线性组合,因子系数可以类比于线性回归中的系数。
-
每个因子具有单位方差,用于测量数据点围绕均值的离散程度或分散程度。这意味着我们可以根据在原始数据中变异性的多少来对因子进行排序。
-
FA算法输入:矩阵X(X的行对应的是指数,列对应的是knob,Xij 是配置j上指标i的值)
-
FA算法输出:矩阵U(U的行对应的是指数,列对应的是因子,Uij是因子j中度量i的系数)
-
使用U的第i行元素作为指标i的坐标来画散点图,如果指标i和j具有相似的系数,则他们在散点图中相近,就说明两者倾向于在X中强相关,删除冗余指标就是说要删除掉散点图中相近的指标。
-
这里要用的数据是离线工作负载,与Knob相关的所有数据将会被删除,剩余的数据将会被作为FA的输入。特征值大于1的初始30个因子对DBMS的指标数据是非常重要的。
-
-
K-means Clustering:用于将指标识别并且将指标划分成有意义的组。工作原理是对数据进行聚类,将数据分成n个方差相同的组。
- 输入:由FA中获得的30个因子组成的矩阵,选取最接近聚类中心的指标。
- 聚类数的确定:首先对2-15分别进行K均值聚类,确定最佳的聚类数。采用silhouette analysis评估数据点在聚类中的相似性和分离程度,确定最佳的聚类数量,最后确定8为最优聚簇数。
- 为每个簇计算质心,每个簇中选择一个最接近质心的指标,这个指标将会代表整个集群,删除掉其他冗余指标。
B. Automated Tuning
-
预处理:除了”latency”这个指标和knob之外所有经过剪枝的指标进行归一化处理,
-
Gaussian Process Regression:采用高斯过程回归对模型进行训练。用于建模和预测数据点之间的关系,
- GPR需要事先确定先验。在这种情况下,先验指的是之前看到的离线工作负载。先验的协方差由核选择确定。在拟合过程中,最大化对数边际似然来优化超参数,选取性能最好的一种。
-
工作负载映射:理想情况下,下一个组件是对系统有高影响力的Knob进行选择。
工作负载映射是指将现有的target工作负载映射到以前收集的工作负载中。在这篇论文中,将离线工作负载映射为在线工作负载B和C,通过欧几里得距离(两点之间的直线距离)找到最近的邻居,通过在所有指标上取距离的平均值来计算每个工作负载的分数
- 计算两个工作负载之间的欧几里得距离。
- 为每个工作负载计算一个”分数“。在所有指标上取这些距离的平均值,得分最低的工作负载被当作是与目标工作负载最相似的负载。
- 将目标工作负载augment 最近的source 工作负载,如果二者发生冲突,那么保持目标工作负载的配置。
- 在Augmented 的工作负载上进行训练,然后预测在线工作负载B的验证集的时延
-
时延预测
- 第一阶段:在线工作负载B中所有的负载的第6行用于时延的预测,同时,用于训练的离线工作负载附加了来自在线工作负载B的工作负载映射数据。然后估计延迟值。
- 第二阶段:test.csv 工作负载将使用负载B和C中附加的数据训练的模型进行预测,可以增加模型的准确性。
III. EXTENSIONS
A. GMM Clustering
使用Kmeans有一些缺陷,比如,它假设星球总是球形的、只考虑聚类的均值而不考虑方差。对异常值非常敏感。为了克服不足,使用GMM聚类代替Kmeans
GMM 是高斯混合模型(Gaussian Mixture Model)的缩写,是一种用于数据建模和聚类的统计模型。高斯混合模型被广泛应用于模式识别、聚类、特征建模以及生成模型等领域。
B. Random Forest algorithm
用随机森林代替高斯过程回归。随机森林比高斯回归的一点优势是他针对高维数据性能非常好。随机森林可以减少过拟合的情况,GPR并没有提供这种机制。
其次随机森林这种基于频率的方法优于GPR这种基于概率的方法的另一个原因是因为基于频率的方法在在数据较多的情况下性能更好,GPR则需要更多的时间来进行训练。
C. Neural Network
GPR的一个主要缺点是不能很好的处理高维数据,为了克服这一缺点,尝试用神经网络替代。
本文建立了简单的2层神经网络模型,其中包含一个完全连接的隐层,Keras库就是为了这个目的而使用的。输出层没有使用激活函数。采用了高效的ADAM优化算法,优化了MAPE损耗函数。
IV. EXPERIMENTS
A. Evaluation
在K-means聚类中,通过silhoutte分析来评估最优的聚类个数。在工作负载映射阶段,分别尝试了均方误差和平均百分比误差进行评估。从延迟预测结果来看,工作负载映射中的MSE评价标准表现更好。在延迟预测中,采用MAPE进行评估。
B. Scaling and Hyperparameter tuning
实验实现了缩放和不缩放两种情况,并对两种不同的变化进行了分析。第一种进尝试了工作负载映射和GPR模型的输入。第二种除了”Latency“列之外所有数据都被缩放,可以提高系统的性能。
对GPR进行超参数调优,GPR由alpha参数谁平直来控制噪声水平。alpha越低,模型越好,建立随机森林树,对不同估计进行评估,选取评分最高的作为超参数。
V. RESULTS
用GMM聚类代替K-means,无论是度量MAPE还是MSE,都略微提高了模型的性能。但随机森林和神经网络的性能都不如GPR。这主要是因为工作中涉及的数据较少。当给定的数据较少时,神经网络有较高的过拟合倾向。
与基本方法相比,使用EM-clustering算法的指标所做的预测更接近于真实值。然而,神经网络的预测却相差甚远。
(a) Baseline
(b) EM clustering
(c)Neural networks
(d) Random forest
VI. CONCLUSION
自动DBMS调优是一个很活跃的领域。本文利用过去的经验和收集的新信息对DBMS进行自动的调优配置。通过实验表明,本文基本实现达到了69%MAPE的准确度,利用FA、Kmean进行剪枝,GPR进行模型预测。
实验表明,使用EM-clustering来代替Kmeans代替,MAPE减少到了67%。说明GMM可以作为Kmeans的另一种选择,但是不足以得出GMM比Kmeans更好的结论。可以进一步探索,因为EM聚类能较好的适应非线性几何结构,比Kmeans更好。
除此之外,本文还实验了集成方法,如随机森林,MAPE值为78%;像神经网络这种非线性模型,MAPE值为77%;然而,在这两种情况下,GPR的性能比神经网络和随机森林的性能要更好。未来工作可以收集更多数据使用相同的方法进行训练测试。