Condividi tramite


Usare i modelli registrati in Azure Machine Learning

SI APPLICA A:Estensione ml dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)

Questo articolo illustra come registrare e usare i modelli in Azure Machine Learning usando:

  • Interfaccia utente studio di Azure Machine Learning.
  • Interfaccia della riga di comando di Azure Machine Learning V2.
  • The Python Azure Machine Learning V2 SDK.

Scopri come:

  • Creare modelli registrati nel Registro di sistema dei modelli da file, archivi dati o output del processo locali.
  • Lavorare con diversi tipi di modelli, ad esempio personalizzati, MLflow e Sicuramente.
  • Usare i modelli come input o output nei processi di training.
  • Gestire il ciclo di vita degli asset del modello.

Registrazione del modello

La registrazione del modello consente di archiviare e versione dei modelli nell'area di lavoro nel cloud di Azure. Il registro modelli consente di organizzare i modelli sottoposti a training e tenerne traccia. È possibile registrare i modelli come asset in Azure Machine Learning usando l'interfaccia della riga di comando di Azure, Python SDK o l'interfaccia utente di Machine Learning Studio.

Percorsi supportati

Per registrare un modello, è necessario specificare un percorso che punta ai dati o alla posizione del processo. La tabella seguente illustra le varie posizioni dei dati supportate da Azure Machine Learning e la sintassi per il path parametro :

Ufficio Sintassi
Computer locale <model-folder>/<model-filename>
Archivio dati di Azure Machine Learning azureml://datastores/<datastore-name>/paths/<path_on_datastore>
Processo di Azure Machine Learning azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location>
Processo MLflow runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Asset del modello in un'area di lavoro di Machine Learning azureml:<model-name>:<version>
Asset del modello in un registro di Machine Learning azureml://registries/<registry-name>/models/<model-name>/versions/<version>

Modalità supportate

Quando si usano modelli per input o output, è possibile specificare una delle modalità seguenti. Ad esempio, è possibile specificare se il modello deve essere montato o scaricato in sola lettura nella destinazione di calcolo.

  • ro_mount: montare i dati nella destinazione di calcolo come di sola lettura.
  • rw_mount: montaggio in lettura/scrittura dei dati.
  • download: scaricare i dati nella destinazione di calcolo.
  • upload: caricare i dati dalla destinazione di calcolo.
  • direct: passa l'URI come stringa.

Nella tabella seguente vengono illustrate le opzioni disponibili per input e output del tipo di modello diversi.

Type upload download ro_mount rw_mount direct
custom input file
custom input della cartella
mlflow immissione
custom output del file
custom output della cartella
mlflow prodotto

Prerequisiti

  • Una sottoscrizione di Azure con una versione gratuita o a pagamento di Azure Machine Learning. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
  • Un'area di lavoro di Azure Machine Learning.

Per eseguire gli esempi di codice in questo articolo e usare l'interfaccia della riga di comando di Azure Machine Learning V2 o Python Azure Machine Learning V2 SDK, è necessario:

Nota

La versione 2 offre la compatibilità completa con le versioni precedenti. È comunque possibile usare gli asset del modello dall'SDK v1 o dall'interfaccia della riga di comando. A tutti i modelli registrati con l'interfaccia della riga di comando v1 o all'SDK viene assegnato il tipo custom.

Registrare un modello usando l'interfaccia utente di Studio

Per registrare un modello usando l'interfaccia utente studio di Azure Machine Learning:

  1. Nell'area di lavoro in studio selezionare Modelli nel riquadro di spostamento a sinistra.

  2. Nella pagina Elenco modelli selezionare Registra e selezionare una delle posizioni seguenti nell'elenco a discesa:

    • Da file locali
    • Da un output del processo
    • Dall'archivio dati
    • Da file locali (basati sul framework)
  3. Nella prima schermata Registra modello :

    1. Passare al file locale, all'archivio dati o all'output del processo per il modello.
    2. Selezionare il tipo di modello di input: MLflow, Json o Tipo non specificato.
  4. Nella schermata Impostazioni modello specificare un nome e altre impostazioni facoltative per il modello registrato e selezionare Avanti.

  5. Nella schermata Verifica esaminare la configurazione e quindi selezionare Registra.

Screenshot dell'interfaccia utente per registrare un modello.

Registrare un modello usando l'interfaccia della riga di comando di Azure o Python SDK

I frammenti di codice seguenti illustrano come registrare un modello come asset in Azure Machine Learning usando l'interfaccia della riga di comando di Azure o Python SDK. Questi frammenti di codice usano custom e mlflow i tipi di modello.

  • custom il tipo fa riferimento a un file di modello o a una cartella sottoposta a training con uno standard personalizzato attualmente non supportato da Azure Machine Learning.
  • mlflow il tipo fa riferimento a un modello sottoposto a training con MLflow. I modelli sottoposti a training con MLflow si trovano in una cartella contenente il file MLmodel, il file del modello, il file delle dipendenze conda e il file requirements.txt.

Suggerimento

È possibile seguire le versioni python degli esempi seguenti eseguendo il notebook model.ipynb nel repository azureml-examples .

Connettersi all'area di lavoro

L'area di lavoro è la risorsa di primo livello per Azure Machine Learning, che fornisce una posizione centralizzata da cui gestire tutti gli artefatti creati quando si usa Azure Machine Learning. In questa sezione ci si connette all'area di lavoro di Azure Machine Learning per creare il modello registrato.

  1. Accedere ad Azure eseguendo az login e seguendo le istruzioni.

  2. Nei comandi seguenti sostituire <subscription-id>i segnaposto , <workspace-name>, <resource-group>e <location> con i valori per l'ambiente.

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

Creare il modello registrato

È possibile creare un modello registrato da un modello che è:

  • Situato nel computer locale.
  • Si trova in un archivio dati di Azure Machine Learning.
  • Output da un processo di Azure Machine Learning.

File o cartella locale

  1. Creare un nome> file <YAML.yml. Nel file specificare un nome per il modello registrato, un percorso del file del modello locale e una descrizione. Ad esempio:

    $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. Eseguire il comando seguente usando il nome del file YAML:

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

Per un esempio completo, vedere il file YAML del modello.

Archivio dati

È possibile creare un modello da un percorso cloud usando uno dei formati URI supportati.

Nell'esempio seguente viene usato lo schema abbreviato azureml per puntare a un percorso nell'archivio dati usando la sintassi 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

Per un esempio completo, vedere le informazioni di riferimento sull'interfaccia della riga di comando.

Output del processo

Se i dati del modello provengono da un output del processo, sono disponibili due opzioni per specificare il percorso del modello. È possibile usare il formato URI MLflow runs: o il azureml://jobs formato URI.

Nota

La parola chiave riservata artefatti rappresenta l'output dal percorso predefinito dell'artefatto.

  • Esecuzioni di MLflow: formato URI

    Questa opzione è ottimizzata per gli utenti MLflow, che probabilmente hanno già familiarità con il formato URI MLflow runs: . Questa opzione crea un modello dagli artefatti nella posizione predefinita dell'artefatto, in cui si trovano tutti i modelli e gli artefatti con registrazione MLflow. Questa opzione stabilisce anche una derivazione tra un modello registrato e l'esecuzione del modello proviene.

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

    Esempio:

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

  • formato URI azureml://jobs

    L'opzione azureml://jobs URI di riferimento consente di registrare un modello dagli artefatti in uno dei percorsi di output del processo. Questo formato è allineato al formato URI di azureml://datastores riferimento e supporta anche il riferimento agli artefatti da output denominati diversi dal percorso predefinito dell'artefatto.

    Se il modello non è stato registrato direttamente nello script di training usando MLflow, è possibile usare questa opzione per stabilire una derivazione tra un modello registrato e il processo da cui è stato eseguito il training.

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

    • Percorso artefatto predefinito: azureml://jobs/<run-id>/outputs/artifacts/paths/<path-to-model>/. Questa posizione equivale a MLflow runs:/<run-id>/<model>.
    • Cartella output denominata: azureml://jobs/<run-id>/outputs/<named-output-folder>
    • File specifico all'interno della cartella di output denominata: azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-filename>
    • Percorso di cartella specifico all'interno della cartella di output denominata: azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-folder-name>

    Esempio:

    Salvare un modello da una cartella di output denominata:

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

    Per un esempio completo, vedere le informazioni di riferimento sull'interfaccia della riga di comando.


Usare i modelli per il training

L'interfaccia della riga di comando di Azure v2 e Python SDK consentono anche di usare i modelli come input o output nei processi di training.

Usare un modello come input in un processo di training

  1. Creare un file YAML di specifica del processo, <nome> file.yml. inputs Nella sezione del processo specificare:

    • typeModello , che può essere mlflow_model, custom_modelo triton_model.
    • Oggetto path in cui si trova il modello, che può essere uno dei percorsi elencati nel commento dell'esempio seguente.
    $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. Eseguire il comando seguente sostituendo il nome file YAML.

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

Per un esempio completo, vedere il repository GitHub del modello.

Scrivere un modello come output per un processo

Il processo può scrivere un modello nell'archiviazione basata sul cloud usando gli output.

  1. Creare un file YAML di specifica del processo<>.yml. Popolare la outputs sezione con il tipo e il percorso del modello di output.

    $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. Creare un processo usando l'interfaccia della riga di comando:

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

Per un esempio completo, vedere il repository GitHub del modello.

Gestire i modelli

L'interfaccia della riga di comando di Azure e Python SDK consentono anche di gestire il ciclo di vita degli asset del modello di Azure Machine Learning.

List

Elencare tutti i modelli nell'area di lavoro:

az ml model list

Elencare tutte le versioni del modello con un determinato nome:

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

Mostra

Ottenere i dettagli di un modello specifico:

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

Aggiornamento

Aggiornare le proprietà modificabili di un modello specifico:

Importante

Solo per i modelli e descriptiontags possono essere aggiornati. Tutte le altre proprietà non sono modificabili e, se è necessario modificarle, è necessario creare una nuova versione del modello.

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

Archivio

L'archiviazione di un modello lo nasconde alle query di elenco, ad az ml model list esempio per impostazione predefinita. È possibile continuare a fare riferimento e usare un modello archiviato nei flussi di lavoro.

È possibile archiviare tutte le versioni o solo versioni specifiche di un modello. Se non si specifica una versione, tutte le versioni del modello vengono archiviate. Se si crea una nuova versione del modello in un contenitore di modelli archiviato, anche la nuova versione viene impostata automaticamente come archiviata.

Archiviare tutte le versioni di un modello:

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

Archiviare una versione specifica del modello:

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