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

Darüber hinaus müssen Sie Folgendes durchführen:

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.

Screenshot: Benutzeroberfläche zum Registrieren eines Modells


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:

  1. Der type gibt an, ob ein Modell ein mlflow_model, custom_model oder triton_model ist.
  2. 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.

Nächste Schritte