全站搜索
首页_赢咖4星辉-官方注册地址
首页_赢咖4星辉-官方注册地址
赢咖4AI 驱动的实时决策系统第四范式 OpenMLDB 数据库入选顶会 VLDB
作者:管理员    发布于:2021-08-29 11:36    文字:【】【】【

  赢咖4VLDB ( Very Large Data Base ) 是数据库研究人员、厂商、应用开发者,以及用户广泛参与的年度国际会议,它与 SIGMOD、ICDE 被公认为数据管理与数据库领域的三大国际顶尖学术会议。

  注:论文中的特征工程数据库 FEDB,目前已更名为机器学习数据库 OpenMLDB,并对外开源(),下文将使用 OpenMLDB 作为描述名称。

  随着人工智能的蓬勃发展,越来越多的在线实时决策系统采用 AI 技术帮助决策。典型的应用包括实时信用卡反欺诈、个性化推荐等。一个典型的由 AI 驱动的实时决策系统包含两个子系统:线下训练和在线 所示,我们把海量的历史数据放入左侧的线下训练系统中,这套系统会帮我们从历史数据中提取特征,并训练出超高维的 AI 模型。然后我们把训练好的模型部署到在线预估系统中。在线预估系统需要根据用户的实时行为(比如刷卡交易)提取出用户历史行为信息,并导入 AI 模型进行实时打分,从而进行预测。整个在线预估系统对实时性有很高的要求,一般延迟要求为毫秒级。本文主要关注在线预估系统的数据库存储引擎部分(图 1 中的 OpenMLDB)的性能优化,也是整个在线预估链路中的性能瓶颈。

  如图 2 所示,我们以信用卡反欺诈应用为例。当刷卡行为产生时,POS 机会产生一条记录。单从这条记录是无法准确判断本次刷卡是一次正常的刷卡还是一次盗刷。在人工智能系统中,除了利用这条新的刷卡记录外,我们还需要根据新记录提取背后隐藏的信息用来做模型训练。所有这些信息一起就是我们的特征,而这个特征抽取的过程就是特征工程。

  如图 2 所示,通过 Card ID, 我们可以通过查询特征数据库了解这张卡的信息和与之关联的账户信息。还可以通过基于时间窗口的计算,进一步了解这张卡的最近 10 秒、1 分钟、5 分钟、10 分钟的信用卡消费总额最多的三个店铺等信息。这些特征需要从用户近期的历史数据中实时抽取。一般来说,特征抽取数量越多,模型预测约准确。

  特征抽取是一个昂贵的操作。首先特征抽取涉及多个数据库查询操作。以反欺诈为例,一个用户的一次刷卡行为,会触发上千次的数据库查询请求。与此同时,这些特征中很多的实时特征,比如计算最近一条刷卡记录和最新刷卡记录的金额差,必须等新的用户刷卡数据产生并传输到后端系统后才能开始抽取,无法进行数据预计算。与此同时,大部分的实时特征都会涉及在不同维度进行大量的时间窗口查询。这些特征抽取的工作负载特点和传统的 OLTP、OLAP 或 HTAP 负载有很多不同。

  我们选取了两种目前最先进的主流商用内存数据库(DB-X 和 DB-Y),使用典型的实时特征抽取负载进行性能测试。如图 3 所示,随着时间窗口数的增加,DB-X 和 DB-Y 的查询延迟显著上升,且当窗口数大于 4 之后,两种数据库的查询性能均已经超过 100 毫秒,完全无法满足我们的性能需求。而且在真实业务场景下,时间窗口数远远大于 4。基于以上结果,需要我们设计一个新的专门针对人工智能特征抽取的数据库引擎。

  为了能高效的抽取实时特征,我们设计了机器学习数据库。如图 4 所示, OpenMLDB 包括

  特征抽取执行引擎(FEQL)和存储引擎两部分。FEQL 使用 llvm 对查询语句进行编译优化,并对多窗口类型的查询进行了优化处理,从而使特征抽取的语句解析执行效率大大增加。FEQL 除了支持类似 SQL 的语法,还针对特征抽取操作定义了特别的语法。

  如图 5 所示,FEQL 允许在同条 SQL 语句中定义多个时间窗口,在语法解析和优化的过程中,FEQL 可以最大程度的复用不同窗口内提取的结果。比如当我们需要提取 10 秒、1 分钟、5 分钟、30 分钟、1 小时、5 小时内用户在各个时间段消费的总额度,我们可以在一个 FEQL 中定义 6 个时间窗口,执行器在运行 FEQL 的时候,可以只取最大窗口(5 小时)的全部数据再分别处理,而不是重复的提取 5 个窗口的数据,从而大大提升特征提取操作中多窗口 TopN 操作的效率。

  在存储引擎部分,如图 6 所示,OpenMLDB 采用了两层的内存跳表数据结构。在第一层跳表中存储了特征的主键,而在第二层中存储了主键对应的各个时间窗口。当我们在查询某个主键下多个时间窗口范围内的数据,只需要先在第一层跳表中定位到对应的主键,再继续在第二层中查询时间窗口即可。

  如图 7 所示,图中 D-FEDB ( 即 D-OpenMLDB ) 表示 DRAM 版本的 OpenMLDB。我们在 DRAM 版本 OpenMLDB、商用内存数据库 DB-X 和 DB-Y 上变换时间窗口个数和特征主键数目,并运行典型的特征抽取查询对比性能。如图所示,DRAM 版本的 OpenMLDB 的性能远远高于传统商业数据库,最高可达 84x 的性能提升。

  DRAM 内存版本 OpenMLDB 可以很好的满足特征抽取实时性的要求,但在实际的部署过程中,我们仍然发现以下痛点。

  为了保证线上服务性能,OpenMLDB 的索引和数据均存放在内存中。以信用卡反欺诈场景为例,我们的测试数据存储了最近 3 个月的 10 亿条刷卡记录信息用来做特征抽取。这部分数据已经占用了超过 3 TB 的内存空间。当我们考虑多副本的情况,数据规模超过 10 TB 。而当我们需要更多的历史数据做特征抽取(比如一年甚至三年),其需要的硬件成本是十分高昂的。

  OpenMLDB 作为实时在线决策系统数据库,当节点离线时(比如系统故障或者例行维护),OpenMLDB 需要把海量数据从磁盘读入内存,再重构内存数据结构。整个过程需要耗费若干个小时,会严重影响线. 长尾延时

  传统的内存数据库为了保证数据的一致性,都会周期性的通过日志或者快照把数据从易失性的 DRAM 内存写到低速的磁盘或闪存中。当系统负载高时,这种同步操作很容易造成一部分上层查询产生超长的延时,我们称之为长尾延时。

  我们引入持久内存为解决以上痛点提供新思路。持久内存具有低成本、大容量、数据持久化的特性。低成本大容量的内存特性有助于解决 OpenMLDB 高硬件成本的问题。数据持久化则带来了两个好处:1 ) 大幅缩短节点离线以后的恢复时间,保障线 ) 由于内存数据持久化特性,因此数据库不再需要通过低速磁盘设备做日志和快照的持久化工作,因此可以有效解决长尾延迟的问题。

  持久内存有两种工作模式:Memory Mode 和 App Direct Mode。在 Memory Mode 下,持久内存会被当做内存的一部分对用户透明。该模式的好处是用户程序无需修改即可使用大内存容量,但是无法使用持久化特性以及做精细化的优化。在 App Direct Mode 下,持久内存会以独立块设备的形式被系统感知。程序员通过英特尔提供的 PMDK 库来编程使用。此种模式下,应用可以享受大容量特性的同时,还可以利用内存数据持久化的特性。

  如图 8 所示,最左边的版本是原始的基于 DRAM 内存的 OpenMLDB,其查询数据的过程都在 DRAM 内存中完成,但是会通过写入外存(SSD/HDD)上的日志和快照进行持久化。如果使用 Memory Mode(图 8 中间图),则使用大容量的持久内存直接替换 DRAM 内存,但是无法受益于数据持久化特性。因此,如图 8 右图,我们用 App Direct Mode 重构了 OpenMLDB 下层的存储引擎,用 PMDK 实现了基于持久内存的双层链表结构,移除了传统的日志和快照机制。

  开发基于持久内存的存储引擎的主要挑战是保证数据持久化的正确性和高效性。OpenMLDB 的底层数据结构双层链表运行在多线程环境中,存在大量的多线程并发读写操作,为了更高效率的并发读写,在 DRAM 环境下通常会使用 Compare-and-swap(CAS)技术。CAS 是一种通过硬件实现并发安全的常用技术,底层通过利用 CPU 的 CAS 指令对缓存或总线加锁来实现多处理器之间的原子操作。但是当我们应用 CAS 到持久内存上时,会带来数据一致性的问题。

  为了解决持久内存上数据一致性的问题,我们提出了 Persistent-Compare-And-Swap(PCAS)技术。首先我们使用 flush-on-read 的规则解决正确性问题。当每次读取一个内存数据时,我们先进行 flush 以保证读取的数据是持久化过的。但是过多的持久化 flush 操作会带来额外的性能损耗,特别是无必要的持续的 flush 那些本来没有修改过的 「干净」数据。为了高效的判断数据是否「干净」,我们使用了一种特殊的指针,称为智能指针。在 x86 下 64 位 CPU 中支持 8 字节 CAS 原子操作的内存地址是必须保证 8 字节对齐的,由于内存访问的基本单元是一个字节,8 字节对齐意味着 CAS 地址的低 3 位始终为 0。如图 10 所示,智能指针巧妙的利用了使用 CAS 时内存地址始终为 0 的低 3 位来标记数据是否为 dirty。有了智能指针,我们只需要在每次修改数据后,对未 flush 的数据的指针标记 dirty 位。然后在后续的读取时,只有当 dirty 位被标记,则执行 flush 指令进行持久化,从而避免了不必要的持久化开销。

  我们使用一个真实的反欺诈应用数据进行测试,该数据包含了 3 个月的 10 亿条刷卡记录信息,实际部署中大概需要 10 TB 的内存空间。我们对比了 DRAM 版本的 OpenMLDB 以及各种持久内存版本的 OpenMLDB 变种,图 12 给出了测试中各种数据库系统的配置。该实验得出以下结论。

  本文分析了目前人工智能驱动的实时决策系统面临的挑战以及解决方案,着重描述了:

  8 月 27 日 15:00-17:00,百分点科技与机器之心联合举办「数据智能技术实践论坛」全程线上直播,四位业界专家与学者详细解读多模态数据融合治理、计算机视觉、基于知识图谱的认知智能、知识图谱构建等领域的技术进展和实践心得。

  三星970 EVO Plus SSD偷偷更换980同款主控:喜忧参半 支持PCIe 4.0

  为5-18岁学生提供在线培训,印度初创公司Camp K12获1200万美元融资

  新远国际影城周三起闭店装修了!你在这里有什么难忘经历?写下来,我们送你电影票

  英特尔超频工具 XTU 7.5.0.29 版发布:支持 12 代酷睿/DDR5 内存

  获108+项专利技术证书,焕思实业如何搭建智能护理矩阵撬动老龄化市场?

相关推荐
  • 赢咖4娱乐《人工智能与机器学习现状年度报告》显示各企业 AI 预算金额较去年大幅增长 55%
  • 赢咖4AI 驱动的实时决策系统第四范式 OpenMLDB 数据库入选顶会 VLDB
  • 赢咖4在谷歌、Facebook等顶级科技公司工作需要哪些技能
  • 赢咖4注册当 AI 遇上核聚变「50 年悖论」的可控核聚变会提前实现吗?
  • 赢咖4娱乐聚焦数据智能九章云极入选爱分析报告两大场景代表厂商
  • 赢咖4注册《帝国时代4》发售后将有机器学习AI 无法被打败
  • 赢咖4Science:利用新型机器学习技术准确预测蛋白和RNA的三维结构
  • 赢咖4基于 transformer 等模型的新冠疫苗情感极性分析:中美民众分别如何看待?
  • 赢咖4深度学习精确预测 RNA仅需训练 18 种已知结构:斯坦福研究登上 Science 封面
  • 赢咖4注册金属所利用机器学习方法筛选高性能锂硫电池单原子催化剂
  • 脚注信息
    版权所有 Copyright(C)2020 星辉娱乐
    网站地图|xml地图|友情链接: 百度一下