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 Wenn Sie über MLFlow mit dem Server interagieren möchten, verwenden Sie mlflow.tracking.MlflowClient.
Sie können "MlflowClient.get_metric_history (run_id, key)" verwenden, um den gesamten Metrikverlauf eines Schlüssels in einem Lauf abzurufen. Hier ist eine Funktion, die dies verwendet, um den Verlauf der Metrik als "pandas.DataFrame" abzurufen. Bei der Konvertierung in datetime ist es einfach, Zeitstempel zu verarbeiten.
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")
Wenn Sie mehrere Metriken und Diagramme vergleichen möchten, können Sie dies ganz einfach tun, indem Sie Datenrahmen wie unten gezeigt vertikal kombinieren und Pivot verwenden.
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()
Recommended Posts