跟踪机器学习训练运行
MLflow跟踪组件允许您记录与训练机器学习模型相关的源属性、参数、指标、标签和工件。要开始使用MLflow,请尝试其中一个MLflow快速入门教程.
MLflow跟踪与实验和运行
MLflow跟踪基于两个概念,实验而且运行:
一个MLflow实验是MLflow运行的组织和访问控制的主要单元;所有MLflow运行都属于一个实验。通过实验,您可以可视化、搜索和比较运行,还可以下载运行工件和元数据,以便在其他工具中进行分析。
一个MLflow运行对应于模型代码的一次执行。每次运行记录以下信息:
源:启动运行的笔记本的名称或运行的项目名称和入口点。
版本:如果从Databricks工作区中的笔记本运行,则修改笔记本;如果从Databricks工作区运行,则Git提交哈希砖回购或者从MLflow项目.
开始和结束时间:运行的开始和结束时间。
参数:保存为键值对的模型参数。键和值都是字符串。
指标:保存为键值对的模型评估指标。取值为数字。每个指标都可以在整个运行过程中更新(例如,跟踪模型的损失函数是如何收敛的),MLflow记录并让您可视化指标的历史。
标签:运行以键值对形式保存的元数据。您可以在运行完成期间和之后更新标记。键和值都是字符串。
工件:输出任意格式的文件。例如,您可以将图像、模型(例如,pickle的scikit-learn模型)和数据文件(例如,Parquet文件)记录为工件。
的MLflow跟踪API记录来自模型运行的参数、度量、标记和工件。跟踪API与MLflow通信跟踪服务器.当您使用Databricks时,由Databricks托管的跟踪服务器将记录数据。托管的MLflow跟踪服务器具有Python、Java和R api。
要了解如何控制对实验的访问,请参见实验权限而且更改实验权限.
请注意
MLflow安装在Databricks Runtime ML集群上。要在Databricks Runtime集群上使用MLflow,必须安装mlflow
图书馆。有关在集群上安装库的说明,请参见在集群上安装库.要为MLflow安装的特定包有:
对于Python,请选择库源PyPI并进入
mlflow
在包字段。对于R,选择库源然后进入
mlflow
在包字段。对于Scala,安装这两个包:
选择库源Maven,然后进入
org.mlflow: mlflow-client: 1.11.0
在坐标字段。选择库源PyPI并进入
mlflow
在包字段。
MLflow运行的日志记录在哪里
所有MLflow运行都记录到活动实验中,可以使用以下任何一种方式进行设置:
使用
experiment_id
参数中的mlflow.start_run()命令.设置一个MLflow环境变量MLFLOW_EXPERIMENT_NAME或MLFLOW_EXPERIMENT_ID.
如果未设置活动实验,则将运行记录到笔记本的实验.
要将实验结果记录到一个远程托管的MLflow跟踪服务器,该服务器位于运行实验的工作空间之外的工作空间,请设置跟踪URI以引用远程工作空间mlflow.set_tracking_uri ()
,并在远程工作空间中使用mlflow.set_experiment ()
.
mlflow.set_tracking_uri(<uri_of_remote_workspace>)mlflow.set_experiment(“远程工作空间实验路径”)
日志记录示例笔记本
本笔记本演示如何将运行记录到笔记本实验和工作区实验。只有在笔记本中启动的MLflow运行才能记录到笔记本实验中。可以将从任何笔记本电脑或api启动的MLflow运行记录到工作区实验中。有关查看日志运行的信息,请参见查看笔记本实验而且查看工作区实验.
您可以使用MLflow Python、Java或Scala以及R api来启动运行并记录运行数据。详细信息请参见MLflow快速入门笔记本.
组织MLflow实验训练
实验是模型训练运行的组织单元。有两种类型的实验:工作空间和笔记本。
您可以从Databricks Machine Learning UI或MLflow API创建一个工作区实验。工作区实验不与任何笔记本相关联,任何笔记本都可以通过使用实验ID或实验名称来记录对这些实验的运行。
一个笔记本实验与一个特定的笔记本相关联。当您开始使用时,如果没有活动的实验,Databricks会自动创建一个笔记本实验mlflow.start_run ().
若要查看您可以访问的工作区中的所有实验,请单击实验在侧栏中。此图标仅当您处于机器学习角色.
要搜索实验,请在搜索字段,单击搜索.中包含搜索文本的实验列表将更改为仅显示那些实验的名字,位置,由,或笔记列。
点击表格中任意一个实验名称,即可进入该实验页面:
实验页面列出了与实验相关的所有运行。从该表中,您可以通过单击其打开与实验相关的任何运行的运行页面开始时间.的源列使您可以访问创建运行的笔记本版本。你也可以搜索和过滤器根据指标或参数设置运行。
创建工作空间实验
本节描述如何使用Databricks UI创建一个工作区实验。您可以直接创建一个工作区实验从工作空间或从实验页面.
你也可以使用MLflow API,或Databricks Terraform提供商与databricks_mlflow_experiment.
有关日志记录运行到工作区实验的说明,请参见日志记录示例笔记本.
点击工作空间在侧栏中。
进入要创建实验的文件夹。
做以下其中一件事:
单击任意文件夹后的在文本的右侧,并选择创建> MLflow实验.
在工作空间或用户文件夹中,单击并选择创建> MLflow实验.
在Create MLflow Experiment对话框中,为实验输入一个名称和一个可选的工件位置。如果您没有指定工件位置,那么工件将存储在其中
dbfs: /砖/ mlflow-tracking / < experiment-id >
.砖支持DBFS、S3和Azure Blob存储工件位置。
要在S3中存储工件,请指定表单的URI
s3: / / <斗> / <路径>
.MLflow从您的集群获取访问S3的凭据实例配置文件.存储在S3中的工件不会出现在MLflow UI中;需要通过对象存储客户端下载。请注意
在AWS上上传到DBFS的MLflow工件的最大大小是5GB。
要在Azure Blob存储中存储工件,请指定表单的URI
wasbs: / / <容器> @ < storage-account > .blob.core.windows.net/ <路径>
.存储在Azure Blob存储中的工件不会出现在MLflow UI中;您必须使用blob存储客户端下载它们。请注意
当您将工件存储在DBFS以外的位置时,该工件不会出现在MLflow UI中。存储在DBFS以外位置的模型不能在模型注册表中注册。
点击创建.一个空的实验出现了。
您还可以从Experiments页面创建一个新的工作区实验。要创建一个新实验,请使用下拉菜单。从下拉菜单中,您可以选择AutoML实验或者一个空白的实验。
AutoML实验。的配置AutoML实验页面出现。有关使用AutoML的信息,请参见使用Databricks AutoML UI训练ML模型.
空白试验。的创建MLflow实验对话框出现了。在对话框中输入名称和可选的工件位置,以创建一个新的工作区实验。默认的工件位置是
dbfs: /砖/ mlflow-tracking / < experiment-id >
.要记录此实验的运行情况,请调用
mlflow.set_experiment ()
与实验路径。实验路径显示在实验页面顶部。看到日志记录示例笔记本有关详细信息和示例笔记本。
创建笔记本实验
当你使用mlflow.start_run()命令在笔记本中,运行记录活动实验的指标和参数。如果没有活动的实验,Databricks将创建一个笔记本实验。一个笔记本实验与其对应的笔记本共享相同的名称和ID。笔记本ID是字符末尾的数字标识符笔记本URL和ID.
有关日志记录运行到笔记本实验的说明,请参见日志记录示例笔记本.
请注意
如果使用API删除一个笔记本实验(例如,MlflowClient.tracking.delete_experiment ()
在Python中),笔记本本身被移动到垃圾文件夹。
视图的实验
你可以访问的每个实验都出现在实验页面.从这个页面,您可以查看任何实验。点击一个实验名称显示实验页面.
访问实验页面的其他方式:
您可以从工作区菜单中访问工作区实验的实验页面。
您可以从笔记本中进入笔记本实验的实验页面。
查看笔记本实验
在笔记本的右侧侧栏中,单击实验图标.
将出现“实验运行”侧栏,并显示与笔记本实验相关的每次运行的摘要,包括运行参数和度量。在侧边栏的顶部是笔记本最近记录的运行到的实验的名称(笔记本实验或工作区实验)。
从侧边栏,您可以导航到实验页面或直接运行。
单击,查看实验在最右边,挨着实验运行.
要显示运行,单击运行的名称。
管理实验
控件中拥有的实验的重命名、删除或管理权限实验页面,实验页面,或工作区菜单。
删除笔记本实验
笔记本实验是笔记本的一部分,不能单独删除。当你删除笔记本,删除相关的笔记本实验。如果使用API删除一个笔记本实验(例如,MlflowClient.tracking.delete_experiment ()
在Python中)或UI中,笔记本也会被删除。
在工作空间之间复制实验
要在工作空间之间迁移MLflow实验,可以使用社区驱动的开源项目bob下载地址MLflow进出口.
使用这些工具,你可以:
在同一台或另一台跟踪服务器上与其他数据科学家共享和协作。例如,您可以将另一个用户的实验复制到您的工作区中。
从本地跟踪服务器复制MLflow实验并运行到Databricks工作区。
将关键任务实验和模型备份到另一个Databricks工作空间。
使用MLflow运行管理训练代码
所有MLflow运行都记录到活性实验.如果没有显式地将实验设置为活动实验,则运行将记录到笔记本实验。
查看运行
您可以从运行的父实验页面或直接从创建运行的笔记本访问运行。
从实验页面,在运行表中,单击某一次运行的开始时间。
在笔记本上,点击在“实验运行”侧栏中运行的日期和时间旁边。
的运行屏幕显示用于运行的参数、运行产生的度量以及任何标记或注释。来显示笔记,参数,指标,或标签对于这次运行,单击在标签的左边。
您还可以在此屏幕中访问从运行中保存的工件。
再现一次运行的软件环境
通过单击,您可以为运行重新生成精确的软件环境复制运行.出现以下对话框:
使用默认设置,当您单击确认:
笔记本被克隆到对话框中显示的位置。
如果原集群仍然存在,则将克隆的笔记本附加到原集群,并启动集群。
如果原来的集群不再存在,将创建并启动一个具有相同配置的新集群,包括所有已安装的库。笔记本附加到新的集群。
您可以为克隆的笔记本选择不同的位置,并检查集群配置和已安装的库:
如果选择其他文件夹保存克隆的笔记本,单击编辑文件夹.
要查看集群规格,请单击视图规范.若要只克隆笔记本而不克隆集群,请取消勾选此选项。
若要查看安装在原始集群上的库,请单击查看库.如果您不关心是否安装与原始集群上相同的库,请取消选中此选项。
管理运行
过滤器运行
您可以根据参数或度量值搜索运行情况。您还可以通过标记搜索运行。
若要搜索与包含参数和度量值的表达式匹配的运行,请在搜索字段中输入查询并单击搜索.一些查询语法示例如下:
metrics.r2>0.3
params.elasticNetParam=0.5
params.elasticNetParam=0.5和metrics.avg_areaUnderROC>0.3
要按标签搜索运行,输入标签的格式如下:
标签。<关键> = " < >价值”
.字符串值必须用引号括起来,如图所示。tags.estimator_name = " RandomForestRegressor "
tags.color = "蓝色"和tags.size = 5
键和值都可以包含空格。如果键包含空格,则必须将其括在反引号中,如所示。
标签。' my custom tag ' = "my value"
您还可以根据运行的状态(Active或Deleted)以及模型版本是否与运行相关联来筛选运行。为此,单击过滤器在搜索框的右边。的状态而且关联模型出现下拉菜单。从下拉菜单中进行选择。
复制在工作空间之间运行
要从Databricks工作空间导入或导出MLflow运行,可以使用社区驱动的开源项目bob下载地址MLflow进出口.
以编程方式分析MLflow运行
您可以通过以下两个DataFrame api以编程方式访问MLflow运行数据:
MLflow Python客户端search_runs API返回一个熊猫数据框架。
的MLflow实验数据源返回一个Apache Spark DataFrame。
这个示例演示了如何使用MLflow Python客户端构建一个仪表板,该仪表板可以可视化评估指标随时间的变化,跟踪特定用户启动的运行次数,并测量所有用户的运行总数: