Werken met modellen in Azure Machine Learning

VAN TOEPASSING OP:Azure CLI ml-extensie v2 (huidig)Python SDK azure-ai-ml v2 (huidig)

Met Azure Machine Learning kunt u met verschillende typen modellen werken. In dit artikel leert u hoe u Azure Machine Learning kunt gebruiken om te werken met verschillende modeltypen, zoals aangepast, MLflow en Triton. U leert ook hoe u een model vanaf verschillende locaties registreert en hoe u de Azure Machine Learning SDK, de gebruikersinterface (UI) en de Azure Machine Learning CLI gebruikt om uw modellen te beheren.

Tip

Als u modelassets hebt gemaakt die gebruikmaken van de SDK/CLI v1, kunt u deze nog steeds gebruiken met SDK/CLI v2. Volledige achterwaartse compatibiliteit wordt geboden. Aan alle modellen die zijn geregistreerd bij de V1 SDK, wordt het type customtoegewezen.

Vereisten

Daarnaast moet u het volgende doen:

Ondersteunde paden

Wanneer u een model opgeeft dat u wilt registreren, moet u een path parameter opgeven die verwijst naar de locatie van de gegevens of taak. Hieronder ziet u een tabel met de verschillende gegevenslocaties die worden ondersteund in Azure Machine Learning en voorbeelden voor de path parameter:

Locatie Voorbeelden
Een pad op uw lokale computer mlflow-model/model.pkl
Een pad in een Azure Machine Learning-gegevensarchief azureml://datastores/<datastore-name>/paths/<path_on_datastore>
Een pad van een Azure Machine Learning-taak azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
Een pad van een MLflow-taak runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Een pad van een modelasset in Azure Machine Learning-werkruimte azureml:<model-name>:<version>
Een pad van een modelasset in Azure Machine Learning Registry azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Ondersteunde modi

Wanneer u een taak uitvoert met modelinvoer/-uitvoer, kunt u de modus opgeven, bijvoorbeeld of u wilt dat het model alleen-lezen wordt gekoppeld of gedownload naar het rekendoel. In de onderstaande tabel ziet u de mogelijke modi voor verschillende combinaties van type/modus/invoer/uitvoer:

Type Invoer/uitvoer upload download ro_mount rw_mount direct
custom Bestand Invoer
custom Map Invoer
mlflow Invoer
custom Bestand Uitvoer
custom Map Uitvoer
mlflow Uitvoer

Meegaan in Jupyter Notebooks

U kunt dit voorbeeld volgen in een Jupyter Notebook. Open in de opslagplaats azureml-examples het notebook: model.ipynb.

Een model maken in het modelregister

Met modelregistratie kunt u uw modellen opslaan en versien in de Azure-cloud, in uw werkruimte. Het modelregister helpt u bij het organiseren en bijhouden van uw getrainde modellen.

De codefragmenten in deze sectie hebben betrekking op het volgende:

  • Registreer uw model als een asset in Machine Learning met behulp van de CLI.
  • Registreer uw model als een asset in Machine Learning met behulp van de SDK.
  • Registreer uw model als een asset in Machine Learning met behulp van de gebruikersinterface.

Deze fragmenten gebruiken custom en mlflow.

  • custom is een type dat verwijst naar een modelbestand of -map die is getraind met een aangepaste standaard die momenteel niet wordt ondersteund door Azure Machine Learning.
  • mlflow is een type dat verwijst naar een model dat is getraind met mlflow. Door MLflow getrainde modellen bevinden zich in een map die het MLmodel-bestand , het modelbestand , het conda-afhankelijkhedenbestand en het requirements.txt-bestand bevat.

Verbinding maken met uw werkruimte

Eerst gaan we verbinding maken met de Azure Machine Learning-werkruimte waaraan we gaan werken.

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Uw model registreren als een asset in Machine Learning met behulp van de CLI

Gebruik de volgende tabbladen om te selecteren waar uw model zich bevindt.

$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

Zie het YAML-model voor een volledig voorbeeld.

Uw model registreren als asset in Machine Learning met behulp van de SDK

Gebruik de volgende tabbladen om te selecteren waar uw model zich bevindt.

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)

Uw model registreren als een asset in Machine Learning met behulp van de gebruikersinterface

Als u een model wilt maken in Machine Learning, opent u vanuit de gebruikersinterface de pagina Modellen . Selecteer Model registreren en selecteer waar uw model zich bevindt. Vul de vereiste velden in en selecteer vervolgens Registreren.

Schermopname van de gebruikersinterface om een model te registreren.


Modellen beheren

Met de SDK en CLI (v2) kunt u ook de levenscyclus van uw Azure Machine Learning-modelassets beheren.

Lijst

Alle modellen in uw werkruimte weergeven:

az ml model list

Alle modelversies onder een bepaalde naam weergeven:

az ml model list --name run-model-example

Weergeven

De details van een specifiek model ophalen:

az ml model show --name run-model-example --version 1

Bijwerken

Veranderlijke eigenschappen van een specifiek model bijwerken:

az ml model update --name  run-model-example --version 1 --set description="This is an updated description." --set tags.stage="Prod"

Belangrijk

Alleen voor het model description en tags kunnen worden bijgewerkt. Alle andere eigenschappen zijn onveranderbaar; Als u een van deze eigenschappen wilt wijzigen, moet u een nieuwe versie van het model maken.

Archiveren

Als u een model archivert, wordt het standaard verborgen voor lijstquery's (az ml model list). U kunt nog steeds verwijzen naar een gearchiveerd model en deze blijven gebruiken in uw werkstromen. U kunt alle versies van een model of alleen een specifieke versie archiveren.

Als u geen versie opgeeft, worden alle versies van het model onder die naam gearchiveerd. Als u een nieuwe modelversie maakt onder een gearchiveerde modelcontainer, wordt die nieuwe versie ook automatisch ingesteld als gearchiveerd.

Alle versies van een model archiveren:

az ml model archive --name run-model-example

Een specifieke modelversie archiveren:

az ml model archive --name run-model-example --version 1

Model gebruiken voor training

Met de SDK en CLI (v2) kunt u ook een model in een trainingstaak gebruiken als invoer of uitvoer.

Model gebruiken als invoer in een taak

Maak een YAML-bestand met taakspecificaties (<file-name>.yml). Geef in de inputs sectie van de taak het volgende op:

  1. De type; of het model een mlflow_modelis ofcustom_modeltriton_model.
  2. De path van waar uw gegevens zich bevinden; kan een van de paden zijn die worden beschreven in de sectie Ondersteunde paden .
$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

Voer vervolgens uit in de CLI

az ml job create -f <file-name>.yml

Zie de GitHub-opslagplaats van het model voor een volledig voorbeeld.

Model gebruiken als uitvoer in een taak

In uw taak kunt u model schrijven naar uw cloudopslag met behulp van uitvoer.

Maak een YAML-bestand voor taakspecificatie (<file-name>.yml), waarbij de outputs sectie is gevuld met het type en pad waarnaar u uw gegevens wilt schrijven:

$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

Maak vervolgens een taak met behulp van de CLI:

az ml job create --file <file-name>.yml

Zie de GitHub-opslagplaats van het model voor een volledig voorbeeld.

Volgende stappen