Может ли MLflow регистрировать новые показатели в завершенном запуске?

#python-3.x #time-series #mlflow

Вопрос:

Я хотел бы использовать MLflow (с Python) для регистрации временных рядов с интервалом времени, равным 1 дню. Моя идея состояла бы в том, чтобы создать новый запуск с определенным идентификатором и использовать функцию log_metric каждый день (скажем, с заданием cron) с новым значением. Как только мой запуск будет завершен, могу ли я «открыть его заново» и зарегистрировать новую метрику ? То, что я имею в виду, это:

 # Day 1
import mlflow

tracking_uri = "my_uri"
mlflow.set_tracking_uri(tracking_uri)
xp_id = 0
mlflow.start_run(run_name="test", experiment_id=xp_id)
mlflow.log_metric("test_metric", 1)
mlflow.end_run()
 

И в последующие дни:

 import mlflow

def log_daily_metric(daily_value_metric):
  tracking_uri = "my_uri"
  mlflow.set_tracking_uri(tracking_uri)
  xp_id = 0
  mlflow.restart_run(run_name="test", experiment_id=xp_id)  # /! function mlflow.restart does not exist
  mlflow.log_metric("test_metric", daily_value_metric)
  mlflow.end_run()
 

чтобы в этом запуске "test" каждый день регистрировались новые показатели.

Есть идеи, как этого добиться ?

Ответ №1:

Решение, по-видимому, заключается в:

 # day 1

import mlflow

tracking_uri = "my_uri"
mlflow.set_tracking_uri(tracking_uri)
xp_id = 0

client = MlflowClient()
run = client.create_run(experiment_id=xp_id)
print(run.info.run_id)  # gives you the run ID of your experiment. Example: "df85f660dca47d21b41454342cd3a7cb". Let's save this id somewhere...
 

Затем,

 import mlflow

def log_daily_metric(daily_value_metric: float, day: int):
  tracking_uri = "my_uri"
  mlflow.set_tracking_uri(tracking_uri)
  xp_id = 0
  client = MlflowClient()
  run_id = "df85f660dca47d21b41454342cd3a7cb"
  client.log_metric(run_id=run_id, key="test_metric", value=daily_value_metric, step=day)