Spark团队开源新做:全流程机器学习平台MLflow

策划编辑 | Natalie
做者 | Matei Zaharia
译者 | 无明
编辑 | Vincent
AI 前线导读:在昨天开幕的 Spark+AI Summit 大会上,Spark 和 Mesos 的核心做者兼 Databrick 首席技术专家 Matei Zaharia 宣布推出开源机器学习平台 MLflow,这是一个可以覆盖机器学习全流程(从数据准备到模型训练到最终部署)的新平台,旨在为数据科学家构建、测试和部署机器学习模型的复杂过程作一些简化工做。Matei 表示,研究工做主要围绕着“如何为开发者提供相似谷歌 TFX、Facebook FBLearner Flow 等平台相似的好处,可是要以开放的方式——不只在开源的意义上开放,并且是可使用任何工具和算法的意义上开放"的想法展开。

Matei 为 MLflow 撰写了一篇介绍文章,AI 前线对文章进行了编译。这个全新的机器学习平台到底有何新特性?让咱们来一探究竟。

更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)

每一个作过机器学习开发的人都知道机器学习的复杂性,除了软件开发中常见的问题以外,机器学习还存在不少新的挑战。做为一家大数据解决方案公司,Databricks 与数百家使用机器学习的公司合做,因此可以清楚地了解他们的痛点,好比工具太过复杂、难以跟踪实验、难以重现结果、难以部署模型。因为这些挑战的存在,机器学习开发必须变得与传统软件开发同样强大、可预测和普及。为此,不少企业已经开始构建内部机器学习平台来管理机器学习生命周期。例如,Facebook、谷歌和优步分别构建了 FBLearner Flow、TFX 和 Michelangelo 来进行数据准备、模型训练和部署。但这些内部平台存在必定的局限性:典型的机器学习平台只支持一小部份内置算法或单个机器学习库,而且被绑定在公司内部的基础设施上。用户没法轻易地使用新的机器学习库,或与社区分享他们的工做成果。html

Databricks 认为应该使用一种更好的方式来管理机器学习生命周期,因而他们推出了 MLflow,一个开源的机器学习平台。python

MLflow:开放式机器学习平台

MLflow 的灵感来源于现有的机器学习平台,但以开放性做为主要设计目标:git

  1. 开放接口:MLflow 可与任何机器学习库、算法、部署工具或编程语言一块儿使用。它基于 REST API 和简单的数据格式(例如,可将模型视为 lambda 函数)而构建,可使用各类工具,而不仅是提供一小部份内置功能。用户能够很容易地将 MLflow 添加到现有的机器学习代码中,并在组织中共享代码,让其余人也能运行这些代码。github

  2. 开源:MLflow 是一个开源项目,用户和机器学习库开发人员能够对其进行扩展。此外,利用 MLflow 的开放格式,能够轻松地跨组织共享工做流步骤和模型。算法

Mlflow 目前仍处于 alpha 阶段,但它已经提供了一个可用的框架来处理机器学习代码。接下来将详细介绍 MLflow 和它的组件。编程

MLflow 的组件(alpha 版)

MLflow 的 alpha 版本包含了三个组件:安全

MLflow 的跟踪组件支持记录和查询实验数据,如评估度量指标和参数。MLflow 的项目组件提供了可重复运行的简单包装格式。最后,MLflow 的模型组件提供了用于管理和部署模型的工具。服务器

MLflow 的跟踪组件

MLflow 的跟踪组件提供了一组 API 和用户界面,用于在运行机器学习代码时记录参数、代码版本、度量指标和输出文件,以便在后续进行可视化。经过几行简单的代码就能够跟踪参数、度量指标和文件:微信

用户可以使用跟踪组件(经过独立脚本或 notebook)将结果记录到本地文件或服务器上,而后经过 Web UI 来查看和比较屡次运行结果。团队也可使用这些工具来比较不一样用户的运行结果。框架

MLflow 的项目组件

MLflow 的项目组件提供了一种用于打包可重用代码的标准格式。项目能够是一个包含代码的目录或 Git 仓库,并使用一个描述符文件来描述依赖关系以及如何运行代码。MFflow 项目经过一个叫做 MLproject 的 YAML 文件进行定义。

项目能够经过 Conda 来指定依赖关系。一个项目可能包含多个带有命名参数的运行入口。用户可使用 mlflow run 命令行工具来运行项目,项目代码能够在本地,也能够在 Git 仓库里:

MLflow 将自动为项目设置合适的环境并运行它。另外,若是在项目中使用了 MLflow Tracking API,MLflow 将记住执行过的项目版本(即 Git 的提交操做)和参数,这样就能够很轻松地从新运行彻底相同的代码。

不管是在企业仍是在开源社区,项目格式让共享可重用代码变得更加容易。结合 MLflow 的跟踪组件,MLflow 项目为可重现性、可扩展性和实验提供了很好的工具。

MLflow 的模型组件

MLflow 的模型组件提供了一种将机器学习模型打包成多种格式的规范,这些格式被称为“flavor”。MLflow 提供了多种工具来部署不一样 flavor 的模型。每一个 MLflow 模型被保存成一个目录,目录中包含了任意模型文件和一个 MLmodel 描述符文件,文件中列出了相应的 flavor。

在这个例子中,模型能够与支持 sklearn 或 python_function 的工具一块儿使用。

MLflow 提供了将常见模型部署到不一样平台的工具。例如,任何支持 python_function 的模型均可以部署到基于 Docker 的 REST 服务器或云平台上(如 Azure ML 和 AWS SageMaker),也能够做为 Apache Spark 的用户定义函数,用于进行批量和流式推断。若是使用 Tracking API 将 MLflow 模型输出为文件,MLflow 还会自动记住它们是由哪一个项目运行生成的。

MLflow 入门

要使用 MLflow,请按照 mlflow.org 上的说明进行操做,或使用 Github 上的 alpha 版代码。

在 Databricks 上托管 MLflow

若是要使用 MLflow 的托管版本,能够在 databricks.com/mlflow 注册。Databricks 上的 MLflow 与 Databricks Unified Analytics 平台集成,包括 Notebooks、Jobs,Databricks Delta 和 Databricks 安全模型,为用户提供了安全、生产就绪的方式大规模地运行现有的 MLflow 做业。

后续计划

MLflow 刚刚展露头角,所以还有不少事情要作。后续计划引入新组件(如监控)、与其余库的集成以及扩展已发布的组件(例如支持更多环境类型)。

MLflow 官网

http://www.mlflow.org

MLflow GitHub 地址

https://github.com/databricks/mlflow

英文原文

https://databricks.com/blog/2018/06/05/introducing-mlflow-an-open-source-machine-learning-platform.html

相关文章
相关标签/搜索