当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第1张图片

作者 | 周捷光 白鲸开源 高级算法工程师

导读:MLOps,即机器学习模型运营化已经是一个成熟的概念了。可以将其理解为用于机器学习的 DevOps,这个概念让数据科学家和 IT 团队能够通过监控、验证和管理机器学习模型,来进行协作并提高模型开发和部署的速度。总之,MLOps 可以帮助用户更快地试验和开发模型,更快地将模型部署到生产环境,并进行质量保证。

本次演讲分为四个部分:

  • Apache DolphinScheduler 与 MLOps 的碰撞

  • Apache DolphinScheduler ⽬前⽀持的机器学习任务类型

  • Jupyter 组件和 MLflow 组件的使⽤

  • Apache DolphinScheduler 与 MLOps 结合的计划

Apache DolphinScheduler

01

Apache DolphinScheduler 与 MLOps 的碰撞

什么是 MLOps?

DS

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第2张图片

MLOps 是机器学习时代的 DevOps。它的主要作⽤就是连接模型构建团队和业务,运维团队,建⽴起⼀个标准化的模型开发、部署与运维流程,使得企业组织能更好地利⽤机器学习能⼒来促进业务增⻓。

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第3张图片

在实际⽣产中,ML代码可能只是整个系统的⼩部分代码,所需要的其他相关的元素是很庞⼤且很复杂的。

MLOps  Landscape

DS

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第4张图片

当前的MLops系统划分虽然不尽相同,但是核⼼是类似的,⼤致可以分成以下四个阶段的⼯作:

  • 数据管理

  • 建模

  • 部署

  • 监控

MLOps 案例

DS

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第5张图片

DolphinScheduler在MLOps定位

DS

  • 支持调度执行ML任务的能力

  • 支持执行用户使用各种框架训练任务的特性

  • 支持调度执行主流MLOps项目的能力

  • 提供out-of-box的主流MLOps项目来让用户更方便的使用对应能力

  • 支持编排各个模块搭建机器学习平台的能力

  • 依据MLOps项目特性跟业务的适配程度,在不同的模块中可以使用不同项目的能力。

02

Apache DolphinScheduler 目前支持的 ML 任务类型

  • Jupyter Task Plugin

  • MLflow Task Plugin

  • OpenMLDB Task Plugin

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第6张图片

Jupyter Task Plugin

DS

Jupyter Notebook 简介

Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。

Papermill 是一个可以参数化和执行Jupyter Notebook的工具。

组件介绍

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第7张图片

  • Conda Env Name: Conda环境名称。

  • Input Note Path: 输入的jupyter note模板路径。

  • Output Note Path: 输出的jupyter note路径。

  • Parameters: 对接jupyter note参数化的JSON格式参数。

  • Kernel: Jupyter notebook 内核。

MLflow Task Plugin

DS

MLflow 简介

MLflow 是一个MLOps领域一个优秀的开源项目, 用于管理机器学习的生命周期,包括实验、可再现性、部署和中心模型注册。

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第8张图片

组件介绍-MLflow Projects

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第9张图片

Custom projects

Custom projects: 支持运行自己的

MLflow Projects项目

  • MLflow Tracking Server URI

  • 实验名称 :任务运行时所在的实验

  • 参数 : mlflow run中的 --param-list

  • 运行仓库 : MLflow Project的仓库地址

  • 项目版本 : 对应项目中git版本管理中的版本,默认 master

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第10张图片

BasicAlgorithm

BasicAlgorithm:包含LogisticRegression

svm, lightgbm, xgboost

  • MLflow Tracking Server URI

  • 实验名称 :任务运行时所在的实验

  • 注册模型 :是否注册模型

  • 注册的模型名称 : 注册的模型名称

  • 数据路径 : 文件/文件夹的绝对路径

  • 参数 : 初始化模型时的参数

  • 算法 :选择的算法,支持 LR, SVM, LightGBM, XGBoost.

  • 参数搜索空间 : 运行对应算法的参数搜索空间

该功能预置算法实现由

https://github.com/apache/dolphinscheduler-mlflow 提供

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第11张图片

AutoML

AutoML: AutoML工具,支持 autosklearn 

flaml

  • MLflow Tracking Server URI

  • 实验名称 :任务运行时所在的实验

  • 注册模型 :是否注册模型

  • 注册的模型名称 : 注册的模型名称

  • 数据路径 : 文件/文件夹的绝对路径

  • 参数 : 初始化AutoML训练器时的参数

  • AutoML工具 : 目前支持 autosklearn , flaml

该功能预置算法实现由 https://github.com/apache/dolphinscheduler-mlflow 提供

MLflow Models

MLFLOW: 直接读取模型地址,启动inference服务

  • MLflow Tracking Server URI

  • 部署模型的URI :MLflow 服务里面模型对应的URI

  • 部署端口 :部署服务时的端口

DOCKER: 将模型打包成DOCKER镜像后运行

  • MLflow Tracking Server URI

  • 部署模型的URI :MLflow 服务里面模型对应的URI

  • 部署端口 :部署服务时的端口

Docker Compose: 使用Docker Compose 部署模型

  • MLflow Tracking Server URI

  • 部署模型的URI :mlflow 服务里面模型对应的uri

  • 部署端口 :部署服务时的端口

  • 最大cpu限制 :容器占用的最大CPU

  • 最大内存限制 :容器占用的最大内存限制

OpenMLDB Task Plugin

DS

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第12张图片

03

Jupyter 组件和 MLflow 组件的使⽤

Jupyter 组件使用

DS

环境配置

在common.properties 中即可配置conda环境变量

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第13张图片

创建一个conda环境,用于执行Jupyter Notebook:

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第14张图片

如何调起 Jupyter 任务运行 Notebook?

  1. 准备一个Jupyter Notebook

  2. 使用DolphinScheduler创建Jupyter任务

  3. 运行工作流

以下为一个使用SVM和iris数据集训练分类模型的Notebook

Notebook接收以下四个参数

  1. experiment_name:记录到MLflow服务中心的实验名称

  2. C:SVM参数

  3. kernel:SVM参数

  4. model_name:注册到MLflow模型中心的模型名字

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第15张图片

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第16张图片

拖拽Jupyter任务组件到画布,创建一个任务,如下:

该任务会运行

Notebook: /home/lucky/WhaleOps/jupyter/MLOps/training_iris_svm.ipynb,并将运行结果保留在路径 /home/lucky/WhaleOps/jupyter/MLOps/training_iris_svm/03.ipynb 中。

并且运行时参数 C 设置为"1.0", kernel 设置为 "linear",

运行的conda环境为kernel: "jupyter_test"。

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第17张图片

我们可以再复制出两个相同的任务,并使用不同的参数。因此我们得到了三个不同参数的Jupyter任务,如下:

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第18张图片

创建完成后,我们可以在工作流定义中看到我们新建的工作流(该工作流包含了3个Jupyter任务),点击红色箭头后,可以执行改工作流(也可以点击绿色箭头,设定定时任务满足实现定时运行工作流的需求)

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第19张图片

工作流运行后,可以点击任务实例查看每个任务的执行情况,点击红色箭头指向的按钮即可查看每个任务执行的日志。

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第20张图片

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第21张图片

使用场景

  • 数据探索与分析

  • 训练模型

  • 定期线上数据监控

MLflow 组件使用

DS

环境配置

  • conda 环境配置

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第22张图片

创建完环境后,后续每个任务都可以在Environment Name中选择我们刚创建的环境。

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第23张图片

  • MLflow Service

安装MLflow, 使用 pip install mlflow 进行安装,即可启动 MLflow service。

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第24张图片

更稳健的启动方式:

  • 使用Docker Compose(如 https://github.com/Toumash/mlflow-docker)

  • 使用helm (如 https://artifacthub.io/packages/helm/cetic/mlflow)

使用MLflow任务训练模型

DS

配置完环境后,如何使用MLflow训练任务?

  1. 准备一个数据集

  2. 使用DolphinScheduler创建MLflow训练任务

  3. 运行工作流

以下是一个iris的csv格式的数据集

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第25张图片

举例创建工作流如下,包含两个MLflow任务

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第26张图片

任务一: 使用svm训练iris分类模型,并设置如下参数,其中,超参数搜索空间用于调参使用,若不填,则不搜索超参数。

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第27张图片

任务二:使用AutoML方法训练模型,AutoML工具使用flaml,并设置搜索时间为60秒,并只允许使用 lgbm, xgboost 作为estimator。

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第28张图片

创建完工作流后,我们可以点击红色箭头指向的按钮来立即执行工作流。

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第29张图片

工作流中的任务实例

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第30张图片

执行后的任务实例详情

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第31张图片

使用MLflow 部署任务

DS

  1. 选择要部署的模型版本

  2. 使用DolphinScheduler创建MLflow部署任务

  3. 简单测试接口

上文中我们已经注册了在MLflow模型中心中注册了一些模型,我们可以打开 127.0.0.1:5000中看到模型的版本,如下

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第32张图片

选择部署模型版本

创建一个MLflow Models的任务,指定模型未 iris_model, 版本为 Production (生产版本),设置监听端口为7000

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第33张图片

确定模型URI和监听端口

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第34张图片

具体运行机制

5db9f30ecca9256d3101168a5b7cd59e.png

测试运行结果,可自定义

Jupyter + MLflow 联合使用

DS

训练完模型后自动部署,以下为例子:

引用我们上面创建的工作流(Jupyter训练模型,MLflow部署模型)作为子工作流,并串联一起形成一个新的工作流即可。

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第35张图片

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第36张图片

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第37张图片

思考:Jupyter+MLflow还能做些什么?再加上OpenMLDB呢?

04

Apache DolphinScheduler 与 MLOps 结合的计划

MLOps  Landscape

DS

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第38张图片

上图为机器学习相关工具和平台的展示图,Apache DolphinScheduler 未来将有选择地支持其中一些使用范围较广,使用价值较高的工具和平台。

未来MLOps组件支持

DS

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第39张图片

未来,Apache DolphinScheduler 将支持的MLOps组件主要分为三个模块,包括数据治理、模型和部署,涉及到的组件主要有 DVC(Data Version Control),集成Kubeflow建模,提供Seldon Core、BentoML、Kubeflow等部署工具,以适用不同场景使用需求。

如何集成更多工具,让Apache DolphinScheduler更好地服务用户,是我们长期的思考话题,欢迎更多对MLOps或开源感兴趣的小伙伴参与共建!

参与贡献

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

d76715cb56ced53552a4dacebf08250b.png

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

554fce1c5bf82070844dde81720f1c1f.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) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。

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

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

更多精彩推荐

‍☞日均 6000+ 实例,TB 级数据流量,Apache DolphinScheduler 如何做联通医疗大数据平台的“顶梁柱”‍

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

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

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

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

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

我知道你在看

当 Apache DolphinScheduler 遇上 MLOps,机器学习模型部署到生产环境更快、更安全_第40张图片

你可能感兴趣的:(大数据,python,java,人工智能,docker)