文档章节

机器学习管理平台 MLFlow

naughty
 naughty
发布于 07/21 05:11
字数 1311
阅读 721
收藏 12

最近工作很忙,博客一直都没有更新。抽时间给大家介绍一下Databrick开源的机器学习管理平台-MLFlow

谈起Databrick,相信即使是不熟悉机器学习和大数据的工程湿们也都有所了解,它由Spark的创始人开办的,主要为用户提供在云端使用Spark来进行机器学习的能力。那么这次Databrick开源的MLFlow究竟能提供什么样的功能呢?

首先我们来看一看当前机器学习所遇到的挑战:

  • 使用的软件工具繁多,一个机器学习的项目基本上数据收集和准备,模型训练,模型部署的不断迭代过程,这个过程中的每一步都有很多不同的工具和选择。单就模型训练来说,我们就有scikit-learn,pytorch,spark,tensorflow,R 等等诸多选择。它们各自具有不同的优缺点和适用场合,对于数据科学家而言,要管理和适用这么多的工具,确实非常困难。
  • 很难跟踪和重现数据处理,代码运行,参数调试的过程和结果。
  • 很难对模型进行产品化,部署模型很困难。
  • 当数据规模增长的时候,很难扩展和伸缩。

MLFlow的目标是希望能够解决这些问题,希望支持任何的机器学习库,可以在本机或者云端运行,并解决可伸缩性的问题

MLFlow采用了开源的策略,基于API和模块化的设计。他主要有以下三个功能模块:

  • Tracking 跟踪和记录
  • Project 项目管理
  • Models 模型管理

我们分别来看看这三块:

Tracking

MLFlow的追踪功能类似APM,记录应用运行过程中所产生的各种数据。主要记录参数(Parameters),指标(Metrics),模型的持久化对象(Artifact)等内容。这一部分实际上功能的实现很简单。大家可以参考它的代码 

例如,对于参数的记录代码:

def log_param(self, key, value):
    # TODO: prevent keys from containing funky values like ".."
    fn = os.path.join(self.run_dir, "parameters", key)
    dir_util.mkpath(os.path.dirname(fn))
    with open(fn, "w") as f:
        f.write("%s\n" % value)

我想说,要解决追踪的问题,业内已经有很多成熟的工具,各种APM产品,甚至Splunk,ELK都是不错的选择。

Project

项目管理主要是为了解决机器学习中诸多不同工具的问题。其实解决的方法也很简单,就是用一些元数据来描述项目,并把项目用一个合理的目录结构来管理,结构如下:

例如上图的例子,把一个conda的python项目用一个yaml文件来描述,记录了名字是什么,参数是什么,有哪些依赖运行命令是什么,然后就可以用mlflow的API或者命令行客户端来调用。

对于这个问题,我想说的是,为什么不适用容器呢?容器是一个很好的封装各种不用运行环境和运行工具的选择。比起上面的方案,我认为要强许多,何况,还要支持云端,容器才是最佳实践!

项目管理的代码在这里 ,功能也不多。

MLFlow可以直接运行在github上的项目,也就是用github作为项目管理的仓库。

这里的亮点是可以运行拥有多个步骤的工作流,每一个步骤都是一个项目,类似一个数据处理管道(data pipeline)。利用Tracking API,不同项目步骤之间可以传递数据和模型(Artifact)。这也许是为什么该项目叫MLFlow吧。

Models

MLFlow利用类似对项目管理的相同哲学管理模型,使用元数据来描述不同工具所产生的不同模型。

上图是一个模型的例子。模型支持不同的口味(Flavors),包含Python,Scikit-Learn,Tensorflow和Spark ML。用户也可以定制自己个性化的口味(感觉像是在做菜)。

模型这比部分还支持了部署的功能,也就是说可以把模型部署到不同的平台,这个功能还是很好的。主要支持本地部署,Microsoft AzureML,AWS Sagemaker和Apache Spark。

当然,MLFlow并不能很好的解决不同工具所产生的模型不兼容的问题,你并不能把一个tensorflow的模型部署到Saprk上。如果有人对这一部分感兴趣,可以去关注一下这个项目:Mleap

另外MLFlow使用Flask提供web服务,有UI功能。当前还在Alpha阶段。希望它的未来能有好的发展,给数据科学家们提供一个好用的平台。

参考

 

© 著作权归作者所有

共有 人打赏支持
naughty
粉丝 256
博文 62
码字总数 112619
作品 0
其它
架构师
加载中

评论(1)

我还在等你回家
作者转发一下
Databricks 开源 MLflow 平台,解决机器学习开发四大难点

雷锋网 AI 研习社按:机器学习开发有着远超传统软件开发的复杂性和挑战性,现在,Databricks 开源 MLflow 平台有望解决其中的四大痛点。 据雷锋网(公众号:雷锋网) AI 研习社了解,尝试过机器...

刘鹏
06/09
0
0
Spark机器学习工具链-MLflow简介

Spark机器学习工具链-MLflow简介 本文翻译自 https://github.com/openthings/mlflow 本文地址 https://my.oschina.net/u/2306127/blog/1825638, by openthings, 2018.06.07. 参考: mlflow......

openthings
06/07
0
0
Apache Spark 技术团队开源机器学习平台 MLflow

近日,来自 Databricks 的 Matei Zaharia 宣布推出开源机器学习平台 MLflow 。Matei Zaharia 是 Apache Spark 和 Apache Mesos 的核心作者,也是 Databrick 的首席技术专家。Databrick 是由 ...

王练
06/08
0
0
开放式机器学习平台 - MLflow

MLflow 是由 Apache Spark 技术团队开源的一个机器学习平台,主打开放性: 开放接口:可与任意 ML 库、算法、部署工具或编程语言一起使用。 开源:开发者可轻松地对其进行扩展,并跨组织共享...

匿名
06/07
0
0
Spark机器学习工具链-MLflow使用教程

Spark机器学习工具链-MLflow使用教程 本文翻译自 https://www.mlflow.org/docs/latest/concepts.html 本文地址 https://my.oschina.net/u/2306127/blog/1825690,by openthings, 2018.06.07......

openthings
06/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

软件测试工具书籍与面试题汇总下载(持续更新)

简介 本文是https://github.com/china-testing/python-api-tesing/blob/master/books.md 的节选。 欢迎转载,转载请附带此简介,谢谢! 试题 软件测试综合面试题(高级测试)-试题.pdf 软件测试...

python测试开发人工智能安全
14分钟前
0
0
java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection 解决

有个项目使用的log4j进行日志记录的,同时也是用log4j中的数据库配置直接把相应级别的日志直接插入oracle。 在把项目部署的另一个内网环境时候,把项目的其他配置都改了,唯独log4j中的数据库...

哥本哈根的小哥
24分钟前
0
0
耗时 2 年,用 8.5 万块乐高积木最牛复刻 Apple Park

简评:国外大佬复刻 Apple Park,看了一下细节,确实厉害!只有你想不到,没有乐高拼不起来的,有没有乐高大神挑战一下? 苹果公园以各种各样的方式鼓舞人心,让人感兴趣。从建筑、可持续性和...

极光推送
25分钟前
0
0
记一次查找Hdfs磁盘占用空间比实际存储文件大4倍的原因

在一次主备namenode发生切换后,重启datanode节点,发现磁盘空间很大,想清理一下磁盘, 通过命令Hdfs dfs -du -h --max-depth=1 / 发现实际文件的大小只有8g,通过du -h --max-depth=1 /ha...

PageYi
52分钟前
4
0
阿里云推荐引擎使用教程

产品概述: 推荐引擎(Recommendation Engine,以下简称RecEng,特指阿里云推荐引擎)是在阿里云计算环境下建立的一套推荐服务框架,目标是让广大中小互联网企业能够在这套框架上快速的搭建满...

mcy0425
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部