Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GILT FÜR
Azure CLI-ML-Erweiterung v2 (aktuell)
In diesem Artikel erfahren Sie mehr über die Bereitstellung von MLflow-Modellen für Azure Machine Learning sowohl in Echtzeit als auch in Batchableitung und über verschiedene Tools, mit denen Sie die Bereitstellungen verwalten können.
No-Code-Bereitstellung
Wenn Sie MLflow-Modelle in Azure Machine Learning bereitstellen, müssen Sie im Gegensatz zur benutzerdefinierten Modellbereitstellung kein Bewertungsskript oder eine Umgebung bereitstellen. Azure Machine Learning generiert automatisch das Bewertungsskript und die Umgebung. Diese Funktion wird als No-Code-Bereitstellung bezeichnet.
Bei einer Bereitstellung ohne Code übernimmt Azure Machine Learning diese Aufgaben:
- Es stellt sicher, dass alle im MLflow-Modell angegebenen Paketabhängigkeiten erfüllt sind.
- Es stellt ein MLflow-Basisimage/eine zusammengestellte Umgebung bereit, das/die folgende Elemente enthält:
- Pakete, die für Azure Machine Learning zum Ermöglichen von Rückschlüssen erforderlich sind, einschließlich
mlflow-skinny. - Ein Bewertungsskript zum Durchführen eines Rückschlusses.
- Pakete, die für Azure Machine Learning zum Ermöglichen von Rückschlüssen erforderlich sind, einschließlich
Pakete und Abhängigkeiten
Azure Machine Learning generiert automatisch Umgebungen zum Ermöglichen von Rückschlüssen auf MLflow-Modelle. Um die Umgebungen zu erstellen, liest Azure Machine Learning die Conda-Abhängigkeiten, die im MLflow-Modell angegeben sind, und fügt alle Pakete hinzu, die zum Ausführen des ableitenden Servers erforderlich sind. Diese zusätzlichen Pakete variieren je nach Bereitstellungstyp.
Die folgende Beispieldatei "conda.yaml " zeigt Conda-Abhängigkeiten an, die in einem MLflow-Modell angegeben sind.
channels:
- conda-forge
dependencies:
- python=3.12.3
- pip<=23.1.2
- pip:
- mlflow
- scikit-learn==1.6.1
- psutil==5.9.4
- azureml-ai-monitoring
- azureml-inference-server-http
name: mlflow-env
Important
MLflow erkennt automatisch Pakete, wenn es ein Modell protokolliert, und pinnt die Paketversionen in den Conda-Abhängigkeiten des Modells. Diese automatische Paketerkennung spiegelt möglicherweise nicht Ihre Absichten oder Anforderungen wider. Alternativ können Sie Modelle protokollieren, die eine benutzerdefinierte Signatur, Umgebung oder Beispiele verwenden.
Modelle, die Signaturen enthalten
MLflow-Modelle können eine Signatur enthalten, die die erwarteten Eingaben und deren Typen angibt. Wenn solche Modelle für Online- oder Batchendpunkte bereitgestellt werden, stellt Azure Machine Learning sicher, dass die Anzahl und die Typen der Dateneingaben der Signatur entsprechen. Wenn die Eingabedaten nicht wie erwartet geparst werden können, schlägt der Aufruf des Modells fehl.
Sie können eine MLflow-Modellsignatur überprüfen, indem Sie die MLmodel-Datei öffnen. Weitere Informationen dazu, wie Signaturen in MLflow funktionieren, finden Sie unter Signaturen in MLflow.
In der folgenden MLmodel-Beispieldatei ist signature hervorgehoben.
artifact_path: model
flavors:
python_function:
env:
conda: conda.yaml
virtualenv: python_env.yaml
loader_module: mlflow.sklearn
model_path: model.pkl
predict_fn: predict
python_version: 3.12.3
sklearn:
code: null
pickled_model: model.pkl
serialization_format: cloudpickle
sklearn_version: 1.1.2
mlflow_version: 2.7.1
model_uuid: 3f725f3264314c02808dd99d5e5b2781
run_id: 70f15bab-cf98-48f1-a2ea-9ad2108c28cd
signature:
inputs: '[{"name": "age", "type": "double"}, {"name": "sex", "type": "double"},
{"name": "bmi", "type": "double"}, {"name": "bp", "type": "double"}, {"name":
"s1", "type": "double"}, {"name": "s2", "type": "double"}, {"name": "s3", "type":
"double"}, {"name": "s4", "type": "double"}, {"name": "s5", "type": "double"},
{"name": "s6", "type": "double"}]'
outputs: '[{"type": "double"}]'
Tip
Signaturen in MLflow-Modellen werden empfohlen, da sie eine bequeme Möglichkeit zum Erkennen von Datenkompatibilitätsproblemen bieten. Weitere Informationen zum Protokollieren von Modellen mit Signaturen finden Sie unter Protokollmodelle, die eine benutzerdefinierte Signatur, Umgebung oder Beispiele verwenden.
Bereitstellung auf dem integrierten MLflow-Server im Vergleich zur Bereitstellung auf dem Azure Machine Learning-Rückschlussserver
Modellentwickler können integrierte MLflow-Bereitstellungstools verwenden, um Modelle lokal zu testen. Sie können z. B. eine lokale Instanz eines Modells ausführen, das in der MLflow-Serverregistrierung registriert ist, indem Sie mlflow models serve oder die MLflow CLI mlflow models predict verwenden. Weitere Informationen zu integrierten MLflow-Bereitstellungstools finden Sie in der MLflow-Dokumentation unter integrierten Bereitstellungstools.
Azure Machine Learning unterstützt zudem die Modellbereitstellung sowohl für Online- als auch für Batchendpunkte. Diese Endpunkte führen unterschiedliche Rückschlusstechnologien aus, die unterschiedliche Features aufweisen können.
Azure Machine Learning-Onlineendpunkte ähneln dem integrierten MLflow-Server und bieten eine skalierbare, synchrone und einfache Möglichkeit, Modelle für Rückschlüsse auszuführen.
Azure Machine Learning-Batchendpunkte können asynchrone Rückschlüsse bei zeitintensiven Rückschlussprozessen ausführen, die auf große Datenmengen skaliert werden können. Dem MLflow-Server fehlt diese Funktion, obwohl Sie eine ähnliche Leistung mithilfe von Spark-Aufträgen erreichen können. Weitere Informationen zu Batchendpunkten und MLflow-Modellen finden Sie unter Verwenden von MLflow-Modellen in Batchbereitstellungen.
Eingabeformate
In der folgenden Tabelle sind die Eingabetypen aufgeführt, die vom integrierten MLflow-Server und von Azure Machine Learning-Onlineendpunkten unterstützt werden.
| Eingabetyp | Integrierter MLflow-Server | Azure Machine Learning-Onlineendpunkt |
|---|---|---|
| JSON-serialisierte Pandas-Dataframes in der geteilten Ausrichtung | ✓ | ✓ |
| JSON-serialisierte Pandas-Dataframes in der Datensatzausrichtung | Deprecated | |
| CSV-serialisierte Pandas-Dataframes | ✓ | Verwenden Sie Batch-Inferenz. Weitere Informationen finden Sie unter Bereitstellen von MLflow-Modellen in Batch-Endpunkten. |
| TensorFlow-Eingabe als JSON-serialisierte Listen (Tensors) und Wörterbuch von Listen (benannte Tensoren) | ✓ | ✓ |
| TensorFlow-Eingabe mit der TensorFlow-Bereitstellungs-API | ✓ |
Die folgenden Abschnitte konzentrieren sich auf MLflow-Modelle, die für Azure Machine Learning-Onlineendpunkte bereitgestellt werden.
Eingabestruktur
Unabhängig vom Eingabetyp erfordert Azure Machine Learning, dass Eingaben in einer JSON-Nutzlast im Wörterbuchschlüssel input_data bereitgestellt werden. Dieser Schlüssel ist bei Verwendung des Befehls mlflow models serve zum Bereitstellen von Modellen nicht erforderlich. Daher können Nutzlasten nicht austauschbar für Azure Machine Learning-Onlineendpunkte und den integrierten MLflow-Server verwendet werden.
Important
Die Nutzlaststruktur wurde in MLflow 2.0 geändert.
Die folgenden Nutzlastbeispiele zeigen die Unterschiede zwischen einem Modell, das auf dem integrierten MLflow-Server bereitgestellt wird, und dem Azure Machine Learning-Rückschlussserver.
JSON-serialisierter Pandas-DataFrame in der geteilten Ausrichtung
{
"input_data": {
"columns": [
"age", "sex", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
],
"index": [1],
"data": [
[1, 1, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
]
}
}
Tensoreingabe
{
"input_data": [
[1, 1, 0, 233, 1, 2, 150, 0, 2.3, 3, 0, 2],
[1, 1, 0, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
[1, 1, 0, 233, 1, 2, 150, 0, 2.3, 3, 0, 2],
[1, 1, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
]
}
Eingabe mit benannten Tensoren
{
"input_data": {
"tokens": [
[0, 655, 85, 5, 23, 84, 23, 52, 856, 5, 23, 1]
],
"mask": [
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]
]
}
}
Rückschlussanpassung für MLflow-Modelle
Scoring-Skripte passen die Ausführung der Inferenzen für benutzerdefinierte Modelle an. Bei der Bereitstellung des MLflow-Modells wird jedoch die Entscheidung über die Ausführung der Ableitung durch den Modell-Generator und nicht durch den Bereitstellungstechniker getroffen. Jedes Modellframework kann automatisch bestimmte Rückschlussroutinen anwenden.
Wenn Sie die Ausführung der Ableitung für ein MLflow-Modell ändern müssen, können Sie eine der folgenden Aktionen ausführen:
- Ändern Sie, wie Ihr Modell in der Trainingsroutine protokolliert wird.
- Passen Sie den Rückschluss mit einem Bewertungsskript zur Bereitstellungszeit an.
Ändern Sie, wie Ihr Modell während des Trainings protokolliert wird.
Wenn Sie ein Modell mithilfe von mlflow.autolog oder mlflow.<flavor>.log_model protokollieren, bestimmt das für das Modell verwendete Format, wie die Inferenz durchgeführt wird und welche Ergebnisse zurückgegeben werden. MLflow erzwingt kein bestimmtes Verhalten hinsichtlich der Art und Weise, wie die predict()-Funktion Ergebnisse generiert.
In einigen Fällen sollten Sie vor und nach dem Ausführen des Modells einige Vorverarbeitungen oder Postverarbeitungen durchführen. Oder Sie können ändern, was zurückgegeben wird, z. B. Wahrscheinlichkeiten anstelle von Klassen. Eine Lösung besteht darin, Machine Learning-Pipelines zu implementieren, die direkt von Eingaben zu Ausgaben wechseln.
Beispielsweise sind sklearn.pipeline.Pipeline oder pyspark.ml.Pipeline beliebte Methoden zum Implementieren von Pipelines und werden manchmal empfohlen, um die Leistung zu verbessern. Sie können auch anpassen, wie Ihr Modell Rückschlüsse ausführt, indem Sie benutzerdefinierte Modelle protokollieren.
Anpassen der Ableitung mithilfe eines Bewertungsskripts
Obwohl MLflow-Modelle kein Bewertungsskript benötigen, können Sie bei Bedarf dennoch eines bereitstellen, um die Rückschlussausführung für MLflow-Modell anzupassen. Weitere Informationen zum Anpassen der Rückschlüsse finden Sie unter Anpassen von MLflow-Modellbereitstellungen für Onlineendpunkte und Anpassen der Modellimplementierungen mithilfe eines Bewertungsskripts für Batchendpunkte.
Important
Wenn Sie ein Bewertungsskript für eine MLflow-Modellbereitstellung angeben möchten, müssen Sie auch eine Umgebung für die Bereitstellung bereitstellen.
Bereitstellungstools
Azure Machine Learning bietet die folgenden Tools für die Bereitstellung von MLflow-Modellen auf Online- und Batchendpunkten:
- MLflow SDK
- Azure Machine Learning CLI v2
- Azure Machine Learning SDK für Python
- Azure Machine Learning Studio
Jedes Tool verfügt über unterschiedliche Funktionen, insbesondere in Bezug auf den Computetyp, der als Ziel verwendet werden kann. In der folgenden Tabelle wird die Unterstützung für verschiedene MLflow-Bereitstellungsszenarien gezeigt.
| Scenario | MLflow SDK | Azure Machine Learning CLI/SDK oder Studio |
|---|---|---|
| Stellen Sie verwaltete Onlineendpunkte bereit. 1 | Supported. Siehe progressives Rollout von MLflow-Modellen für Onlineendpunkte. | Supported. Siehe Bereitstellen von MLflow-Modellen für Onlineendpunkte. |
| Bereitstellen in verwalteten Onlineendpunkten mit einem Bewertungsskript | Nicht unterstützt. 3 | Supported. Siehe Anpassen von MLflow-Modellbereitstellungen. |
| Bereitstellen in Batchendpunkten | Nicht unterstützt. 3 | Supported. Siehe Verwenden von MLflow-Modellen in Batchbereitstellungen. |
| Bereitstellen in Batchendpunkten mit einem Bewertungsskript | Nicht unterstützt. 3 | Supported. Siehe Anpassen der Modellbereitstellung mit Bewertungsskript. |
| Bereitstellen in Webdiensten wie Azure Container Instances oder Azure Kubernetes Service (AKS) | Legacyunterstützung.2 | Nicht unterstützt.2 |
| Bereitstellen in Webdiensten wie Container Instances oder AKS mit einem Bewertungsskript | Nicht unterstützt. 3 | Legacyunterstützung.2 |
1 Wechseln Sie nach Möglichkeit zu verwalteten Onlineendpunkten.
2 Open-Source-MLflow unterstützt keine Bewertungsskripts oder Batchausführung.
Auswählen eines Bereitstellungstools
Verwenden Sie das MLflow SDK, wenn beides zutrifft:
- Sie sind mit MLflow vertraut und möchten weiterhin dieselben Methoden verwenden.
- Sie verwenden eine Plattform wie Azure Databricks, die MLflow nativ unterstützt.
Verwenden Sie die Azure Machine Learning CLI v2 oder DAS SDK für Python, wenn einer der folgenden Bedingungen zutrifft:
- Sie sind mit dem Tool vertraut.
- Sie möchten die Bereitstellung mithilfe von Pipelines automatisieren.
- Sie möchten die Bereitstellungskonfiguration in einem Git-Repository speichern.
Verwenden Sie die Benutzeroberfläche von Azure Machine Learning Studio, wenn Sie mit MLflow trainierte Modelle schnell bereitstellen und testen möchten.