暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

海豚调度 2022-06-28
1601


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



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



本次演讲分为四个部分:


  • Apache DolphinScheduler 与 MLOps 的碰撞

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

  • Jupyter 组件和 MLflow 组件的使⽤

  • Apache DolphinScheduler 与 MLOps 结合的计划



Apache DolphinScheduler


01

Apache DolphinScheduler 与 MLOps 的碰撞


什么是 MLOps?

DS



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



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


MLOps  Landscape

DS



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


  • 数据管理

  • 建模

  • 部署

  • 监控


MLOps 案例

DS



DolphinScheduler在MLOps定位

DS


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

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

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

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

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

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


02

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


  • Jupyter Task Plugin

  • MLflow Task Plugin

  • OpenMLDB Task Plugin



Jupyter Task Plugin

DS


Jupyter Notebook 简介


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


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


组件介绍



  • 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领域一个优秀的开源项目, 用于管理机器学习的生命周期,包括实验、可再现性、部署和中心模型注册。



组件介绍-MLflow Projects


Custom projects


Custom projects: 支持运行自己的

MLflow Projects项目


  • MLflow Tracking Server URI

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

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

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

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


BasicAlgorithm


BasicAlgorithm:包含LogisticRegression

svm, lightgbm, xgboost


  • MLflow Tracking Server URI

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

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

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

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

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

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

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


该功能预置算法实现由

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


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



03

Jupyter 组件和 MLflow 组件的使⽤


Jupyter 组件使用

DS


环境配置


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



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



如何调起 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模型中心的模型名字



拖拽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"。



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



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



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




使用场景


  • 数据探索与分析

  • 训练模型

  • 定期线上数据监控


MLflow 组件使用

DS


环境配置


  • conda 环境配置


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



  • MLflow Service


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



更稳健的启动方式:


  • 使用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格式的数据集



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



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



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



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


工作流中的任务实例


执行后的任务实例详情



使用MLflow 部署任务

DS


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

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

  3. 简单测试接口


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


选择部署模型版本


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


确定模型URI和监听端口


具体运行机制


测试运行结果,可自定义


Jupyter + MLflow 联合使用

DS


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


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



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


04

Apache DolphinScheduler 与 MLOps 结合的计划


MLOps  Landscape

DS



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


未来MLOps组件支持

DS



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


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


参与贡献


随着国内开源的迅猛崛起,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) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。


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


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



更多精彩推荐

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


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


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


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


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


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


我知道你在看


文章转载自海豚调度,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论