Databricks 开源机器学习平台 MLflow 正式发布 1.0 版本

阅读数:7055 2019 年 6 月 7 日 19:06

Databricks开源机器学习平台MLflow正式发布1.0版本

2018 年 6 月,Spark 和 Mesos 的核心作者兼 Databrick 首席技术专家 Matei Zaharia 宣布推出开源机器学习平台 MLflow,这是一个能够覆盖机器学习全流程(从数据准备到模型训练到最终部署)的新平台,旨在为数据科学家构建、测试和部署机器学习模型的复杂过程做一些简化工作。有了 MLflow,数据科学家就可以在本地(笔记本电脑)或远程(云端)跟踪和共享机器学习实验、跨框架打包和共享模型,并几乎可以在任何地方部署模型。现在 MLflow 1.0 现已正式发布。

自一年前发布第一个版本以来,MLflow 已经被数千个组织所采用。它们用它来管理机器学习工作负载,一些服务平台(如 Databricks)还提供了 MLflow 服务。MLflow 社区已经有 100 多名贡献者,MLflow PyPI 包的下载频率已接近每月 60 万次。MLflow 1.0 版本不仅标志着 API 的成熟和稳定,还增加了很多新特性和改进。

新版本现在就可用,用户可以使用 PyPl 安装 MLflow 1.0,参考官方文档,并在 GitHub 上提供反馈。下面将介绍 MLflow 1.0 的一些新特性,完整的列表请参阅发布说明

MLflow 1.0 带来了哪些新特性

Tracking API 支持 X 坐标轴

数据科学家和工程师通常需要在训练结束时跟踪概要指标(如准确性)或者在模型训练期间生成的“流式指标”(如每个迷你批次的损失)。这些流式指标通常是基于每个迷你批或一段训练数据计算出来的。为了准确记录这些指标,以及进行更好的可视化,log_metric API 提供了 step 参数。

复制代码
mlflow.log_metric(key, value, step=None)

step 可以是用于表示指标 x 坐标的任意整数。例如,如果你想为每一段数据记录一个指标,那么 step 就是这段数据的 epoch。

MLflow UI 现在还支持根据 x 坐标值绘制指标。下面的示例将展示如何使用 MLflow UI 基于时间对两个指标进行可视化。虽然它们是在不同的时间点(例如,在“relative time”视图中可以看到数据点是对不齐的)记录的,但这些数据点都与相同的 x 坐标有关。切换到“steps”视图就可以看到这两个指标的数据点,它们根据 x 坐标值排列在一起。

Databricks开源机器学习平台MLflow正式发布1.0版本

改进的搜索功能

为了改进搜索功能,搜索过滤器 API 现在支持简化版的 SQL WHERE 子句。此外,除了指标和参数外,它还支持通过运行属性和标签进行搜索。下面的示例演示了如何根据参数和标签搜索所有实验的运行情况。

复制代码
from mlflow.tracking.client import MlflowClient
all_experiments = [exp.experiment_id for exp in MlflowClient().list_experiments()]
runs = (MlflowClient()
   .search_runs(experiment_ids=all_experiments,
    filter_string="params.model = 'Inception'
     and tags.version='resnet'", run_view_type=ViewType.ALL))

批量记录指标

在需要记录多个指标的实验中,如果可以将指标作为一个批次(而不是单独记录)进行记录通常会更方便、更高效。MLflow 1.0 提供了一个 runs/log-batch REST API 端点,可通过单个 API 请求记录多个指标、参数和标签。

你可以调用下面这些端点:

  • Python (mlflow.log_metrics, mlflow.log_params, mlflow.set_tags)
  • R (mlflow_log_batch)
  • Java (MlflowClient.logBatch)

将 HDFS 作为 Artifact Store

除了本地文件,MLflow 还支持将以下存储系统作为 Artifact Store:Amazon S3、Azure Blob Storage、Google Cloud Storage、SFTP 和 NFS。MLflow 1.0 新增了将 HDFS 作为 Artifact Store 后端的支持,只需要通过–backend-store-uri 指定 hdfs:// URI:

复制代码
hdfs://<host>:<port>/<path>

MLflow Windows Client

在 Windows 上运行 MLflow 的用户现在可以通过 MLflow 1.0 的 Windows Client 来跟踪实验。

构建 Docker 镜像

部署 ML 模型的最常见方法之一是构建 Docker 容器。MLflow 1.0 添加了一个新命令来构建 Docker 容器,容器的默认入口点通过端口 8080 提供 MLflow pyfunc 模型服务。例如,你可以使用以下命令构建一个 Docker 容器:

复制代码
mlflow models build-docker -m "runs:/some-run-uuid/my-model" 
 -n "my-image-name" docker run -p 5001:8080 "my-image-name"

ONNX 模型

新版本增加了一个实验性的 ONNX 模型风格。可以使用 MLflow.onnx.save_model() 和 MLflow.onnx.log_model() 方法将 ONNX 模型记录为 MLflow 格式。这些方法还会将 pyfunc 添加到生成的 MLflow 模型中,这样就可以将模型解释为通用的 Python 函数,然后通过 MLflow.pyfunction.load_pyfunc() 进行推理。MLflow ONNX 模型的 pyfunc 表示是通过 ONNX 运行时执行引擎进行计算的。最后,可以使用 MLflow.onnx.load_model() 方法以原生 ONNX 格式加载带有 ONNX 风格的 MLflow 模型。

其他特性和更新

请注意,新版本包含了几个重大变更,请在 1.0 版本发行说明中查看变更的完整列表。用户可以加入 mlflow-users@googlegroups.com,或通过 GitHub 提交问题或补丁。有关 MLflow 的实时问题,可以加入 Slack 讨论,也可以在 Twitter 上关注 @MLflow。

1.0 版本之后会有什么

1.0 版本标志着 MLflow 组件达到了一个里程碑:Tracking、Model 和 Project。MLflow 团队将继续开发这些组件,与此同时,他们还会开发新的组件,以便涉及更多的 ML 生命周期。MLflow 的下一个主要新增功能会是模型注册表,允许用户管理 ML 模型的生命周期——从实验到部署,再到监控。

英文原文:
https://databricks.com/blog/2019/06/06/announcing-the-mlflow-1-0-release.html

评论

发布