1、MLflow:一个开源的机器学习平台

每个尝试机器学习开发的人都知道这很复杂。除了软件开发中常见的问题之外,机器学习(ML)开发带来了多种新挑战。在Databricks,我们与数百家使用ML的公司合作,我们一再听到同样的担忧:
1.有无数的工具。

数百种开源工具涵盖了ML生命周期的每个阶段,从数据准备到模型训练。然而,与团队为每个阶段选择一个工具的传统软件开发不同,在ML中,您通常需要尝试每种可用的工具(例如算法)以查看它是否改进了结果。ML开发人员因此需要使用和生产数十种库。

2.很难跟踪实验。

机器学习算法有几十个可配置参数,无论您是单独工作还是团队工作,都很难跟踪哪些参数,代码和数据进入每个实验以生成模型。

3.很难重现结果。

如果没有详细的跟踪,团队往往难以获得相同的代码再次工作。无论您是数据科学家将您的培训代码传递给工程师以用于生产,还是回到以前的工作来调试问题,ML工作流程的复制步骤都至关重要。

4.部署ML很困难。

由于需要运行的部署工具和环境过多(例如REST服务,批处理推理或移动应用程序),因此将模型迁移到生产可能具有挑战性。没有标准的方法将模型从任何库移动到这些工具中,从而为每个新部署创建新的风险。

由于这些挑战,显然ML开发必须发展成为与传统软件开发一样强大,可预测和广泛推广的产品。为此,许多组织已经开始构建内部机器学习平台来管理ML生命周期。例如,Facebook,Google和Uber已经建立了FBLearner Flow,TFX和Michelangelo来管理数据准备,模型训练和部署。但是,即使这些内部平台也是有限的:典型的ML平台仅支持一小组内置算法或单个ML库,并且它们与每个公司的基础设施相关联。用户无法轻松利用新的ML库,或与更广泛的社区共享他们的工作。
在Databricks,我们相信应该有一个更好的方式来管理ML生命周期,所以我们很高兴地宣布MLflow:一个开源的机器学习平台。

MLflow:开放式机器学习平台

MLflow的灵感来源于现有的ML平台,但其设计目的有两个方面:
1.开放接口:

MLflow被设计用于任何ML库,算法,部署工具或语言。它基于REST API和简单的数据格式(例如,可将模型视为lambda函数)构建,可以使用各种工具,而不是仅提供一小组内置功能。这也很容易将MLflow添加到现有的ML代码中,以便您立即受益,并使用组织中其他人可以运行的任何ML库来共享代码。

2.开源:

我们将MLflow作为一个开源项目发布,供用户和库开发人员扩展。此外,如果您希望开源代码,MLflow的开放格式可以轻松地跨组织共享工作流步骤和模型。

Mlflow目前仍处于初始版,但我们相信它已经提供了一个有用的框架来处理ML代码,我们很乐意听到您的反馈。在这篇文章中,我们将详细介绍MLflow并解释其组件。

MLflow Alpha发布组件

MLflow的第一个alpha版本有三个组件:
1、MLflow:一个开源的机器学习平台_第1张图片
mlflow.png
MLflow跟踪支持记录和查询实验周围的数据,如评估指标和参数。MLflow项目提供了可重复运行的简单包装格式。最后,MLflow模型提供了管理和部署模型的工具。

MLflow跟踪

MLflow跟踪是一个API和用户界面,用于在运行机器学习代码时记录参数,代码版本,指标和输出文件,以便以后可视化它们。通过几行简单的代码,您可以跟踪参数,指标和工件:
import mlflow

# Log parameters (key-value pairs)
mlflow.log_parameter("num_dimensions", 8)
mlflow.log_parameter("regularization", 0.1)

# Log a metric; metrics can be updated throughout the run
mlflow.log_metric("accuracy", 0.1)
...
mlflow.log_metric("accuracy", 0.45)

# Log artifacts (output files)
mlflow.log_atrifact("roc.png")
mlflow.log_artifact("model.pkl")
您可以在任何环境(例如,独立脚本或笔记本)中使用MLflow Tracking将结果记录到本地文件或服务器,然后比较多次运行。使用Web UI,您可以查看和比较多次运行的输出。团队也可以使用这些工具来比较不同用户的结果。

MLflow项目

MLflow项目提供了打包可重用数据科学代码的标准格式。每个项目都只是一个包含代码或Git存储库的目录,并使用一个描述符文件来指定它的依赖关系以及如何运行代码。MLflow项目由一个名为MLproject的简单YAML文件定义。
name: My Project
conda_env: conda.yaml
entry_points:
main:
parameters:
data_file: path
regularization: {type: float, default: 0.1}
command: "python train.py -r {regularization} {data_file}"
validate:
parameters:
data_file: path
command: "python validate.py {data_file}"
项目可以通过Conda环境指定它们的依赖关系。一个项目也可能有多个入口点用于调用带有命名参数的运行。您可以使用mlflow run命令行工具运行项目,无论是从本地文件还是从Git存储库中运行:
mlflow run example/project -P num_dimensions=5

mlflow run [email protected]:databricks/mlflow-example.git -P num_dimensions=5
MLflow将自动为项目设置合适的环境并运行它。另外,如果你在项目中使用MLflow Tracking API,MLflow将记住执行的项目版本(即Git commit)和任何参数。然后您可以轻松地重新运行完全相同的代码。
无论是在公司还是在开源社区,项目格式都可以轻松共享可复制的数据科学代码。结合MLflow跟踪,MLflow项目为重现性,可扩展性和实验提供了很好的工具。

MLflow模型

MLflow模型是一种用多种格式打包机器学习模型的惯例,称为“风味”。MLflow提供了多种工具来帮助您部署不同风格的模型。每个MLflow模型都保存为一个包含任意文件和MLmodel描述符文件的目录,该文件列出了可以使用的口味。
time_created: 2018-02-21T13:21:34.12
flavors:
sklearn:
sklearn_version: 0.19.1
pickled_model: model.pkl
python_function:
loader_module: mlflow.sklearn
pickled_model: model.pkl
在这个例子中,模型可以与支持sklearn或python_function模型风格的工具一起使用。
MLflow提供了将多种常见模型类型部署到不同平台的工具。例如,任何支持python_function flavor的模型都可以部署到基于Docker的REST服务器,云平台(如Azure ML和AWS SageMaker)以及Apache Spark中用于批量和流式推断的用户定义函数。如果您使用Tracking API将MLflow模型输出为工件,则MLflow还会自动记住它们来自哪个Project和Run。

MLflow入门

要开始使用MLflow,请按照mlflow.org上的说明进行操作,或查看Github上的Alpha版本代码。我们很高兴听到您对这些概念和代码的反馈意见!

在Databricks上主持MLflow

如果您想运行MLflow的托管版本,我们现在也正在接受databricks.com/mlflow的注册。Databricks上的MLflow与完整的DatabricksUnified Analytics Platform集成,包括笔记本,作业,Databricks Delta和Databricks安全模型,使您能够以安全,生产就绪的方式大规模地运行现有MLflow作业。

下一步是什么?

我们刚刚开始使用MLflow,因此还有很多事情要做。除了项目更新之外,我们还计划引入主要的新组件(例如Monitoring),库集成以及我们已发布的内容(例如支持更多环境类型)的扩展。请继续关注我们的博客以获取更多信息。

原文:https://databricks.com/blog/2018/06/05/introducing-mlflow-an-open-source-machine-learning-platform.html?utm_source=tuicool&utm_medium=referral

你可能感兴趣的:(1、MLflow:一个开源的机器学习平台)