BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

在首次发布三周之后,MLflow迎来了0.2版本

| 作者 Matei Zaharia 关注 0 他的粉丝 , Mani Parkhe 关注 0 他的粉丝 ,译者 悟明 关注 0 他的粉丝 发布于 2018年7月17日. 估计阅读时间: 8 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

在今年的Spark+AI峰会上,MLflow团队推出了MLflow,一个开源的用于简化机器学习生命周期的平台。从首次发布到现在的三周时间里,已经有很多数据科学家和工程师对使用MLflow和为MLflow贡献代码感兴趣。MLFlow的GitHub仓库已经有180个分支,其中有十几个贡献者提交了问题和拉取请求。此外,上周参加由该团队举办的第一次MLflow聚会的人数接近100人。

昨天,该团队正式宣布推出MLflow 0.2版本,这一版本包含了由内部客户和开源用户提出的一些最被期待的功能。按照MLflow快速入门指南给出的提示,可以使用pip install mlflow来安装MLflow 0.2。以下内容将介绍该版本的主要新功能。

内置TensorFlow集成

MLflow让开发者可以基于任意机器学习库进行模型训练,只要可以将它们包装在Python函数中,但对于常用的库,MLflow团队希望能够提供内置的支持。该版本增加了mlflow.tensorflow包,借助这个包,开发者可以轻松地将TensorFlow模型记录到MLflow跟踪服务器中。在记录模型之后,可以立即将其传给受MLflow支持的各种部署工具(例如本地REST服务器、Azure ML服务或Apache Spark)。

以下示例显示了用户如何记录经过训练的TF模型,并使用内置功能和pyfunc抽象进行部署。

训练环境:保存训练过的的TF模型

# 将estimator保存成SavedModel格式。
estimator_path = your_regressor.export_savedmodel(model_dir, 
receiver_fn)
 
# 记录导出的SavedModel。
# signature_def_key: 签名的名称,在加载SavedModel时使用
#                    参考: 
(https://www.tensorflow.org/serving/signature_defs).
# artifact_path: 保存构件的位置
mlflow.tensorflow.log_saved_model(saved_model_dir=estimator_path,
                                  signature_def_key="predict", 
                                  artifact_path="model")

部署环境:加载TF模型并进行预测

estimator_path = ... # 保存TF的位置

 
# 我们可以加载TensorFlow estimator并包装成一个Python函数。
# 可以使用本地文件或传进去一个ID加载上一次运行的构件。
pyfunc = mlflow.tensorflow.load_pyfunc(estimator_path)

 
# 将模型应用在Pandas DataFrames上进行预测。
predict_df = pyfunc.predict(df)

生产跟踪服务器

MLflow 0.2增加了一个新的mlflow server命令,该命令将启动MLflow跟踪服务器的生产版本,用于跟踪和查询运行过的实验。与本地的mlflow ui命令不同,mlflow server可以支持多个工作线程和基于S3的存储,如下所述。读者可以阅读MLflow文档以了解如何运行跟踪服务器。

基于S3的构件存储

MLflow的一个关键功能是记录训练的输出,其中可能包括被称为“构件”的任意文件。不过,MLflow的第一个版本仅支持将构件保存到共享的POSIX文件系统。MLflow 0.2添加了对S3存储的支持,通过给mlflow server命令添加—artifact-root参数即可。这样可以轻松地在多个云实例上运行MLflow训练作业并跟踪结果。以下示例说明如何启动使用S3存储的跟踪服务器。

在EC2实例上运行MLflow服务器:

% hostname
ec2-11-222-333-444.us-west-2.compute.amazonaws.com

 
% mlflow server \
      --file-store /mnt/persistent-disk/mlflow_data \
      --artifact-root s3://my-mlflow-bucket/

MLflow客户端:

mlflow.set_tracking_uri("http://ec2-11-222-333-444.us-west-2.compute.amazonaws.com")
...
with mlflow.start_run():
    mlflow.log_parameter("x", 1)
    mlflow.log_metric("y", 2)
    ...
    mlflow.log_artifact("/tmp/model")

其他改进

除了这些较大的功能之外,该版本还包含了一些错误和文档问题的修复。完整的变更列表可以在CHANGELOG中找到。读者可以在mlflow-users@googlegroups.com上提供更多反馈,或在GitHub上提交问题或补丁。要想实时讨论有关MLflow的问题,可以加入MLflow的Slack频道。

MLflow的下一步会做什么?

MLflow团队计划在alpha版本中继续更新MLflow。例如,该团队正在进行的工作包括与更多库(如PyTorch、Keras和MLlib)的集成,并进一步改进跟踪服务器的可用性。有关MLflow下一步工作的概述,可查看上周MLflow聚会的演示文稿,或直接观看聚会视频。

对于想要尝试托管版MLflow的Databricks用户,可以在databricks.com/mlflow上注册。

相关链接:

MLflow Github地址:https://github.com/databricks/mlflow

MLflow快速入门指南:https://mlflow.org/docs/latest/quickstart.html

如何运行跟踪服务器:https://www.mlflow.org/docs/latest/tracking.html#running-a-tracking  

MLflow 2.0变更日志:https://github.com/databricks/mlflow/blob/master/CHANGELOG.rst

MLflow Slack频道:https://tinyurl.com/mlflow-slack

MLflow首次聚会演示幻灯片:https://www.slideshare.net/databricks/introduction-fo-mlflow  

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT