Pythn에서 MLflow에서metric의 역사 기록 가져오기

8967 단어 MLflowPython

tl;dr

import pandas as pd
import mlflow

def get_metric_history(run_id, metric):
    client = mlflow.tracking.MlflowClient()
    history = client.get_metric_history(run_id, metric)
    history = [dict(key=m.key, value=m.value, timestamp=m.timestamp, step=m.step) for m in history]
    history = pd.DataFrame(history).sort_values("step")
    history.timestamp = pd.to_datetime(history.timestamp, unit="ms")
    return history

train_loss = get_metric_history(run_id, "train_loss")
valid_loss = get_metric_history(run_id, "valid_loss")
history = pd.concat((train_loss, valid_loss))
history.pivot(index="step", columns="key", values="value").plot()

How to


MLFlow와 서버를 교환하고 싶을 때mlflow.tracking.MlflowClient를 사용합니다.MlflowClient.get_metric_history(run_id, key)를 사용한 어떤 런의 키의metric 이력서는 모두 삭제했다.
이 함수는metric의 역사를 가져오는 데 사용됩니다. pandas.DataFrame타임 스탬프를 날짜 타임으로 바꾸면 처리하기 쉬워요.
def get_metric_history(run_id, metric):
    client = mlflow.tracking.MlflowClient()
    history = client.get_metric_history(run_id, metric)
    history = [dict(key=m.key, value=m.value, timestamp=m.timestamp, step=m.step) for m in history]
    history = pd.DataFrame(history).sort_values("step")
    history.timestamp = pd.to_datetime(history.timestamp, unit="ms")
    return history

train_loss = get_metric_history(run_id, "train_loss")

덧붙여 여러 메트릭을 비교하여plot을 진행할 때 아래처럼 Dataframe을 세로로 결합시켜 pivot를 사용하여 간단하게 실현할 수 있다.
train_loss = get_metric_history(run_id, "train_loss")
valid_loss = get_metric_history(run_id, "valid_loss")
history = pd.concat((train_loss, valid_loss))
history.pivot(index="step", columns="key", values="value").plot()

좋은 웹페이지 즐겨찾기