LlamaTune论文解读

发布于:2022-10-14 ⋅ 阅读:(380) ⋅ 点赞:(0)
  • 基础概念
    • input:a set of set of n knobs: θ1……θn,范围是Θ1……Θn
    • configuration space:Θ1×……×Θn
    • performance metric is an objective function f:Θ→R ,为参数空间中的每一个配置分配一个性能值
      • 常用的指标有吞吐量、延迟
    • 目标:给定一个工作负载,寻找到一个配置θ*使得性能指标最大(最小)
  • 架构
    • 知识库(KB)
      • 拥有所以之前评估过的样本记录D = {θj,f(θj)},在每次评估新配置时更新
      • 依据优化开始时KB有多少先验知识可用分类
        • 拥有先验知识
        • 初始KB为空
    • 配置优化器
      • 利用知识库来推荐配置(希望能够得到更好的性能)
      • 分类
        • 基于搜索
          • 例如BestConfig,启发式方法将搜索空间分为多个部分,通过剪枝技术选择,可以较快选择下一个评估点但是没有使用知识库,对性能会有损害
        • 基于强化学习
          • 深度策略梯度算法(DDPG),神经网络较复杂,需要多次迭代,对成千上万个评估点进行评估
        • 基于贝叶斯优化(BO)
          • 特点
            • 无梯度的、连续的、基于模型的
            • 尽可能少的评估样本,找到f的最优值
            • 亦可以评估带噪声的样本
          • 两个组成部分
            • surrogate model
              • 一个机器学习模型,给定一组观测值f(θk),构建一个f的近似值,每次评估一个新的点时近似值都会得到完善
              • 为候选的评估点计算utility value,并选择最大值
              • 可以在未探索区域与变现良好区域之间做一个权衡
            • acquisition function
              • 用于选择下一个评估点
          • 通常选择“vanilla” Guassian process(GP)作为surrogate model,但性能做好的是SMAC(基于序列模型的算法配置)
            • SMAC使用随机森林(RF)作为surrogate model
            • GP-BO,使用两个独立内核Matern与Hamming,分别用于连续与分类的特征
    • 实验控制器
      • 在给定的一个配置下,控制器协调工作负载执行得到一个结果,传回知识库
  • 动机
    • Only Tuning Important Knobs
      • 0知识的调节方式可以通过反复迭代最终达到很好的效果,不过这个时间还是非常可观的,如今的数据库动辄成百上千个参数,调整非常费力
      • 目前研究表明,由于不同knobs对于系统性能的影响程度不同,调整少数几个重要的knobs就可以达到大幅优化系统性能的目的
      • 如何正确识别重要的knobs集合是非常重要的挑战
    • Identifying Important Knobs
      • 现有的自动识别重要knobs过程都是基于排名的方法,通常使用空间填充抽样(例如LHS)
      • 最近工作表明SHAP值为调整DBMS提供了最有意义的重要性分数
        • SHAP使用一种博弈论方法分解每个单独功能的影响
        • 不过SHAP方式也不一定最好,论文中SHAP选出的8个参数在YCSB-A压力测试下效果不如手动选的8个参数以及全部参数
  • 低维度调参
    • 目标:针对用户输入的D维配置空间,找到d维的空间,d<<D,然后让d维调参的效果尽量接近D维
    • Synthetic Search Spaces
      • 我们常习惯于一个knob对应一个维度,这样来说每个维度都是有物理意义的,然而对于优化器来说维度的物理意义是不用追究的
      • 因此我们可以人工合成维度,也就是多个维度合并成一个维度,合成knob的一个值可以决定多个knobs值
      • 合成knob本身没有物理意义,但是可以实现降低维度,同时避免了识别重要knobs的需要
      • 合成knob空间Xd,用户给定的空间XD
    • Random Low-Dimensional Projections
      • REMBO方法
        • 低维度d,原始维度D
        • 通过生成一个random projection matrix A(D×d的矩阵,每一个部分都是独立同分布,服从标准正态)
        • Xd中的一个点p(d维向量),通过p' = Ap得到的p'就是D维,相当于还原回了D维度中
        • 如果说XD是无边界的,那求出来的这个p'就是没问题的,但是XD要是有边界的话可能求出来的p'不在XD内,这时候需要找到XD中距离最近的点(剪切了)
      • HeSBO方法(哈希增强子空间)
        • 一种避免剪切的随机线性投影变体
        • 原始搜索空间XD,目标低位空间Xd∈[-1,1]^d
        • 生成一个随机投影矩阵A(D×d维,每一行恰好包含一个非零元素,列数随机,值为±1;列的索引和值的正负号是随机均匀抽样的;具体做法是通过两个uniform哈希函数实现,h为XD每个维度选择非零列,σ确定符号)
        • A提供了一种一对多映射,投影不会落在XD之外,效果表现由于REMBO
    • BO with Random Projects
      • 算法一

        • 用户提供输入
          • d:低维度空间的维数(理想情况下是DBMS重要knobs数量的估计值)
          • n_init:要生成的初始随机样本数
          • N_iters:要执行的迭代次数(时间预算)
        • 过程
          • 生成随即投影矩阵A(只生成一次,在之后的优化过程中保持不变)
          • 给定n_init,采用空间填充采样方法(如LHS),生成初始点集p∈Xd;这些点属于Xd的近似空间,就是XD空间的第一次投影(如果REMBO方法则还有一个clipped过程)
          • 对于每个投影点(包括近似的)计算相应目标函数,一旦对所有初始点进行了评估,这些点的目标函数值将用于初始化surrogate model
          • 循环(N_iters)
            • surrogate model找到一个点p∈Xd能够使得acquisition function最大
            • 通过回顾之前的点集,acquisition function尝试找到一些点,这些点既能够提供未知领域的知识(exploration),也能够通过在已知的表现良好的区域的临近区域探索来寻找知识(expoitation)
            • 将建议的点投影到XD,评估之并更新surrogate model
      • 将点转化为DBMS knobs值
        • 算法中将选择的点映射到高维空间XD=[-1,1]^D,然而实际的DMBS knobs有不同类型的值,例如数字类型范围是[min,max],类别knobs是离散的选项,我们需要将[-1,1]^D的值正确转换为有意义的值
        • 做法
          • 数字类型
            • min-max uniform scaling

              • 对于数字类型的采用这总方法从[-1,1]映射到[min,max]
              • 离散数字的话,将放缩后的值近似到整数值
          • 类别类型(两步转换)
            • 首先将预测值x∈[-1,1]调整到y∈[0,1]
            • 然后将这个区间按照类别数量均分为Bins,最后的y值落在哪个区间就算哪个类
      • 投影空间的维数
        • 如何选择维数d是重要的问题
        • 论文选择的是16维HeSBO投影进行实验
  • Biasing Special Value Sampling Probability(并不是所有knob值都具有相同的语义性能)
    • 数据库中的特殊knob值
      • DMBS的配置空间是异构的,包括数字knob与类别knob;由于类别knob的特殊性(禁用启用组件的内部功能,或者为任务选择互斥算法),可能会对DBMS性能产生显著变化,所以目前最有效的BO方法独立处理每个类别knob值,并不假设其顺序
      • hybrid knob
        • 是数字值,但是当其设置为特定值时会执行与正常操作截然不同的操作(例如禁用某些功能),其余情况下则是正常的数值类knob
        • Biasing Special Value Sampling Probability(一种能够使得优化器在调优的早期观察特殊值的影响)
          • 方法步骤

            • 假定这个knob的范围是[0,max],其中0为特殊值
            • 开始优化前假定一个bias,即knob选择特殊值的概率p
            • 然后我们得到一个建议值v∈[0,max]后,将v缩放到[0,1]区间内,如果缩放的值落在了[0,p)内部,就选择特殊值,否则还原回v
          • Bias选取
            • 假设随机配置初始集合由n_init个样本组成,bias设置为p的话,评估的样本遵循二项分布B(n_init, p)
            • 默认情况下将p设置为20%,这样可以使得在初始随机配置集中评估特殊值(至少一次)有90%的置信水平
            • 注意
              • 即使具有较高的置信水平,仍然有概率在初始迭代期间不评估(然而通常优化器定期提出的随机配置也偏向于每个hybrid knob的特殊值,这样可以有效处理不同knob的特殊值之间的不良交互)
              • 当优化器执行本地搜索时,特殊值偏差不会以任何方式阻碍优化器。无论特殊值是否提高性能,优化器仍然能够微调已评估的配置,以进一步提高性能。
  • Configuration Space Bucketization
    • 离散数值类型
      • 离散数值类型的knob彼此间也有很大差异,有的只有10个值,有的可能有数十万个值,取值的多少决定控制粒度的大小
      • 对于有些具有较大范围的配置knob,小的改动不太可能影响DBMS性能
      • 设置一个K值,取值范围超过K个的knobs近似使用K个值(例如commit_delay有100000个值,设置K=100,就将commit均分100份,每次调整步长是1000),如果少于K值得knobs继续按照原来得粒度来
  • LlamaTune 设计
    • 必须满足的三个要求
      • 优化器始终在低维空间上运行,而不是在原始的DBMS配置空间中
      • 仅应该在hybrid knobs上进行特殊值的bias设置
      • bucketized间隔应该告诉优化器
    • 原始的低维度连续空间XD∈[-1,1]^D,本方法中是类似的空间X'D,该空间只按照固定间隔采样(Bucketized),如此会影响到连续值knobs的微调,但当K比较保守的时候收益大于缺陷
    • 例子

      • 原本的要调整的参数有5个(高维5),降维成2维,其中第一个参数管控两个hybrid knob,第二个参数管控剩下三个参数
      • 初始值[-0.8, 0.4],映射到高维度空间中得到[-0.8, -0.4, 0.4, 0.4, 0.8],然后放缩到[0,1]空间,对hybrid knob使用bias方法,其余征程放缩到自己的空间
本文含有隐藏内容,请 开通VIP 后查看