MLFlow︱机器学习工作流框架:介绍(一)

机器学习︱R+python 专栏收录该内容
75 篇文章 6 订阅


1 DataOps、MLOps 和 AIOps,你要的是哪个Ops?

之前的很多研究其实跟工程化是比较脱节的,模型在小环境中工作得很好,并不意味着它在任何地方都可以工作得很好。
各类开源项目其实很大程度上满足了我这样的调包工程师的需求,那么工程化就非常有必要了。
之前《DataOps、MLOps 和 AIOps,你要的是哪个Ops?》文章提到:DataOps、MLOps 和 AIOps的一些异同:
在这里插入图片描述
DevOps 更快地交付软件
一系列旨在消除开发和运维团队之间障碍的实践,以便更快地构建和部署软件。它通常会被工程团队所采用,包括 DevOps 工程师、基础设施工程师、软件工程师、站点可靠性工程师和数据工程师。

DataOps 更快地交付数据
一系列旨在提高数据分析质量并缩短分析周期的实践。DataOps 的主要任务包括数据标记、数据测试、数据管道编排、数据版本控制和数据监控。分析和大数据团队是 DataOps 的主要操作者,但是任何生成和使用数据的人都应该采用良好的 DataOps 实践。这包括数据分析师、BI 分析师、数据科学家、数据工程师,有时还包括软件工程师。

MLOps 更快地交付机器学习模型
一系列设计、构建和管理可重现、可测试和可持续的基于 ML 的软件实践。对于大数据 / 机器学习团队,MLOps 包含了大多数 DataOps 的任务以及其他特定于 ML 的任务,例如模型版本控制、测试、验证和监控。

AIOps
平台利用大数据、现代机器学习以及其他先进的分析技术,直接或间接地增强 IT 运维(监控、自动化和服务台),具有前瞻性、个性化以及动态的洞察力。

所有的 Ops 都具有相同的 7 个首要原则,但是每个原则又都有其细微的差别:

  • 合规:DevOps 通常会担心网络和应用程序的安全性。在 MLOps 领域,金融和医疗保健等行业通常需要模型的可解释性。DataOps 需要确保数据产品符合 GDPR/HIPPA 等法规。
  • 迭代开发:产品经过迭代设计、构建、测试和部署,以最大程度地实现快速失败并不断学习。
  • 可重现性:机器学习模型经常会因为数据漂移而被重新训练。为了重现结果,MLOps 需要对模型进行版本控制,DataOps 需要对数据进行版本控制。
  • 测试:软件测试包括单元测试、集成测试和回归测试。DataOps 需要进行严格的数据测试,包括模式变更、数据漂移、特征工程后的数据验证等。从 ML 的角度来看,模型的准确性、安全性、偏差 / 公平性、可解释性都需要测试。
  • 持续部署
    机器学习模型的持续部署由三个组件构成:
    • 第一个组件是触发事件,即触发器是数据科学家的手动触发器、日历计划事件和阈值触发器吗?
    • 第二个组件是新模式的实际再培训。生成模型的脚本、数据和超参是什么?它们的版本以及它们之间的联系。
    • 最后一个组件是模型的实际部署,它必须由具有预警功能的部署管道进行编排。
  • 自动化:自动化是 DevOps 的核心价值,实际上有很多专门针对自动化各个方面的工具。
  • 监控:对于 DataOps 来说,重要的是监控新数据的分布,以发现是否有任何数据和 / 或概念的漂移。在 MLOps 领域,除了模型降级之外,如果你的模型具有公共 API,那么监控对抗性攻击也是至关重要的。

MLOps 与 AIOps:

有时人们错误地将 MLOps 称为 AIOps,但它们是完全不同的。以下说明来自 Gartner(高德纳,美国咨询公司):

AIOps 平台利用大数据、现代机器学习以及其他先进的分析技术,直接或间接地增强 IT 运维(监控、自动化和服务台),具有前瞻性、个性化以及动态的洞察力。

因此,AIOps 通常是利用 AI 技术来增强服务产品的 DevOps 工具。


2 MLFlow

2.1 MLFlow优势

Matei Zaharia 宣布推出开源机器学习平台 MLflow,这是一个能够覆盖机器学习全流程(从数据准备到模型训练到最终部署)的新平台。
MLFlow是一款管理机器学习工作流程的工具,核心由以下4个模块组成:

  • MLflow Tracking:如何通过API的形式管理实验的参数、代码、结果,并且通过UI的形式做对比。
  • MLflow Projects:代码打包的一套方案
  • MLflow Models:一套模型部署的方案
  • MLflow Model Registry:一套管理模型和注册模型的方案

在这里插入图片描述

  • Tracking:
    Tracking就是记录模型运行过程中产生的各项数据,主要有参数、模型指标、持久化的模型等。
  • Project
    项目管理主要解决依赖包及代码运行问题。其实现方式就是通过一些元信息进行项目描述,如下图MLproject文件记录的项目名称,运行环境、参数和运行命令。
  • Models
    模型管理和项目管理类似,会将模型文件(model.pkl)和模型描述信息(MLmodel)打包在同一文件夹下。描述信息会含有模型调用的方式和持久化的模型文件名。
  • 模型的部署
    实现的方式就是启动Flask(web server)监听某个端口,接收JSON格式的请求后调用训练好的模型进行预测输出结果。在使用过程中有个细节需要注意,当Flask接收到JSON格式的数据后会使用pandas中的read_json将其转换为dataframe,但此dataframe的列顺序是按照列名的字典序排列的。

参考:如何用MLflow做机器学习实验效果比对

2.2 MLFlow劣势

观点来自:如何评价 Databricks 的开源项目 MLflow?

  • 没有多用户的支持(当然,Databricks的企业版MLFlow是有的)

  • 没有Project的概念

  • 数据预处理在两个环节存在,一个训练,一个是预测,并且很多场景预测的时候的数据预处理是需要依赖训练时数据预处理产生的元信息的。 而且按MLFlow的架构,整个流程都是算法工程师来完成的,这样就无法保证数据预处理的性能(算法可以用任何库来完成数据的处理),研发只会负责后面模型的部署或者嵌入到spark中(而且必须用pyspark了)。

  • 完全基于python完成数据处理和训练,显然会有性能上的损耗。最好的方式还是把数据预处理和训练剥离开了。

  • 没有解决Spark和MLFlow的数据衔接问题,也就是说,MLFlow单个实例如何全量或者按批次获取数据?

2.3 MLFlow 和 AirFlow的差异

作者:谷瑞-Roliy
之前我研究过用airflow来做类似的事情,想利用它的工作流和dag来定义机器学习流程,包括各种复杂的配置的管理功能也有实现。不过airflow的一点点问题是,它还是更适合定时调度的任务。而像机器学习实验这种场景,run的频率可是很随意的。不过,现在有一个想法,离线的实验用mlflow,上线以后用airflow。因为在线基本上就是很稳定的运行流程+固定或很少频率的更新,airflow在时间纬度上的回退功能还是很有用的。也可以认为是现在mlflow缺的一点功能,daily run,或者叫自学习。

2020年一名Quant的自我修炼文章中提到:

基于中台,我们能提供的功能包括:

  • Python+Airflow+MongoDB: 打造爬虫系统,支持GB级别行情、交易数据抓取及管理;打造因子仓库,为因子看板提供基础
  • Jupyter+TeamCity+Mlflow: 提供具备自动留痕、可持续交付的研究环境
  • Mlflow+Flask+交易引擎/Airflow: 自动化模型生产流程,模型入库后即可跟进实盘交易/离线模拟
  • Python+Zeppelin/Redash: 打造看板系统,可视化因子、策略的实盘/模拟效果

这里要种草Mlflow,确实是极大提升了模型管理与交付的效率。只要研究人员将模型留痕到mlflow tracking server,开发人员几乎可以无缝地将工作转化到生产之上。

2.4 MLFlow和MLSQL对比

来自:Spark团队新作MLFlow 解决了什么问题

在现阶段版本里,MLFlow 做算法训练是基于单机运行的,不过利用Pyspark可以很方便的实现多机同时运行。
在预测方面,对于一些标准的库比如SKLearn,因为一般而言都有predict方法,所以无需开发即可通过MLFlow进行部署,如果是自定义的一些算法,则需要提供一个模块,实现里面定义方法签名(比如predict),然后可以动态import到API Server里或者转化一个Spark UDF函数部署到PySpark里。

MLSQL核心在于:

  • 提供了一个7*24小时的运行平台,算法的工作在IDE中完成调试,Web界面上完成开发和部署,共享CPU/GPU/内存资源。
  • MLSQL提供了一套统一的DSL语言完成算法训练和模型部署的功能。
  • MLSQL在允许用户自定义脚本进行训练和预测的过程中,制定更为严格的规范,虽然允许你用自己喜欢的任何算法框架完成训练脚本和预测脚本的开发,但是需要符合响应的规范从而嵌入到MLSQL语法里使用。MLSQL要求你大部分训练参数都需要通过SQL语法进行暴露从而使得你的训练脚本具有更好的封装和通用性。

1,2 解决了算法脚本难于重复运行的问题,以及模型部署的问题,同时还解决了数据预处理复用的问题。

允许算法嵌入任何算法框架完成训练和预测,给了算法工程师足够的灵活性。

当然,MLFlow目前的模式没有强行绑定到Spark上,而是作为ML的一个辅助工具和标准,最大程度的减少算法同学的学习和使用成本,减少对现有流程干扰,可以使得MLFlow更容易被算法同学接受,从而享受到它的好处,这是MLSQL无法比拟的。所以我前面说了,MLFlow更像一个Pipeline工具和标准,MLSQL则更像一个AI平台。

2.5 对比一些深度学习工具

来自:跑得比TensorBoard快多了,极简可视化工具Aim发布 | Reddit高热
深度学习工作流工具:TensorBoard,不过多介绍了。
来看看加州伯克利的团队开源了Aim

Aim可以在几分钟内记录、搜索和比较100项实验,和TensorBoard/MLFlow相比,Aim的优点主要是支持:

  • 按参数进行搜索、分组
  • 分列图表
  • 汇总大量实验查看趋势
  • 其他较小的实验指标和参数操作
    在这里插入图片描述

2.6 平台级工作流框架竞品

可参考:

这里大厂应该都有,只是简单罗列:

  • 阿里云PAI - DSW / EAS
  • 微软Azure ML Studio
  • Amazon SageMaker
  • Google Engine
  • 华为,ModelArts
  • 百度 ,全功能AI开发平台 BML

在这里插入图片描述

在这里插入图片描述

阿里云PAI:

在这里插入图片描述

  • 5
    点赞
  • 0
    评论
  • 5
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值