首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

https://github.com/apache/dolphinscheduler

摘要

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路径加入到环境变量

执行安装相关包, 安装后,命令会安装到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

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

配置

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

首先执行

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

启动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页面

账号:,密码:

MLflow

MLflow Tracking Server启动比较简单,可简单通过命令启动即可

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

该镜像的Dockerfile可见

02

组件介绍

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

01

Shell组件

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

02

Python组件

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

03

Conditions组件

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

04

MLFLOW组件

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

05

DVC组件

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

以上五个组件中,

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

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

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

03

机器学习Workflow

Workflow包含三个部分:

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

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

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

01

前置准备工作流

创建一个目录用于存放过程中的所有的数据

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

以下所有命令皆在目录下运行

因为我们通过提交工作流,所以安装一下

Workflow(download-data): 下载实验数据

命令:

依次执行以下两个任务

: 安装下载脚本中需要的python依赖包

: 下载数据集到

Workflow(dvc_init_local): 初始化DVC数据版本管理仓库

命令:

依次执行以下任务

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

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

: 判断任务执行情况,若成功则执行,否则执行

02

训练模型工作流

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

Workflow(download-data): 数据预处理

命令:

依次执行以下任务

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

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

下图为git仓库中的信息

Workflow(train_model): 训练模型

命令:

依次执行以下任务

: 删除可能重复实验时产生的历史数据

: 拉取v1版本的数据到

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

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

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

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

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

03

部署工作流

Workflow(deploy_model): 部署模型

运行:

依次运行以下任务:

: 关闭之前的服务

: 部署模型

: 测试服务

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

04

整合工作流

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

如下,我们切换到production版本

两个版本差异:

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

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

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

运行:

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

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

04

总结

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

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221123A0719B00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com