分享

Spark MLFlow 介绍


问题导读

1.Spark MLFlow用来做什么的?
2.MLFlow解决了什么问题?
3.MLFlow哪些问题未解决?




MLflow 是由Apache Spark 技术团队开源的一个机器学习平台,用于管理端到端的机器学习生命周期。MLflow是library无关的。你可以使用任何机器学习库,使用任何编程语言,因为所有的功能访问都通过 REST APICLI,为了方便应用,项目包含了 Python API

MLFlow官网地址:

https://mlflow.org/docs/latest/concepts.html


MLflow 主打开放性:
  • 开放接口:可与任意 ML 库、算法、部署工具或编程语言一起使用。
  • 开源:开发者可轻松地对其进行扩展,并跨组织共享工作流步骤和模型。


MLflow 组件:

1.png

  • MLflow Tracking(跟踪组件)提供了一组 API 和用户界面,用于在运行机器学习代码时记录和查询参数、代码版本、指标和输出文件,以便以后可视化它们。
  • MLflow Projects(项目组件)提供了打包可重用数据科学代码的标准格式。
  • MLflow Models(模型组件)提供了一种用多种格式打包机器学习模型的规范。


MLFlow要解决的问题以及相应的方案
MLFlow解决了如下几个问题:

  • 跟踪试验用于记录、比较参数和结果 (MLflow Tracking)。
  • 打包 ML 代码为可重用、可重复生产的形式,以与其他数据科学家分享,或者转入生产阶段 (MLflow Projects)。
  • 从不同的ML库中管理和部署models,到不同的model serving 和推理平台(MLflow Models)。



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

和MLSQL对比
相比较而言,MLFLow更像一个辅助工具和标准,你只要按这个标准写ML程序(选用你喜欢的算法框架),就能实现实验记录的追踪,多环境的部署(比如可以很容易从我的笔记本移植到你的笔记本上跑),以及通过写一个规范的预测脚本,就能把模型部署成API服务,或者Spark里。

但其实MLFlow还有几个问题没有解决:
  • 数据预处理在两个环节存在,一个训练,一个是预测,并且很多场景预测的时候的数据预处理是需要依赖训练时数据预处理产生的元信息的。 而且按MLFlow的架构,整个流程都是算法工程师来完成的,这样就无法保证数据预处理的性能(算法可以用任何库来完成数据的处理),研发只会负责后面模型的部署或者嵌入到spark中(而且必须用pyspark了)。
  • 完全基于python完成数据处理和训练,显然会有性能上的损耗。最好的方式还是把数据预处理和训练剥离开了。
  • 没有解决Spark和MLFlow的数据衔接问题,也就是说,MLFlow单个实例如何全量或者按批次获取数据?

而MLSQL 除了没有解决Tracking问题以外,已经解决了MLFlow解决的其他的两个问题,当然还有MLFlow没有解决的几个问题。
MLSQL核心在于

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

1,2 解决了算法脚本难于重复运行的问题,以及模型部署的问题,同时还解决了数据预处理复用的问题。允许算法嵌入任何算法框架完成训练和预测,给了算法工程师足够的灵活性。


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

######################

问题解答:
MLFlow与spark mllib什么关系?
二者应该没有什么太大的关系。

MLFlow可以使用Scala吗?
目前支持Python



参考:
https://www.colabug.com/3095162.html
https://www.jianshu.com/p/2ed60a1dc764
https://my.oschina.net/u/2306127/blog/1825638


本帖被以下淘专辑推荐:

欢迎加入about云群425860289432264021 ,云计算爱好者群,关注about云腾讯认证空间

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条