Arbeiten mit Modellen in Azure Machine Learning
GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)
Azure Machine Learning ermöglicht es Ihnen, mit verschiedenen Modelltypen zu arbeiten: In diesem Artikel erfahren Sie, wie Sie Azure Machine Learning mit verschiedenen Modelltypen verwenden, z. B. benutzerdefinierten Typen, MLflow oder Triton. Sie erfahren auch, wie Sie ein Modell von verschiedenen Stellen aus registrieren und wie Sie das Azure Machine Learning SDK, die Benutzeroberfläche und die Azure Machine Learning-CLI verwenden, um Ihre Modelle zu verwalten.
Tipp
Wenn Sie Modellressourcen mit dem SDK bzw. der CLI v1 erstellt haben, können Sie diese auch mit dem SDK bzw. der CLI v2 verwenden. Es besteht vollständige Abwärtskompatibilität. Allen mit dem SDK v1 registrierten Modellen ist der Typ custom
zugewiesen.
Voraussetzungen
- Ein Azure-Abonnement. Wenn Sie nicht über ein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen. Probieren Sie die kostenlose oder kostenpflichtige Version von Azure Machine Learning aus.
- Ein Azure Machine Learning-Arbeitsbereich.
- Das Azure Machine Learning SDK v2 für Python.
- Die Azure Machine Learning-CLI v2.
Darüber hinaus müssen Sie Folgendes durchführen:
- Installieren Sie die Azure CLI und die ml-Erweiterung für die Azure CLI. Weitere Informationen finden Sie unter Installieren, Einrichten und Verwenden der CLI (v2).
Unterstützte Pfade
Wenn Sie ein Modell zur Verfügung stellen, das Sie registrieren möchten, müssen Sie einen path
-Parameter angeben, der auf den Speicherort der Daten oder des Auftrags verweist. Nachfolgend sehen Sie eine Tabelle, in der die verschiedenen in Azure Machine Learning unterstützten Datenspeicherorte und Beispiele für den Parameter path
gezeigt werden:
Standort | Beispiele |
---|---|
Ein Pfad auf Ihrem lokalen Computer | mlflow-model/model.pkl |
Pfad in einem Azure Machine Learning-Datenspeicher | azureml://datastores/<datastore-name>/paths/<path_on_datastore> |
Pfad aus einem Azure Machine Learning-Auftrag | azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location> |
Ein Pfad von einem MLflow-Auftrag | runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location> |
Pfad aus einer Modellressource im Azure Machine Learning-Arbeitsbereich | azureml:<model-name>:<version> |
Pfad aus einer Modellressource in der Azure Machine Learning-Registrierung | azureml://registries/<registry-name>/models/<model-name>/versions/<version> |
Unterstützte Modi
Wenn Sie einen Auftrag mit Modelleingaben/-ausgaben ausführen, können Sie den Modus angeben – etwa, ob das Modell schreibgeschützt bereitgestellt oder auf das Computeziel heruntergeladen werden soll. In der folgenden Tabelle sind die möglichen Modi für verschiedene Kombinationen aus Typ/Modus/Eingabe/Ausgabe aufgeführt:
type | Eingabe/Ausgabe | upload |
download |
ro_mount |
rw_mount |
direct |
---|---|---|---|---|---|---|
custom -Datei |
Eingabe | |||||
custom " |
Eingabe | ✓ | ✓ | ✓ | ||
mlflow |
Eingabe | ✓ | ✓ | |||
custom -Datei |
Ausgabe | ✓ | ✓ | ✓ | ||
custom " |
Ausgabe | ✓ | ✓ | ✓ | ||
mlflow |
Ausgabe | ✓ | ✓ | ✓ |
Folgen in Jupyter Notebooks
Sie können diesem Beispiel in einem Jupyter Notebook folgen. Öffnen Sie im Repository azureml-examples das Notebook model.ipynb.
Erstellen eines Modells in der Modellregistrierung
Die Modellregistrierung ermöglicht es Ihnen, Ihre Modelle in der Azure-Cloud in Ihrem Arbeitsbereich zu speichern und zu versionieren. Mithilfe der Modellregistrierung können Sie Ihre trainierten Modelle organisieren und nachverfolgen.
Die Codeschnipsel in diesem Abschnitt führen Folgendes aus:
- Registrieren Ihres Modells als Ressource in Machine Learning mithilfe der CLI
- Registrieren Ihres Modells als Ressource in Machine Learning mithilfe des SDK
- Registrieren Ihres Modells als Ressource in Machine Learning mithilfe der Benutzeroberfläche
Diese Codeausschnitte verwenden custom
und mlflow
.
custom
ist ein Typ, der auf eine Modelldatei oder einen Ordner verweist, der mit einem benutzerdefinierten Standard trainiert wurde, der derzeit nicht von Azure Machine Learning unterstützt wird.mlflow
ist ein Typ, der auf ein Modell verweist, das mit mlflow trainiert wurde. Trainierte MLflow-Modelle befinden sich in einem Ordner, der die MLmodel-Datei, die Datei mit dem Modell, die Datei mit Conda-Abhängigkeiten und die Datei requirements.txt enthält.
Herstellen einer Verbindung mit Ihrem Arbeitsbereich
Zunächst stellen wir eine Verbindung mit dem Azure Machine Learning-Arbeitsbereich her, an dem wir arbeiten werden.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Registrieren Ihres Modells als Ressource in Machine Learning mithilfe der CLI
Auf den folgenden Registerkarten können Sie auswählen, wo sich Ihr Modell befindet.
$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
name: local-file-example
path: mlflow-model/model.pkl
description: Model created from local file.
az ml model create -f <file-name>.yml
Ein vollständiges Beispiel finden Sie im YAML-Code des Modells.
Registrieren Ihres Modells als Ressource in Machine Learning mithilfe des SDK
Auf den folgenden Registerkarten können Sie auswählen, wo sich Ihr Modell befindet.
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
file_model = Model(
path="mlflow-model/model.pkl",
type=AssetTypes.CUSTOM_MODEL,
name="local-file-example",
description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)
Registrieren Ihres Modells als Ressource in Machine Learning mithilfe der Benutzeroberfläche
Um auf der Benutzeroberfläche ein Modell in Machine Learning zu erstellen, öffnen Sie die Seite Modelle. Wählen Sie Modell registrieren und dann den Speicherort aus, an dem sich Ihr Modell befindet. Füllen Sie die erforderlichen Felder aus und wählen Sie dann Registrieren aus.
Verwalten von Modellen
Mit dem SDK und der CLI (v2) können Sie auch den Lebenszyklus der Objekte Ihrer Azure Machine Learning-Modellressourcen verwalten.
List
Auflisten aller Modelle in Ihrem Arbeitsbereich:
az ml model list
Auflisten aller Modellversionen unter einem bestimmten Namen:
az ml model list --name run-model-example
Anzeigen
Abrufen von Details zu einem bestimmten Modell:
az ml model show --name run-model-example --version 1
Aktualisieren
Aktualisieren änderbarer Eigenschaften eines bestimmten Modells:
az ml model update --name run-model-example --version 1 --set description="This is an updated description." --set tags.stage="Prod"
Wichtig
Bei Modellen können nur description
und tags
aktualisiert werden. Alle anderen Eigenschaften sind unveränderlich. Wenn Sie eine dieser Eigenschaften ändern möchten, müssen Sie eine neue Version des Modells erstellen.
Archivieren
Wenn Sie ein Modell archivieren, wird es standardmäßig in Listenabfragen (az ml model list
) ausgeblendet. Sie können weiterhin auf ein archiviertes Modell in Ihren Workflows verweisen und dieses verwenden. Sie können entweder alle Versionen eines Modells archivieren oder nur eine bestimmte Version.
Wenn Sie keine Version angeben, werden alle Versionen des Modells unter dem angegebenen Namen archiviert. Wenn Sie eine neue Modellversion in einem archivierten Modellcontainer erstellen, wird diese neue Version automatisch auch als archiviert festgelegt.
Archivieren aller Versionen eines Modells:
az ml model archive --name run-model-example
Archivieren einer bestimmten Modellversion:
az ml model archive --name run-model-example --version 1
Verwenden des Modells für das Training
Mit dem SDK und der CLI (v2) können Sie auch ein Modell in einem Trainingsauftrag als Eingabe oder Ausgabe verwenden.
Verwenden des Modells als Eingabe in einem Auftrag
Erstellen Sie eine YAML-Datei mit Auftragsspezifikationen (<file-name>.yml
). Geben Sie im Abschnitt inputs
des Auftrags Folgendes an:
- Der
type
gibt an, ob ein Modell einmlflow_model
,custom_model
odertriton_model
ist. path
zum Speicherort Ihrer Daten. Es kann einer der im Abschnitt Unterstützte Pfade aufgeführten Pfade verwendet werden.
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
# Possible Paths for models:
# AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore>
# MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
# Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
# Model Asset: azureml:<my_model>:<version>
command: |
ls ${{inputs.my_model}}
inputs:
my_model:
type: mlflow_model # List of all model types here: https://learn.microsoft.com/azure/machine-learning/reference-yaml-model#yaml-syntax
path: ../../assets/model/mlflow-model
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
Führen Sie als Nächstes in der CLI Folgendes aus:
az ml job create -f <file-name>.yml
Ein vollständiges Beispiel finden Sie im Modellrepository auf GitHub.
Verwenden des Modells als Ausgabe in einem Auftrag
In Ihrem Auftrag können Sie Modelle mithilfe von Ausgaben in Ihren cloudbasierten Speicher schreiben.
Erstellen Sie eine YAML-Datei mit Auftragsspezifikationen (<file-name>.yml
). Füllen Sie dabei den Abschnitt outputs
mit dem Typ und dem Pfad auf, in den Sie Ihre Daten schreiben möchten:
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
# Possible Paths for Model:
# Local path: mlflow-model/model.pkl
# AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore>
# MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
# Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
# Model Asset: azureml:<my_model>:<version>
code: src
command: >-
python hello-model-as-output.py
--input_model ${{inputs.input_model}}
--custom_model_output ${{outputs.output_folder}}
inputs:
input_model:
type: mlflow_model # mlflow_model,custom_model, triton_model
path: ../../assets/model/mlflow-model
outputs:
output_folder:
type: custom_model # mlflow_model,custom_model, triton_model
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
Erstellen Sie als Nächstes einen Auftrag mit der CLI:
az ml job create --file <file-name>.yml
Ein vollständiges Beispiel finden Sie im Modellrepository auf GitHub.