文章目录

  • 1 DataOps、MLOps 和 AIOps,你要的是哪个Ops?
  • 2 MLFlow
    • 2.1 MLFlow优势
    • 2.2 MLFlow劣势
    • 2.3 MLFlow 和 AirFlow的差异
    • 2.4 MLFlow和MLSQL对比
    • 2.5 对比一些深度学习工具
    • 2.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 平台级工作流框架竞品

可参考:

  • 想快速部署机器学习项目?来看看几大主流机器学习服务平台对比吧
  • AI入门必看!业界AI一站式开发平台四强对比

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

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

阿里云PAI:

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

  1. MLflow机器学习工作流框架更新(2019.3)

    2019独角兽企业重金招聘Python工程师标准>>> MLflow机器学习工作流框架最新进展(2019.3) MLflow(,https://mlflow.org)是Databri ...

  2. MLFlow︱机器学习工作流框架:MLFlow docker 实践(二)

    文章目录 1 mlflow Dockerfile 2 训练模型 3 对比模型 4 打包模型 5 模型部署 6 模型inference调用 mlflow的安装与使用,可以直接: pip install ...

  3. bilibili基于 Flink 的机器学习工作流平台在 b 站的应用

    简介:介绍 b 站的机器学习工作流平台 ultron 在 b 站多个机器学习场景上的应用. 分享嘉宾:张杨,B 站资深开发工程师 导读:整个机器学习的过程,从数据上报.到特征计算.到模型训练.再到线上 ...

  4. MLflow机器学习工作流管理使用教程

    MLflow简介 机器学习不是一个单向的pipeline,而是一个迭代的循环.其中包括四大部分:数据预处理.模型训练.模型部署.数据更新. 行业痛点: 数据预处理和模型训练都涉及到参数调整,不同参数对 ...

  5. 如何在机器学习的框架里实现隐私保护?

    编者按:数据时代,人们从技术中获取便利的同时,也面临着隐私泄露的风险.微软倡导负责任的人工智能,因此机器学习中的隐私保护问题至关重要.本文介绍了目前机器学习中隐私保护领域的最新研究进展,讨论了机密计算 ...

  6. Scikit-learn 核心开发人员专访:建立机器学习工作流最容易犯这2点错误

    导语:Scikit learn的开发者分享了3种实用的ML技术 本文是一篇对 Scikit-learn 开发者的专访,原载于 towardsdatascience,AI 开发者编译整理,采访内容如下文 ...

  7. 2019年上半年收集到的人工智能开源框架介绍文章

    2019年上半年收集到的人工智能开源框架介绍文章 TensorFlow基本使用 TensorFlow.js:让你在浏览器中也能玩转机器学习 人工智能学习框架TensorFlow渐近分析 TensorF ...

  8. 基于Kubernetes 的机器学习工作流

    https://www.toutiao.com/a6642101619120931335/ 2019-01-03 18:00:00 介绍 Pipeline是Kubeflow社区最近开源的一个端到端工作 ...

  9. Meson:支持Netflix的机器学习工作流

    Netflix的目标是能预测顾客之所想观看的电影,也即推荐预测.为了做到这一点,每天会运行大量机器学习工作流,而为了支撑创建这么多机器学习工作流和有效利用资源,Netflix的工程师开发了Meson. ...

最新文章

  1. 由于更换了java版本,Eclipse启动时报错:JRE or JDK must be available in order to run Eclipse
  2. $.extend 的相关用法
  3. 11计算机,11-计算机科学与技术
  4. php 去掉不可见字符串,php删除不可见的Unicode字符
  5. GitHub标星1.3W!五分钟带你搞定Linux Bash脚本使用技巧
  6. 最近wampserver总是开不开,一直离线,重启就好,各位有何看法?
  7. C# 判断两个日期是否是同一天
  8. python3的fft_FFT乘法Python 3.4.3
  9. pytorch关系抽取框架OpenNRE源码解读与实践:PCNN ATT
  10. docx4j doc转html,11、docx4j生成文档格式转换
  11. 【系统安全学习5】PGP加密
  12. 最强大脑记忆曲线(7)——“复习页面”逻辑实现
  13. 游戏设计---游戏中战斗力计算方法(整理)
  14. 2022年HGAME中REVERSE的Flag Checker
  15. 假如有人把支付宝存储服务器炸了,我们的钱还在吗?
  16. centos8使用podman搭建vulhub
  17. python 去掉双引号_你要偷偷的学Python,然后惊呆所有人(第一天)
  18. 祖传代码,是如何变成一堆屎山的?
  19. 快速把PDF论文或图片或网页中的公式变成mathtype公式 偷懒大法
  20. matlab一元二次方程的求解

热门文章

  1. javascript 计算后结果失精度的问题解决
  2. 三、函数的嵌套、作用域链、函数名的应用、闭包。
  3. python基础语法学习常见小问题
  4. Android多媒体开发(3)————使用Android NKD编译havlenapetr-FFMpeg-7c27aa2
  5. RAS、AES、DES加密
  6. 1,机器学习应用概述
  7. 如何区分数据科学家,数据工程师与数据分析师
  8. 解决问题 WebDriverException: Message: unknown error: cannot find Chrome binary
  9. dedecms 封面模板和列表模板有什么不同
  10. 轻松精通数据库管理之道——运维巡检之六(作业运行情况)