ICDM'23 BICE论文解读:基于双向LSTM和集成学习的模型框架
本文分享自华为云社区《ICDM'23 BICE论文解读》,作者:云数据库创新Lab。
导读
本文《Efficient Cardinality and Cost Estimation with Bidirectional Compressor-based Ensemble Learning》是由华为云数据库创新Lab联合电子科技大学数据与智能实验室发表在顶会ICDM’23的长文。ICDM是数据挖掘领域顶级学术会议之一。本届会议共收到投稿1003篇,其中录用长文94篇,长文录取率约为9.37%,总体录取率约为19.94%。
摘要
查询优化器在数据库管理系统中有着非常重要的作用,而基数和代价估计是查询优化器能否输出高质量执行计划的基础。为增强基数和代价估计,我们提出了一种基于双向LSTM和集成学习的模型框架,名为BICE。具体地,我们设计了4个自编码器组成特征提取器对查询计划中不同种类的丰富信息进行提取与编码。我们通过图嵌入算法学习表与表之间的关联,并作为连接条件编码的依据。之后,我们建立了双向LSTM对物理计划进行学习。此外,我们通过基于贝叶斯神经网络结合主动学习抽取不同的数据样本集合,以此来提高模型在复杂查询上的下性能表现。最后,我们在公开数据集上进行了大量的实验以论证BICE的有效性。
问题描述
一条查询语句q中包含若干个连接条件={1,2,...,}J={J1,J2,...,Jm}和若干个谓词过滤条件={1,2,...,}F={F1,F2,...,Fm}。通过DBMS的查询优化器,我们可以获取查询语句q对应的查询计划p。本文要解决的问题是:给定一条查询语句q,将其查询计划p输入到训练过的函数f中,得到其基数与执行时间,即f(q)=(C(q),T(q))。C(q)和T(q)分别表示基数与执行时间。
特征编码
首先,本文通过深度优先搜索(DFS)得到查询计划对应的节点序列。之后,本文设计了特征编码器用以抽取查询计划中蕴含的丰富信息,其由四个子编码器组成,分别是连接编码器、类型编码器、谓词编码器和信息编码器。下面,本文对各个子编码器的细节进行介绍。
连接编码器
连接编码器学习并编码查询语句中的若干连接条件J。先前的模型(如MSCN等)大多基于one-hot编码方法对连接条件进行规则编码。这种方法的最大缺陷在于,无法表示表和列之间的结构关系。因此,本文首先应用图嵌入算法学习数据库中的列关系。具体来讲,本文采用node2vec算法:ei=node2vec(ci)。ci表示数据库中的列,ei表示其对应的嵌入向量。之后,本文将连接条件中对应的两个列进行拼接得到连接条件对应的编码。特别地,本文全局地定义了列的顺序,以保证连接条件集合不会收到次序的影响。
类型编码器
类型编码器对查询计划中的节点类型进行编码。与上文介绍的连接条件不同,节点类型的数量在数据库管理系统中通常是有限的。因此,本文对于节点类型的编码方法和先前的许多模型(MSCN、QPPNet和TPool等)相同,即采用one-hot编码方法处理节点类型。
谓词编码器
谓词是查询中最为复杂的信息之一,其直接影响着许多操作(如顺序扫描等)的基数大小,进而导致查询代价的不同。为增强对谓词信息的学习,本文基于查询范围嵌入和并行深度神经网络设计了谓词编码器,下面对二者分别进行介绍。
对于查询范围嵌入,本文采用两个向量[V1max,V2max,...,Vncmax]和[V1min,V2min,...,Vncmin]用以进行范围表示,其中nc表示列的数量。具体规则定义如下:
- 若ci>value,则将Vimin的值设置为value。
- 若ci<value,则将Vimax的值设置为value。
- 若ci=value,则将Vimin和Vimax的值设置为value。
其中,ci为谓词中的列,value为对应的参数值。通过应用上述规则,我们能够得到查询对应的最大范围向量Vmax和最小范围向量Vmin。之后,本文建立了两个并行的神经网络学习Vmax和Vmin,将学习得到的嵌入向量进行拼接得到谓词对应的编码,并作为谓词编码器的输出。
信息编码器
查询计划树中不仅包括了原始查询语句的相关信息,同时还包括了查询优化器估计的若干信息,包括基数和代价等。虽然这些估计的信息在多数情况下是存在误差的,但是学习这种估计信息的错误分布是一种十分高效且有效的方法。因此本文设计了信息编码器,其将查询优化器估计的基数和代价经过归一化处理后作为特征编码的一部分。
最后,特征编码器整合上述四个子编码器的输出,得到查询计划对应的特征编码。
基于集成学习的估计模型
压缩器
压缩器学习特征编码器输出的特征向量,其输出一个固定长度的嵌入向量作为后续估计模型的输入。为了更好地学习特征编码中蕴含的丰富信息,本文建立了双向的LSTM模型处理特征编码。其具体的训练方法需结合估计模型,在本文下节中进行介绍。
贝叶斯神经网络
多数深度学习模型采用最大似然估计(MLE)基于当前观察到的数据得到最优的模型参数,这种方法假定了观察到的数据分布与全部的数据分布是相同或相似的。而贝叶斯神经网络则与此不同,其基于最大后验概率(MAP)的思想,通过引入不确定性来衡量模型对样本的置信程度。在基数和代价估计中,复杂的查询是频繁出现的。但是现有的基于方法大多基于MLE思想进行学习,无法在得到真实标签之前衡量模型在这些复杂查询上的表现。并且单一的模型难以学习全部查询的数据分布。因此,本文引入贝叶斯神经网络来衡量模型对各类样本的置信度。具体来讲,BICE采用MC_Dropout的思想建立了包括3层线性神经网络的贝叶斯模型以进行初步训练。定义如下:
Loss=qerror(Cr(q),1/nB∑i=1nBfB(q∣WB))
主动学习
完成初步训练后,为解决上文提到的单一模型难以适应复杂多样的工作负载的问题,本文采用主动学习的思想训练得到集成学习模型。具体来讲,本文共设计了四种数据抽样策略构成主动学习。分别是:(1)基于贝叶斯神经神经网络的置信度。(2)基于置信度和最大置信上界。(3)基于多样性与置信度。(4)基于多样性与最大置信上界。 本文采用贝叶斯神经网络在数据样本上输出的方差来衡量其置信度。用最大的qerror表示最大置信上界。此外,本文通过对数据样本进行聚类,之后在每个类别中进行样本抽取,以此来表示数据的多样性。在完成上述数据抽样后,本文建立了4个对应的估计模型进行学习。值得注意的是,在这一阶段的训练中,压缩器的参数并不会更新。因此对于各个数据样本,我们仅需利用上一阶段压缩器输出的样本的嵌入向量即可。仅训练估计模型(由3层线性神经网络组成)的过程是高效的。
实验
本文基于IMDB和TPC-H数据集进行了相关实验,其中IMDB数据集还包括了三个公开的测试负载:(1)JOB-light;(2)Scale和(3)Synthesis。
实验结果 我们在各个数据集上与相关的方法进行了对比,包括基数估计和代价估计,总体效果如下表所示。
实验表明BICE在绝大多数情况下均取得了最优表现。之后,本文将BICE与其他模型嵌入到查询优化器中,替代查询优化器所估计的基数,以进行端到端的测试,实验结果如下表所示。
实验表明,BICE在端到端测试中也有着最优的表现。此外,我们还进行了针对BICE的消融实验以论证各个组件的有效性,如下图所示。
上述消融实验表明,BICE的各个组件均能够有效地提升模型的表现。
结论
本文建立了一个基于双向LSTM和集成学习的模型框架,BICE。其能够进行有效的基数估计和代价估计。通过运用贝叶斯神经网络和主动学习,我们建立了表现更加优异的集成学习模型,其能够适应更加复杂多样的工作负载类型。实验研究表明,BICE在大量公开数据集上均有着更加优异的表现。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何使用MindStudio轻松搞定大模型全流程开发
本文分享自华为云社区《【如何使用MindStudio轻松搞定大模型全流程开发》,作者: 华为云社区精选。 大模型的规模和能力在迅猛发展,更大的参数、更长的序列及更多的模态是未来大模型技术的发展趋势。更大的规模的模型意味着更大规模的算力平台,算力设备的部件与任务之间的复杂关系导致调试调优的复杂度增加,需要系统的管理和收集训练过程中各维度数据,才能快速锁定模型精度及性能瓶颈,加速大模型训练。 MindStudio全流程开发工具链是华为面向昇腾AI开发者提供的一站式开发环境和工具集。针对大模型分布式训练复杂场景,MindStudio提供了从大模型迁移到精度调试到性能调优的统一工具能力,帮助开发者轻松get大模型开发密码。 一、模型迁移 由于不同硬件体系之间处理器架构、模型脚本存在差异性,基于GPU硬件体系原生开发的开源大模型,要想在昇腾处理器上运行,首先需要进行模型的迁移。 那么模型迁移主要迁哪些东西呢? 模型脚本的基本组成元素主要为“算子、API、三方库”,通常在框架层会通过这几个核心元素来搭建模型脚本,所以模型迁移的实质也是对“算子、API、三方库”的迁移。 以同框架下迁移场景为例,Mi...
- 下一篇
低代码为何这么“香”
本文分享自华为云社区《【云享问答】第4期:低代码为何这么“香”》,作者: 华为云社区精选。 在数字化转型的大潮中,快速实现业务需求并迅速推出应用程序是企业成功的关键。而低代码平台,则成为了开发者的好帮手,为他们提供了高效、可扩展且可靠的开发解决方案。本期【云享问答】通过这11个问题,带你熟悉低代码开发,认识华为云低代码平台Astro,实现应用的快速开发和上线。 1、什么是低代码/零代码开发? 低代码开发借助可视化工具和预构建组件加速应用构建,减少手写代码,专注业务逻辑。零代码则将代码封装为模块化、可视化组件,用户通过拖拽和参数设置即可快速搭建企业系统,无需编程知识。两者共同助力高效开发。 2、低代码开发平台可以解决哪些问题? 低代码平台作为支持低代码开发的关键组件,提供可视化开发环境,自动化工具简化复杂任务,预构建模板快速创建应用,无缝集成现有系统和第三方服务,并提供快速部署功能。从而帮助企业和开发者提高开发效率,简化开发流程,缓解开发资源短缺,降低技术门槛,最终快速适应市场变化。 3、开发者怎样选择合适的低代码平台? 开发者首先需要明确自己所需的功能和需求,考虑相关应用程序类型、功能...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块