跳转到主要内容
公司博客上

MLflow v0.7.0 RStudio新的R API的特性

分享这篇文章

今天,我们很高兴宣布MLflow v0.7.0发布的新特性,包括一个新的MLflow R客户机API提供的RStudio。证明MLflow开放式平台的设计目标,采用在社区里,RStudio MLflow平台扩展到更大bob体育客户端下载的贡献数据的科学家们使用RStudio社区和R编程语言。R是第三语言支持在MLflow Python和Java。

现在可以在PyPI与文档更新,你可以安装新版本pip安装mlflow中描述的那样MLflow快速入门指南

MLflow v0.7.0特性

在这篇文章中,我们将介绍一些主要的MLflow v0.7.0特点:

以及展示新样品多步骤工作流程hyperparameter调优使用内置支持日志Keras模型。

MLflow R API和RStudio集成

在我们继续致力于扩大MLflow开源社区,RStudio贡献了一个bob下载地址R客户跟踪API类似的功能PythonJava客户跟踪api。完全与RStudio集成编程环境,它提供CRUD接口MLflow实验和运行。这个R的客户是可以在凹口或者你可以阅读说明README.Rmd如何安装和使用它。

如果你有使用MLflow Python或Java API中引入跟踪和实验MLflow v0.5.2MLflow v0.6.0分别是没有什么不同的使用r的更多信息可以在GitHub上找到R文件夹

用R日志和跟踪实验

类似于Java和Python客户机api, MLflow R客户允许你日志参数,代码版本,度量,和输出文件运行时R UI代码,然后通过MLflow可视化结果。

#样品R代码显示日志模型参数库(mlflow)#定义参数my_int

下面的示例代码片段火车线性模型。

#样品R代码训练一个线性模型库(mlflow)#读取参数

此外,您可以创建一个实验并设置跟踪服务器界面运行日志,以及创建和激活一个新实验使用mlflow如下:

库(mlflow)#创建和激活“rt”实验mlflow_create_experiment (“rt”)

然后使用R api,您可以获取关于积极运行的信息。

mlflow_active_run ()

通过运行或使用MLflows用户界面:

mlflow_ui ()

添加对注解的支持

提供的一个强大特性MLflow社区成员阿历克斯·亚当森(GitHub @aadamson)是能够注释使用MLflow UI。

MLflow笔记

新样品

作为这个版本的一部分,有两个新的MLflow样本:

  • 多步工作流和管道
  • Hyperparameter调优

多步工作流和管道

在机器学习模型的生命周期,之前并不少见有多个步骤模型训练和部署。例如,我们可能想要收集数据从源,执行ETL和数据转换成一种高性能格式如拼花,最后用洁净的训练数据,跟踪,实验模型在MLflow平台。bob体育客户端下载这示例工作流是一个实例的使用如下图中所示。

MLflow示例工作流

作为一个独立的多步骤的过程,我们可以表达一个工作流作为一个单元的多步执行MLflow项目文件通过入口点。因此每个入口点运行的输出可以作为输入工件的后续阶段,这允许您以编程方式之前检查每个步骤的成功提供工作流的下一个阶段的输出。

等多个shell命令UNIX管道在一起,我们可以一起联系这些单独运行驱动程序使用或步骤MLflow项目api。以下代码示例实现的四个入口点联系在一起main.py通过下面的Python函数:

def工作流(als_max_iter, keras_hidden_units):mlflow.start_run ()作为active_run:#下载CSV和存储的原始数据作为MLflow工件。load_raw_data_run = mlflow.run (“。”,“load_raw_data”)# MLflow工件存储从上一步,并把它转换成一个更有效的镶花表示。ratings_csv_uri = os.path.join (load_raw_data_run.info.artifact_uri,“ratings-csv-dir”)etl_data_run = mlflow.run (“。”,“etl_data”参数= {“ratings_csv”:ratings_csv_uri})#把镶花表示为一个基本的建议模型和运行ALS。ratings_parquet_uri = os.path.join (etl_data_run.info.artifact_uri,“ratings-parquet-dir”)als_run = mlflow.run (“。”,“als”参数= {“ratings_data”:ratings_parquet_uri,“max_iter”:str(als_max_iter)})als_model_uri = os.path.join (als_run.info.artifact_uri,“als-model”)#火车Keras模型使用原始输入数据和ALS模型作为特征输入,提高质量得分。keras_params = {“ratings_data”:ratings_parquet_uri,“als_model_uri”:als_model_uri,“hidden_units”:keras_hidden_units}mlflow.run (“。”,“train_keras”、参数= keras_params)

这个例子的运行MLflow GitHub回购执行以下命令:

cd mlflow /例子/多步mlflow运行。

这个运行将按顺序执行的步骤,通过一个阶段的结果,在每个连续运行。

Hyperparameter调优

Hyperparameter调优示例MLproject显示了如何优化Keras深度学习模型与MLflow和一些流行的优化库:HyperOpt GPyOpt和随机搜索。使用葡萄酒质量数据集,这个项目优化的RMSE度量Keras通过深度学习模型学习速率动力hyperparameters。

与MLflow Hyperparameter调优

MLproject由四个部分组成:火车和三种不同hyperparameter搜索的例子。

火车

这个MLproject的初始步骤Train.py代码示例,将输入数据集分为三个部分:

  • 培训:用于适应模型
  • 验证:用于选择最好的hyperparameter值
  • 测试:用于评估预期的性能和验证我们没有overfit。

随着MLflow内置支持日志记录Keras模型,所有的指标都是记录(mlflow.log_metric ()在使用Keras MLflow回调)。

Hyperparameter搜索

这个MLproject提供三个hyperparameter搜索示例:

虽然三个代码示例使用不同的机制hyperparameter搜索,他们遵循相同的基本流程:

  • 每个参数配置(get_metric ())是评估在一个新的MLflow运行调用主要入口点选择的参数。
  • 评估是基于运行验证集的损失。
  • 测试集的分数计算来验证结果。
  • 最后,最好的运行记录和存储为一个工件(mlflow.log_artifact ())。

这个流可以最好的例子就是下面的代码片段(这是一个简化的融合三个hyperparameter搜索样本)。

def运行():#建立MLflow跟踪客户tracking_client = mlflow.tracking.MlflowClient ()defnew_eval():#评估参数:如培训数据、时代learning_rate,动量,等等defeval(参数个数):lr,动量=参数# MLflow运行项目p = mlflow.projects.run (…)#培训运行指标training_run = tracking_client.get_run (p.run_id)defget_metric(metric_name):返回[m.valuetraining_run.data.metrics如果m。键= = metric_name] [0]#日志指标mlflow。log_metric (train_metric train_loss)返回p.run_id, train_loss返回eval

在这一点上,您可以查询的最佳运行MLflow API和储存以及使用相关的工件mlflow.log_artifact ()

其他功能和错误修正

除了这些特性外,其他物品,错误,和文档都包含在这个版本中修复。有些东西值得注意的是:

突发的变化:

  • (Python)的per-flavor实现load_pyfunc了私人(# 539,@tomasatdatabricks)
  • (REST API, Java) logMetric现在接受双重度量值,而不是一个浮点数(# 566,@aarondav)

特点:

  • [R]支持R (# 370, # 471, @javierluraschi;# 548 @kevinykuo)
  • (UI)支持添加笔记添加到运行(# 396,@aadamson)
  • (Python) Python API, REST API和UI支持删除运行(# 418,# 473,# 526,# 579 @andrewmchen)
  • 包含分支的名字(Python)设置一个标记在执行一个Git项目的一个分支(# 469,@adrian555)
  • (Python)添加一个set_experiment API来激活一个实验开始前运行(# 462,@mparkhe)
  • (Python)添加参数用于指定父运行跟踪&项目api (# 547, @andrewmchen)
  • (Java)添加Java设置标签API (# 495, @smurching)
  • Python支持日志记录与sklearn conda环境模型(# 489,@dbczumar)
  • (得分)支持下载MLflow得分从Maven在得分容器构建JAR (# 507, @dbczumar)

缺陷修正:

  • (Python)砖不能开始运行时打印错误(# 412,@andrewmchen)
  • (Python)修复火花毫升PyFunc装载机工作引发司机(# 480,@tomasatdatabricks)
  • (Python)修复火花毫升load_pyfunc在分布式集群(# 490,@tomasatdatabricks)
  • (Python)修复错误时从运行下载工件的工件根(# 472,@dbczumar)
  • (Python)修复DBFS上传file-existence-checking砖项目的执行过程中逻辑(# 510,@smurching)
  • Python支持多行和unicode标签(# 502,@mparkhe)
  • (Python)添加失踪DeleteExperiment RestoreExperiment在Python实现REST API客户机(# 551,@mparkhe)
  • (得分)火花DataFrame模式转换为一个MLeap模式之前序列化(# 540,@dbczumar)
  • (UI)解决条形图总是显示在度量视图(# 488,@smurching)

变化的完整列表和贡献的社区中可以找到0.7.0更新日志。我们欢迎更多的输入(电子邮件保护)或通过申请的问题提交补丁在GitHub上。关于MLflow实时问题,我们有一个松弛的通道对于MLflow以及可以效仿@MLflow在Twitter上。

阅读更多

更多信息请参考以下链接MLflow 0.7.0。

学分

我们要感谢RStudio工程集团的主要贡献MLflow R api和RStudio集成。此外,MLflow 0.7.0包括补丁,修复bug,从亚伦·戴维森和doc的变化,亚当•Barnhard Adrian壮族,亚历克斯·亚当森,安德鲁·陈科里Zumar, Dror Atariah, GCBallesteros,哈维尔·Luraschi朱尔斯Damji,凯文•郭摩尼Parkhe, Richin Jain,哈斯默奇,斯蒂芬妮Bodoff,托马斯Nykodym,赵峰

免费试着砖
看到所有公司博客上的帖子