MLflow Search-API im Einsatz: Modellmetriken in Dashboards anzeigen

0

Data Engineers für maschinelles Lernen und Data Scientists trainieren häufig Modelle zur Optimierung einer Verlustfunktion. Mit Optimierungsmethoden wie dem Gradientenabstieg lässt sich iterativ der Verlust verringern, um schließlich ein Minimum zu erreichen. Data Scientists haben sich bereits oft die Frage gestellt, wie die eigene Produktivität optimiert werden kann? Oder kann ich den Fortschritt der Metriken meiner Trainingsmodelle visuell erkennen?

Mit MLflow können diese Trainingsläufe verfolgt und sofort einsatzbereite Visualisierungen für gängige Metrik-Vergleiche zur Verfügung gestellt werden. Manchmal aber möchten die Verantwortlichen vielleicht zusätzliche Erkenntnisse gewinnen, die von den Standardvisualisierungen von MLflow nicht abgedeckt werden. In diesem Beitrag wird gezeigt, wie MLflow zum Einsatz kommen kann, um die Fortschritte oder die des Teams bei der Schulung von maschinellen Lernmodellen zu verfolgen.

Anzeige

Die MLflow-Verfolgungs-API macht die Läufe durchsuchbar und gibt die Ergebnisse als komfortablen Pandas DataFrame zurück. Diese Funktionalität lässt sich nutzen, um ein Dashboard zu erstellen, das Verbesserungen bei einer Schlüsselmetrik wie dem mittleren absoluten Fehler (MAE) anzeigt. Außerdem wird gezeigt, wie die Anzahl der gestarteten Läufe pro Experiment und über alle Mitglieder eines Teams hinweg gemessen werden können.

Verfolgung des leistungsstärksten Trainingslaufs

Einige Ingenieure und Forscher im Bereich des maschinellen Lernens verfolgen die Ergebnisse der Modellgenauigkeit in einer Reihe von Tabellenkalkulationen, wobei die Ergebnisse manuell mit den Hyperparametern und den zu ihrer Erstellung verwendeten Trainingssätzen versehen werden. Im Laufe der Zeit kann die manuelle Buchhaltung umständlich sein, wenn das Team wächst und die Anzahl der Versuchsläufe entsprechend zunimmt.

Wenn jedoch die MLflow Tracking-API zum Einsatz kommt, werden alle Trainingsläufe innerhalb eines Experiments protokolliert. Mit dieser API können dann Pandas DataFrames von Läufen für jedes beliebige Experiment generiert werden. Beispielsweise gibt

mlflow.search_runs(…)

einen pandas.DataFrame zurück, der sich in einem Notizbuch anzeigen lässt oder auf einzelne Spalten als pandas.Series zugreift:

runs = mlflow.search_runs(experiment_ids=experiment_id)
runs.head(10)

Abbildung 1: Mit dieser programmatischen Schnittstelle ist es einfach, Fragen wie „Was ist das bisher leistungsfähigste Modell“ zu beantworten. Quelle: Databricks

runs = mlflow.search_runs(experiment_ids=experiment_id,
                         order_by=[‚metrics.mae‘], max_results=1)
runs.loc[0]

Abbildung 2: Mit Hilfe der Pandas DataFrame-Aggregation und der Anzeigefunktion des Databricks-Notebooks können die Verbesserungen der Top-Line-Genauigkeitsmetrik im Laufe der Zeit visualisiert werden. In diesem Beispiel werden die Fortschritte bei der Optimierung von MAE in den letzten zwei Wochen verfolgt. Quelle: Databricks

earliest_start_time = (datetime.now() – timedelta(days=14)).strftime(‚%Y-%m-%d‘)
recent_runs = runs[runs.start_time >= earliest_start_time]
recent_runs[‚Run Date‘] = recent_runs.start_time.dt.floor(freq=’D‘)

best_runs_per_day_idx = recent_runs.groupby(
[‚Run Date‘]
)[‚metrics.mae‘].idxmin()
best_runs = recent_runs.loc[best_runs_per_day_idx]

display(best_runs[[‚Run Date‘, ‚metrics.mae‘]])


Abbildung 3: In Erweiterung dieses Beispiels kann die Gesamtzahl der von jedem Benutzer gestarteten Läufe über einen längeren Zeitraum verfolgt werden. Quelle: Databricks

runs = mlflow.search_runs(experiment_ids=experiment_id)
runs_2019 = runs[(runs.start_time = ‚2019-01-01‘)]
runs_2019[‚month‘] = runs_2019.start_time.dt.month_name()
runs_2019[‚month_i‘] = runs_2019.start_time.dt.month

runs_per_month = runs_2019.groupby(
[‚month_i‘, ‚month‘]
).count()[[‚run_id‘]].reset_index(‚month‘)
runs_per_month.rename({ ‚run_id‘: ‚Number of Runs‘ },
axis=’columns‘, inplace=True)

display(runs_per_month)

Abbildung 4: Erstellen eines Modell-Leistungs-Dashboards. Quelle: Databricks

Mit den oben genannten Anzeigen kann ein Dashboard erstellt werden, das viele Aspekte der Ergebnisse zeigt. Solche Dashboards, die täglich aktualisiert werden, erweisen sich als nützlich als gemeinsame Anzeige im Vorfeld eines Termins oder während eines Teamsprints.

Abbildung 5: Über die Verfolgung manueller Trainingsmodelle hinausgehen.Quelle: Databricks

Ohne das Verfolgen und Messen von Läufen und Ergebnissen kann das Modellieren und Experimentieren mit maschinellem Lernen unübersichtlich und fehleranfällig werden, insbesondere wenn die Ergebnisse manuell in Tabellenkalkulationen, auf Papier oder manchmal überhaupt nicht verfolgt werden. Mit den MLflow-Verfolgungs- und Such-APIs lässt sich leicht nach vergangenen Trainingsläufen suchen und Dashboards erstellen, die das Team produktiver machen und einen visuellen Fortschritt der Metriken der Modelle bieten.

Bharath Gowda ist VP of Product Marketing bei Databricks.

Databricks