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 坐标值排列在一起。

改进的搜索功能
为了改进搜索功能,搜索过滤器 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 版本发行说明中查看变更的完整列表。用户可以加入 [email protected],或通过 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
更多内容推荐
-
推出适用于 Apache MXNet 的模型服务器
本周早些时候,AWS 宣布推出适用于 Apache MXNet 的模型服务器,这是构建于 Apache MXNet 上的开源组件,用于处理深度学习模型。
-
TensorFlow 发布 1.12.0 版本,改善 XLA 稳定性和性能
近日,TensorFlow发布1.12.0版本,对主要功能进行了一些改进,并修复了一些错误,如Keras模型现在可以直接导出为SavedModel格式等。
-
融会贯通:SparrowRecSys 中的电影相似推荐功能是如何实现的?
今天,我带你从头到尾地实现一个完整的推荐功能,**相似电影推荐**,帮助你打通推荐系统的“任督二脉”。
2020 年 11 月 4 日
-
谷歌宣布 TensorFlow Object Detection API 支持 TensorFlow 2
此版本包含与eager模式兼容的二进制文件、两个新的网络架构和针对所有受支持模型的预训练权重。
-
Facebook 开源 Horizon:首个用于大规模产品和服务的强化学习平台
Horizon是首个使用应用强化学习(RL)在大规模生产环境中优化系统的端到端开源平台。该版本包含的工作流和算法是以开放框架为基础构建的——PyTorch 1.0、Caffe2和Spark——使得任何大规模使用RL的人都可以使用Horizon。
-
35 丨 AdaBoost(下):如何使用 AdaBoost 对房价进行预测?
今天我带你用AdaBoost回归分析对波士顿房价进行了预测,在这个过程里,你需要掌握什么呢?
2019 年 3 月 4 日
-
Amazon SageMaker 增加批量转换功能和适用于 TensorFlow 容器的管道输入模式
在几天前的纽约峰会期间,我们推出了两个新的 Amazon SageMaker 功能:一是批量转换功能,这是一种新的批量推断功能,客户可以通过它对 PB 级的数据进行非实时场景预测;二是适用于 TensorFlow 容器的管道输入模式。
-
Databricks 整合 Spark 和 TensorFlow 用于深度学习模型
Tim Hunter在今年的一月份就在Databricks博客发布博文,演示如何使用TensorFlow和Spark一起训练和应用深度学习模型。这里进行了详细的介绍。
-
在首次发布三周之后,MLflow 迎来了 0.2 版本
在今年的Spark+AI峰会上,MLflow团队推出了MLflow,一个开源的用于简化机器学习生命周期的平台。从首次发布到现在的三周时间里,已经有很多数据科学家和工程师对使用MLflow和为MLflow贡献代码感兴趣。MLFlow的GitHub仓库已经有180个分支,其中有十几个贡献者提交了问题和拉取请求。此外,上周参加由该团队举办的第一次MLflow聚会的人数接近100人。
评论