睿治

智能数据治理平台

睿治作为国内功能最全的数据治理产品之一,入选IDC企业数据治理实施部署指南。同时,在IDC发布的《中国数据治理市场份额,2022》报告中,蝉联数据治理解决方案市场份额第一。

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

时间:2022-05-31来源:小丑鱼浏览数:188

为给 AI 模型构建及应用上线提供便利,简化机器学习建模工程化的流程,OpenMLDB 与 DolphinScheduler 合作开发 DolphinScheduler OpenMLDB Task,将特征平台能力融入 DolphinScheduler 的工作流,链接特征工程与调度环节,打造端到端 MLOps 工作流,帮助开发者专注于业务价值的探索。

导读:

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

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

场景和功能

DolphinScheduler OpenMLDB Task

为什么诞生

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

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

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

DolphinScheduler OpenMLDB Task

可以做什么

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)

实践演示

环境配置

演示可以在 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

浏览器访问 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 都已使用该环境。)

demo 演示

步骤 1 初始配置

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

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

步骤 2 创建工作流

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

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

import workflow 后

点击查看详细内容

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

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

正确结果如下图所示:

直接保存该工作流。

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

步骤 3 运行测试

上线运行

运行成功如下图所示

为演示成功上线的流程,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}'

返回结果如下:

写在最后

内容总结

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

也期待大家持续关注 OpenMLDB,OpenMLDB 社区将持续打造面向上下游技术组件的生态圈,为开发者降低使用门槛,提供更多简单易用的连接工具。

(部分内容来源网络,如有侵权请联系删除)
立即申请数据分析/数据治理产品免费试用 我要试用
customer

在线咨询