Share via


Werken met geregistreerde modellen in Azure Machine Learning

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

In dit artikel leert u hoe u modellen in Azure Machine Learning kunt registreren en ermee kunt werken met behulp van:

  • De Azure Machine Learning-studio gebruikersinterface.
  • De Azure Machine Learning V2 CLI.
  • De Python Azure Machine Learning V2 SDK.

U leert het volgende:

  • Maak geregistreerde modellen in het modelregister op basis van lokale bestanden, gegevensarchieven of taakuitvoer.
  • Werk met verschillende typen modellen, zoals aangepaste, MLflow en Triton.
  • Modellen gebruiken als invoer of uitvoer in trainingstaken.
  • De levenscyclus van modelassets beheren.

Modelregistratie

Met modelregistratie kunt u uw modellen opslaan en versien in uw werkruimte in de Azure-cloud. Het modelregister helpt u bij het organiseren en bijhouden van uw getrainde modellen. U kunt modellen registreren als assets in Azure Machine Learning met behulp van de Azure CLI, de Python SDK of de gebruikersinterface van Machine Learning Studio.

Ondersteunde paden

Als u een model wilt registreren, moet u een pad opgeven dat verwijst naar de gegevens- of taaklocatie. In de volgende tabel ziet u de verschillende gegevenslocaties die Azure Machine Learning ondersteunt en de syntaxis voor de path parameter:

Locatie Syntaxis
Lokale computer <model-folder>/<model-filename>
Azure Machine Learning-gegevensarchief azureml://datastores/<datastore-name>/paths/<path_on_datastore>
Azure Machine Learning-taak azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
MLflow-taak runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Modelasset in een Machine Learning-werkruimte azureml:<model-name>:<version>
Modelasset in een Machine Learning-register azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Ondersteunde modi

Wanneer u modellen gebruikt voor invoer of uitvoer, kunt u een van de volgende modi opgeven. U kunt bijvoorbeeld opgeven of het model alleen-lezen moet worden gekoppeld of gedownload naar het rekendoel.

  • ro_mount: Koppel de gegevens aan het rekendoel als alleen-lezen.
  • rw_mount: Lees-schrijven koppelt de gegevens.
  • download: Download de gegevens naar het rekendoel.
  • upload: Upload de gegevens van het rekendoel.
  • direct: Geef de URI door als een tekenreeks.

In de volgende tabel ziet u de beschikbare modusopties voor verschillende invoer en uitvoer van het modeltype.

Type upload download ro_mount rw_mount direct
custom bestandsinvoer
custom mapinvoer
mlflow invoer
custom bestandsuitvoer
custom mapuitvoer
mlflow uitvoer

Vereisten

Als u de codevoorbeelden in dit artikel wilt uitvoeren en wilt werken met de Azure Machine Learning V2 CLI of Python Azure Machine Learning V2 SDK, hebt u ook het volgende nodig:

  • Azure CLI versie 2.38.0 of hoger geïnstalleerd.

  • V2 van de ml extensie die is geïnstalleerd door de volgende opdracht uit te voeren. Zie De CLI (v2) installeren, instellen en gebruiken voor meer informatie.

    az extension add -n ml
    

Notitie

V2 biedt volledige compatibiliteit met eerdere versies. U kunt nog steeds modelassets van de v1 SDK of CLI gebruiken. Aan alle modellen die zijn geregistreerd bij de v1 CLI of SDK, wordt het type customtoegewezen.

Een model registreren met behulp van de gebruikersinterface van Studio

Een model registreren met behulp van de gebruikersinterface van Azure Machine Learning-studio:

  1. Selecteer Modellen in de linkernavigatiebalk in uw werkruimte in de studio.

  2. Selecteer Registreren op de pagina Modellijst en selecteer een van de volgende locaties in de vervolgkeuzelijst:

    • Vanuit lokale bestanden
    • Uitvoer van een taak
    • Uit gegevensarchief
    • Vanuit lokale bestanden (op basis van framework)
  3. Op het eerste scherm Model registreren:

    1. Navigeer naar het lokale bestand, het gegevensarchief of de taakuitvoer voor uw model.
    2. Selecteer het type invoermodel: MLflow, Triton of Niet-opgegeven type.
  4. Geef in het scherm Modelinstellingen een naam en andere optionele instellingen op voor uw geregistreerde model en selecteer Volgende.

  5. Controleer de configuratie op het scherm Controleren en selecteer Registreren.

Schermopname van de gebruikersinterface om een model te registreren.

Een model registreren met behulp van de Azure CLI of Python SDK

De volgende codefragmenten hebben betrekking op het registreren van een model als een asset in Azure Machine Learning met behulp van de Azure CLI of Python SDK. Deze codefragmenten gebruiken custom en mlflow modeltypen.

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

Tip

U kunt de Python-versies van de volgende voorbeelden volgen door het notebook model.ipynb uit te voeren in de opslagplaats azureml-examples .

Verbinding maken met uw werkruimte

De werkruimte is de resource op het hoogste niveau voor Azure Machine Learning en biedt een gecentraliseerde werkplek met alle artefacten die u maakt in Azure Machine Learning. In deze sectie maakt u verbinding met uw Azure Machine Learning-werkruimte om het geregistreerde model te maken.

  1. Meld u aan bij Azure door de prompts uit te voeren az login en te volgen.

  2. Vervang , en <workspace-name><resource-group><location> tijdelijke aanduidingen in de volgende opdrachten door <subscription-id>de waarden voor uw omgeving.

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

Het geregistreerde model maken

U kunt een geregistreerd model maken op basis van een model dat:

  • Bevindt zich op uw lokale computer.
  • Bevindt zich in een Azure Machine Learning-gegevensarchief.
  • Uitvoer van een Azure Machine Learning-taak.

Lokaal bestand of lokale map

  1. Maak een YAML-bestandsnaam<>.yml. Geef in het bestand een naam op voor uw geregistreerde model, een pad naar het lokale modelbestand en een beschrijving. Voorbeeld:

    $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
    name: local-file-example
    path: mlflow-model/model.pkl
    description: Model created from local file.
    
  2. Voer de volgende opdracht uit met de naam van uw YAML-bestand:

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

Zie het MODEL YAML voor een volledig voorbeeld.

Gegevensarchief

U kunt een model maken op basis van een cloudpad met behulp van een van de ondersteunde URI-indelingen.

In het volgende voorbeeld wordt het verkorte azureml schema gebruikt voor het verwijzen naar een pad in het gegevensarchief met behulp van de syntaxis azureml://datastores/<datastore-name>/paths/<path_on_datastore>.

az ml model create --name my-model --version 1 --path azureml://datastores/myblobstore/paths/models/cifar10/cifar.pt

Zie de CLI-verwijzing voor een volledig voorbeeld.

Taakuitvoer

Als uw modelgegevens afkomstig zijn van een taakuitvoer, hebt u twee opties voor het opgeven van het modelpad. U kunt de MLflow-URI-indeling runs: of de azureml://jobs URI-indeling gebruiken.

Notitie

Het gereserveerde trefwoord artefacten vertegenwoordigt uitvoer van de standaardlocatie van het artefact.

  • MLflow-uitvoeringen: URI-indeling

    Deze optie is geoptimaliseerd voor MLflow-gebruikers, die waarschijnlijk al bekend zijn met de MLflow runs: URI-indeling. Met deze optie maakt u een model op basis van artefacten op de standaardlocatie voor artefacten, waar alle door MLflow geregistreerde modellen en artefacten zich bevinden. Deze optie brengt ook een herkomst tot stand tussen een geregistreerd model en de uitvoering van het model is afkomstig.

    Formatteren: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>

    Voorbeeld:

    az ml model create --name my-registered-model --version 1 --path runs:/my_run_0000000000/model/ --type mlflow_model
    

  • azureml://jobs URI-indeling

    Met de azureml://jobs optie verwijzings-URI kunt u een model registreren bij artefacten in een van de uitvoerpaden van de taak. Deze indeling is afgestemd op de azureml://datastores verwijzings-URI-indeling en ondersteunt ook verwijzingen naar artefacten van benoemde uitvoer anders dan de standaardlocatie van het artefact.

    Als u uw model niet rechtstreeks in het trainingsscript hebt geregistreerd met behulp van MLflow, kunt u deze optie gebruiken om een herkomst tot stand te brengen tussen een geregistreerd model en de taak waaruit het is getraind.

    Formatteren: azureml://jobs/<run-id>/outputs/<output-name>/paths/<path-to-model>

    • Standaardlocatie van artefact: azureml://jobs/<run-id>/outputs/artifacts/paths/<path-to-model>/. Deze locatie is gelijk aan MLflow runs:/<run-id>/<model>.
    • Benoemde uitvoermap: azureml://jobs/<run-id>/outputs/<named-output-folder>
    • Specifiek bestand in de benoemde uitvoermap: azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-filename>
    • Specifiek mappad in de benoemde uitvoermap: azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-folder-name>

    Voorbeeld:

    Sla een model op uit een benoemde uitvoermap:

    az ml model create --name run-model-example --version 1 --path azureml://jobs/my_run_0000000000/outputs/artifacts/paths/model/
    

    Zie de CLI-verwijzing voor een volledig voorbeeld.


Modellen gebruiken voor training

Met de v2 Azure CLI en Python SDK kunt u modellen ook gebruiken als invoer of uitvoer in trainingstaken.

Een model gebruiken als invoer in een trainingstaak

  1. Maak een YAML-bestand met taakspecificatie, <bestandsnaam.yml.> Geef in de inputs sectie van de taak het volgende op:

    • Het model type, dat kan zijn mlflow_model, custom_modelof triton_model.
    • Het path model bevindt zich op de locatie waar het model zich bevindt. Dit kan een van de paden zijn die worden vermeld in de opmerking van het volgende voorbeeld.
    $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
    
  2. Voer de volgende opdracht uit, waarbij u de YAML-bestandsnaam vervangt.

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

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

Een model schrijven als uitvoer voor een taak

Uw taak kan een model naar uw cloudopslag schrijven met behulp van uitvoer.

  1. Maak een YAML-bestand <>met een taakspecificatie.yml. Vul de outputs sectie met het type en het pad van het uitvoermodel.

    $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
    
  2. Een taak maken met behulp van de CLI:

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

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

Modellen beheren

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

List

Geef alle modellen in uw werkruimte weer:

az ml model list

Geef alle modelversies onder een bepaalde naam weer:

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:

Belangrijk

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

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

Archiveren

Als u een model archivert, wordt het verborgen voor lijstquery's, zoals az ml model list standaard. U kunt blijven verwijzen naar en een gearchiveerd model gebruiken in uw werkstromen.

U kunt alle versies of alleen specifieke versies van een model archiveren. Als u geen versie opgeeft, worden alle versies van het model gearchiveerd. Als u een nieuwe modelversie maakt onder een gearchiveerde modelcontainer, wordt de 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