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

2019 年 6 月 07 日

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 版本发行说明中查看变更的完整列表。用户可以加入 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


2019 年 6 月 07 日 19:068421
用户头像

发布了 38 篇内容, 共 26.6 次阅读, 收获喜欢 197 次。

关注

评论

发布
暂无评论
发现更多内容

「架构师训练营」第三周课后练习

L

week-3-part2 学习总结

451409827

单例

scorpion

架构师训练营第 1 期 -Week3 - 课后练习

鲁小鲁

php 单例模式 极客大学架构师训练营 go单例模式

第三周总结

睁眼看世界

极客大学架构师训练营

week3

张兵

极客大学架构师训练营

第 3 周 作业

Pyr0man1ac

架构师训练营第三次作业

月殇

极客大学架构师训练营

架构师训练营第 1 期第 3 周作业

du tiezheng

golang 极客大学架构师训练营 组合模式

第三周作业

追风

极客大学架构师训练营

架构训练营第三周作业

Geek_ce484f

极客大学架构师训练营

架构师训练营第 3 周课后练习

叶纪想

极客大学架构师训练营

架构师训练营 1 期第 3 周:代码重构 - 作业

灵霄

极客大学架构师训练营

架构师训练营第二周作业

尹斌

第 3 周 代码重构 80!80!80!

Pyr0man1ac

架构师训练营第三周学习总结-设计模式

郎哲158

学习 极客大学架构师训练营

「架构师训练营」第三周课后练习

L

架构师1期3周作业

FG佳

极客大学架构师训练营

架构师1期第三周总结

FG佳

极客大学架构师训练营

架构师训练营 第三周作业

郎哲158

训练营第三周作业 1

仲夏

极客大学架构师训练营

架构师训练营第 3 周学习总结

netspecial

极客大学架构师训练营

架构师训练营第三周总结

月殇

极客大学架构师训练营

架构训练营第三周作业

Geek_ce484f

极客大学架构师训练营

Week 3 作业 01

Croesus

week-3-part1 手写单例模式

451409827

【译文】Rust futures: async fn中的thread::sleep和阻塞调用

袁承兴

rust 并发 异步

架构师训练营第三周学习总结

尹斌

第三周 代码重构 作业一

应鹏

极客大学架构师训练营

单例模式-第三周作业

睁眼看世界

设计模式 极客大学架构师训练营

架构训练营-week3-作业

于成龙

设计模式 架构训练营

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