DolphinScheduler OpenMLDB Task:打造端到端MLOps工作流

0de09b78b9d1d40bb8c32f1717196c5e.png

导读:

在机器学习从开发到上线的业务闭环中,数据处理、特征开发、模型训练往往要耗费大量的时间和人力。为给 AI 模型构建及应用上线提供便利,简化机器学习建模工程化的流程,OpenMLDB 与 DolphinScheduler 合作开发 Dolphin Scheduler OpenMLDB Task,将特征平台能力融入 DolphinScheduler 的工作流,链接特征工程与调度环节,打造端到端 MLOps 工作流,帮助开发者专注于业务价值的探索。

OpenMLDB PMC 黄威将在本文为大家简要介绍并实际演示 DolphinScheduler OpenMLDB Task 的操作流程。

01

场景和功能

01

DolphinScheduler OpenMLDB Task 为什么诞生

a86ab727cb3efea0004e4700cde0948f.png

作为提供生产级数据及特征开发全栈解决方案的开源机器学习数据库,OpenMLDB 提升易用性、降低使用门槛的关键点来自上下游的连通。如上图所示,接入数据源可以使得 DataOps 内的数据更加简单轻松地流入 OpenMLDB,而 OpenMLDB 供给的特征也需要顺滑地进入 ModelOps,接受训练。

为了减少每个开发者手动完成接入带来的巨大的工作量,提升 OpenMLDB 使用的便捷度,我们也开发了 OpenMLDB 接入 Deployment 和 Monitoring的功能。本次想和大家重点介绍的就是 OpenMLDB 接入 DophinScheduler 工作流的框架。

DolphinScheduler OpenMLDB Task 可以更简单地操作 OpenMLDB,同时 OpenMLDB 任务也被 Workflow 管理,更加自动化。

02

DolphinScheduler OpenMLDB Task 可以做什么

ce2de8bdbdebd07ed565d7f7539b3871.png

OpenMLDB 希望能达成开发即上线的目标,让开发回归本质,而不是在工程化落地中耗费过多心思。在我们设想的最简易的用户操作流程如上图所示,而展示步骤中的第一步(Offline data import)、第二步(Offline feature extraction)、第三步(SQL deployment)本身是可以被 DolphinScheduler OpenMLDB Task 写好的。

通过 Task,我们可以实现 OpenMLDB 的离线导入、特征抽取、SQL 部署上线、在线导入等等需求,也可以在 DolphinScheduler 中编写一个完整的使用 OpenMLDB 的训练上线流程。

接下来,将基于 kaggle 比赛中的 TalkingData 广告欺诈检测场景,为大家演示如何使用 DolphinScheduler OpenMLDB Task 编排一个完整的机器学习训练上线的流程。

(kaggle 比赛的数据源的下载链接:https://www.kaggle.com/competitions/talkingdata-adtracking-fraud-detection/discussion)

02

实践演示

01

环境配置

演示可以在 macOS 或 Linux 上运行,也可以使用我们提供的 OpenMLDB 镜像:

docker run -it 4pdosc/openmldb:0.5.1 bash

在容器中,可以直接运行以下命令启动 OpenMLDB cluster。

./init.sh

我们将完成一个训练成功并且上线的工作流。模型上线的部分,可以使用简单的 predict server,见:https://raw.githubusercontent.com/4paradigm/OpenMLDB/main/demo/talkingdata-adtracking-fraud-detection/predict_server.py

你可以将它下载至本地,并运行至后台:

python3 predict_server.py --no-init > predict.log 2>&1 &

DolphinScheduler 需要操作系统的用户,并且该用户需要有 sudo 权限。所以推荐在 OpenMLDB 容器内下载并启动 DolphineScheduler。

DolphinScheduler 支持 OpenMLDB Task 的版本,下载 DolphineScheduler Snapshot。

(https://github.com/4paradigm/OpenMLDB/releases/download/v0.5.1/apache-dolphinscheduler-dev-SNAPSHOT-bin.tar.gz)

启动 DolphinScheduler standalone,步骤如下,更多请参考 standalone。

(https://dolphinscheduler.apache.org/en-us/docs/3.0.0/user_doc/guide/installation/standalone.html)

tar -xvzf apache-dolphinscheduler-*-bin.tar.gz
cd apache-dolphinscheduler-*-bin
sh ./bin/dolphinscheduler-daemon.sh start standalone-server

http://localhost:12345/dolphinscheduler/ui 

浏览器访问上方链接即可登录系统 UI。默认的用户名和密码是 admin/dolphinscheduler123。

DolphinScheduler 的 worker server 需要 OpenMLDB Python SDK,DolphinScheduler standalone 的 worker 即本机,只需在本机安装。我们的 OpenMLDB 镜像中已经安装了。

如果你在别的环境中,请运行:

pip3 install openmldb

工作流可以手动创建,为了简化演示,我们直接提供了 json 工作流文件(下载链接:

https://github.com/4paradigm/OpenMLDB/releases/download/v0.5.1/workflow_openmldb_demo.json),可以直接导入到DolphinScheduler 环境中,并做简单的修改,即可完成全工作流。

Python task 需要显式设置 python 环境,最简单的办法是在 bin/env/dolphinscheduler_env.sh 中修改 PYTHON_HOME。请填写 python3 的绝对路径,而不是相对路径。(注意,在 standalone 运行前,配置的临时环境变量 PYTHON_HOME 不会影响 work server 中的环境)

如果你已经启动 DolphinScheduler ,也可以在启动后的 web 页面中进行环境设置,设置方法如下。(注意,这样的情况下,需要确认工作流 task 都已使用该环境。)  

63bd9c0aa28339d1a4296ed03f2de126.png

af230fc1062ba61530ca4fdc6ea402b6.png

03

demo 演示

01

步骤 1 初始配置 

创建租户,填写有 sudo 权限的操作系统用户,queue 可以使用 default。docker容器内可直接使用root用户。

ba41ebe222d00d2a0a5c902c5ddfcaf7.png

再绑定租户到用户,简单起见,我们直接绑定到 admin 用户。

e3c413b5ea24fab54394de5def46afe5.png

f3860822d6705159ec262e80e95134f2.png

02

步骤 2 创建工作流 

创建一个 test 项目,并进入项目中     

b4af1d412fc6dc6658083b05cf836015.png

c6a62a921406316ad7e0ac8f77d32404.png

在工作流定义界面中,导入之前下载好的工作流文件

dc750381cdee2dcc61295d010a5b4808.png

import workflow 后

49afb1284fbce5ea8a744777f8fb9648.png

点击查看详细内容

8476a4e73e14e1f3af9fafc5aff3118a.png

注意,此处需要一点修改,因为导入工作流,task 的 ID 会有变化。特别的,switch task 中的上游和下游 id 都不会存在,需要手动改一下。

957ed2413d7d7a9d1a9bd4cb659848cb.png

如上图,请将成功和失败的“分支流转”和前置检查条件修改为当前的task。

正确结果如下图所示:

2deddfa5a1d715e5de3717e3dad1d4e7.png

直接保存该工作流。

导入的工作流中 tenant 默认会是default,也是可以运行的。如果你想指定自己的租户,请在保存工作流时选择租户。

51703b45685cfc9dd1b6898be072e2f6.png

03

步骤 3 运行测试 

上线运行     

48f6d1c3f4a81ebc60b226187d3f4299.png

运行成功如下图所示

3582e4e4a7e8f3d254a80598e9d7287b.png

为演示成功上线的流程,validation 并未进行实际验证,直接返回验证成功并流入deploy分支。运行 deploy 的分支,deploy  sql 及之后的 task 都成功后,predict server 接收到最新的模型。

predict server 同时提供了在线预测服务,通过 curl /predict 请求。我们简单地构造一个实时请求,发送至 predict server。

curl -X POST 127.0.0.1:8881/predict -d '{"ip": 114904,
       "app": 11,
       "device": 1,
       "os": 15,
       "channel": 319,
       "click_time": 1509960088000,
       "is_attributed": 0}'

1b594be87585b40fe74e9ddb1499c75f.png

04

写在最后

01

内容总结

希望这篇文章能够帮助大家更好地理解 DolphinScheduler OpenMLDB Task 的功能作用,了解 DolphinScheduler OpenMLDB Task 的操作流程。

参与贡献

随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。

e8d6f611a0438e1638ad4d1edba1b75e.png

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括:

08be31b4737c170821604440ab9938e6.png

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689

非新手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22

如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html

来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。

参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。

添加小助手微信时请说明想参与贡献。

来吧,开源社区非常期待您的参与。

更多精彩推荐

☞Apache DolphinScheduler3.0.0-beta-1版本发布,新增FlinkSQL,Zepplin任务类型

☞达人专栏 | 还不会用 Apache Dolphinscheduler?大佬用时一个月写出的最全入门教程【二】

☞Apache Dolphinscheduler 5月Meetup:6个月重构大数据平台,帮你避开调度升级改造/集群迁移踩过的坑

☞金融任务实例实时、离线跑批,Apache DolphinScheduler 在新网银行的三大应用场景与五大优化

☞中国联通改造 Apache DolphinScheduler 资源中心,实现计费环境跨集群调用与数据脚本一站式访问

☞又是一年开源之夏,八大课题项目奖金等你来拿!

我知道你在看

8ccebac05bb1aaa88356c2dbd9febcfd.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache DolphinScheduler是一个新一代分布式大数据工作流任务调度系统,致力于“解决大数据任务之间错综复杂的依赖关系,整个数据处理开箱即用”。它以 DAG(有向无环图) 的方式将任务连接起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及 Kill任务等操作。目前已经有像IBM、腾讯、美团、360等400多家公司生产上使用。 调度系统现在市面上的调度系统那么多,比如老牌的Airflow, Oozie,Kettle,xxl-job ,Spring Batch等等, 为什么要选DolphinSchedulerDolphinScheduler 的定位是大数据工作流调度。通过把大数据工作流做了重点标注. 从而可以知道DolphinScheduler的定位是针对于大数据体系。DolphinScheduler 发展很快 很多公司调度都切换到了DolphinScheduler,掌握DolphinScheduler调度使用势在必行,抓住新技术机遇,为跳巢涨薪做好准备。 优秀的框架都是有大师级别的人写出来的,包含了很多设计思想和技术。DolphinScheduler也不例外,它是一个非常优秀的框架,用到很多技术和设计思想,本课程会带大家深入DolphinScheduler框架源码,包括设计的思想和技术都会讲解,DolphinScheduler源码很多,会按照模块进行讲解,学习完课程后,不仅可以熟悉DolphinScheduler使用,而且可以掌握很多优秀的设计思想和技术,给自己的技术带来很大提升,为跳巢涨薪做好准备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值