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 镜像后部署模型。
- MLFLOW: 直接使用
创建任务
- 点击项目管理-项目名称-工作流定义,点击“创建工作流”按钮,进入 DAG 编辑页面;
- 拖动工具栏的 任务节点到画板中。
任务样例
- 默认参数说明请参考DolphinScheduler任务参数附录
默认任务参数
一栏。
以下是一些MLflow 组件的常用参数
任务参数 | 描述 |
---|---|
MLflow Tracking Server URI | MLflow Tracking Server 的连接,默认 http://localhost:5000 |
实验名称 | 任务运行时所在的实验,若实验不存在,则创建。若实验名称为空,则设置为Default ,与 MLflow 一样 |
MLflow Projects
BasicAlgorithm
任务参数 | 描述 |
---|---|
注册模型 | 是否注册模型,若选择注册,则会展开以下参数 |
注册的模型名称 | 注册的模型名称,会在原来的基础上加上一个模型版本,并注册为Production |
数据路径 | 文件/文件夹的绝对路径,若文件需以.csv结尾(自动切分训练集与测试集),文件夹需包含train.csv和test.csv(建议方式,用户应自行构建测试集用于模型评估)。详细的参数列表如下: LogisticRegression SVM lightgbm xgboost |
算法 | 选择的算法,目前基于 scikit-learn 形式支持 lr ,svm ,lightgbm ,xgboost |
参数搜索空间 | 运行对应算法的参数搜索空间,可为空。如针对lightgbm 的 max_depth=[5, 10];n_estimators=[100, 200] 则会进行对应搜索。约定传入后会以;切分各个参数,等号前的名字作为参数名,等号后的名字将以python eval执行得到对应的参数值 |
AutoML
任务参数 | 描述 |
---|---|
注册模型 | 是否注册模型,若选择注册,则会展开以下参数 |
注册的模型名称 | 注册的模型名称,会在原来的基础上加上一个模型版本,并注册为Production |
数据路径 | 文件/文件夹的绝对路径,若文件需以.csv结尾(自动切分训练集与测试集),文件夹需包含train.csv和test.csv(建议方式,用户应自行构建测试集用于模型评估) |
参数 | 初始化AutoML训练器时的参数,可为空,如针对 flaml 设置time_budget=30;estimator_list=['lgbm'] 。约定传入后会以; 切分各个参数,等号前的名字作为参数名,等号后的名字将以python eval执行得到对应的参数值。详细的参数列表如下: flaml,autosklearn |
AutoML工具 | 使用的AutoML工具,目前支持 autosklearn,flaml |
Custom projects
任务参数 | 描述 |
---|---|
参数 | 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
Docker
环境准备
conda 环境配置
请提前安装anaconda 或者安装miniconda
方法A:
配置文件:/dolphinscheduler/conf/env/dolphinscheduler_env.sh。
在文件最后添加内容
# 配置你的conda环境路径
export PATH=/opt/anaconda3/bin:$PATH
方法B:
你需要进入admin账户配置一个conda环境变量。
后续注意配置任务时,环境选择上面创建的conda环境,否则程序会找不到conda环境。
MLflow service 启动
确保你已经安装MLflow,可以使用pip install mlflow
进行安装。
在你想保存实验和模型的地方建立一个文件夹,然后启动 mlflow service。
mkdir mlflow
cd mlflow
mlflow server -h 0.0.0.0 -p 5000 --serve-artifacts --backend-store-uri sqlite:///mlflow.db
运行后会启动一个MLflow服务。
可以通过访问 MLflow service (http://localhost:5000
) 页面查看实验与模型。
内置算法仓库配置
如果遇到github无法访问的情况,可以修改common.properties
配置文件的以下字段,将github地址替换能访问的地址。
# mlflow task plugin preset repository
ml.mlflow.preset_repository=https://github.com/apache/dolphinscheduler-mlflow
# mlflow task plugin preset repository version
ml.mlflow.preset_repository_version="main"