摘要
Apache DolphinScheduler 3.1.0发版后,添加了诸多AI组件,帮助用户在Apache DolphinScheduler上更方便地构建机器学习工作流。本文介绍如何建立DolphinScheduler与一些机器学习的环境,并以实验案例介绍MLflow组件和DVC组件的使用。
01
DolphinScheduler与机器学习环境
实用项目
所有的代码可在 https://github.com/jieguangzhou/dolphinscheduler-ml-tutorial获取
git clone https://github.com/jieguangzhou/dolphinscheduler-ml-tutorial.git
git checkout dev
安装环境
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
# 确认你的jdk的目录是否为这个,配置环境变量
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/binApache 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
## 配置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
MLflow
docker run --name mlflow -p 5000:5000 -d jalonzjg/mlflow:latest 启动即可first-example/docker-mlflow/Dockerfile02
组件介绍
本文主要用到以下5个类型的组件:
Shell组件
Python组件
Conditions组件
MLFLOW组件
DVC组件
03
机器学习Workflow
Workflow包含三个部分:
前置准备工作流
mkdir /tmp/ds-ml-exampledolphinscheduler-ml-tutorial/first-example目录下运行pydolphinscheduler 提交工作流,所以安装一下 pip install apache-dolphinscheduler==3.1.0Workflow(download-data):
pydolphinscheduler yaml -f pyds/download_data.yamlinstall-dependencies: 安装下载脚本中需要的python依赖包download-data: 下载数据集到 /tmp/ds-ml-example/rawWorkflow(dvc_init_local):
pydolphinscheduler yaml -f pyds/init_dvc_repo.yamlcreate_git_repo: 本地创建一个空的git仓库init_dvc: 将仓库转为dvc类型仓库,用于进行数据版本管理condition: 判断init_dvc任务执行情况,若成功则执行report_success_message,否则执行report_error_message训练模型工作流
Workflow(download-data):
pydolphinscheduler yaml -f pyds/prepare_data.yamldata_preprocessing: 进行数据预处理,这里为了演示,只做了简单的截断处理upload_data: 上传数据到仓库中,并注册为特定版本好 v1Workflow(train_model):
pydolphinscheduler yaml -f pyds/train_model.yamlclean_exists_data: 删除可能重复实验时产生的历史数据 /tmp/ds-ml-example/train_datapull_data: 拉取v1版本的数据到 /tmp/ds-ml-example/train_datatrain_automl: 使用MLFLOW组件的AutoML功能训练分类模型,并注册到MLflow Tracking Server中,若当前模型版本F1为最高,则注册为Production版本。inference: 传入要批量推理的小部分数据,使用mlflow CLI 进行批量推理evaluate: 获取inference推理的结果,对模型再次进行简单的评估,包括新数据的指标,预测的label分布等。部署工作流
Workflow(deploy_model):
pydolphinscheduler yaml -f pyds/deploy.yamlkill-server: 关闭之前的服务deploy-model: 部署模型test-server: 测试服务整合工作流
在实际使用中,在工作流稳定迭代后,需要将整个流程串起来,比如说拿到新版本的数据,训练模型,如果模型效果更好,则部署模型。
如下,我们切换到production版本 git checkout first-example-production
两个版本差异:
false,由 train_and_deploy.yaml 统一运行.运行:pydolphinscheduler yaml -f pyds/train_and_deploy.yaml
下图中每个任务皆为子工作流任务,对应上面介绍的的三个工作流。
04
总结
转载自丨海豚调度
编辑丨王梦玉
*图片来源网络,侵权请联系
投身开源,需要持之以恒的热爱与贡献 —— Apache Spark Committer 姜逸坤
开源码力圆桌文字稿
Jina AI 正式将 DocArray 捐赠给Linux基金会