Meetup No.8 回顾 | OpenMLDB + MaxCompute:集成打通云上生态,高效构建 AI 应用
OpenMLDB Meetup No.8 活动回顾
会议内容
OpenMLDB 社区于 2022 年 12 月 3 日举行了第八期 meetup,会议相关视频及资料如下:
OpenMLDB 卢冕,以《开源机器学习数据库 OpenMLDB:线上线下一致的生产级特征平台》为题,为大家重点介绍了 OpenMLDB 社区 11 月的最新工作进展。
视频:https://www.zhihu.com/zvideo/1583837548924600320
阿里云机器学习 PAI 平台和大数据平台负责人 林伟,给大家介绍了为业务敏捷而生的企业级 Serverless 云数据仓库服务 MaxCompute,展示了阿里云企业级云数仓的优势特性——最小化运维投入,经济高效分析数据。
视频:https://www.zhihu.com/zvideo/1583837540162912257
OpenMLDB 陈迪豪,在分享中介绍了 OpenMLDB 的上云方案和利用公有云资源实现 OpenMLDB 项目落地 ,并通过 demo 演示介绍 OpenMLDB 与阿里云 MaxCompute 集成方案。
视频:https://www.zhihu.com/zvideo/1583837565811060737
想获取此次活动 PPT 资料,请关注 OpenMLDB 公众号并发送“MeetupNo.8”~
讨论交流
Q1: OpenMLDB 是不是和 dbt 比较相似?A1: dbt 和 OpenMLDB 的差异还是比较大的。dbt 主要面向 ETL,再通过它的平台能力把流程串连起来。OpenMLDB 还是专注机器学习场景提供线上线下一致的能力,是不太一样的。
Q2: 特征提取不一致如何处理,在 OpenMLDB 中是否只能在最后一步完成统一?A2: OpenMLDB 主要是从特征数据定义和计算逻辑上保证特征提取逻辑的一致,且主要面向实时特征计算。还有另一类应用不需要实时特征计算,是把离线特征计算同步到在线,OpenMLDB 目前并不支持,但我们后续回去覆盖,支持这类离线特征。在 OpenMLDB 中线上线下特征的值本身是不一样的,离线特征的值是基于历史数据计算的,在线特征的值是基于实时数据计算的,保证一致性的关键在于计算逻辑的一致。
Q3: 如果特征提取都是基于当前 query 计算的而不涉及到数据库,OpenMLDB 是否就不适用了?A3: 这个问题主要看如何定义 query 计算。因为计算是基于数据和计算逻辑做到的,是否涉及到数据库并不是判断是否适用的关键。如果有数据和计算逻辑,那这正是 OpenMLDB 特征抽取所覆盖的功能。
Q4: 实时计算时,先离线导入数据再进行实时数据接入,此时会去重吗?如何做到离线和实时数据正好粘结在一起,不丢失数据?A4: 去重属于数据前期的清洗,这个步骤在 OpenMLDB 里是可选择的,如果 SQL 里有写这个逻辑,OpenMLDB 就会执行这一步骤。离线数据源和实时数据源,在 OpenMLDB 内部是存在两个地方,离线部分读取的是 HDFS 上的数据,在线部分由 SDK 或者 Pulsar、Kafka 等工具接入,所以真正做在线预估时,不需要考虑粘合问题。OpenMLDB 的数据源虽然不是同一份,但是数据的 schema 是一致。所以如何保证离线和实时数据源的 schema 是一致的需要考虑的关键问题,主要交给外围的业务保证。
Q5: 离线导入 HDFS 数据时,只是做离线数据云信息的关联吗,不导入真实数据,就可以进行特征计算吗?A5: 可以的,离线数据的导入可以是软连接导入,因为读取的是 HDFS 上的数据,只要给 HDFS 的路径就可以,不用做真实的数据拷贝。
Q6: 比如要计算近 30 天的特征,我们需要先导入部分历史数据,再接入 kafka 这种实时流,这种情况如何做到历史导入和实时接入的数据正好不重复也不缺失?A6: 这个问题要就具体业务场景来处理。在 OpenMLDB 内部对于数据的重复或缺失没有做特别的保证,根据我们的用户案例,这部分内容主要在业务上做保证。在上线规划中可以设置一个预启动过程,先把数据导入,过一段时间再切入实时数据。当然如果切入时间规划的不是特别精准,可能会造成在最开始的服务时间里有一部分数据缺失或者重复,但是业务流量切换可以等后需的数据回填到正确位置再实现,借助业务层面的手段达到目标。
Q7: 如果离线只计算近 1h 的登录次数(距离当前时间)不会关心业务场景的触发时间(关联点),线上需要查距离申请时间/授信时间/下单时间,这种场景 OpenMLDB 可以解决吗?A7: 可以做到的。如果线上需要查询更多的信息,只要数据存在数据库中,我们只要在线上部分的 SQL 增加部分特征就能够完成查询。
Q8: OpenMLDB 可以实现一键扩缩容吗?A8: 是的,通过新工具后 OpenMLDB 可以实现一键扩缩容。扩缩容其实是两个操作,一是把新的节点接入 OpenMLDB Server 中,二是实现 OpenMLDB 本身的扩容,把分片迁移新的节点上。所以接入节点的操作还是绕不开的,需要配置和操作。从前最为复杂繁琐的分片迁移,如今在新工具的帮助下已经能做到一键操作,门槛减低了很多。
Q9: 目前还比较关注 OpenMLDB 在线部署和模型预估服务的结合,都上云的话如何减少网络延迟?A9: 目前 OpenMLDB 和模型预估服务还没有做深度的整合。我们之前有一些 demo 案例都是通过不熟练两个服务的方式把它结合了起来。如果大家在这方面有比较强烈的关注,我们会在后续做更紧密的捏合,把预估服务紧耦合地嵌入 OpenMLDB 的框架里,可以减少网络延迟。当前的方案还是起了两个服务,需要在中间做不同的调用。
Q10: 如果 OpenMLDB 的方案是两个服务,那会存在通信上的网络延迟吗?A10: 是的,如果是两个服务会有两次网络通信,这个内容我们后续会继续改进。
Q11: OpenMLDB 这样和 MaxCompute 做集成的话,感觉 FE 效率会有点差,请问有其他办法不?A11: 从开发效率来看,其实不会特别差。使用 OpenMLDB 以后,我们做 FE 特征抽取的逻辑只需要写 SQL 语句就可以了,调试和开发都可以在 本地 IDE 上完成,实际运行的任务是提交到 MaxCompute。MaxCompute 可以使用云端资源池,云上有多少资源就可以用多少资源提交,也可以在本地进行采样调试,即使处理大数据时也可以用阿里云的海量资源。不会因为用户本地没有集群、计算资源或者没有 Yarn 服务产生限制。
Q12: OpenMLDB 是否适合地理和时序数据存储?A12: OpenMLDB 针对时序数据进行了大量优化,是非常适合存储时序数据的,无论是读还是写的性能都非常高。对于地理数据,目前还没有额外支持,用户可以使用 OpenMLDB 作为 key-value 数据来存储地理数据,但对于地理和坐标等计算逻辑需要在数据库外部完成。
Q13: 为什么不用 PAI-DSW,直接构建 AI 的框架和 driver 的环境(当然如果用户要安装自己库可以自己去 shell 安装)?A13: 本次分享演示了在本地使用开源机器学习框架进行模型训练,实际上 PAI-DSW 也是支持的,通过 PAI 云端机器学习平台可以快速搭建建模环境,同样可以使用 OpenMLDB 和开源机器学习框架进行模型训练。
MaxCompute
想进一步了解 MaxCompute 社区或者与核心开发者做进一步的交流讨论,可以通过以下渠道获得相关信息和互动。官网:https://help.aliyun.com/product/27797.html公众号及专栏:
OpenMLDB 社区
在此感谢大家对于本次 meetup 的大力支持,如果想进一步了解 OpenMLDB 或者参与社区技术交流,可以通过以下渠道获得相关信息和互动。Github: https://github.com/4paradigm/OpenMLDB官网:https://openmldb.aiEmail: contact@openmldb.aiOpenMLDB 微信交流群:
评论