Databricks旨在通过MLflow简化建立机器学习模块

信息化观察网
编译
Databricks是一家位于硅谷、专注于使Apache Spark商业化的初创公司,该公司开发出了MLflow,即数据科学家管理机器学习模型生命周期的一个开源工具包。 同传统软件开发不同的是,机器学习依赖了大量的工具。在建立...

Databricks是一家位于硅谷、专注于使Apache Spark商业化的初创公司,该公司开发出了MLflow,即数据科学家管理机器学习模型生命周期的一个开源工具包。

同传统软件开发不同的是,机器学习依赖了大量的工具。在建立模型的每一个阶段中,数据科学家至少要使用6个工具。在确定使用正确的工具包和框架之前,每一个阶段都需要进行大量的实验。碎片化工具和快速重复实验的需求使得机器学习及其复杂。

Databricks所开发的MLflow旨在通过联系一系列工具和框架的硬件抽象层(abstraction layer)——即位于操作系统 内核与硬件电路之间的接口层,其目的在于将硬件抽象化——来减少机器学习的复杂性。这个工具包能够有效地用于个人数据科学家或者建立机器学习模型的大型团队。

MLflow解决了在建立和管理机器学习中3个重要的挑战:

1. 探究参数和超参数对模型的影响方式;

2. 在建立模型的同时进行实验的一致方法;

3. 通过多重推理环境简化模型。

MLflow的三个不同组件能够解决上述所提及的挑战:

1. MLflow Tracking

MLflow的这一个组件很大程度上是属于API(应用程序界面)和UI(用户界面),用于在运行机器学习代码然后进行可视化操作时,记录参数、代码版本、度量、以及导出文件。开发者能够在任何的环境下使用MLflow Tracking(例如脱机脚本或者笔记本)来将记录的结果导出到当地文件或者服务器上,然后对比一系列的运行结果,团队也可使用这一组件来比较不同用户所得到的结果。基于网页的UI提供了查询和分析能力来探索在模型开发中所生成的信息。这是在模型中引入大量日志和数据存储能力的非入侵方式。

2. MLflow Projects

这一组件规定了打包可重用的数据科学代码标准格式。每一个项目仅仅是一个有代码的索引目录或者Git 本地仓库(repository),即使用一个简单的描述符文件表明其所依赖的文件以及如何运行代码。例如,这些项目可以包括一个conda.yaml文件,用于指定的Python Conda环境。当在Project中使用MLflow Tracking API时,这一环境会自动记住处理的项目版本(如Git commit)以及其它参数。开发者能够有效地从GitHub或者用户自己的Git 本地仓库中运行当前的MLflow Projects,然后将其同多重步骤的工作流链接起来。在Python中开发的机器学习模型能够很容易地就集合到MLflow Projects中。每一次运行项目时,MLflow能够保证在处理代码之前,符合所有的依赖条件。这个能力提供了在开发工作站或者云端运行机器学习项目的经验。

3. MLflow Models

这一组件为在多个Flavors打包机器学习模块和一系列工具提供了用于部署的标准机制。每一个模块都会被另存在一个包含arbitrary文件的文件仓库和一个模型能够使用的多个flavors的名单描述符。它能够更加容易地定位运行机器学习模块的一系列环境。开发者能够从本地的Python环境、Docker、或者基于云的平台(如Amazon SageMaker 或者Azure ML)中选择。

鉴于Databricks的工作重点,所以在看到MLflow和Apache Spark的紧密结合时,我们并不会感到惊讶。

虽然这一项目还处于Alpha版本(需要完整的功能测试,而其功能亦未完善,但是可以满足一般需求),但是代码库还是很稳定的。笔者利用一些现有的数据科学项目测试了MLflow,得到的结果还是很令人满意的。你可以通过“克隆”Github本地仓库来开始使用MLflow。

DevOps让云架构更加易于访问和管理,这些工具包(如MLflow)和DevOps一样,都在尝试加快机器学习过程。我们可以期待大量建立和管理复杂机器学习流水线工具包的出现。

原文作者:Janakiram MSV

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论