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


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
实践演示
演示可以在 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.gzcd apache-dolphinscheduler-*-binsh ./bin/dolphinscheduler-daemon.sh start standalone-server
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 都已使用该环境。)


03
demo 演示

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


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


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

import workflow 后

点击查看详细内容

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

如上图,请将成功和失败的“分支流转”和前置检查条件修改为当前的task。
正确结果如下图所示:


上线运行

运行成功如下图所示

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}'

04
写在最后
希望这篇文章能够帮助大家更好地理解 DolphinScheduler OpenMLDB Task 的功能作用,了解 DolphinScheduler OpenMLDB Task 的操作流程。
参与贡献
随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。

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

贡献第一个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 资源中心,实现计费环境跨集群调用与数据脚本一站式访问
我知道你在看哟





