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
- En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar. Prova den kostnadsfria eller betalda versionen av Azure Machine Learning.
- En Azure Machine Learning-arbetsyta.
- Azure Machine Learning SDK v2 för Python.
- Azure Machine Learning CLI v2.
Dessutom måste du:
- Installera Azure CLI och ml-tillägget till Azure CLI. Mer information finns i Installera, konfigurera och använda CLI (v2).
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.ipynb på lagringsplatsen 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.
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:
- ;
type
oavsett om modellen är enmlflow_model
,custom_model
ellertriton_model
. - 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.