Registrieren und Bereitstellen von Modellen mit MLflow
Die Modellregistrierung ermöglicht MLflow und Azure Databricks die Nachverfolgung von Modellen, was aus zwei Gründen wichtig ist:
- Die Registrierung eines Modells ermöglicht es Ihnen, das Modell für Echtzeit-, Streaming- oder Batchrückschlüsse zu verwenden. Die Registrierung vereinfacht die Verwendung eines trainierten Modells, da wissenschaftliche Fachkräfte für Daten jetzt keinen Anwendungscode mehr entwickeln müssen. Der Bereitstellungsprozess erstellt diesen Wrapper und macht automatisch eine REST-API oder eine Methode für die Batchbewertung verfügbar.
- Durch die Registrierung eines Modells können Sie im Laufe der Zeit neue Versionen dieses Modells erstellen. So haben Sie die Möglichkeit, Modelländerungen zu verfolgen und sogar Vergleiche zwischen verschiedenen historischen Versionen von Modellen durchzuführen.
Registrieren eines Modells
Wenn Sie ein Experiment zum Trainieren eines Modells durchführen, können Sie das Modell selbst als Teil der Experimentausführung protokollieren, wie hier gezeigt:
with mlflow.start_run():
# code to train model goes here
# log the model itself (and the environment it needs to be used)
unique_model_name = "my_model-" + str(time.time())
mlflow.spark.log_model(spark_model = model,
artifact_path=unique_model_name,
conda_env=mlflow.spark.get_default_conda_env())
Wenn Sie die Experimentausführung überprüfen – einschließlich der protokollierten Metriken, die Auskunft darüber geben, wie gut das Modell Vorhersagen trifft – ist das Modell in den Artefakten der Ausführung enthalten. Anschließend können Sie die Option zum Registrieren des Modells über die Benutzeroberfläche im Experiment-Viewer auswählen.
Wenn Sie das Modell registrieren möchten, ohne die Metriken während der Ausführung zu überprüfen, können Sie alternativ den Parameter registered_model_name in die Methode log_model aufnehmen. Auf diese Weise wird das Modell während der Experimentausführung automatisch registriert.
with mlflow.start_run():
# code to train model goes here
# log the model itself (and the environment it needs to be used)
unique_model_name = "my_model-" + str(time.time())
mlflow.spark.log_model(spark_model=model,
artifact_path=unique_model_name
conda_env=mlflow.spark.get_default_conda_env(),
registered_model_name="my_model")
Sie können mehrere Versionen eines Modells registrieren, um die Leistung der Modellversionen über einen bestimmten Zeitraum zu vergleichen, bevor Sie alle Clientanwendungen auf die Version mit der besten Leistung umstellen.
Verwenden eines Modells für Rückschlüsse
Die Verwendung eines Modells zur Vorhersage von Beschriftungen anhand neuer Featuredaten wird als Rückschluss bezeichnet. Sie können MLflow in Azure Databricks nutzen, um auf folgende Weise auf Modelle für Rückschlüsse zuzugreifen:
- Hosten Sie das Modell als Echtzeitdienst mit einem HTTP-Endpunkt, an den Clientanwendungen REST-Anforderungen richten können.
- Verwenden Sie das Modell, um basierend auf einer Deltatabelle mit Features fortlaufend Streamingrückschlüsse zu ziehen, die in eine Ausgabetabelle geschrieben werden.
- Verwenden Sie das Modell für Batchrückschlüsse basierend auf einer Deltatabelle, und schreiben Sie die Ergebnisse jedes Batchvorgangs in einen bestimmten Ordner.
Sie können ein Modell für Rückschlüsse über die zugehörige Seite im Abschnitt Modelle des Azure Databricks-Portals bereitstellen, wie hier gezeigt: