MLflow节点

综述

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

MLflow 组件用于执行 MLflow 任务,目前包含Mlflow Projects,和MLflow Models。(Model Registry将在不就的将来支持)。

  • MLflow Projects: 将代码打包,并可以运行到任务的平台上。
  • MLflow Models: 在不同的服务环境中部署机器学习模型。
  • Model Registry: 在一个中央存储库中存储、注释、发现和管理模型 (你也可以在你的MLflow project 里面自行注册模型)。

目前 Mlflow 组件支持的和即将支持的内容如下中:

  • MLflow Projects
    • BasicAlgorithm: 基础算法,包含LogisticRegression, svm, lightgbm, xgboost
    • AutoML: AutoML工具,包含autosklean, flaml
    • Custom projects: 支持运行自己的MLflow Projects项目
  • MLflow Models
    • MLFLOW: 直接使用 mlflow models serve 部署模型。
    • Docker: 打包 DOCKER 镜像后部署模型。

创建任务

  • 点击项目管理-项目名称-工作流定义,点击“创建工作流”按钮,进入 DAG 编辑页面;
  • 拖动工具栏的 MLflow - 图1 任务节点到画板中。

任务样例

以下是一些MLflow 组件的常用参数

任务参数 描述
MLflow Tracking Server URI MLflow Tracking Server 的连接,默认 http://localhost:5000
实验名称 任务运行时所在的实验,若实验不存在,则创建。若实验名称为空,则设置为Default,与 MLflow 一样

MLflow Projects

BasicAlgorithm

mlflow-conda-env

任务参数 描述
注册模型 是否注册模型,若选择注册,则会展开以下参数
注册的模型名称 注册的模型名称,会在原来的基础上加上一个模型版本,并注册为Production
数据路径 文件/文件夹的绝对路径,若文件需以.csv结尾(自动切分训练集与测试集),文件夹需包含train.csv和test.csv(建议方式,用户应自行构建测试集用于模型评估)。详细的参数列表如下: LogisticRegression SVM lightgbm xgboost
算法 选择的算法,目前基于 scikit-learn 形式支持 lrsvmlightgbmxgboost
参数搜索空间 运行对应算法的参数搜索空间,可为空。如针对lightgbm 的 max_depth=[5, 10];n_estimators=[100, 200] 则会进行对应搜索。约定传入后会以;切分各个参数,等号前的名字作为参数名,等号后的名字将以python eval执行得到对应的参数值

AutoML

mlflow-automl

任务参数 描述
注册模型 是否注册模型,若选择注册,则会展开以下参数
注册的模型名称 注册的模型名称,会在原来的基础上加上一个模型版本,并注册为Production
数据路径 文件/文件夹的绝对路径,若文件需以.csv结尾(自动切分训练集与测试集),文件夹需包含train.csv和test.csv(建议方式,用户应自行构建测试集用于模型评估)
参数 初始化AutoML训练器时的参数,可为空,如针对 flaml 设置time_budget=30;estimator_list=['lgbm']。约定传入后会以; 切分各个参数,等号前的名字作为参数名,等号后的名字将以python eval执行得到对应的参数值。详细的参数列表如下: flamlautosklearn
AutoML工具 使用的AutoML工具,目前支持 autosklearnflaml

Custom projects

mlflow-custom-project.png

任务参数 描述
参数 mlflow run中的 —param-list 如 -P learning_rate=0.2 -P colsample_bytree=0.8 -P subsample=0.9
运行仓库 MLflow Project的仓库地址,可以为github地址,或者worker上的目录,如MLflow project位于子目录,可以添加 # 隔开,如 https://github.com/mlflow/mlflow#examples/xgboost/xgboost_native
项目版本 对应项目中git版本管理中的版本,默认 master

现在你可以使用这个功能来运行github上所有的MLflow Projects (如 MLflow examples )了。你也可以创建自己的机器学习库,用来复用你的研究成果,以后你就可以使用DolphinScheduler来一键操作使用你的算法库。

MLflow Models

任务参数 描述
部署模型的URI MLflow 服务里面模型对应的URI,支持 models:/<model_name>/suffix 格式 和 runs:/ 格式
监听端口 部署服务时的端口

MLFLOW

mlflow-models-mlflow

Docker

mlflow-models-docker

环境准备

conda 环境配置

请提前安装anaconda 或者安装miniconda

方法A:

配置文件:/dolphinscheduler/conf/env/dolphinscheduler_env.sh。

在文件最后添加内容

  1. # 配置你的conda环境路径
  2. export PATH=/opt/anaconda3/bin:$PATH

方法B:

你需要进入admin账户配置一个conda环境变量。

mlflow-conda-env

后续注意配置任务时,环境选择上面创建的conda环境,否则程序会找不到conda环境。

mlflow-set-conda-env

MLflow service 启动

确保你已经安装MLflow,可以使用pip install mlflow进行安装。

在你想保存实验和模型的地方建立一个文件夹,然后启动 mlflow service。

  1. mkdir mlflow
  2. cd mlflow
  3. mlflow server -h 0.0.0.0 -p 5000 --serve-artifacts --backend-store-uri sqlite:///mlflow.db

运行后会启动一个MLflow服务。

可以通过访问 MLflow service (http://localhost:5000) 页面查看实验与模型。

mlflow-server

内置算法仓库配置

如果遇到github无法访问的情况,可以修改common.properties配置文件的以下字段,将github地址替换能访问的地址。

  1. # mlflow task plugin preset repository
  2. ml.mlflow.preset_repository=https://github.com/apache/dolphinscheduler-mlflow
  3. # mlflow task plugin preset repository version
  4. ml.mlflow.preset_repository_version="main"