Bereitstellen eines MLflow-Modells an einem Batchendpunkt

Abgeschlossen

Eine einfache Möglichkeit zum Bereitstellen eines Modells für einen Batchendpunkt stellt die Verwendung eines MLflow-Modells dar. Azure Machine Learning generiert automatisch das Bewertungsskript und die Umgebung für MLflow-Modelle.

Um ein MLflow-Modell bereitzustellen, müssen Sie einen Endpunkt erstellt haben. Anschließend können Sie das Modell auf dem Endpunkt bereitstellen.

Registrieren eines MLflow-Modells

Damit Sie weder ein Bewertungsskript noch eine Bewertungsumgebung benötigen, muss das MLflow-Modell im Azure Machine Learning-Arbeitsbereich registriert werden, bevor Sie es an einem Batchendpunkt bereitstellen können.

Um ein MLflow-Modell zu registrieren, verwenden Sie die Model-Klasse und geben dabei als Modelltyp MLFLOW_MODEL an. Um das Modell beim Python SDK zu registrieren, können Sie den folgenden Code verwenden:

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

model_name = 'mlflow-model'
model = ml_client.models.create_or_update(
    Model(name=model_name, path='./model', type=AssetTypes.MLFLOW_MODEL)
)

In diesem Beispiel verwenden wir die Modelldateien aus einem lokalen Pfad. Die Dateien werden alle in einem lokalen Ordner namens model gespeichert. Der Ordner muss die MLmodel-Datei enthalten, die beschreibt, wie das Modell geladen und verwendet werden kann.

Tipp

Hier erfahren Sie mehr über das MLmodel-Format.

Bereitstellen eines MLflow-Modells auf einem Endpunkt

Um ein MLflow-Modell an einem Batchendpunkt bereitzustellen, verwenden Sie die BatchDeployment-Klasse.

Wenn Sie ein Modell bereitstellen, müssen Sie angeben, wie sich der Batchbewertungsauftrag verhalten soll. Der Vorteil der Verwendung eines Computeclusters zum Ausführen des Bewertungsskripts (das automatisch von Azure Machine Learning generiert wird) besteht darin, dass Sie das Bewertungsskript parallel auf separaten Instanzen ausführen können.

Beim Konfigurieren der Modellimplementierung können Sie Folgendes angeben:

  • instance_count: Anzahl der Serverknoten, die zum Generieren von Vorhersagen verwendet werden sollen
  • max_concurrency_per_instance: maximale Anzahl paralleler Bewertungsskriptausführungen pro Serverknoten
  • mini_batch_size: Anzahl der pro Bewertungsskriptausführung übergebenen Dateien
  • output_action: Weiterverarbeitung der Vorhersagen: summary_only oder append_row
  • output_file_name: Datei, an die Vorhersagen angefügt werden, wenn Sie für output_action die Option append_row auswählen

Tipp

Lesen Sie die Referenzdokumentation zum Erstellen einer Batchbereitstellung mit dem Python-SDK v2.

Um ein MLflow-Modell an einem Batchendpunkt bereitzustellen, können Sie den folgenden Code verwenden:

from azure.ai.ml.entities import BatchDeployment, BatchRetrySettings
from azure.ai.ml.constants import BatchDeploymentOutputAction

deployment = BatchDeployment(
    name="forecast-mlflow",
    description="A sales forecaster",
    endpoint_name=endpoint.name,
    model=model,
    compute="aml-cluster",
    instance_count=2,
    max_concurrency_per_instance=2,
    mini_batch_size=2,
    output_action=BatchDeploymentOutputAction.APPEND_ROW,
    output_file_name="predictions.csv",
    retry_settings=BatchRetrySettings(max_retries=3, timeout=300),
    logging_level="info",
)
ml_client.batch_deployments.begin_create_or_update(deployment)