Arbeta med modeller i Azure Machine Learning

GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

Med Azure Machine Learning kan du arbeta med olika typer av modeller. I den här artikeln får du lära dig mer om hur du använder Azure Machine Learning för att arbeta med olika modelltyper, till exempel anpassade, MLflow och Triton. Du lär dig också hur du registrerar en modell från olika platser och hur du använder Azure Machine Learning SDK, användargränssnittet (UI) och Azure Machine Learning CLI för att hantera dina modeller.

Tips

Om du har skapat modelltillgångar som använder SDK/CLI v1 kan du fortfarande använda dem med SDK/CLI v2. Fullständig bakåtkompatibilitet tillhandahålls. Alla modeller som registrerats med V1 SDK tilldelas typen custom.

Förutsättningar

Dessutom måste du:

Sökvägar som stöds

När du anger en modell som du vill registrera måste du ange en path parameter som pekar på data eller jobbplats. Nedan visas en tabell som visar de olika dataplatser som stöds i Azure Machine Learning och exempel för parametern path :

Location Exempel
En sökväg på den lokala datorn mlflow-model/model.pkl
En sökväg i ett Azure Machine Learning-datalager azureml://datastores/<datastore-name>/paths/<path_on_datastore>
En sökväg från ett Azure Machine Learning-jobb azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
En sökväg från ett MLflow-jobb runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
En sökväg från en modelltillgång i Azure Machine Learning-arbetsytan azureml:<model-name>:<version>
En sökväg från en modelltillgång i Azure Machine Learning Registry azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Lägen som stöds

När du kör ett jobb med modellindata/utdata kan du ange läget , till exempel om du vill att modellen ska vara skrivskyddad monterad eller laddas ned till beräkningsmålet. Tabellen nedan visar möjliga lägen för olika kombinationer av typ/läge/indata/utdata:

Typ Indata/utdata upload download ro_mount rw_mount direct
custom Filen Indata
custom Mappen Indata
mlflow Indata
custom Filen Utdata
custom Mappen Utdata
mlflow Utdata

Följ med i Jupyter Notebooks

Du kan följa det här exemplet i en Jupyter Notebook. Öppna notebook-filen: model.ipynblagringsplatsen azureml-examples.

Skapa en modell i modellregistret

Med modellregistrering kan du lagra och versionshantera dina modeller i Azure-molnet på din arbetsyta. Modellregistret hjälper dig att organisera och hålla reda på dina tränade modeller.

Kodfragmenten i det här avsnittet beskriver hur du:

  • Registrera din modell som en tillgång i Machine Learning med hjälp av CLI.
  • Registrera din modell som en tillgång i Machine Learning med hjälp av SDK:t.
  • Registrera din modell som en tillgång i Machine Learning med hjälp av användargränssnittet.

Dessa kodfragment använder custom och mlflow.

  • custom är en typ som refererar till en modellfil eller mapp som tränats med en anpassad standard som för närvarande inte stöds av Azure Machine Learning.
  • mlflow är en typ som refererar till en modell som tränats med mlflow. MLflow-tränade modeller finns i en mapp som innehåller MLmodel-filen , modellfilen , conda-beroendefilen och filenrequirements.txt .

Anslut till arbetsytan

Först ska vi ansluta till Azure Machine Learning-arbetsytan där vi ska arbeta med.

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

Registrera din modell som en tillgång i Machine Learning med hjälp av CLI

Använd följande flikar för att välja var din modell finns.

$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

Ett fullständigt exempel finns i modellen YAML.

Registrera din modell som en tillgång i Machine Learning med hjälp av SDK

Använd följande flikar för att välja var din modell finns.

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)

Registrera din modell som en tillgång i Machine Learning med hjälp av användargränssnittet

Om du vill skapa en modell i Machine Learning öppnar du sidan Modeller från användargränssnittet. Välj Registrera modell och välj var din modell finns. Fyll i de obligatoriska fälten och välj sedan Registrera.

Skärmbild av användargränssnittet för att registrera en modell.


Hantera modeller

Med SDK och CLI (v2) kan du också hantera livscykeln för dina Azure Machine Learning-modelltillgångar.

Lista

Visa en lista över alla modeller på din arbetsyta:

az ml model list

Visa en lista över alla modellversioner under ett givet namn:

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

Visa

Hämta information om en specifik modell:

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

Uppdatera

Uppdatera föränderliga egenskaper för en specifik modell:

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

Viktigt

Endast för modell description och tags kan uppdateras. Alla andra egenskaper är oföränderliga. om du behöver ändra någon av dessa egenskaper bör du skapa en ny version av modellen.

Arkiv

Om du arkiverar en modell döljs den som standard från listfrågor (az ml model list). Du kan fortfarande fortsätta att referera till och använda en arkiverad modell i dina arbetsflöden. Du kan arkivera antingen alla versioner av en modell eller bara en viss version.

Om du inte anger någon version arkiveras alla versioner av modellen under det angivna namnet. Om du skapar en ny modellversion under en container för arkiverad modell anges även den nya versionen automatiskt som arkiverad.

Arkivera alla versioner av en modell:

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

Arkivera en specifik modellversion:

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

Använd modell för träning

Med SDK och CLI (v2) kan du också använda en modell i ett träningsjobb som indata eller utdata.

Använda modellen som indata i ett jobb

Skapa en YAML-fil för jobbspecifikation (<file-name>.yml). Ange i avsnittet inputs för jobbet:

  1. ; typeoavsett om modellen är en mlflow_model,custom_model eller triton_model.
  2. Den path plats där dina data finns, kan vara någon av sökvägarna som beskrivs i avsnittet Sökvägar som stöds .
$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

Kör sedan i CLI

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

Ett fullständigt exempel finns i github-modellens lagringsplats.

Använda modellen som utdata i ett jobb

I ditt jobb kan du skriva modellen till din molnbaserade lagring med hjälp av utdata.

Skapa en YAML-fil för jobbspecifikation (<file-name>.yml), med avsnittet outputs fyllt med den typ och sökväg där du vill skriva dina data till:

$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

Skapa sedan ett jobb med hjälp av CLI:

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

Ett fullständigt exempel finns i github-modellens lagringsplats.

Nästa steg