手把手教你上手Apache DolphinScheduler机器学习工作流

2023-11-13

83a92335e25cf2ca07a9d01d2edd1340.gif

29355e644ad40b36faa78f078e88effd.jpeg

摘要

Apache DolphinScheduler 3.1.0发版后,添加了诸多AI组件,帮助用户在Apache DolphinScheduler上更方便地构建机器学习工作流。本文介绍如何建立DolphinScheduler与一些机器学习的环境,并以实验案例介绍MLflow组件和DVC组件的使用。

01

 DolphinScheduler与机器学习环境 

01

实用项目

所有的代码可在 https://github.com/jieguangzhou/dolphinscheduler-ml-tutorial获取

git clone https://github.com/jieguangzhou/dolphinscheduler-ml-tutorial.git
git checkout dev

02

安装环境

Conda

略,按照官网安装即可,并将conda路径加入到环境变量

执行安装相关包, 安装后mlflow, dvc 命令会安装到conda的bin目录下。

pip install mlflow==1.30.0 dvc

Java8环境

sudo apt-get update
sudo apt-get install openjdk-8-jdk
java -version

配置Java环境变量, ~/.bashrc 或者 ~/.zshrc

# 确认你的jdk的目录是否为这个,配置环境变量
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

Apache DolphinScheduler 3.1.0

下载DolphinScheduler 3.1.0

# 进入以下目录(可以在其他目录安装,为了方便复现,本文在以下目录安装)
cd first-example/install_dolphinscheduler
## install DolphinScheduler
wget https://dlcdn.apache.org/dolphinscheduler/3.1.0/apache-dolphinscheduler-3.1.0-bin.tar.gz
tar -zxvf apache-dolphinscheduler-3.1.0-bin.tar.gz
rm apache-dolphinscheduler-3.1.0-bin.tar.gz

配置DolphinScheduler中的Conda环境和Python环境

## 配置conda环境和默认python环境
cp common.properties apache-dolphinscheduler-3.1.0-bin/standalone-server/conf
echo "export PATH=$(which conda)/bin:\$PATH" >> apache-dolphinscheduler-3.1.0-bin/bin/env/dolphinscheduler_env.sh
echo "export PYTHON_HOME=$(dirname $(which conda))/python" >> apache-dolphinscheduler-3.1.0-bin/bin/env/dolphinscheduler_env.sh
  • dolphinscheduler-mlflow配置

    在使用MLFLOW组件时会引用Github上的dolphinscheduler-mlflow项目,如网络无法畅通链接,可以按一下步骤替换仓库源

    首先执行 git clone https://github.com/apache/dolphinscheduler-mlflow.git

    然后修改common.properties中 ml.mlflow.preset_repository 字段值为下载后的绝对路径即可

启动DolphinScheduler

## start DolphinScheduler
cd apache-dolphinscheduler-3.1.0-bin
bash bin/dolphinscheduler-daemon.sh start standalone-server

## 可以通过以下命令查看日志
# tail -500f standalone-server/logs/dolphinscheduler-standalone.log

启动后,稍等一会服务启动即可进入DolphinScheduler的页面

打开 http://localhost:12345/dolphinscheduler/ui,可以看到DolphinScheduler页面

账号:admin,密码:dolphinscheduler123

80a48d594ac83b96565eb2e758820570.png

MLflow

MLflow Tracking Server启动比较简单,可简单通过命令docker run --name mlflow -p 5000:5000 -d jalonzjg/mlflow:latest 启动即可

打开 http://localhost:5000,可以看到MLflow模型和实验管理的页面

cff455278f827e797bdce616dd6b87ec.png

该镜像的Dockerfile可见 first-example/docker-mlflow/Dockerfile

02

 组件介绍 

本文主要用到以下5个类型的组件:

01

Shell组件

SHELL组件用于运行shell类型任务。

02

Python组件

PYTHON组件用于运行python类型任务。

03

Conditions组件

CONDITIONS是一个条件节点,根据上游任务运行状态,判断应该运行哪个下游任务。

04

MLFLOW组件

MLFLOW组件用于在DolphinScheduler上运行MLflow Project和基于 dolphinscheduler-mlflow库实现针对分类场景的预置算法和AutoML功能,部署MLflow tracking server上的模型。

05

DVC组件

DVC组件用于在DolphinScheduler上进行机器学习中的数据的版本管理,如将特定数据注册为特定版本,下载特定版本的数据。

以上五个组件中,

  • SHELL组件和PYTHON组件为基础组件,可以运行广泛的任务;

  • CONDITIONS为逻辑组件,可以动态控制工作流的运行逻辑;

  • MLFLOW组件和DVC组件为机器学习类型组件,可以用于方便在工作流上方便使用机器学习场景特性能力。

03

  机器学习Workflow 

Workflow包含三个部分:

  • 第一部分为前置的一些准备,比如数据下载,数据版本管理仓库建立等,为一次性准备工作;

  • 第二部分为训练模型工作流:包含数据预处理,训练模型和模型评估;

  • 第三部分为部署流程工作流:包含模型部署,接口测试。

01

前置准备工作流

创建一个目录用于存放过程中的所有的数据  mkdir /tmp/ds-ml-example

在项目一开始,我们需要下载实验数据和进行dvc仓库的初始化用于数据版本管理

以下所有命令皆在dolphinscheduler-ml-tutorial/first-example目录下运行

因为我们通过pydolphinscheduler 提交工作流,所以安装一下 pip install apache-dolphinscheduler==3.1.0

Workflow(download-data):


下载实验数据


命令: pydolphinscheduler yaml -f pyds/download_data.yaml

依次执行以下两个任务

  1. install-dependencies: 安装下载脚本中需要的python依赖包

  2. download-data: 下载数据集到 /tmp/ds-ml-example/raw

2e467fa505431600633da2c382bb53f3.png

Workflow(dvc_init_local):


初始化DVC数据版本管理仓库


命令: pydolphinscheduler yaml -f pyds/init_dvc_repo.yaml

依次执行以下任务

  1. create_git_repo: 本地创建一个空的git仓库

  2. init_dvc: 将仓库转为dvc类型仓库,用于进行数据版本管理

  3. condition: 判断init_dvc任务执行情况,若成功则执行report_success_message,否则执行report_error_message

2949aad5cf790c3eb87d86b4c324c59b.png

02

训练模型工作流

在训练模型阶段,包含了数据预处理,模型训练,模型评估相关工作。

Workflow(download-data):

数据预处理

命令:  pydolphinscheduler yaml -f pyds/prepare_data.yaml

87505cc9b8c0dd5df360f6c6cbd66c28.png

依次执行以下任务

  1. data_preprocessing: 进行数据预处理,这里为了演示,只做了简单的截断处理

  2. upload_data: 上传数据到仓库中,并注册为特定版本好 v1

下图为git仓库中的信息

c4ac2b6ccc149f02ef4baffe8444141c.png

Workflow(train_model):

训练模型


命令: pydolphinscheduler yaml -f pyds/train_model.yaml

依次执行以下任务

  1. clean_exists_data: 删除可能重复实验时产生的历史数据 /tmp/ds-ml-example/train_data

  2. pull_data: 拉取v1版本的数据到 /tmp/ds-ml-example/train_data

  3. train_automl: 使用MLFLOW组件的AutoML功能训练分类模型,并注册到MLflow Tracking Server中,若当前模型版本F1为最高,则注册为Production版本。

  4. inference: 传入要批量推理的小部分数据,使用mlflow CLI 进行批量推理

  5. evaluate: 获取inference推理的结果,对模型再次进行简单的评估,包括新数据的指标,预测的label分布等。

cf9328549af9daf8277c1948764fdc7c.png

其中train_automl运行完成后可以在MLflow Tracking Server ( http://localhost:5000 ) 中看到对应的实验结果以及模型情况

7afc767fefbfe1157d4803c40ff502fc.png

7b52929be768fd48ea16468ea22c014b.png


其中evaluate任务运行完,可以查看对应的日志:

5fd8a3c87dec1b6de6f13594d105c4df.png

03

部署工作流

Workflow(deploy_model):

部署模型

运行:pydolphinscheduler yaml -f pyds/deploy.yaml

依次运行以下任务:

  1. kill-server: 关闭之前的服务

  2. deploy-model: 部署模型

  3. test-server: 测试服务

d5f0550ae4797839789e834dd9feff85.png

该工作流定义如果手动启动,界面如下,即输入端口号和模型版本号即可。

0534398926d30186a17d6fc5a7831ec2.png

04

整合工作流

在实际使用中,在工作流稳定迭代后,需要将整个流程串起来,比如说拿到新版本的数据,训练模型,如果模型效果更好,则部署模型。

如下,我们切换到production版本 git checkout first-example-production

两个版本差异:

  1. 多了一个train_and_deploy.yaml 的工作流定义,用于串联各个工作流

  2. 修改预处理脚本得到v2版本数据

  3. 将每个子工作流的定义中,是否运行的flag改为false,由 train_and_deploy.yaml 统一运行.

运行:pydolphinscheduler yaml -f pyds/train_and_deploy.yaml

下图中每个任务皆为子工作流任务,对应上面介绍的的三个工作流。

ae82af47a778b886312ddd414f5352d8.png

如下,运行完成后,得到新版模型version2,并且已经注册为Production

fda22dafca7448109e0bacd974fa15d3.png

a34070983317dd9a86aeecf716ebf963.png

04

  总结 

本文介绍了如何上手Apache DolphinScheduler构建机器学习工作流,希望能给大家带来一些收获:

  1. 了解如果构建Apache DolphinScheduler, Conda, MLflow 服务环境;

  2. 能够快速运行一个机器学习工作流。

转载自丨海豚调度

编辑丨王梦玉

责编丨金心悦

*图片来源网络,侵权请联系

14d97ba12a92a848a46a96c260123e8b.jpeg

投身开源,需要持之以恒的热爱与贡献 —— Apache Spark Committer 姜逸坤

098599525e3cd636db629ddf43f6b317.jpeg

开源码力圆桌文字稿

5b1463a6d49dedcb3f3749105817c88e.png

Jina AI 正式将 DocArray 捐赠给Linux基金会

开源社简介

开源社成立于 2014 年,是由志愿贡献于开源事业的个人成员,依 “贡献、共识、共治” 原则所组成,始终维持厂商中立、公益、非营利的特点,是最早以 “开源治理、国际接轨、社区发展、开源项目” 为使命的开源社区联合体。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,以 “立足中国、贡献全球” 为愿景,旨在共创健康可持续发展的开源生态,推动中国开源社区成为全球开源体系的积极参与及贡献者。

2017 年,开源社转型为完全由个人成员组成,参照 ASF 等国际顶级开源基金会的治理模式运作。近八年来,链接了数万名开源人,集聚了上千名社区成员及志愿者、海内外数百位讲师,合作了近百家赞助、媒体、社区伙伴。

aa7a6b05352f9f0e4ed39d8955c4b4c7.gif

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手教你上手Apache DolphinScheduler机器学习工作流 的相关文章

  • 弃用http改用https的缘故,与密钥的使用,证书意义

    为何弃用http协议 在十几年前 我们的传输协议是http协议 为何到了如今改成了https协议呢 为了安全的考虑 在http协议中 我们的内容是透明的 不被保护的 在黑客等恶意分子的面前 信息极其任意被破译 让我们看看客户端如果使用htt
  • spring笔记1(基础(IoC控制反转、DI依赖注入)、整合Junit、整合web)

    目录 前言 1 spring框架概述 1 什么是spring 1 2 spring由来 1 3spring核心 1 4spring优点 1 5 spring体系结构 2入门案例 IoC 掌握 2 1 导入jar包 2 2 目标类 2 3 配
  • R中关于金融的包

    quantmod 数据和图形 TTR 技术分析 blooter 账户管理 FinancialInstrument 金融产品 quantstrast 策略模型 PerformanceAnalytics 表现分析 这些R包依然在发展中 有些还被
  • 原生js导出excel,并保留样式

    前端表格导出excel一般我们使用xlsx等插件导出 但如果想保留表格的样式导出的话 还需要再使用其他的插件才行 如要保留宽度 字体颜色 背景颜色等样式 这里可以直接使用简短的 原生js方法即可导出带样式的excel文件 直接上代码 原生表
  • 股票实时数据接口

    From http chenpeng info html 1058 做了一点股票分析数据准备 做了个均线图 http stock chenpeng info randomone 查询股票走势请移步 http stock chenpeng i
  • Java内存模型

    Android开发中 存在大量并发的情况 因此也会遇到很多线程安全问题 在查询线程安全相关资料时 通常会查到Java内存模型的知识点 Java内存模型的主要目标是定义程序中各个变量的访问规则 即在虚拟机中将变量存储到内存和从内存中取出变量这
  • 如何一次让ChatGPT输入多个版本的内容供你选择

    随着人工智能的不断进步 我们对于AI工具的需求也在日益增加 尤其是像GPT这样的高级工具 单一的答案输出已经不能满足用户的多元需求 实际上 当我们面对一个问题时 多种答案的输出能让我们更全面地了解和思考 这样我们就可以从各种可能的答案中选择
  • Nikitosh and xor【字典树+dp】

    题目链接 比较明显的 正向一个推过去的字典树 再反向退回来的一个字典树 然后异或和用差分的方式解决 字典树一定是要从第29位开始往下的 千万别从第0位往上 include
  • JavaScript常用的5种排序算法,你都掌握了吗?

    今天给大家带来5种最常见的前端排序算法 注释非常详细 欢迎讨论 1 冒泡排序 Bubble Sort 定义 冒泡排序是一种简单的比较排序算法 它重复地比较相邻的元素 并将顺序错误的相邻元素交换位置 直到整个序列排序完成 代码示例 funct
  • int 0x80系统调用的参数传递规则

    系统调用的参数传递规则 传递给系统调用的参数则必须按照参数顺序依次存放到寄存器ebx ecx edx esi edi中 当系统调用完成之后 返回值存放在eax中 A 当系统调用所需参数的个数不超过5个的时候 执行 int 0x80 指令时
  • Chroom书签同步

    Chroom自带书签管理 而且有些管理书签的插件 我感觉自带书签管理栏就能满足我的个人需求 但是有一个问题 当我换了电脑后 原来的书签怎么同步 我为什么要使用Chroom 用其他浏览器广告太多了 比如360 也试着使用国内的其他浏览器 感觉
  • 如何在vscode配置php开发环境

    3 下载并安装vscodehttps code visualstudio com 下载的是一个压缩包 将其解压至一个目录 4 在vscode中安装调试插件右侧栏中点击扩展 输入xdebug 出来的php debug 点击安装 在菜单栏 文件
  • C++ 常用容器及其使用方法

    文章目录 本章内容概述 一 Vector 1 构造函数 2 增加函数 3 删除函数 4 属性函数 二 Unordered map 1 构造函数 2 增加函数 3 删除函数 4 属性函数 三 Stack 1 构造函数 2 访问方式 3 增加函
  • python: pandas与numpy(一)创建DataFrame数组与数组的简单操作

    目录 前言 1 创建Series数组 2 创建DataFrame数组 使用字典来创建DataFrame 使用列表来创建DataFrame 使用Series数组创建DataFrame 使用numpy函数创建DataFrame 3 在DataF
  • logback.xml

  • Mayor‘s posters(线段树染色)

    题目链接 Mayor s posters 2023 4 13 更新了代码 修复了错误的离散化长度 已在代码中注出 大致题意 有n个人依次贴海报 第i个海报的范围是 li ri 后面贴的海报会覆盖掉之前贴的海报 问 最终还能看到多少张海报 解
  • java的3大注释快捷键大全

    单行注释 行注释 一般用于单行或者少量代码 快捷键 光标 ctrl 或者 多行注释 块注释 一般用于多行或者大量代码 快捷键 选中 ctrl shift 文档注释 方法或类注释 一般用于对类和方法的说明 快捷键 光标 回车键 EnTer
  • 蓝桥杯Java必备基础知识总结大全【3W字】持续更新中

    本文会持续更新 如果对您有帮助的话可以点点关注 双击 本人2021年蓝桥杯C B组国二 今年转战Java 并整理此文 希望能够对大家有所帮助 第一次写这么长的文章 可能有的地方写的不是很好 还请大家多多谅解 我会持续进行改进并且更新 更新
  • 海思(MPP)媒体处理软件平台(3)-----VDEC

    sample vdec 视频解码 测试环境 在HI3531D开发板上运行 查看代码使用VSCode 运行 nfsroot mpp sample vdec sample vdec please choose the case which yo
  • [激光原理与应用-68]:光耦继电器、固态继电器、延时继电器、PLC开关信号

    一 PLC开关信号 备注 PLC需要的是开关信号 闭合或断开 不需要TTL电平信号 二 激光器输出信号 三 固态激光器工作原理 四 光耦继电器原理 五 光耦 延时 继电器原理 六 差分转单端原理

随机推荐

  • 排列组合知识

    排列组合的定义 排列 就是从n个元素中取出m个元素 按照一定的顺序排成一列 看到没 是要有顺序排成一列的 组合 也是从n个元素中取出m个元素 只不过是组成一个组 并不要求排成一列 只要组的成员不同就可以了 公式如下 例题 哪里用得上排列组合
  • 【Markdown】图片缩放

    01 原图表示 语法为 替代文本 图片链接地址 其中 替代文本是在无法显示图片时显示的替代文本 而图片链接是指向图片的URL或相对路径 例如 插入Panda图片 panda https img blog csdnimg cn e5f32e4
  • 亚信科技AntDB数据库专家参加向量数据库首次技术标准研讨会

    2023年7月19日下午 中国通信标准化协会大数据技术标准推进委员会数据库与存储工作组 CCSA TC601 WG4 联合中国信通院数据库应用创新实验室 CAICT DBL 在线上召开 向量数据库技术要求 标准首次研讨会 本次会议由中国信通
  • 单端反激——隔离型DC/DC变换器的设计及仿真

    单端反激 隔离型DC DC变换器的设计及仿真 技术指标 1 原理分析 2 参数设计 3 仿真验证 技术指标 输入电压 V s m i n
  • Spring Boot 2.2.6 源码之旅二十五SpringMVC源码之RequestMappingHandlerMapping的初始化三

    Spring Boot 2 2 6 源码之旅二十五SpringMVC源码之RequestMappingHandlerMapping的初始化三 简单流程图 MappingRegistry的一些映射 urlLookup一键多值的url和Requ
  • 那些会阻碍程序员成长的细节[4]

    照例 如果没有读过之前的系列 在这里可以先回顾一下 那些会阻碍程序员成长的细节 1 那些会阻碍程序员成长的细节 2 那些会阻碍程序员成长的细节 3 本文共 1637 字 预计阅读时间 5 分钟 不愿意跟领导走的近 是不是有这样的体会 凡事有
  • 【python标准库学习】re模块

    1 什么是re 正则表达式一门相对通用的语言 在python中也有对正则表达式的支持 那就是的内置re模块 正则表达式就是一系列的规则去匹配字符串然后进行相应的操作 这些规则网上一搜一大片 而re则是运用正则表达式来提供一系列的功能强大的接
  • Vue中如何进行打包与部署?

    Vue中如何进行打包与部署 Vue是一款流行的JavaScript框架 它提供了丰富的功能和组件 可以用于构建现代化的Web应用程序 在开发Vue应用程序时 我们通常需要进行打包和部署 本文将介绍Vue中的打包和部署 包括使用Webpack
  • STL list合并

    知识点来源 cplusplus STL list 网上很多关于list的操作很少有提及到怎么合并 要说这个合并几乎是每个数据结构课提及到的O 1 操作的必修知识点 同时还有人甚至搞不清楚什么叫Merge 归并 和合并 Union 归并的意思
  • linux 查看端口连接数

    一 查看哪些IP连接本机 netstat an 二 查看TCP连接数 1 统计80端口连接数 netstat nat grep i 80 wc l 2 统计httpd协议连接数 ps ef grep httpd wc l 3 统计已连接上的
  • 高斯列主消元法 求非齐次线性方程组 C语言实现代码

    高斯列主元素消去法是由高斯消去法改进的算法 下面浅浅分享一下本人对该方法的理解 Ax b 先说高斯消去法 感觉基本的思路就跟我们手算非齐次线性方程组差不多 在线性代数中 我们求解方程组都是这种思路 消元的过程相当于是 由系数矩阵A和非齐次项
  • linux下代码分析工具Splint

    1 C代码静态分析工具 Its4 读取一个或多个 C C 源程序 将每个源程序分割成函数标志流 然后检查生成的标志是否存在于漏洞数据库中 从而得到每个源程序的所有错误警告列表 并带有相关的描 述 其规则库vulns i4d定义了各种函数的危
  • 【医学图像分割】 MIXED Transformer 、DS-TransUNet、Swin-Unet

  • Qt开发北斗定位系统融合百度地图API及Qt程序打包发布

    Qt开发北斗定位系统融合百度地图API及Qt程序打包发布 1 上位机介绍 最近有个接了一个小型项目 内容很简单 就是解析北斗GPS的串口数据然后输出经纬度 但接过来觉得太简单 就发挥了主观能动性 增加了百度地图API 不但能实时定位 还能在
  • 波兰表达式 & 逆波兰表达式

    1 概述 1 1 什么是波兰表达式 先来看看维基百科对于波兰表达式和逆波兰表单的解释 波兰表示法 Polish notation 或波兰记法 是一种逻辑 算术和代数表示方法 其特点是操作符置于操作数的前面 因此也称做前缀表示法 如果操作符的
  • C++ 大话设计之《观察者模式》(优缺点,设计原理,常用场景)

    观察者模式是一种行为型模式 优点 松散耦合 观察者模式提供了一种松散耦合的设计 使得当一个对象的状态发生变化时 它不需要知道其他对象是如何使用这些信息的 这使得系统更容易扩展和维护 动态关联 观察者模式允许在运行时动态地添加或删除观察者 而
  • #bat 利用bat脚本添加/删除环境变量

    目录 添加到Path 从Path中删除 操作环境变量有风险 目标文件夹 current path bin 添加到Path echo path gt gt log txt echo off set pathStr path set mingw
  • 从周赛中学算法-2023上

    从周赛中学算法 2023上 https leetcode cn circle discuss v2RXSN 文章目录 从周赛中学算法 2023上 一 技巧类 2730 找到最长的半重复子字符串 https leetcode cn probl
  • SpringCloudAlibaba之Sentinel 自定义熔断逻辑处理

    Sentinel服务熔断环境搭建 服务熔断 应对微服务雪崩效应的一种链路保护机制 类似保险丝 需要完成Sentinel整合Ribbon openFeign 所以我们先要搭建环境 那么先从整合Ribbon开始 环境搭建 为了演示操作 所以在这
  • 手把手教你上手Apache DolphinScheduler机器学习工作流

    摘要 Apache DolphinScheduler 3 1 0发版后 添加了诸多AI组件 帮助用户在Apache DolphinScheduler上更方便地构建机器学习工作流 本文介绍如何建立DolphinScheduler与一些机器学习