MLFlow 活动 运行 与环境 运行 id 不匹配

MLFlow active run does not match environment run id

我正在尝试执行 MLFlow 运行,但在尝试了很多东西后仍然遇到以下错误。


run = mlflow.active_run()
if run:
    print("Active run_id: {}".format(run.info.run_id))
    mlflow.end_run()

mlflow.set_experiment('TNF_EXP') 
mlflow.set_tracking_uri("http://localhost:5000/") # Actual Server URI instead of localhost
experiment = mlflow.get_experiment_by_name("TNF_EXP")

with mlflow.start_run(experiment_id=experiment.experiment_id) as run:
...
...

mlflow.end_run()

错误-

File "/.../ModelTrainer.py", line 108, in train
    with mlflow.start_run(experiment_id=experiment.experiment_id) as run:
  File "/usr/local/lib/python3.6/site-packages/mlflow/tracking/fluent.py", line 207, in start_run
    "arguments".format(existing_run_id)
mlflow.exceptions.MlflowException: Cannot start run with ID e9953eb5918845bb9be1xxxxxx because active run ID does not match environment run ID. Make sure --experiment-name or --experiment-id matches experiment set with set_experiment(), or just use command-line arguments
2021/02/11 09:41:36 ERROR mlflow.cli: === Run (ID 'e9953eb5918845bb9be1xxxxxx') failed ===

我注意到我之前有一个 active run,所以我包含了第一个 if block 来结束那个 运行。代码 运行 成功,我能够在 MLFlow UI 上记录数据,但现在当我 运行 它时,我开始遇到同样的问题。在当前开始一个新的 运行 之前没有找到活动的 运行。

FYI, I am running the code on Azure server with the respective tracking URI mentioned in the code.

但是,如果我在 CLI 的 mlflow run 命令中包含参数 --experiment-name="TNF_EXP",代码 运行 就可以了

这主要是因为您使用 default experiment name 启动了 运行,然后您试图将 experiment_name 设置为“TNF_EXP”。

将建议您使用 mlflow.run(..., experiment_name="TNF_EXP") python 方法,然后 运行 从 CLI.

中选择它

您可以找到更多信息here

MLflow 项目当前支持的行为是使用 mlflow cli 定义实验名称或 ID(如果您知道 ID)。

这需要对 MLflow 项目的执行方式进行系统更改,因为 mlflow 运行 CLI 命令将创建一个主 运行(在 --experiment-name 参数或默认值下)。 start_run 在 main 中创建的嵌套 运行 需要属于同一个父实验。

如果您想在特定实验下登录,唯一支持的模型是在 CLI 命令中使用 --experiment-name 或 --experiment-id。

您现在可以 运行 它作为 : mlflow 运行 。 --实验名称测试