乐趣区

关于数据库:OpenMLDB+ByzerSQL-也能玩转机器学习全流程

本文整顿自 Byzer PMC、Kyligence 技术合伙人祝海林在第四范式技术日「高效落地的 AI 开源生态」分论坛的主题分享——《OpenMLDB 和 Byzer 整合之路》。

很荣幸明天可能加入第四范式的分享。Byzer 是什么设计理念想必通过后面的分享大家曾经对 OpenMLDB 有了肯定的理解,那在这里我就不过多赘述 OpenMLDB,而是先向大家简略介绍一下 Byzer。首先 Byzer 的诞生是为了升高 Data+AI 的门槛,让其成为水和电。OpenMLDB 的指标和 Byzer 是统一的。因为目前在大数据和 AI 之间,不论是平台还是语言仍旧存在着比拟强的割裂。同时,保护也存在艰难,应用门槛比拟高。咱们心愿可能通过一些技术和工具来升高这些老本,进步大家应用大数据和 AI 的效率。咱们如何去实现这一点呢?咱们会通过诸如 OpenMLDB 的一系列 FeatureOps 产品去实现这件事件。而 Byzer 是什么呢?Byzer 其实是一个面向 Data+AI 畛域的一个云原生的类 SQL 语言,它简直反对所有支流的 SQL 应用需要,例如能够用 Byzer 去实现 ETL 数据挖掘、机器学习建模和模型部署、可视化。

应用状态它目前应用状态也是比拟多的,一般的分析师或者医生,能够间接应用咱们的桌面版做数据分析。假如是须要给一个公司应用,那咱们个别举荐应用 Byzer 的 Notebook,这一个纯 web 版的工具,实现部署后整个公司的人都能够应用。而对于一个一般的研发工程师,须要要到某个机器上长期剖析一个数据,如果还想简略应用 SQL 来做剖析,那么传统的部署流程会比较复杂,这个时候就能够应用咱们的 Byzer-shell。

OpenMLDB+Byzer 需要场景 Byzer 其实更偏向于服务 Data+AI,所以它肯定可能实现数据的抽取,从各个中央去获取,而后把数据转换成表,并且能够应用 SQL 去做一些数据处理。同时的话,它还笼罩了 AI 畛域的建模和预测。然而,Byzer 还是短少一部分性能,就是特色工程的一部分,尤其是实时特色工程。比方咱们可能须要在应用模型做一个预测的时候,外面可能会用到一些实时类的特色,例如最近三个小时某一个用户的购买点击数,那这些的话是要进行实时计算的。流程介绍在这里,我会简略介绍一下这个实时计算流程大略是什么样子的?以及如何通过咱们的 OpenMLDB+Byzer,应用 SQL 去实现这一整套流程。假如咱们要进行一个特色工程加一个模型训练,这是离线局部。那咱们可能还有一个部署,加上 OpenMLDB 之后的话,咱们能够把特色像模型一样进行部署。最初的话,咱们能够通过 HTTP 接口提供一个实时的预测 API,那整个 pipeline 流程就走完了。大抵上 Byzer 和 OpenMLDB 连接的话,次要是通过存储的文件系统,当然也能够通过相似于 Kafka 之类的流解决平台进行连接。在明天的例子里,我会应用文件存储系统进行连接。第一步,咱们加载了一个数仓外面的数据(当然也能够从其余中央进行加载)。加载实现之后,须要保留到特定目录,可能是对象存储,也可能 HDFS。之后我就能够利用 Byzer 外面的 OpenMLDB 的插件,让它去加载咱们刚刚写到文件系统外面的数据,加载的指标表是 T1。加载到 T1 表之后,咱们就能够应用 OpenMLDB 外面的 SQL 进行一个特色工程,并且把特色工程的后果保留到文件目录外面去。生成之后就能够去实时 infer 一下生成的数据。接着用 Byzer 做一些简略的数据处理,比如说类型转换,包含特色的转换。最初的话,应用 Byzer 线性回归的算法进行一个训练,最初咱们可能会失去一个模型。这个整个过程中的话,其实咱们产生了两个比拟重要的后果:第一个,咱们产生了一个特色工程的逻辑,在这外面失去体现。第二个,咱们产生了一个模型,它会保留在 model/tax-trip 目录下。如果咱们心愿把它部署成一个 API 服务的话,那就须要有一个部署的过程。对于部署的过程,因为咱们须要部署一个特色工程和一个模型。特色工程这一块,仍然应用 FeatureStoreExt 插件,而后去把刚刚的计算逻辑去 deploy 到咱们的 OpenMLDB 外面去,即可实现。Byzer 这边的模型,咱们能够应用 Register 语法注册线性回归的模型,并且把它转换成一个 UDF 函数去应用。在这里咱们是通过一个注解来实现,把这个模型注册到一个 API 服务外面去。那这样的话,就相当于咱们把线下的模型和特色工程的成绩都曾经注册到线上的一个 online 的预测服务外面去了。模型是部署在 online 的预测服务外面的,接着咱们怎么去调用这个特色工程呢?实际上是咱们会发动一个 rest 接口的申请。这些所有性能组合,能够通过 Byzer 的多个 UDF 函数来实现,最终实现预测流程。在演示案例里,我会去拜访 OpenMLDB 特色工程的地址,而后对这个数据进行解决。之后把它转换成 JSON,进行一个切割。切割后,把它转换成一个向量,应用之前注册的预测函数进行预测,最终失去后果。其中咱们应用 Byzer 的 curl 插件,整个执行速度应该还是会十分快的。就相当于说,整个流程的话,齐全应用了 Byzer+OpenMLDB 就实现了一个端到端的机器学习流程。从数据的抽取,而后特色工程、模型训练到部署,到最初提供 API 服务进行一个预测,整个过程不须要来到 Notebook 就能够全副实现。从演示能够看出,Byzer+OpenMLDB 极大地升高了应用的老本,而且全程 SQL 化,升高了整个 AI 包含数据处理的门槛。这是 OpenMLDB+Byzer 产生的一个微小价值。咱们做完演示,接着回顾一下在整个端到端的机器学习中,特色计算通过 Byzer 的插件 FeatureStoreExt 转换到了 OpenMLDB 外面去计算。Online 局部通过 Rest 的 UDF 函数去实时申请 OpenMLDB,因为 OpenMLDB 支 持毫秒级的特征值的计算。Byzer 的 UDF 函数也可能反对到毫秒级预测的能力。

整合计划介绍最初是 Byzer 还能够作为 OpenMLDB 的前置解决,比如说咱们把数据通过批或者流的形式 写到对应的文件系统里,OpenMLDB 能够把它加载进去。当然了,Byzer 也能做流式的解决,所以也能够说把数据规整化写入到 Kafka,而后通过 Kafka 而后流入到 OpenMLDB 去进行一个计算。咱们整个流程全都是类 SQL 的语法,所以是能够很好地去升高整个大数据和 AI 的门槛的。从扩展性的角度来说,在 Byzer 外面通过 Ext 插件,咱们就能够把 OpenMLDB 整合进来。其实通过一些其余的插件,也能够把其余的一些产品,或者说咱们 MLOps 外面的一些其余的组件纳入流程中,这是 Byzer 的价值所在。咱们再来看一下这个过程中的话,OpenMLDB+Byzer 整合是应用了一些什么样的技术计划?首先来看一下 OpenMLDB 对外的接口,这里的列举不肯定齐全,目前我看到的是有 JDBC、SDK 和 Rest 这三种类型的。

JDBC 的话,因为足够遍及,所以它的学习老本就比拟低,遍及老本也比拟低,而且容易被程序去应用。但 SDK 的话,相对来说比 JDBC 更灵便,涵盖更多 OpenMLDB 外面的性能。如果须要有更具体掌控的话更加举荐应用 SDK。当然,应用 SDK 的毛病是有肯定的学习老本。最初一个是 Rest API,也就是说你是能够通过 API 申请去拜访 OpenMLDB。这个接口次要是为了谋求一个低延时的交互。这些都是 OpenMLDB 对外提供的能力,这些能力的话就能够很不便第三方去集成 OpenMLDB。那 Byzer 是如何去用 OpenMLDB 的三种交互方式呢?首先在 Byzer 外面,咱们会去开发一个叫 FeatureStoreExt 插件。这在 Byzer 外面其实就是一个类。而后你把它写好之后打完 Jar 包丢到 Byzer 外面去,之后启动时,它就能够作为以 Byzer 语言的语法来进行调用。之后 Where 条件外面对应的,比如说 train 办法中的 params 其实就是一个 Map,这个 Map 里则是一堆的 key value。之后的话,代码会去取得连贯地址之后对它进行一个执行。这外面咱们次要是调用了 OpenMLDB 的 SDK 和 OpenMLDB 进行一个交互。

这个插件也比较简单,比如说咱们开发完这个插件之后,就能够在 Byzer 的 Notebook 外面通过 plugin app add 的命令,把 Byzer OpenMLDB 扩大插件装上就能够了。

刚刚那一部分的话,咱们次要是离线训练局部,还有一个是在线预测这一块。在线预测这一块,因为 OpenMLDB 提供了 Rest 的接口,所以在 Byzer 预测服务这一块,也就是 model server 这一块能够间接去调用内置的 rest request 的函数。在这外面会展示会更分明一些,调用这个 OpenMLDB 的接口,而后应用 POST 的申请,用户传进来的参数就是出租车的数据。

之后的话,咱们应用 JSON 的格局,能够再进一步做解决将特色转换成一个向量,供咱们前面的模型的 UDF 函数去应用。这样的话,咱们就通过 Byzer 和 OpenMLDB 在离线和在线这个接口方面,就实现了一个全面的整合。Byzer 和 OpenMLDB 整合过程中的话,OpenMLDB 在 Byzer 这边看来其实就是一个相似于数据库的服务。通过它提供的那三种类型的接口,咱们就能够很好地去进行集成,那也证实它很容易被第三方集成。在 Byzer 这边的话,Byzer 也能够通过本人的扩大能力去很好地集成 OpenMLDB 这类第三方的利用,从而实现一个端到端的工作流程。

明天的分享到此结束,也欢送大家关注一下 Byzer 社区,感激收听。

退出移动版