前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一站式机器学习开业平台 MLflow 怎么样?

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

作者头像
程序员荒生
发布2022-04-02 17:05:33
2.1K0
发布2022-04-02 17:05:33
举报

机器学习工作流程

机器学习(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安装

代码语言:javascript
复制
pip install mlflow
OR
conda install mlflow

UI启动

代码语言:javascript
复制
git clone https://github.com/mlflow/mlflow.git
cd mlflow/examples
mlflow ui

模型运行

代码语言:javascript
复制
# 模型生成
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
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 李三十一 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 机器学习工作流程
  • MLflow 解决了什么问题?
  • 项目架构
    • MLflow Tracking
      • MLflow Projects
        • MLflow Models
          • MLflow Registry
          • API 算法服务构建
            • mlflow安装
              • UI启动
                • 模型运行
                • 流处理服务构建
                • 总结一下
                • 参考文档
                相关产品与服务
                Prowork 团队协同
                ProWork 团队协同(以下简称 ProWork )是便捷高效的协同平台,为团队中的不同角色提供支持。团队成员可以通过日历、清单来规划每⽇的工作,同时管理者也可以通过统计报表随时掌握团队状况。ProWork 摒弃了僵化的流程,通过灵活轻量的任务管理体系,满足不同团队的实际情况,目前 ProWork 所有功能均可免费使用。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档