博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1、MLflow:一个开源的机器学习平台
阅读量:6998 次
发布时间:2019-06-27

本文共 3627 字,大约阅读时间需要 12 分钟。

每个尝试机器学习开发的人都知道这很复杂。除了软件开发中常见的问题之外,机器学习(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版本有三个组件:
img_35f0e928897e28f66a49cb144c82886e.png
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 runmlflow.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 Projectconda_env: conda.yamlentry_points:main:parameters:data_file: pathregularization: {type: float, default: 0.1}command: "python train.py -r {regularization} {data_file}"validate:parameters:data_file: pathcommand: "python validate.py {data_file}"
项目可以通过Conda环境指定它们的依赖关系。一个项目也可能有多个入口点用于调用带有命名参数的运行。您可以使用mlflow run命令行工具运行项目,无论是从本地文件还是从Git存储库中运行:
mlflow run example/project -P num_dimensions=5mlflow run git@github.com: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.12flavors:sklearn:sklearn_version: 0.19.1pickled_model: model.pklpython_function:loader_module: mlflow.sklearnpickled_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),库集成以及我们已发布的内容(例如支持更多环境类型)的扩展。请继续关注我们的博客以获取更多信息。

原文:

转载地址:http://ngovl.baihongyu.com/

你可能感兴趣的文章
mybatis_helloworld(2)_源码
查看>>
完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip
查看>>
BLE 广播数据解析
查看>>
Oracle用户密码过期和用户被锁解决方法【转】
查看>>
Android 解决Android的TextView和EditText换行问题
查看>>
CSS效果集锦(持续更新中)
查看>>
通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[中]:管道如何处理请求...
查看>>
Eigen教程(9)
查看>>
单元测试
查看>>
操作hadoop的经验积累
查看>>
微信企业号验证
查看>>
请问set JAVA_OPTS的各项參数是什么意思?
查看>>
Linux安装JDK
查看>>
C#常用控件缩写
查看>>
.NET足球赛事资料数据库平台SmartLottery开源发布——全球足球联赛应有尽有
查看>>
关于Eclipse生成和导入Patch文件.
查看>>
如何使用Photoshop(PS)将图片的底色变为透明
查看>>
IDEA实现序列号接口
查看>>
人件札记:保持高效的办公室环境
查看>>
Mysql中使用流式查询避免数据量过大导致OOM
查看>>