如何将先前的运行更新到MLFlow?

14
我想更新之前使用MLFlow进行的运行记录,即更改/更新参数值以适应实现中的变化。 典型用例包括:
  • 使用参数A记录运行,并在很久以后记录参数A和B。 更新先前运行的参数B的值为其默认值将会很有用。
  • 将一个布尔标志作为参数实现模型。 更改实现以使用字符串。 现在我们需要更新先前运行的参数值,以使其与新行为保持一致。
  • 更正在先前运行中记录的错误参数值。

并不总是容易丢弃整个实验,因为我需要保留先前的运行记录用于统计目的。 我也不想仅出于单个新参数而产生新的实验,以保持单个运行数据库。

最佳方法是什么?


当您尝试更新现有参数值时,是否出现“INVALID_PARAMETER_VALUE”错误? - panc
@panc 我不记得确切的细节,但很有可能。 - mountrix
2个回答

16
为了添加或更正现有运行的参数、指标或工件,请将run_id传递给mlflow.start_run函数,而不是experiment_id。{{}}
with mlflow.start_run(run_id="your_run_id") as run:
    mlflow.log_param("p1","your_corrected_value")
    mlflow.log_metric("m1",42.0) # your corrected metrics
    mlflow.log_artifact("data_sample.html") # your corrected artifact file

在MLflow运行完成后,您可以随时对其进行更正、添加或删除。从UI或使用mlflow.search_runs获取run_id。

来源:https://towardsdatascience.com/5-tips-for-mlflow-experiment-tracking-c70ae117b03f


2
在 MLflow 1.13.1 上,这对我似乎不起作用。当我尝试更正现有参数时,它会发出错误 RestException: INVALID_PARAMETER_VALUE: Changing param values is not allowed. Param with key='test_rmse' was already logged with value='3.061878' for run ID='fe03293adb7e4c79a716c11fc938c044'. Attempted logging new value '0'. - panc
@panc 我也遇到了同样的问题。你找到解决方案了吗? - jhagege
@cyberjoac 还没有。我在 Github 上开了一个线程 https://github.com/mlflow/mlflow/issues/3999,但还没有回复。 - panc

1
MLflow API不支持更新现有参数值,请参见this
但是,有一些后门可以用来实现重写现有参数值的目标。但请谨慎使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接