李三十一

V1

2022/06/10阅读:9主题:全栈蓝

一站式机器学习开业平台 MLflow 怎么样?

机器学习工作流程

机器学习(ML)通常需要使用广泛的数据集、数据预处理步骤和算法逻辑进行实验,以构建最优指标的模型。模型构建成功后,还需要将其部署到生产系统,监控其效果和性能,并根据新数据不断对其进行重新训练和迭代模型工作,如下:1

早期,各种算法烟花齐放,多种框架各自为政,因此,如何保障 ML 流程的生产可靠性和共通性成了一个棘手问题,具体如下:

追踪实验困难:如果只是在笔记本电脑或 Jupyter Book 上处理文件,你如何汇总数据、代码、参数和对应的结果呢?
复现代码困难:有时候我们对代码版本和参数进行细致的保存,由于环境的不一致或某个第三方依赖包版本的不一致,换平台复现代码,通常也比较困难。
缺少统一的打包、部署模型标准:多团队协作或多深度框架协作时,都有各自的一套模型管理方式,导致不通用。
缺少模型管理Hub:缺乏统一的模型管理服务,各自维护自己的算法,重复造轮子常态化。

MLflow 解决了什么问题?

MLflow是一个用于管理 ML 生命周期的开源平台,旨在简化机器学习的开发流程,提供实验追踪、将代码打包成可重现的运行模块以及共享和部署模型功能。支持多种工具和内嵌算法,使算法开发者能更加专注于算法本身的工作。

项目架构

MLflow提供了一组轻量级 API,可用于任何现有的机器学习应用程序或库,如:TensorFlow、PyTorch、XGBoost 等。
MLflow还支持在任何环境中运行 ML 代码,如:本地笔记本电脑、独立应用程序或者云环境中
MLflow目前提供四个组件,具体如下:

MLflow Tracking

用于记录机器学习实验中的参数、代码、数据和结果,并提供交互式 UI 和 API 支持实验对比和查看。

MLflow Projects

可在任何平台上重复运行的打包格式,基于 Conda 和 Docker 构建,因此你可以很方便的与他人共享你的 ML 代码,并且可在任何平台上重复运行它们。

MLflow Models

将模型发送到各种部署工具的通用格式,支持让你轻松的将相同模型(如:来自其他任务 ML 库)部署到 Docker、Apache Spark Azure ML 和 AWS SageMaker 等平台的批处理或实时处理任务。

MLflow Registry

一个集中的模型存储库,提供了简单的 API 和UI,支持在公共存储库中存储、注释、发现和管理模型,主要用于协作管理 MLflow 模型的整个生命周期。

API 算法服务构建

  • Anaconda环境 搭建,可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本

mlflow安装

pip install mlflow
OR
conda install mlflow

UI启动

git clone https://github.com/mlflow/mlflow.git
cd mlflow/examples
mlflow ui

模型运行

# 模型生成
python sklearn_logistic_regression/train.py

#
 启动算法服务
mlflow models serve -m runs:/<Model_id>/model --port 1234
可能报错:mlflow.utils.process.ShellCommandException: Non-zero exitcode: 1
mlflow models serve -m runs:/<Model_id>/model --port 1234 --no-conda

#
 API 推理验证
curl -d '{"columns":["x"], "data":[[1], [-1]]}' -H 'Content-Type: application/json; format=pandas-split' -X POST localhost:1234/invocations

#
 结果:[1, 0]

对于简单的输入->推理->结果场景,通过使用MLflow平台功能,我们只需要专注于train.py代码开发即可很方便的完成一个算法的训练和上线工作。

但生产场景多种多样,有时候并不仅仅是一个简单的算法API就可以满足,算法直接还可能存在层级关系、依赖关系、转换关系,我们接着往下。

流处理服务构建

API算法服务MLflow旨在输出一个完全独立的算法服务,而流处理服务中描述了如何将多个API算法服务链接在一起,每个运行都封装一个转化或者训练步骤,定义各个流程间的接口和允许缓存和重用中间结果,如下:

该流程包含四个步骤:

  • Load 流程:加载数据集
  • ETL 流程: ETL 预处理数据集
  • ML 流程: ML 预处理数据集
  • Train流程:模型训练

具体代码参见:[3]

总结一下

优点:相比谷歌的 TFX、Facebook FBLearner Flow等平台,MLflow的创建为了统一多种深度框架训练标准和流程管理标准,立意更高。支持多种模型存储方式和软件插件机制,便于第三方集成和定制接入。
缺点:当前 MLflow Pipeline 还过度依赖代码,缺少平台功能,对于快速接入生产,需要一定的学习成本。

参考文档

  • [0] https://github.com/mlflow/mlflow
  • [1] https://mlflow.org/docs/latest/index.html
  • [3] https://github.com/mlflow/mlflow/tree/master/examples/multistep_workflow

❤️❤️❤️读者每一份热爱都是笔者前进的动力! 我是三十一,感谢各位朋友:求点赞、求评论、求转发,大家下期见!

分类:

后端

标签:

后端

作者介绍

李三十一
V1